ホームページ  >  記事  >  ウェブフロントエンド  >  マスター CSS セレクター (2)_html/css_WEB-ITnose

マスター CSS セレクター (2)_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-24 11:15:461140ブラウズ

セレクター レベル 4 に、これまで欠落していたセレクターと新しく定義されたセレクターがいくつか追加されました。

属性セレクターは大文字と小文字を区別しません

[attribute="value" i]、属性セレクターはセレクター レベル 4 で拡張され、属性の大文字と小文字を区別しないように i 識別子が追加されています。 [href $=".pdf" i]:

<a href="a.pdf">属性值是小写字母会被选中</a><a href="b.PDF">属性值是大写字母也会被选中,如果没有添加 i 标识则该元素不会被选中</a>

サポートされているブラウザ: Chrome/Opera、Firefox、Safari

一致する疑似クラス

:matches(selector...)、任意に一致するものを選択してくださいselector パラメーターの要素。例:

section h1, article h1, aside h1 {  color: red;}

この疑似クラスを使用すると、次のように記述できます:

:matches(section, article, aside) h1 {  color: red;}

この機能は、コードを簡素化することです。

サポートされているブラウザ: Chrome/Opera(:-webkit-any)、Firefox(:-moz-any)、Safari

擬似クラス

をリンク

:any-link、すべてのリンクを選択:

a:any-link {  font-size: 2em;}

サポートされているブラウザ: Chrome/Opera(:-webkit-any-link)、Firefox(:-moz-any-link)

不定状態の疑似クラス

:indeterminate、この疑似クラスには現在次の 3 つのケースがあります:

1. どれもチェックされていない状態のラジオ ボタン ボックスのグループを選択します。例:

<input name="sex" type="radio" value="0"><input name="sex" type="radio" value="1">

赤い輪郭を設定します。

input[type="radio"]:indeterminate {  outline: 1px solid red;}

ラジオ ボタンのグループを変更する場合、任意のラジオボックス内のボタンがチェックされている状態では、この疑似クラスは無効になります。

サポートされているブラウザ: Chrome/Opera

2. 不定の DOM 属性を true に設定してチェックボックスをオンにします。例:

<input name="favorite" type="checkbox" value="apple">

赤い輪郭を設定します。

input[type="checkbox"]:indeterminate {  outline: 1px solid red;}

JavaScript を使用して、 element 値:

document.getElementsByTagName('input')[0].indeterminate = true;

チェックボックスをクリックして状態を変更すると、この疑似クラスは無効になります。

サポートされているブラウザ: Chrome/Opera

3. progress:indeterminate: など、不確定な状態の進行状況要素を選択します。

<progress max="100"></progress> <!-- 会被选中 --><progress max="100" value="50"></progress> <!-- 不会被选中 -->

サポートされているブラウザ: Chrome/Opera、Firefox、IE 10、Safari

デフォルト オプション pseudo -class

:default、類似した要素のグループ内のデフォルトの要素を選択します。例:

:default {  outline: 1px solid red;}

デフォルトのステータスのラジオ ボックスとチェック ボックスを選択できます: selected、selected 属性の

<form action="#" mthod="post">  <input checked name="favourite" type="checkbox" value="apple"> <!-- 会被选中 -->  <input name="favourite" type="checkbox" value="orange"> <!-- 不会被选中 -->  <input name="sex" type="radio" value="0"> <!-- 不会被选中 -->  <input checked name="sex" type="radio" value="1"> <!-- 会被选中 -->  <button type="submit">Submit1</button> <!-- 会被选中 -->  <button type="submit">Submit2</button> <!-- 不会被选中 --></form>

サポートされているブラウザ: Chrome/Opera、Firefox、Safari

検証疑似クラス

:valid および :invalid、この疑似クラスはselected は、Input クラス要素に加えて form 要素も選択できるため、次の 2 つの状況に分けることができます:

1.:valid は、値が検証に合格する入力要素を選択します。 :invalid は、値が検証に失敗する入力要素を選択します。例:

input:valid {  border: 1px solid green;}input:invalid {  border: 1px solid red;}

値が検証に合格した要素には緑色の境界線が表示され、値が検証に失敗した要素には赤色の境界線が表示されます:

<input type="email" value="x@y.z"> <!-- 绿色边框 --><input type="email" value="xyz"> <!-- 红色边框 -->

サポートされているブラウザ: Chrome/Opera、Firefox、IE 10、Safari

2.:valid Select external すべての入力要素が検証フォーム要素に合格します。:invalid は、少なくとも 1 つの入力要素が検証に失敗したフォーム要素を選択します

例、フォーム内に検証に失敗した入力要素がある場合、送信ボタンを非表示にすると、すべての要素が合格します。 検証中に、送信ボタンが表示されます:

<form action="#" mthod="post">  <input name="email" required type="email">  <input name="password" required type="password">  <button type="submit">Submit</button></form>

スタイル:

form:invalid button[type="submit"] {  display: none;}form:valid button[type="submit"] {  display: inline-block;}

サポートされているブラウザ: Chrome/Opera、Firefox、Safari

:in-range および :out-of-range

:in-range は、オプションの範囲内の値を持つ数値日付入力要素を選択します。 :out-of-range は、オプションの範囲外の値を持つ数値日付入力要素を選択します。次に例を示します。

input:in-range {  outline: 1px solid green;}input:out-of-range {  outline: 1px solid red;}

範囲内の値を持つ要素は緑色の枠線で表示され、範囲外の値を持つ要素は赤い枠線で表示されます:

<input max="10" min="1" type="number" value="9"> <!-- 绿色轮廓 --><input max="10" min="1" type="range" value="9"> <!-- 绿色轮廓 --><input max="10" min="1" type="number" value="11"> <!-- 红色轮廓 --><input max="2016-05-07" min="2016-05-05" type="date" value="2016-05-08"> <!-- 红色轮廓 -->

図に示すように:

:in- range は :valid の特殊なケースで、 :out-of-range は :invalid の特殊なケースの一種です。

サポートされているブラウザ: Chrome/Opera、Firefox、Edge、Safari

Optionality 疑似クラス

:required および :optional

:required は、required 属性を持つすべての input、textarea、select、およびその他のフォームを選択しますset.Element、:optional は、必須の属性を持たないすべての input、textarea、select、およびその他のフォーム要素を選択します。例:

input[type="text"]:required {  border: 1px solid red;}input[type="text"]:optional {  border: 1px solid #ccc;}

必須のテキスト ボックスを赤い枠線で表示:

<input required type="text"> <!-- 必填,红色边框 --><input type="text"> <!-- 非必填,灰色边框 -->

サポートされているブラウザ: Chrome/Opera 、Firefox 、IE 10+、Safari

可変性疑似クラス

:読み取り専用 および :読み取り-書き込み

:read-only 选择状态为只读的元素,:read-write 选择状态可读写的元素,例如:

:read-write {  border: 1px solid green;}:read-only {  background-color: #eee;}

<input readonly type="text"> <!-- 只读,灰色背景 --><input type="text"> <!-- 可读写,绿色边框 --><p contenteditable>可读写,绿色边框</p><p>只读,灰色背景</p>

:read-only 伪类和 [readonly] 属性选择器是不一样的。

支持的浏览器:Chrome/Opera, Firefox(:-moz-read-only, :-moz-read-write), Edge, Safari

结构伪类

:nth-child(n of selector),选择同级元素中第 n 个满足参数选择器的元素,其中 n 可以是自然数,也可以是公式或者关键词,和 Selectors Level 3 中定义的一样,例如:

li:nth-child(2 of .important) {  background-color: yellow;}

选择同级中第 2 个具有 important 类的 li 元素,

<ul>  <li>不会被选中</li>  <li class="important">不会被选中</li>  <li>不会被选中</li>  <li>不会被选中</li>  <li class="important">会被选中</li></ul>

如果这样写:

li.important:nth-child(2) {  background-color: yellow;}

该选择器选择的是同级中第 2 个同时具有 important 类的 li 元素:

<ul>  <li>不会被选中</li>  <li class="important">会被选中</li>  <li>不会被选中</li>  <li>不会被选中</li>  <li class="important">不会被选中</li></ul>

:nth-last-child(n of selector),同上,只是倒着数。

支持的浏览器:Safari

否定伪类

:not(selector...),在 Selectors Level 3 中否定伪类只能传入简单的选择器参数,在 Selectors Level 4 中增强了参数,可以给参数传入一个选择器列表,用于选择不匹配所有选择器参数列表的元素,参数之间用逗号分隔,例如 p:not(.foo, .bar),选择所有类不为 foo 同时也不为 bar 的 p 元素:

<p class="foo bar">不会被选中</p><p class="foo">不会被选中</p><p class="bar">不会被选中</p><p>会被选中</p>

该选择器的效果等同于 p:not(.foo):not(.bar)。

支持的浏览器:Safari

关系伪类

:has(selector...),选择满足参数给定条件的元素,例如:

header:has(h1) {  background-color: blue;}

选择内部含有 h1 元素的 header 元素,

<header>  会被选中  <h1>标题</h1></header><header>  不会被选中  <h2>标题</h2></header>

该伪类具有很强大的功能,更多示例:

/* 选择内部不含有 h1 元素的 header 元素 */header:not(:has(h1)) {  background-color: yellow;}/* 选择同级紧邻元素是 span 的 h2 元素 */h2:has(+ span) {  font-size: 2em;}/* 选择含有 img 子元素的 a 元素 */a:has(> img) {  border: 1px solid #ccc;}

支持的浏览器:暂无

焦点伪类

:focus-within,选择内部元素获得焦点的元素,例如:

<div class="item">  <label for="email">Email:</label>  <input id="email" type="text"></div>

样式:

:focus-within {  outline: 1px solid yellow;}

当输入框获得焦点的时候,会应用上面的样式,同时,其父元素也会应用上面的样式。

支持的浏览器:暂无

方向性伪类

:dir(),选择特定书写方向的元素,例如:

:dir(ltr) {  color: red;}:dir(rtl) {  color: blue;}

从左向右书写的文字显示为红色,从右向左书写的文字显示为蓝色:

<div dir="rtl">  <span>蓝色</span>  <div dir="ltr">红色    <div dir="auto">红色</div>  </div></div>

支持的浏览器:Firefox(:-moz-dir)

全屏伪类

:fullscreen,选择处于全屏显示状态下的元素,例如:

p:fullscreen {  font-size: 200%;}

全屏显示时段落文本大小为普通时的两倍。

支持的浏览器:Chrome/Opera(:-webkit-full-screen), Firefox(:-moz-full-screen), IE 11(:-ms-fullscreen), Safari(:-webkit-full-screen)

占位符伪元素和占位符显示伪类

::placeholder,选择占位符伪元素,例如:

<input name="username" placeholder="Please enter your name" type="text">

样式:

::placeholder {  color: #999;}

支持的浏览器:Chrome/Opera(::-webkit-input-placeholder), Firefox(::-moz-placeholder), IE10(:-ms-input-placeholder), Edge(::-ms-input-placeholder), Safari(::-webkit-input-placeholder)

:placeholder-shown,选择当前正在显示占位符的元素,例如:

<input name="username" placeholder="Please enter your name" type="text">

样式:

input:placeholder-shown {  border: 1px solid red;}

如图:

支持的浏览器:Chrome/Opera, Safari

参考资料

  • Selectors Level 4
  • CanIuse
  • 声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。