- Cssを学ぶ:完全なガイド
- CSSセレクタ
- 基本セレクタ
- 1. *
- 2. #X
- 3. .X
- 4. X
- 基本セレクタのライブデモ
- Combinatorセレクタ
- 5. X Y
- 6. X+Y
- 7. X>Y
- 8. X~Y
- Combinatorセレクタのライブデモ
- 属性セレクタ
- 9. X
- 10. X
- 11. X
- 12. X
- 13. X
- 14. X
- 15. X
- 属性セレクタのライブデモ
- 擬似セレクタ
- 16. X:訪問されたおよびX:リンク
- 17. X:checked
- 18. X:
- 19. X:ホバー
- 20. X:not(セレクタ)
- 21. X::pseudoElement
- 段落の最初の文字をターゲット
- 段落の最初の行をターゲット
- 擬似セレクタのライブデモ
- N番目の子と型セレクタ
- 22. X:n番目の子(n)
- 23. X:n番目の最後の子(n)
- 24. X:n番目のタイプ(n)
- 25. X:nth-last-of-type(n))
- 26. X:first-child
- 27. X:last-child
- last-childセレクタの例
- 28. X:only-child
- 29. X:only-of-type
- 30. X:first-of-type
- テスト
- ソリューション1
- 解決策2
- ソリューション3
- N番目の子と型セレクタのライブデモ
- 結論
- Envato要素への1ヶ月間の無料アクセス
Cssを学ぶ:完全なガイド
私たちは、あなたがちょうど基本を始めているか、より高度なCSSを探索したいかどうか、あなたがCSSを学ぶのを助けるための完全なガイドを構築しました。
CSSセレクタ
だから、ベースのid
、class
、およびdescendant
セレクタを学びました-そしてそれを一日と呼んだのですか? もしそうなら、あなたは柔軟性の巨大なレベルを逃しています。 これらの高度なCSSとCSS3セレクタをメモリにコミットすることは、自分自身に借りています。
基本セレクタ
1. *
* { margin: 0; padding: 0;}
私たちは、より高度なセレクタに移動する前に、のは、初心者のために、明白なものをノックアウトしてみましょう。
星のシンボルは、ページ上のすべての単一の要素をターゲットにします。 多くの開発者は、margin
とpadding
をゼロにするためにこのトリックを使用します。 これは確かに迅速なテストでは問題ありませんが、本番コードではこれを使用しないことをお勧めします。 これは、ブラウザ上であまりにも多くの重量を追加し、不要です。
*
は子セレクタでも使用できます。
#container * { border: 1px solid black;}
これは、#container
div
の子であるすべての単一の要素をターゲットにします。 再度、この技術を非常に使用しないことを試みなさい。
2. #X
#container { width: 960px; margin: auto;}
ハッシュシンボルの前にセレクタを付けると、id
でターゲットにすることができます。 これは簡単に最も一般的な使用法ですが、id
セレクタを使用する場合は注意してください。
自問してください:私は絶対にそれをターゲットにするために、この要素に
id
を適用する必要がありますか?
id
セレクタはリジッドであり、再利用はできません。 可能であれば、最初にタグ名、新しいHTML5要素の1つ、または疑似クラスを使用してみてください。
3. .X
.error { color: red;}
これはclass
セレクタです。 id
sとclass
esの違いは、後者では複数の要素をターゲットにできることです。 要素のグループにスタイルを適用する場合は、class
esを使用します。 または、id
を使用して干し草の山で針を見つけ、その特定の要素のみをスタイルします。
4. X
a { color: red; }ul { margin-left: 0; }
ページ上のすべての要素をid
またはclass
名前ではなくtype
に従ってターゲットにしたい場合はどうなりますか? それを単純にして、型セレクタを使用します。 順序付けされていないリストをすべて対象にする必要がある場合は、ul {}
を使用します。
基本セレクタのライブデモ
Combinatorセレクタ
5. X Y
li a { text-decoration: none;}
次の最も一般的なセレクタはdescendant
セレクタです。 セレクタをより具体的にする必要がある場合は、これらを使用します。 たとえば、すべてのアンカータグをターゲットにするのではなく、順不同のリスト内にあるアンカーのみをターゲットにする必要がある場合はどうなりま これは、特に子孫セレクタを使用する場合です。
Pro-tip:セレクタが
X Y Z A B.error
のように見える場合、間違っています。 その重量のすべてを適用することは絶対に必要であるかどうか常にあなた自身に尋ねなさい。
6. X+Y
ul + p { color: red;}
これを隣接セレクタと呼びます。 前の要素の直前にある要素のみが選択されます。 この場合、各ul
の後の最初の段落のみが赤いテキストを持ちます。
7. X>Y
div#container > ul { border: 1px solid black;}
標準のX Y
とX > Y
の違いは、後者が直接の子のみを選択することです。 たとえば、次のマークアップを考えます。
<div> <ul> <li> List Item <ul> <li> Child </li> </ul> </li> <li> List Item </li> <li> List Item </li> <li> List Item </li> </ul> </div>
#container > ul
のセレクタは、id
のcontainer
を持つdiv
の直接の子であるul
のみを対象とします。 たとえば、最初のli
の子であるul
をターゲットにしません。
このため、child combinatorを使用することにはパフォーマンス上の利点があります。 実際には、特にJavaScriptベースのCSSセレクタエンジンを使用する場合にお勧めします。
8. X~Y
ul ~ p { color: red;}
この兄弟コンビネータはX + Y
に似ていますが、それほど厳密ではありません。 隣接するセレクタ(ul + p
)は、前のセレクタの直前にある最初の要素のみを選択しますが、これはより一般化されています。 上記の例を参照して、p
要素がul
に続く限り、任意のp
要素が選択されます。
Combinatorセレクタのライブデモ
属性セレクタ
9. X
a { color: green;}
属性セレクタと呼ばれ、上記の例では、title
属性を持つアンカータグのみが選択されます。 そうでないアンカータグは、この特定のスタイルを受け取りません。 しかし、より具体的にする必要がある場合はどうなりますか? 次の例をチェックしてください!
10. X
a { color: #83b348; /* Envato green */}
上記のスニペットは、https://code.tutsplus.comにリンクするすべてのアンカータグのスタイルを設定します; 彼らは私達の決め付けられた緑色を受け取る。 他のすべてのアンカータグは影響を受けません。
値を引用符で囲んでいることに注意してください。 JavaScript CSSセレクタエンジンを使用するときにもこれを行うことを忘れないでください。 可能であれば、常に非公式の方法よりもCSS3セレクタを使用してください。
これはうまくいきますが、少し硬直しています。 リンクが実際にEnvato Tuts+に直接接続されている場合はどうなりますかが、おそらくパスは次のようになりますcode.tutsplus.com 完全なURLではなく? そのような場合は、正規表現の構文を少し使用できます。
11. X
a { color: #83b348; /* Envato green */}
そこに行く;それが必要なものです。 星は、進行する値が属性の値のどこかに表示されなければならないことを示します。 そうすれば、これはカバーしますtutsplus.com,code.tutsplus.com、さらにはwebdesign.tutsplus.com.
これは広範な声明であることに注意してください。 アンカータグがURLに文字列tutsplusを持つ非Envatoサイトにリンクされている場合はどうなりますか? より具体的にする必要がある場合は、^
と$
を使用して、文字列の先頭と末尾をそれぞれ参照します。
12. X
a { background: url(path/to/external/icon.png) no-repeat; padding-left: 10px;}
いくつかのウェブサイトは、外部のリンクの横に小さなアイコンを表示することができる方法を疑問に思いますか? 私はこれらを前に見たことを確かめる;それらはリンクが完全に別のウェブサイトに指示すること素晴らしいメモである。
これはカラットのシンボルを持つ楽勝です。 これは、文字列の先頭を指定するために正規表現で最も一般的に使用されます。 http
で始まるhref
を持つすべてのアンカータグをターゲットにしたい場合は、上に示したスニペットと同様のセレクタを使用できます。
https://
を検索していないことに注意してください。https://
で始まるUrlは考慮されません。https://
で始まるUrlは考慮されません。
さて、代わりに写真にリンクするすべてのアンカーのスタイルを設定したい場合はどうすればよいですか? そのような場合は、文字列の末尾を検索してみましょう。
13. X
a { color: red;}
ここでも、正規表現記号$
を使用して、文字列の末尾を参照します。 この場合、画像にリンクするすべてのアンカー、または少なくとも.jpg
で終わるURLを検索しています。 これはGIFとPNG画像をキャプチャしないことに注意してください。
14. X
a { color: red;}
さまざまな画像タイプのすべてをどのように補正するのですか? さて、次のような複数のセレクタを作成することができます:
a,a,a,a { color: red;}
しかし、それは苦痛であり、非効率的です。 別の可能な解決策は、カスタム属性を使用することです。 画像にリンクする各アンカーに独自のdata-filetype
属性を追加した場合はどうなりますか?
<a href="path/to/image.jpg" data-filetype="image"> Image Link </a>
次に、そのフックを所定の位置に置いて、標準の属性セレクタを使用して、それらのアンカーのみをターゲットにすることができます。
a { color: red;}
15. X
a { color: red;}a { border: 1px solid black;}
ここにあなたの友人を感動させる特別なものがあります。 あまりにも多くの人々がこのトリックについて知っていません。 チルダ(~
)記号を使用すると、スペースで区切られた値のリストを持つ属性をターゲットにすることができます。
上記の15番のカスタム属性と一緒に、data-info
属性を作成し、メモする必要があるもののスペースで区切られたリストを受け取ることができます。 この場合、外部リンクと画像へのリンクをメモします—例のためだけに。
"<a href="path/to/image.jpg" data-info="external image"> Click Me, Fool </a>
そのマークアップを設定すると、~
attributes selectorトリックを使用して、これらの値のいずれかを持つタグをターゲットにすることができます。
/* Target data-info attr that contains the value "external" */a { color: red;}/* And which contain the value "image" */a { border: 1px solid black;}
かなり気の利いた、ハァッ?
属性セレクタのライブデモ
擬似セレクタ
16. X:訪問されたおよびX:リンク
a:link { color: red; }a:visited { color: purple; }
:link
擬似クラスを使用して、まだクリックされていないすべてのアンカータグをターゲットにします。
あるいは、:visited
擬似クラスもありますが、これにより、クリックされた、または”訪問された”ページ上のアンカータグのみに特定のスタイルを適用できます。
17. X:checked
input:checked { border: 1px solid black;}
この擬似クラスは、ラジオボタンやチェックボックスのように、チェックされたユーザーインターフェイス要素のみを対象とします。 それはそれと同じくらい簡単です。
18. X:
の後、before
とafter
擬似クラスは素晴らしいです。 毎日、人々はそれらを効果的に使用するための新しい創造的な方法を見つけているようです。 彼らは単に選択された要素の周りにコンテンツを生成します。
多くは、clear-fixハックに遭遇したときに最初にこれらのクラスに導入されました。
.clearfix:after { content: ""; display: block; clear: both; visibility: hidden; font-size: 0; height: 0; }.clearfix { *display: inline-block; _height: 1%;}
このハックは、:after
擬似クラスを使用して要素の後にスペースを追加し、それをクリアします。 特にoverflow: hidden;
メソッドが不可能な場合には、ツールバッグに入れるのは優れたトリックです。
これの別の創造的な使用については、影の作成に関する私の簡単なヒントを参照してください。
CSS3セレクタ仕様によると、技術的には二つのコロン
::
の擬似要素構文を使用する必要があります。 ただし、互換性を維持するために、user-agentは単一のコロンの使用も受け入れます。
19. X:ホバー
div:hover { background: #e3e3e3;}
ああ、さあ。 あなたはこれを知っています。 これの正式な用語は「ユーザーアクション擬似クラス」です。 ユーザーが要素の上に置いたときに特定のスタイルを適用したいですか? これは仕事を成し遂げるでしょう!
古いバージョンのInternet Explorerは、
:hover
擬似クラスがアンカータグ以外のものに適用されたときに応答しないことに注意してください。
ほとんどの場合、このセレクタは、たとえば、アンカータグにborder-bottom
を適用するときに使用します。
a:hover { border-bottom: 1px solid black;}
プロヒント:
border-bottom: 1px solid black;
はtext-decoration: underline;
よりも良く見えます。
20. X:not(セレクタ)
div:not(#container) { color: blue;}
否定擬似クラスは特に便利です。 Idがcontainer
のものを除いて、すべてのdiv
を選択したいとしましょう。 上記のスニペットは、そのタスクを完全に処理します。
または、段落タグを除いてすべての単一の要素(推奨されていない)を選択したい場合は、次のようにします:
*:not(p) { color: green;}
21. X::pseudoElement
p::first-line { font-weight: bold; font-size: 1.2em;}
擬似要素(::
で指定)を使用して、最初の行や最初の文字などの要素のフラグメントをスタイルすることができます。 これらを有効にするには、ブロックレベルの要素に適用する必要があることに注意してください。
擬似要素は二つのコロンで構成されています:
::
段落の最初の文字をターゲット
p::first-letter { float: left; font-size: 2em; font-weight: bold; font-family: cursive; padding-right: 2px;}
このスニペットは、ページ上のすべての段落を検索し、その要素の最初の文字のみをサブターゲットにする抽象化です。
これは、記事の最初の文字のために新聞のようなスタイルを作成するために最も頻繁に使用されます。
段落の最初の行をターゲット
p::first-line { font-weight: bold; font-size: 1.2em;}
同様に、::first-line
擬似要素は、期待どおりに、要素の最初の行のみをスタイルします。
“既存のスタイルシートとの互換性のために、ユーザーエージェントは、CSSレベル1と2で導入された擬似要素の前のワンコロン表記を受け入れる必要があ, :first-line
, :first-letter
, :before
および:after
)。 この互換性は、この仕様で導入された新しい擬似要素には許可されていません。”-W3Cセレクタ仕様
擬似セレクタのライブデモ
N番目の子と型セレクタ
22. X:n番目の子(n)
li:nth-child(3) { color: red;}
スタック内の特定の要素をターゲットにする方法がなかった時代を覚えていますか? nth-child
擬似クラスはそれを解決します!
nth-child
はパラメータとして整数を受け入れますが、これはゼロベースではないことに注意してください。 2番目のリスト項目をターゲットにする場合は、li:nth-child(2)
を使用します。
これを使用して、子の変数セットを選択することもできます。 たとえば、li:nth-child(4n)
を実行して、4番目のすべてのリスト項目を選択できます。
23. X:n番目の最後の子(n)
li:nth-last-child(2) { color: red;}
たとえば、ul
に膨大な項目リストがあり、最後から3番目の項目だけにアクセスする必要があった場合はどうなりますか? li:nth-child(397)
を実行するのではなく、代わりにnth-last-child
擬似クラスを使用できます。
この手法は、上記の16番とほぼ同じように機能します。 違いは、それがコレクションの終わりに始まり、戻ってその方法を動作することです。
24. X:n番目のタイプ(n)
ul:nth-of-type(3) { border: 1px solid black;}
child
を選択するのではなく、代わりに要素のtype
に従って選択する必要がある場合があります。
5つの順序付けられていないリストを含むマークアップを想像してみてください。 3番目のul
のみのスタイルを設定し、フックする一意のid
がない場合は、nth-of-type(n)
擬似クラスを使用できます。 上記のスニペットでは、3番目のul
だけがその周りに境界線を持ちます。
25. X:nth-last-of-type(n))
ul:nth-last-of-type(3) { border: 1px solid black;}
そして、はい、一貫性を保つために、nth-last-of-type
を使用してセレクタリストの最後から始め、目的の要素をターゲットに戻すこともできます。
26. X:first-child
ul li:first-child { border-top: none;}
この構造的な擬似クラスは、要素の親の最初の子のみをターゲットにすることができます。 多くの場合、最初と最後のリスト項目から境界線を削除するためにこれを使用します。たとえば、行のリストがあり、それぞれにborder-top
とborder-bottom
があるとします。 まあ、その配置では、そのセットの最初と最後の項目は少し奇妙に見えます。
多くの設計者は、これを補うためにfirst
とlast
のクラスを適用します。 代わりに、これらの擬似クラスを使用できます。
27. X:last-child
ul > li:last-child { color: green;}
first-child
の反対側、last-child
は要素の親の最後の項目をターゲットにします。
last-child
セレクタの例
これらのクラスの使用可能な1つを示すための簡単な例を構築しましょう。 スタイル付きリスト項目を作成します。
<ul> <li> List Item </li> <li> List Item </li> <li> List Item </li> </ul>
マークアップには特別なことは何もありません。
:
ul { width: 200px; background: #292929; color: white; list-style: none; padding-left: 0;}li { padding: 10px; border-bottom: 1px solid black; border-top: 1px solid #3c3c3c;}
このスタイルは、背景を設定し、ul
のブラウザのデフォルトのパディングを削除し、各li
に境界線を適用して少し深さを提供します。
リストに奥行きを追加するには、
li
の背景色よりも1つまたは2つ暗いborder-bottom
を各li
に適用します。 次に、明るい色合いのカップルであるborder-top
を適用します。
上の画像に示すように、唯一の問題は、順序付けられていないリストの最上部と下部に境界線が適用されることです—これは奇妙に見えます。 これを修正するには、:first-child
と:last-child
擬似クラスを使用しましょう。
li:first-child { border-top: none;}li:last-child { border-bottom: none;}
そこに行く;それはそれを修正します!
28. X:only-child
div p:only-child { color: red;}
正直なところ、おそらくonly-child
擬似クラスをあまり頻繁に使用することはありません。 それにもかかわらず、それはあなたがそれを必要とするならば、利用可能です。
それはあなたがその親の唯一の子である要素をターゲットにすることができます。 たとえば、上記のスニペットを参照すると、div
の唯一の子である段落のみが赤色に着色されます。
次のマークアップを仮定しましょう。
<div><p> My paragraph here. </p></div><div> <p> Two paragraphs total. </p> <p> Two paragraphs total. </p></div>
この場合、2番目のdiv
の段落はターゲットにされず、最初のdiv
のみが対象になります。 要素に複数の子を適用するとすぐに、only-child
擬似クラスは有効になりません。
29. X:only-of-type
li:only-of-type { font-weight: bold;}
この構造的な擬似クラスは、いくつかの巧妙な方法で使用できます。 親コンテナ内に兄弟を持たない要素をターゲットにします。 例として、単一のリスト項目のみを持つすべてのul
を対象としましょう。
まず、このタスクをどのように達成するかを自問してください。 あなたはul li
をすることができますが、これはすべてのリスト項目を対象とします。 唯一の解決策はonly-of-type
を使用することです。
ul > li:only-of-type { font-weight: bold;}
30. X:first-of-type
first-of-type
擬似クラスを使用すると、そのタイプの最初の兄弟を選択できます。
テスト
これをよりよく理解するために、テストをしましょう。 次のマークアップをコードエディターにコピーします:
<div> <p> My paragraph here. </p> <ul> <li> List Item 1 </li> <li> List Item 2 </li> </ul> <ul> <li> List Item 3 </li> <li> List Item 4 </li> </ul> </div>
ここで、さらに読むことなく、”リスト項目2″のみをターゲットにする方法を理解してみてください。 あなたがそれを考え出した(またはあきらめた)ときは、読んでください。
ソリューション1
このテストを解決するには、さまざまな方法があります。 私たちはそれらの一握りを確認します。 first-of-type
を使用して始めましょう。
ul:first-of-type > li:nth-child(2) { font-weight: bold;}
このスニペットは、基本的に、ページ上の最初の順序付けられていないリストを検索し、リスト項目である直接の子のみを検索すると言います。 次に、それをそのセット内の2番目のリスト項目のみにフィルタリングします。
解決策2
別のオプションは、隣接するセレクタを使用することです。
p + ul li:last-child { font-weight: bold;}
このシナリオでは、p
タグをすぐに進めるul
を見つけて、要素の最後の子を見つけます。
ソリューション3
私たちは、これらのセレクタで好きなように不快または遊び心することができます。
ul:first-of-type li:nth-last-child(1) { font-weight: bold; }
今回は、ページ上の最初のul
を取得し、最初のリスト項目を見つけますが、下から始まります!
N番目の子と型セレクタのライブデモ
結論
Internet Explorer6のような古いブラウザを補償している場合は、これらの新しいセレクタを使用する際には注意する必要があります。 しかし、それはこれらを学ぶことからあなたを阻止させてはいけません。 あなたは自分自身に大きな害を及ぼすでしょう。 ブラウザの互換性リストについては、必ずこちらを参照してください。 また、Dean Edwardの優れたIE9を使用することもできます。古いブラウザにこれらのセレクタのサポートをもたらすためのjsスクリプト。
第二に、人気のあるjQueryのようなJavaScriptライブラリを扱うときは、可能な限り、ライブラリのカスタムメソッド/セレクタよりもこれらのネイティブCSS3セ セレクタエンジンは独自のものではなく、ブラウザのネイティブ解析を使用できるため、コードをより高速にします。
webデザインの基礎を学ぶのに時間を費やしているのは素晴らしいことですが、迅速な解決策が必要な場合は、すぐに使用できるCSSテンプレートの 我々はまた、あなたが考慮するためのいくつかのプレミアムCSSアイテムを持っています。
-
CSS3最新のWebプロジェクトのための15のエレガントなCSS価格表Monty Shokeen
-
ブートストラップ418最高のブートストラップ4プラグインモンティShokeen
Envato要素への1ヶ月間の無料アクセス
最後に、ここでは、プロ並みのサイトやアプリを構築するのに役立つ非常に特別なオファーです。 これらのCSSセレクタを使用するだけでなく、高品質のストック写真、ビデオ映像、プレミアムフォント、グラフィック、イラストなどを活用してみませんか?
通常は、そのようなリソースのために支払う必要があります。 しかし、今、あなたは完全に無料で、一ヶ月のためにあなたのコーディングプロジェクトのための創造的な資産の何百万人にアクセスすることがで そして、さらに、あなたは無制限のダウンロードを得るので、あなたはその月の間に好きなだけつかむことができ、あなたが継続することを決定した場
このオファーを利用するには、この特別なサインアップリンクをクリックするか、登録ページで以下のコードを入力します:
elements_cont_tuts-freemonth1-4bwkbp
あまりにも長い間待ってはいけない—オファーは限られた時間のためにのみ有効です!