CSSの結合セレクタ
※過去ブログの転記
結合記号 | セレクタ | 対象 |
---|---|---|
+ | E + F |
E直後の兄弟(隣接)要素Fに適用 |
~ | F ~ F |
E以降の兄弟となる要素F全てに適用 |
> | E > F |
親要素Eの子要素Fに適用 |
(space) | E F |
親要素Fの子要素Fと孫要素Fに適用 |
こういう時に使う仮の要素名ってElementのE
を使用するけどF
ってなんだろと思って調べたら アルファベット順でEの次はFだからっぽい。
form,inputで使えるtypeと属性
※過去ブログの転記
type
text
,hidden
,password
,email
とか個人的によく使うものは省略。
input type="tel"
はPCや非対応ブラウザではinput type="text"
の時と同じsearch
,datetime-local
,date
,month
,week
,time
は値がある場合かつフォーカスした時とホバーした時に入力欄右端にリセット(x)が表示される (今までCSS+jQueryでわざわざxボタン作ってやってました...)input type="search"
はxボタンが表示される以外はinput type="text"
の時と同じinput type="color"
すごい!!!JSColorいらないじゃん!!!と思ったらSafari非対応だったのでクソ- datetime系は今までdatetime-picker使ってたけどフォーマットとかに拘らないならdatetime-picker不要なのかもしれない
type="image"
はクリックした画像のxy軸がname_x,name_yに入って返ってくる。
属性
autocomplete
は個人的にはChromeの自動入力補完機能を使って欲しくない時に使うmax
,min
は入力欄のtypeによって最大(小)値を設定できる(ex.type="number" max="n"
,type="date" max="Y-m-d"
...etc)
属性セレクタの指定方法
※過去ブログの転記
普段は適当なclass名をつけて 親 子or孫 {...}
形式でばかり書いているので属性セレクタの種類についてまとめてみた
セレクタ | 対象 |
---|---|
E[attr] |
指定された属性を持つ要素 |
E[attr="val"] |
属性の値が一致する要素 |
E[attr*="val"] |
指定した値の部分一致(アスタリスク) |
E[attr^="val"] |
指定した値の前方一致(キャレット) |
E[attr$="val"] |
指定した値の後方一致(ドル) |
E[attr~="val"] |
複数区切りの中に指定した値が含まれている要素に対して適用(チルダ) (ex. class="aaa bbb ) |
E[attr|="val"] |
-(ハイフン)を区切りとして指定した値のプレフィックスがついているものに対して適用(パイプライン) (ex. class="val-aaa" ) |
E[attr="val"i] |
閉じタグ直前にi を入れると値の大文字小文字を区別しない |
最後2つはこの記事書くまで知らなかった。便利
参考
CSSの擬似要素と擬似クラス
※過去ブログの転記
いつもどっちがどっちかわからなくなるし、いまいち把握できていないのでmemo
擬似要素と擬似クラスの違いをまとめてみました
擬似要素
指定したセレクタの一部に対して適用
セレクタ | 対象 |
---|---|
::before |
要素の前 |
::after |
要素の後 |
::first-line |
要素の最初の1行 |
::first-letter |
要素の最初の1文字 |
::selection |
選択した要素*1 |
- CSS3から擬似クラスとの判別がしやすいように
セレクタ:
ではなくセレクタ::
をつける セレクタ:
でも動くし、IE8以下はセレクタ::
を解釈しないらしいinput
やimg
のような部品には使用できない::selection
はfirefox用に::-moz-selection
のようにベンダープレフィックスが必要
擬似クラス
指定したセレクタの全体に対して適用される
セレクタ | 対象 |
---|---|
:link |
未訪問リンク |
:visited |
訪問済みリンク |
:hover |
マウスホバーしたとき |
:active |
リンクを押してから離すまでの間の状態 |
:focus |
対象にフォーカスしたとき |
:first(last)-child |
最初(最後) |
:nth-(last-)child(X) |
最初(最後)からX番目 |
:nth-(last-)child(n+X) |
最初(最後)から数えてX番目から最後(最初)まで |
:nth-(last-)child(-n+X) |
最初(最後)からX番目まで |
:nth-(last-)child(Xn) |
最初(最後)からXの倍数 |
:nth-child(odd) |
奇数 |
:nth-child(even) |
偶数 |
:only-child |
子要素が1つだけのセレクタに対して |
:lang(lang-code) |
lang属性で指定されたテキストに対して適用 |
:target |
アンカーリンク先に対して有効 |
:root |
最上位の親要素(html)に対して |
:not() |
否定 |
:empty |
子要素が空のもの |
:enabled |
有効なinput に適用 |
:disabled |
無効なinput に適用 |
:checked |
checkedがついているinput に対して |
- aリンクに関する擬似クラスは順番通りに指定しないと機能しない
英語圏では LOVE and HATE で LVHA で覚えるらしい(強引すぎて普通に覚え辛い) - nthはn番目の意味(first, fourth, fifth, sixth...みたいな)
XXX-child
は親要素から兄弟要素を含み子要素全てをカウントするXXX-of-type
は親要素内のセレクタの型(type)を見て子要素をカウントする:empty
はテキストや改行、半角スペースがあると適用されない(コメントアウトは可)
:target
は初めて聞いた。すごい。使えそう
多分知らなければjQueryでやってたな...
:root
はどこで使用するんだろう
CSS変数の宣言をするためのセレクタなのかな
htmlでよくないか?
擬似クラスはphpとかのif文に近い気がする
補足
擬似要素と擬似クラスを同時に使いたいときは擬似クラスが先に来るように記述する
セレクタ:擬似クラス::擬似要素
*1:CSS3の仕様からは外れているらしい