CSS 伪类用法


什么是伪类?

伪类用于定义元素的特殊状态。例如,它可以用于:

  • 设置鼠标悬停在元素上时的样式
  • 为已访问和未访问链接设置不同的样式
  • 设置元素获得焦点时的样式
请将鼠标悬停在我上面

语法

伪类的语法:

  1. selector:pseudo-class {
  2. property: value;
  3. }

锚伪类

链接能够以不同的方式显示:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. /* unvisited link */
  6. a:link {
  7. color: red;
  8. }
  9. /* visited link */
  10. a:visited {
  11. color: green;
  12. }
  13. /* mouse over link */
  14. a:hover {
  15. color: hotpink;
  16. }
  17. /* selected link */
  18. a:active {
  19. color: blue;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <h1>CSS 链接</h1>
  25. <p><b><a href="/index.html" target="_blank">这是一个链接</a></b></p>
  26. <p><b>注释:</b>在 CSS 定义中,a:hover 必须位于 a:link 和 a:visited 之后才能生效。</p>
  27. <p><b>注释:</b>在 CSS 定义中,a:active 必须位于 a:hover 之后才能生效。</p>
  28. </body>
  29. </html>

注意:a:hover 必须在 CSS 定义中的 a:linka:visited 之后,才能生效!a:active 必须在 CSS 定义中的 a:hover 之后才能生效!伪类名称区分大小写。


伪类和 CSS 类

伪类可以与 CSS 类结合使用:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. /* unvisited link */
  6. a:link {
  7. color: red;
  8. }
  9. /* visited link */
  10. a:visited {
  11. color: green;
  12. }
  13. /* mouse over link */
  14. a:hover {
  15. color: hotpink;
  16. }
  17. /* selected link */
  18. a:active {
  19. color: blue;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <h1>CSS 链接</h1>
  25. <p><b><a href="/index.html" target="_blank">这是一个链接</a></b></p>
  26. <p><b>注释:</b>在 CSS 定义中,a:hover 必须位于 a:link 和 a:visited 之后才能生效。</p>
  27. <p><b>注释:</b>在 CSS 定义中,a:active 必须位于 a:hover 之后才能生效。</p>
  28. </body>
  29. </html>

悬停在 <div> 上

在 <div> 元素上使用 :hover 伪类的实例:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. div {
  6. background-color: green;
  7. color: white;
  8. padding: 25px;
  9. text-align: center;
  10. }
  11. div:hover {
  12. background-color: blue;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <p>请把鼠标移到下面的 div 元素上来改变其背景色:</p>
  18. <div>把鼠标移到我上面</div>
  19. </body>
  20. </html>

简单的工具提示悬停

把鼠标悬停到 <div> 元素以显示 <p> 元素(类似工具提示的效果):

悬停到我上面来显示 <p> 元素。

嘿嘿,我在这里!

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. p {
  6. display: none;
  7. background-color: #4CAF50;
  8. padding: 20px;
  9. color:#fff
  10. }
  11. div:hover p {
  12. display: block;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <div>鼠标移到我上面来显示 p 元素
  18. <p>哈哈!我在这里!</p>
  19. </div>
  20. </body>
  21. </html>

CSS - :first-child 伪类

:first-child 伪类与指定的元素匹配:该元素是另一个元素的第一个子元素。

匹配首个 <p> 元素

在下面的例子中,选择器匹配作为任何元素的第一个子元素的任何 <p> 元素:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. p:first-child {
  6. color: blue;
  7. }
  8. </style>
  9. </head>
  10. <body>
  11. <p>这是一段文本。</p>
  12. <p>这是一段文本。</p>
  13. </body>
  14. </html>

匹配所有 <p> 元素中的首个 <i> 元素

在下面的例子中,选择器匹配所有 <p> 元素中的第一个 <i> 元素:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. p i:first-child {
  6. color: blue;
  7. }
  8. </style>
  9. </head>
  10. <body>
  11. <p>我是一个<i>强壮</i>的男人。我是一个<i>强壮</i>的男人。</p>
  12. <p>我是一个<i>强壮</i>的男人。我是一个<i>强壮</i>的男人。</p>
  13. </body>
  14. </html>

匹配所有首个 <p> 元素中的所有 <i> 元素

在下面的例子中,选择器匹配作为另一个元素的第一个子元素的 <p> 元素中的所有 <i> 元素:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. p:first-child i {
  6. color: blue;
  7. }
  8. </style>
  9. </head>
  10. <body>
  11. <p>我是一个<i>强壮</i>的男人。我是一个<i>强壮</i>的男人。</p>
  12. <p>我是一个<i>强壮</i>的男人。我是一个<i>强壮</i>的男人。</p>
  13. </body>
  14. </html>

CSS - :lang 伪类

:lang 伪类允许您为不同的语言定义特殊的规则。

在下面的例子中,:lang 为属性为 lang="en" 的 <q> 元素定义引号:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. q:lang(en) {
  6. quotes: "~" "~";
  7. }
  8. </style>
  9. </head>
  10. <body>
  11. <p>Some text <q lang="en">A quote in a paragraph</q> Some text.</p>
  12. <p>在本例中,:lang 为 lang="en" 的 q 元素定义引号:</p>
  13. </body>
  14. </html>

所有 CSS 伪类

选择器例子例子描述
:activea:active选择活动的链接。
:checkedinput:checked选择每个被选中的 <input> 元素。
:disabledinput:disabled选择每个被禁用的 <input> 元素。
:emptyp:empty选择没有子元素的每个 <p> 元素。
:enabledinput:enabled选择每个已启用的 <input> 元素。
:first-childp:first-child选择作为其父的首个子元素的每个 <p> 元素。
:first-of-typep:first-of-type选择作为其父的首个 <p> 元素的每个 <p> 元素。
:focusinput:focus选择获得焦点的 <input> 元素。
:hovera:hover选择鼠标悬停其上的链接。
:in-rangeinput:in-range选择具有指定范围内的值的 <input> 元素。
:invalidinput:invalid选择所有具有无效值的 <input> 元素。
:lang(language)p:lang(it)选择每个 lang 属性值以 "it" 开头的 <p> 元素。
:last-childp:last-child选择作为其父的最后一个子元素的每个 <p> 元素。
:last-of-typep:last-of-type选择作为其父的最后一个 <p> 元素的每个 <p> 元素。
:linka:link选择所有未被访问的链接。
:not(selector):not(p)选择每个非 <p> 元素的元素。
:nth-child(n)p:nth-child(2)选择作为其父的第二个子元素的每个 <p> 元素。
:nth-last-child(n)p:nth-last-child(2)选择作为父的第二个子元素的每个<p>元素,从最后一个子元素计数。
:nth-last-of-type(n)p:nth-last-of-type(2)选择作为父的第二个<p>元素的每个<p>元素,从最后一个子元素计数
:nth-of-type(n)p:nth-of-type(2)选择作为其父的第二个 <p> 元素的每个 <p> 元素。
:only-of-typep:only-of-type选择作为其父的唯一 <p> 元素的每个 <p> 元素。
:only-childp:only-child选择作为其父的唯一子元素的 <p> 元素。
:optionalinput:optional选择不带 "required" 属性的 <input> 元素。
:out-of-rangeinput:out-of-range选择值在指定范围之外的 <input> 元素。
:read-onlyinput:read-only选择指定了 "readonly" 属性的 <input> 元素。
:read-writeinput:read-write选择不带 "readonly" 属性的 <input> 元素。
:requiredinput:required选择指定了 "required" 属性的 <input> 元素。
:rootroot选择元素的根元素。
:target#news:target选择当前活动的 #news 元素(单击包含该锚名称的 URL)。
:validinput:valid选择所有具有有效值的 <input> 元素。
:visiteda:visited选择所有已访问的链接。

所有 CSS 伪元素

选择器例子例子描述
::afterp::after在每个 <p> 元素之后插入内容。
::beforep::before在每个 <p> 元素之前插入内容。
::first-letterp::first-letter选择每个 <p> 元素的首字母。
::first-linep::first-line选择每个 <p> 元素的首行。
::selectionp::selection选择用户选择的元素部分。