mawatari.jp
ウェブエンジニアのメモ帳
  • ブログ
  • ブックマーク
  • 本棚
  • GitHub
  • プロファイル
  • PhpStorm
  • CakePHP
  • FuelPHP
  • PHP
  • RubyMine
  • Ruby on Rails
  • Ruby
RSS
2013年4月10日

フォントを指定する場合は総称ファミリーも指定する

mawatari 日記 CSS, PhpStorm 0 Comments

PhpStormで、CSSを編集していたら、次のような警告が表示されました。

font-property-font-family-has-to-specify-generic-default-01

Font property font-family does not have generic default
This inspection verifies that the CSS font-family property contains a generic font name as a fallback alternative.

Google 翻訳によると、以下の通りです。

Fontプロパティのフォントファミリは、一般的なデフォルトを持っていません
この検査では、CSSのfont-familyプロパティは、フォールバックの代替として汎用フォント名が含まれていることを検証します。

font-familyプロパティを指定する場合は、総称ファミリーを指定しておくのが、お作法というわけですね。具体的には、次のものになります。

総称ファミリー名フォント
serif明朝体
sans-serifゴシック体
cursive草書体・筆記体
fantasyファンタジー体(装飾フォント等)
monospace等幅

総称ファミリーを指定しておけば、任意指定したフォントが閲覧者の環境にインストールされていない場合に、フォールバックとして機能するようになります。以下のように指定しておけば良いでしょう。

font-familyプロパティに任意のフォントと総称ファミリーを指定する
CSS
1
2
3
body {
    font-family: Verdana, Arial, sans-serif;
}

2013年3月29日

CSSで選択中のラジオボタンに続く要素を太字にする

mawatari 日記 CSS 0 Comments

CSS3で選択中のラジオボタンに続く要素を太字にするサンプル。以下の例だとラベル要素が太字になります。現在選択中のものから別の選択肢に切り替えれば、当然ながら、そちらが瞬時に太字になります。
別のCSSプロパティを与えれば、太字以外の表現も可能です。例えば、選択中のものを赤色にする等。

CSS3で選択中のラジオボタンに続くlabel要素を太字にする
XHTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8">
    <title>HTMLサンプル</title>
    <style type="text/css">
    input[type="radio"]:checked + label {
        font-weight: bold;
    }
    </style>
</head>
<body>
<input type="radio" name="sampleRadio" id="sampleRadio1" value="1"><label for="sampleRadio1">選択肢1</label>
<input type="radio" name="sampleRadio" id="sampleRadio2" value="2"><label for="sampleRadio2">選択肢2</label>
</body>
</html>

表示例

bolded-the-elements-that-follow-the-selected-radio-button-01

2013年3月28日

CSS優先順位の実例とまとめ

mawatari 日記 CSS 0 Comments

CSS適用の優先順位を調べていく過程で、理解できていないルールがあったのでメモ。
参考にしたドットインストール CSS入門 #18に、動画での解説もあります。

実例

以下のサンプルコードのp要素に対する指定を例に見ていきます。優先順位の低いものから。
要点だけを知りたい方は、まとめに飛んでください。

HTMLサンプル
XHTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>HTMLサンプル</title>
<style type="text/css">
/* 以下に切り出し */
</style>
</head>
<body>
<p id="sampleId" class="sampleClass" title="sampleTitle">これはサンプルです。</p>
<ul>
<li>foo</li>
<li>bar</li>
</ul>
</body>
</html>

後から書いた方が優先

この場合、p要素は、greenになります。これはセレクタが、要素(タグ)でもidでもclassでも同様です。

後から書いた方が優先
CSS
1
2
3
4
5
6
p {
color: red;
}
p {
color: green;
}

class指定したものが優先(classセレクタ)

この場合、p要素は、redになります。たとえ後からの指定であったとしてもです。

class指定したものが優先
CSS
1
2
3
4
5
6
.sampleClass {
color: red;
}
p {
color: green;
}

属性を指定したものが優先(属性セレクタ)

この場合、p要素は、redになります。

属性を指定したものが優先
CSS
1
2
3
4
5
6
[title="sampleTitle"] {
color: red;
}
p {
color: green;
}

クラスセレクタの優先順位と同レベルです。
つまり、以下のように書いた場合は、「後から書いた方が優先」のルールが適用されるので、p要素は、greenになります。

同レベルの指定の場合は後から書いた方が優先
CSS
1
2
3
4
5
6
[title="sampleTitle"] {
color: red;
}
.sampleClass {
color: green;
}

疑似セレクタを指定したものが優先(疑似セレクタ)

この場合、liの最初の要素(文字列foo)は、redになります。クラスセレクタ、属性セレクタの優先順位と同レベルです。

疑似セレクタを指定したものが優先
CSS
1
2
3
4
5
6
li:first-child {
color: red;
}
li {
color: green;
}

詳細に指定した方が優先

この場合、p要素は、redになります。
※このルールを知りませんでした。厳密に言うと「詳細に指定した方が優先」というルールではないです。この解説は、後半で詳しく。

詳細に指定した方が優先
CSS
1
2
3
4
5
6
p.sampleClass {
color: red;
}
.sampleClass {
color: green;
}

id指定したものが優先(idセレクタ)

この場合、p要素は、redになります。classよりidが優先です。

id指定したものが優先
CSS
1
2
3
4
5
6
#sampleId {
color: red;
}
.sampleClass {
color: green;
}

要素に直接指定したものが優先(インラインスタイル)

この場合、p要素は、blueになります。classセレクタや、idセレクタで指定されていたとしてもです。

要素に直接指定したものが優先(インラインスタイル)
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>HTMLサンプル</title>
<style type="text/css">
.sampleClass {
color: red;
}
p#sampleId {
color: green;
}
</style>
</head>
<body>
<p id="sampleId" class="sampleClass" title="sampleTitle" style="color: blue;">これはサンプルです。</p>
</body>
</html>

!importantをつけたものが優先

この場合、p要素は、redになります。インラインスタイルで指定されてようが、id指定されてようがです。

!importantをつけたものが優先
CSS
1
2
3
4
5
6
p {
color: red !important;
}
p#sampleId {
color: green;
}

まとめ

今回の例をまとめると優先順位は以下の通りとなります。

  1. !important指定したもの
  2. インラインスタイルで指定したもの
  3. idセレクタで指定したもの
  4. classセレクタ、属性セレクタ、疑似セレクタで指定したもの
  5. 要素セレクタ(エレメントセレクタ)で指定したもの
  6. 後から書いたもの
  7. ユニバーサルセレクタで指定したもの

ユニバーサルセレクタ(全称セレクタ)は、*{}という形式で指定するもの

CSS適用のルールは、ポイント獲得をイメージするとわかりやすいです。ポイントの重みは、以下の表の通りです。

インラインスタイルidセレクタclassセレクタ、属性セレクタ、疑似セレクタ要素セレクタ
1111

idセレクタとインラインスタイルが同時に指定されている場合

idセレクタは0100ポイント、インラインスタイルは1000ポイントになるので、インラインスタイルの方が優先されます。

詳細に指定した方が優先になる理由

ドットインストール CSS入門 #18の動画では、詳細に指定した方が優先という紹介のされ方でしたが、これを解説すると次の通りです。

詳細に指定した方が優先
CSS
1
2
3
4
5
6
7
8
/* 指定1 */
p.sampleClass {
color: red;
}
/* 指定2 */
.sampleClass {
color: green;
}

指定1は、要素セレクタとクラスセレクタで指定されているので0011ポイント、指定2は、クラスセレクタの指定だけなので0010ポイント、つまり指定1の方がポイントが多いので優先されるというわけです。

ポイントが同じだった場合の例

上でも例を挙げましたが、同レベルの指定の場合を見てみましょう。

同レベルの指定の場合は後から書いた方が優先
CSS
1
2
3
4
5
6
7
8
/* 指定1 */
[title="sampleTitle"] {
color: red;
}
/* 指定2 */
.sampleClass {
color: green;
}

この場合、指定1は、0010ポイント、指定2は、0010ポイントとなります。ポイントが同一なので、その下位のルール「後から書いた方が優先」が適用されます。

ルールを理解すれば、簡単ですね!慣れない場合は、ポイント獲得をビジュアルで確認できるサイトSpecificity Calculatorが便利です。

参考

3分間動画で、ざっくり確認したい場合は、ドットインストール CSS入門 #18で。

ポイント獲得の解説は、以下のサイトが参考になります。

  • CSSの優先順位〜CSSテクニック
  • CSSのセレクタによる優先順位を分かりやすくビジュアル化するオンラインツール -Specificity Calculator

その他、ブラウザに設定できるユーザスタイルシートの優先順位のまとめは、以下のサイトで紹介されています。

  • !importantによる優先度の変更

要素に直接!important指定するのが優先順位が高く、それより!important指定されたユーザスタイルシートが優先順位が高いってところですかね。

2013年3月2日

Fukuoka.php Vol.6 参加報告

mawatari 勉強会・交流会 Fukuoka.php, PHP 0 Comments

イベント情報

タイトルFukuoka.php Vol.6
日時2013年2月27日(水)19時30分〜21時00分
定員15人
会場株式会社Fusic 福岡本社
住所福岡県福岡市中央区大名2-4-22 新日本ビル9F
告知サイトZusaar – Fukuoka.php Vol.6
関連サイトFukuoka.php
ハッシュタグ#fukuokaphp
概要急ですが、やりますよ第6回目!!
・PHPでスクレイピング
・PHPerがはじめるCapistrano
他

リポート

後日。

続きを読む

2013年2月26日

Twitter Bootstrapのドロップダウンメニューがタップできない場合の対処法

mawatari 日記 Android, Bootstrap, CSS, iOS, JavaScript, jQuery 1 Comment

タッチデバイス(iPhone, iPad等のiOS端末、およびAndroid)で、Twitter Bootstrapのドロップダウンメニューが機能しなかったので、調査したときのメモ。端末ではなく、Twitter Bootstrap側に原因がありました。
参考:Twitter Bootstrap

環境

環境は以下の通りです。

ソフトウェア

ソフトウェアバージョン
Twitter Bootstrap2.3.0

実行環境

機種OSバージョン
iPhone3GSiOS 6.0.1
iPhone4iOS 4.3.3
iPhone5iOS 6.1.2
iPad mini (2012)iOS 6.1.2
iPad 2 (2011)iOS 5.1.1
new iPad (2012)iOS 6.1.2
Galaxy S2Android 2.3.3

続きを読む

«‹ 11 12 13 14›»

フォロー

follow us in feedly
人購読中

最近の投稿

  • RDS (MySQL) からファイル出力 (TSV,CSV) する
  • エラー対応:cannot update mailbox /var/mail/root for user root. error writing message: File too large
  • MySQLのSHOW TABLESでコメント他も合わせて表示する
  • Amazon Linuxのバージョン確認コマンドとアーキテクチャ確認コマンド
  • PHPのエラーメッセージを出力する
  • ServerspecでMacの開発環境をテストする
  • PHPカンファレンス福岡2015に参加してきた
  • rbenvでRubyの最新安定版をインストールするワンライナー
  • Ansibleの実行結果を通知する
  • MacにComposerをインストールする

Twitter

@mawatarinさんのツイート

カテゴリー

  • 勉強会・交流会 (56)
  • 日記 (104)

タグクラウド

Ansible Apache AWS Backbone.js baserCMS Bootstrap CakePHP CentOS CSS EC-CUBE facebookアプリ開発 fancyBox FuelPHP Fukuoka.php Git GitHub Homebrew HTML5 iOS JavaScript Jenkins Jenkins実践入門 jQuery Mac MAMP MySQL Node.js OSC PHP PHPMatsuri PhpStorm PHPUnit Rails rbenv Ruby RubyMine SwimmyStudy Tips Twitter Vagrant VMware WordPress Xdebug アジャイル 福岡インフラ勉強会
mawatari.jpのはてなブックマーク数
  • PhpStorm
  • CakePHP
  • FuelPHP
  • PHP
  • RubyMine
  • Ruby on Rails
  • Ruby

最近の投稿

  • RDS (MySQL) からファイル出力 (TSV,CSV) する
  • エラー対応:cannot update mailbox /var/mail/root for user root. error writing message: File too large
  • MySQLのSHOW TABLESでコメント他も合わせて表示する
  • Amazon Linuxのバージョン確認コマンドとアーキテクチャ確認コマンド
  • PHPのエラーメッセージを出力する
  • ServerspecでMacの開発環境をテストする
  • PHPカンファレンス福岡2015に参加してきた

フォロー

follow us in feedly
人購読中
mawatari.jpのはてなブックマーク数

新着はてなブックマーク

  • PhpStorm
  • CakePHP
  • FuelPHP
  • PHP
  • RubyMine
  • Ruby on Rails
  • Ruby

↑

© mawatari.jp 2025
Powered by WordPress • Themify WordPress Themes