开始使用CSS伪类和伪元素

212 阅读5分钟

你可以使用CSS选择器来定位和设计网页中的元素。一个标准的选择器可能针对一个特定的段落或某一层次的所有标题。伪选择器则更进一步,允许你以更细微的差别来定位页面的某些部分。

伪类针对一个元素的不同状态:例如,当指针悬停在一个链接上时。伪元素允许你针对一个元素的特定部分,例如一个段落的第一行。

所以,不用多说,让我们解释一下伪类和伪元素的基本知识。

什么是 "伪类"?

伪类是一个CSS选择器,可以选择处于特定状态的HTML元素。有些状态是指上下文,例如其类型中的第一个元素。其他的是行为状态,比如当鼠标指针悬停在一个链接上时。它们允许你根据用户的行为来设计内容。尤其是上下文状态,可以帮助你编写灵活、可维护和干净的代码。行为状态为你可能需要使用JavaScript的功能提供了一个捷径。

你可以很容易地识别伪类,因为它们以冒号(:)开头。让我们看看简单和用户行为伪类的几个实例。

简单的伪类实例

首先,我们来写一下HTML代码。

<!DOCTYPE html><html lang="en"> <head>   <meta charset="UTF-8" />   <title>Pseudo-class and Pseudo-element</title> </head> <body>   <header>Lorem ipsum dolor, sit amet consectetur adipisicing elit.</header>        <section>    <p>       Voluptatum fuga, impedit sequi totam numquam assumenda repellat       tempora sapiente! Nihil unde vel recusandae, expedita aperiam tempora       totam deserunt non porro reprehenderit.     </p>              <p>       Dicta totam non iusto labore sapiente numquam hic tempora earum,       minima repellendus pariatur fugit nobis ex adipisci, tempore vitae       laboriosam harum. Quidem!          </p>               <p>       Suscipit repellendus cupiditate dignissimos eveniet beatae quas       laudantium, laboriosam minus iusto, corporis ullam alias porro sequi       necessitatibus autem ipsam debitis libero sapiente!       </p>              <p>       Iste iure deserunt vel? Nisi omnis quo quibusdam inventore delectus.       Molestias exercitationem in quia possimus consectetur dolorum sequi       veniam quo corporis ullam?     </p>              <p>       Suscipit repellendus cupiditate dignissimos eveniet beatae quas       laudantium, laboriosam minus iusto, corporis ullam alias porro sequi       necessitatibus autem ipsam debitis libero sapiente!     </p>                <p>       Iste iure deserunt vel? Nisi omnis quo quibusdam inventore delectus.       Molestias exercitationem in quia possimus consectetur dolorum sequi       veniam quo corporis ullam?     </p>                <p>       Asperiores illum beatae dolores, dolore quae exercitationem laudantium,       officia nam distinctio tempora deleniti itaque quibusdam iste quo eaque       reiciendis nostrum saepe aperiam?     </p>          </section> </body></html>

注意,在同一章节中,有几个段落。要单独为它们设计样式,你可以给每一个单独的类,并使用一个CSS类选择器。但这不是很实用,尤其是当内容可能经常变化时。相反,你可以使用不存在于HTML中的伪类,但仍然允许你对这些元素进行定位和样式化。让我们来看看它是如何工作的。

CSS

body { font-size: 1em;}header { font-size: 3em;} /* Selecting the first paragraph */p:first-child { font-size: 1.3em;} /* Selecting the last paragraph */p:last-child { color: red; text-decoration: underline;} /* Selecting the nth paragraph */p:nth-child(3) { color: blue; font-style: italic;}p:nth-child(4) { color: #666; font-size: 1.9em;}p:nth-child(5) { color: yellowgreen; font-weight: bold;}

输出。

使用简单的伪类,如**:first-child,:nth-child(x), 和,:last-**child,我们可以很容易地选择和设置段落的样式。注意,这些伪类选择的是段落本身,而不是它们的子元素。

用户行动伪类实例

用户行为或行为伪类只在用户与文档交互时适用。最流行的例子之一包括**:link**,:visited,:hover, 和**:focus状态。让我们看看一个链接和一个图像的:hover**状态例子。

HTML

<!DOCTYPE html><html lang="en"> <head>   <meta charset="UTF-8" />   <title>Pseudo-class and Pseudo-element</title> </head> <body>   <div class="image-box">     <img class="image-back" src="images/By_Unsplash_Search.jpg" alt="Coding on a laptop" />     <img class="img-front" src="images/By_Unsplash.jpg" alt="Search bar with blue background" />   </div>   <div>     <a href="#">Learn more about Pseudo-classes</a>   </div> </body></html>

在这个例子中,有两个图像和一个链接。这些图片被放置在同一个位置,所以你可以通过隐藏一个并显示另一个来切换它们。

CSS

body { font-family: 'Inter', sans-serif;}.image-box { position: relative; width: 70%; margin: 5em; color: #fff;}.image-box img { display: inline-block; position: absolute; left: 0; width: 70%;}.image-box img.img-front:hover{ opacity:0; cursor: pointer;}a { position: absolute; bottom: 2em; left: 3em; text-decoration: none; color: #222; display: inline-block; font-size: 2.5em; font-weight: 600; border-bottom: 5px solid rgb(250, 0, 0);}a:hover { color: rgb(250, 0, 0); border-bottom: none;}

这第一个例子演示了悬停在链接上的效果。CSS改变了它的颜色和边界。

在第二个例子中,你可以看到悬停在图片上的效果。它的不透明度被设置为0,从而有效地使图像透明。

什么是 "伪元素"?

伪元素的行为类似于伪类。请记住,伪类适用于一个现有的元素。同时,一个伪元素的行为就像一个新的HTML元素存在一样。另外,一个伪元素以双冒号(:: )开头。让我们通过一个例子来看看它是如何工作的。

HTML

<!DOCTYPE html><html lang="en"> <head>   <meta charset="UTF-8" />   <title>Pseudo-class and Pseudo-element</title> </head> <body>   <header>     <div class="header-img">       <img src="By_Unsplash.jpg" alt="Coding on a laptop" />     </div>   </header> </body></html>

现在,我们将使用一个**::before伪元素来添加文本"了解更多",并使用一个::after**伪元素来添加文本 "**立即购买",**只使用CSS。我们还将应用position属性,将这些伪元素相对于父容器放置。

body { font-family: 'Inter', sans-serif; color: #666;}img { width: 30em;   vertical-align: middle;}.header-img::before { content: "Learn More"; color: #fff; background-color: rgb(75, 159, 192); padding: 0.3em 5em; display: inline-block; position: absolute; top: 25px; left: -70px; transform: rotate(-45deg);}.header-img::after { content: "Buy Now"; color: #fff; background-color: rgb(212, 115, 91); padding: 0.3em 5em; display: inline-block; position: absolute; bottom: 25px; right: -70px; transform: rotate(-45deg);}header { position: relative; overflow: hidden; font-weight: 600;}header,section { width: 30em;}

最后的效果是在图片的左上角和右下角叠加类似 "丝带 "的标签。

掌握伪类和伪元素的方法

CSS的伪类和伪元素,如果使用得当,可以为许多可能性打开大门。一开始你可能会感到不知所措,但练习这种技术是提高你的网页设计技巧的关键。关键是要经常彻底测试你的设计,利用谷歌浏览器的DevTools等功能。

我们希望你已经了解了伪类和伪元素的基本知识。请记住,学习永远不会停止所以,继续探索新的CSS选择器,并尝试在你即将到来的项目中实施和测试它们。