많은 사람들이 CSS
을 매우 간단하다고 생각하지만, 실제로 CSS
를 잘 작성하는 것은 쉽지 않습니다. CSS
의 각 항목에는 실제로 많은 내용이 들어 있습니다. 🎜> 선택자는 아마도 다섯 가지 범주로 나눌 수 있습니다: CSS
选择器 | 名称 | 描述 |
---|---|---|
* |
通配选择器 | 选择所有的元素 |
E |
元素选择器 | 选择指定的元素 |
#idName |
id选择器 | 选择id属性等于idName的元素 |
.className |
class选择器 | 选择class属性包含className的元素 |
라고 적으면 자주 사용됩니다. 이 섹션의 내용은 매우 간단하며 특별히 말할 것은 없습니다. CSS
选择器 | 名称 | 描述 |
---|---|---|
E F |
包含选择器 | 选择所有包含在E元素里面的F元素 |
E>F |
子选择器 | 选择所有作为E元素的子元素F |
E+F |
相邻选择器 | 选择紧贴在E元素之后的F元素 |
E~F |
兄弟选择器 | 选择E元素所有兄弟元素F |
를 형제 선택자와 함께 사용하면 버그가 발생할 수 있으니 자세한 내용을 확인하세요. :checked
选择器 | 描述 |
---|---|
E:link |
设置超链接a在未被访问前的样式 |
E:visited |
设置超链接a在其链接地址已被访问过时的样式 |
E:hover |
设置元素鼠标在其悬停时的样式 |
E:active |
设置元素在被用户激活(在鼠标点击与释放之间发生的事件)时的样式 |
E:focus |
设置元素在成为输入焦点(该元素的onfocus事件发生)时的样式。(一般应用于表单元素) |
E:checked |
匹配用户界面上处于选中状态的元素E。(用于input type为radio与checkbox时) |
E:enabled |
匹配用户界面上处于可用状态的元素E。(一般应用于表单元素) |
E:disabled |
匹配用户界面上处于禁用状态的元素E。(一般应用于表单元素) |
E:empty |
匹配没有任何子元素(包括text节点)的元素E |
E:root |
匹配E元素在文档的根元素。在HTML中,根元素永远是HTML |
E:not(s) |
匹配不含有s选择符的元素E |
E:first-child |
匹配父元素的第一个子元素E |
E:last-child |
匹配父元素的最后一个子元素E |
E:only-child |
匹配父元素仅有的一个子元素E |
E:nth-child(n) |
匹配父元素的第n个子元素E |
E:nth-last-child(n) |
匹配父元素的倒数第n个子元素E |
E:first-of-type |
匹配同类型中的第一个同级兄弟元素E |
E:last-of-type |
匹配同类型中的最后一个同级兄弟元素E |
E:only-of-type |
匹配同类型中的唯一的一个同级兄弟元素E |
E:nth-of-type(n) |
匹配同类型中的第n个同级兄弟元素E |
E:nth-last-of-type(n) |
匹配同类型中的倒数第n个同级兄弟元素E |
注意事项:
超链接的4种状态(访问前,鼠标悬停,当前被点击,已访问),需要有特定的书写顺序才能生效;a:hover 必须位于 a:link 和 a:visited 之后,a:active 必须位于 a:hover 之后。
E:first-child
选择符,E必须是它的兄弟元素中的第一个元素,换言之,E必须是父元素的第一个子元素。与之类似的伪类还有E:last-child
,只不过情况正好相反,需要它是最后一个子元素。
:not()
的用法假定有个列表,每个列表项都有一条底边线,但是最后一项不需要底边线。
li:not(:last-child) { border-bottom: 1px solid #ddd; }
上述代码的意思是:给该列表中除最后一项外的所有列表项加一条底边线。是不是很方便。
:nth-child()
的用法要使E:nth-child(n)
生效,E元素必须是某个元素的子元素,E的父元素最高是body,即E可以是body的子元素。:first-child
、:last-child
、:only-child
、:nth-last-child(n)
也是一样。nth-child(n)
括号里的n可以是一个数字,一个关键字,或者一个公式。
:nth-child(length) /*参数是具体数字 length为整数*/ :nth-child(n) /*参数是n,n从0开始计算*/ :nth-child(n*length) /*n的倍数选择,n从0开始算*/ :nth-child(n+length) /*选择大于等于length后面的元素*/ :nth-child(-n+length) /*选择小于等于length前面的元素*/ :nth-child(n*length+1) /*表示隔几选一*/ :nth-child(2n) / :nth-child(even) /*表示偶数*/ :nth-child(2n+1) / :nth-child(odd) /*表示奇数*/
:...-child
和:...-of-type
的差异这两个系列的属性确实很相似,对于不熟悉的人可能很难区分。
E:first-of-type
总是能命中父元素的第1个为E的子元素,不论父元素第1个子元素是否为E;而E:first-child
里的E元素必须是它的兄弟元素中的第一个元素,否则匹配失效。E:last-of-type
与E:last-child
也是同理。E:nth-of-type(n)
总是能命中父元素的第n个为E的子元素,不论父元素第n个子元素是否为E;而E:nth-child(n)
会选择父元素的第n个子元素E,如果第n个子元素不是E,则是无效选择符,但n会递增。
关于:nth-child()
与:nth-of-type()
的区别可以看这篇文章
:empty
区分空元素选择不包含子元素的p元素:
p:empty
选择包含子元素的p元素:
p:not(:empty)
选择器 | 描述 |
---|---|
E:before /E::before
|
在目标元素E的前面插入的内容。用来和content属性一起使用 |
E:after /E::after
|
在目标元素E的后面插入的内容。用来和content属性一起使用 |
E:first-letter /E::first-letter
|
设置元素内的第一个字符的样式 |
E:first-line /E::first-line
|
设置元素内的第一行的样式 |
E::placeholder |
设置元素文字占位符的样式。(一般用于input输入框) |
E::selection |
设置元素被选择时的字体颜色和背景颜色 |
注意事项:
::placeholder
在使用时需要加上各个浏览器的前缀;除了Firefox是 ::[prefix]placeholder
,其他浏览器都是使用 ::[prefix]input-placeholder
。
选择器用得好其实可以让我们少些很多代码。其实还有一些东西没有展开来讲,比如:before
和:after
,后面专门写一篇文章来说。
많은 사람들이 CSS
을 매우 간단하다고 생각하지만, 실제로 CSS
를 잘 작성하는 것은 쉽지 않습니다. CSS
의 각 항목에는 실제로 많은 내용이 들어 있습니다. 🎜> 선택자는 아마도 다섯 가지 범주로 나눌 수 있습니다: CSS
选择器 | 名称 | 描述 |
---|---|---|
* |
通配选择器 | 选择所有的元素 |
E |
元素选择器 | 选择指定的元素 |
#idName |
id选择器 | 选择id属性等于idName的元素 |
.className |
class选择器 | 选择class属性包含className的元素 |
라고 적으면 자주 사용됩니다. 이 섹션의 내용은 매우 간단하며 특별히 말할 것은 없습니다. CSS
选择器 | 名称 | 描述 |
---|---|---|
E F |
包含选择器 | 选择所有包含在E元素里面的F元素 |
E>F |
子选择器 | 选择所有作为E元素的子元素F |
E+F |
相邻选择器 | 选择紧贴在E元素之后的F元素 |
E~F |
兄弟选择器 | 选择E元素所有兄弟元素F |
를 형제 선택자와 함께 사용하면 버그가 발생할 수 있으니 자세한 내용을 확인하세요. :checked
选择器 | 描述 |
---|---|
E:link |
设置超链接a在未被访问前的样式 |
E:visited |
设置超链接a在其链接地址已被访问过时的样式 |
E:hover |
设置元素鼠标在其悬停时的样式 |
E:active |
设置元素在被用户激活(在鼠标点击与释放之间发生的事件)时的样式 |
E:focus |
设置元素在成为输入焦点(该元素的onfocus事件发生)时的样式。(一般应用于表单元素) |
E:checked |
匹配用户界面上处于选中状态的元素E。(用于input type为radio与checkbox时) |
E:enabled |
匹配用户界面上处于可用状态的元素E。(一般应用于表单元素) |
E:disabled |
匹配用户界面上处于禁用状态的元素E。(一般应用于表单元素) |
E:empty |
匹配没有任何子元素(包括text节点)的元素E |
E:root |
匹配E元素在文档的根元素。在HTML中,根元素永远是HTML |
E:not(s) |
匹配不含有s选择符的元素E |
E:first-child |
匹配父元素的第一个子元素E |
E:last-child |
匹配父元素的最后一个子元素E |
E:only-child |
匹配父元素仅有的一个子元素E |
E:nth-child(n) |
匹配父元素的第n个子元素E |
E:nth-last-child(n) |
匹配父元素的倒数第n个子元素E |
E:first-of-type |
匹配同类型中的第一个同级兄弟元素E |
E:last-of-type |
匹配同类型中的最后一个同级兄弟元素E |
E:only-of-type |
匹配同类型中的唯一的一个同级兄弟元素E |
E:nth-of-type(n) |
匹配同类型中的第n个同级兄弟元素E |
E:nth-last-of-type(n) |
匹配同类型中的倒数第n个同级兄弟元素E |
참고:
하이퍼링크의 4가지 상태(액세스 전, 마우스 오버, 현재 클릭, 방문)를 적용하려면 특정 쓰기 순서가 필요합니다. a:link 및 a:visited 뒤에 위치해야 하며, a:active는 a:hover 뒤에 위치해야 합니다.
선택기인 E는 형제 요소 중 첫 번째 요소여야 합니다. 즉, E는 상위 요소의 첫 번째 하위 요소여야 합니다. 유사한 의사 클래스는 E:first-child
이지만 상황은 정반대이므로 마지막 하위 요소여야 합니다. E:last-child
:not()
li:not(:last-child) { border-bottom: 1px solid #ddd; }위 코드는 목록의 마지막 항목을 제외한 모든 목록 항목에 하단 줄을 추가한다는 의미입니다. 매우 편리하지 않습니까?
:nth-child()
의 사용법에 대해 E:nth-child(n)
이 적용되려면 E 요소가 특정 요소의 하위 요소여야 하며, E의 최상위 상위 요소는 body이며, 즉, E는 본문 하위 요소일 수 있습니다. :first-child
, :last-child
, :only-child
, :nth-last-child(n)
도 마찬가지다. nth-child(n)
괄호 안의 n은 숫자, 키워드 또는 수식일 수 있습니다.
:nth-child(length) /*参数是具体数字 length为整数*/ :nth-child(n) /*参数是n,n从0开始计算*/ :nth-child(n*length) /*n的倍数选择,n从0开始算*/ :nth-child(n+length) /*选择大于等于length后面的元素*/ :nth-child(-n+length) /*选择小于等于length前面的元素*/ :nth-child(n*length+1) /*表示隔几选一*/ :nth-child(2n) / :nth-child(even) /*表示偶数*/ :nth-child(2n+1) / :nth-child(odd) /*表示奇数*/
:...-child
와 :...-of-type
의 차이점에 대해 이 두 시리즈의 속성은 사실 매우 유사하여 익숙하지 않은 분들은 구별하기 어려울 수 있습니다. 그들을.
E:first-of-type
은 상위 요소의 첫 번째 하위 요소가 E이고 E:first-child
의 E 요소가 필수인지 여부에 관계없이 항상 상위 요소의 첫 번째 하위 요소인 E를 적중할 수 있습니다. 형제 요소 중 첫 번째 요소입니다. 그렇지 않으면 일치가 실패합니다. E:last-of-type
, E:last-child
도 마찬가지다. E:nth-of-type(n)
은 상위 요소의 n번째 하위 요소가 E인지 여부에 관계없이 항상 상위 요소의 n번째 하위 요소인 E를 적중할 수 있으며 E:nth-child(n)
는 n번째 하위 요소를 선택합니다. 상위 요소의 하위 요소 E, n번째 하위 요소가 E가 아닌 경우 유효하지 않은 선택자이지만 n은 증가됩니다. :nth-child()
과 :nth-of-type()
의 차이점은 이 기사를 참조하세요
:empty
를 사용하여 빈 요소 구분 포함하지 않는 p 요소 선택 하위 요소:
p:empty
하위 요소가 포함된 p 요소 선택:
p:not(:empty)
选择器 | 描述 |
---|---|
E:before /E::before
|
在目标元素E的前面插入的内容。用来和content属性一起使用 |
E:after /E::after
|
在目标元素E的后面插入的内容。用来和content属性一起使用 |
E:first-letter /E::first-letter
|
设置元素内的第一个字符的样式 |
E:first-line /E::first-line
|
设置元素内的第一行的样式 |
E::placeholder |
设置元素文字占位符的样式。(一般用于input输入框) |
E::selection |
设置元素被选择时的字体颜色和背景颜色 |
참고:
::placeholder
사용 시 각 브라우저의 접두사를 추가해야 합니다. Firefox를 제외하고 ::[prefix]placeholder
, 다른 브라우저는 ::[prefix]input-placeholder
을 사용합니다.
선택기를 잘 사용하면 실제로 많은 코드를 절약할 수 있습니다. 사실 :before
, :after
등 아직 구체적으로 다루지 못한 내용도 있는데, 이에 대해서는 추후 별도의 글에서 다루겠습니다.
CSS 선택자 구성과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!