网站链接: 我爱捣鼓
当前位置: 首页 > 前端开发 > css

通过实例告诉你CSS3伪类和伪元素的区别

2021/10/30 18:47:44

CSS3伪类和伪元素我们经常用到,但二者究竟有什么区别呢?不一定每个人都很清楚,今天我们就通过实例来看看CSS3伪类和伪元素的区别:CSS3伪类 伪类存在的意义是为了通过选择器找到那些不存在与DOM树中的信息以及不能被常规CSS选择器获取到的信息。 伪类由一…

        CSS3伪类和伪元素我们经常用到,但二者究竟有什么区别呢?不一定每个人都很清楚,今天我们就通过实例来看看CSS3伪类和伪元素的区别:

CSS3伪类

        伪类存在的意义是为了通过选择器找到那些不存在与DOM树中的信息以及不能被常规CSS选择器获取到的信息。

        伪类由一个冒号:开头,冒号后面是伪类的名称和包含在圆括号中的可选参数。

        通过对伪类的定义我们可以知道CSS3伪类有两个重要的功能:

        1、获取不存在与DOM树中的信息。比如<a>标签的:link、visited等,这些信息不存在与DOM树结构中,只能通过CSS选择器来获取;

        2、获取不能被常规CSS选择器获取的信息。比如伪类:target,它的作用是匹配文档(页面)的URI中某个标志符的目标元素,例如我们可以通过如下代码来实现页面内的区域跳转:

        接下来我们通过一个例子来看看CSS3伪类在实际中的应用。


<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
    <title>通过实例告诉你CSS3伪类和伪元素的区别-www.woaidaogu.com</title>
<style>
.tab_content {
  height: 100px;
  background: #007BBC;
  margin-bottom: 100px;
  text-align:center;
  line-height:100px;
  color:#ffffff;
  font-size:20px;
  font-weight:bold;
}
#tab1:target, #tab2:target, #tab3:target {
background:#D4D0C8;
color:#94918C;
}
</style>
    <script src="https://cdn.staticfile.org/jquery/1.6.1/jquery.min.js"></script>  
    <script type="text/javascript">    
    </script>
</head>
<body>
<ul class="tabs">
<li><a href="#tab1">栏目一</a></li>
<li><a href="#tab2">栏目二</a></li>
<li><a href="#tab3">栏目三</a></li>
</ul>
<div id="tab1" class="tab_content">
栏目一
<!--tabed content--></div>
<div id="tab2" class="tab_content">
栏目二
<!--tabed content--></div>
<div id="tab3" class="tab_content">
栏目三
<!--tabed content--></div>
</body>  
</html>

image.png

        上面的例子通过css伪类:target实现了常规CSS无法实现的逻辑。

CSS3伪元素

        伪元素在DOM树中创建了一些抽象元素,这些抽象元素是不存在于文档语言里的。比如:documen接口不提供访问元素内容的第一个字或者第一行的机制,而伪元素可以使开发者可以提取到这些信息。并且,一些伪元素可以使开发者获取到不存在于源文档中的内容(比如常见的::before,::after)。

        伪元素的由两个冒号::开头,然后是伪元素的名称。

        一个选择器只能使用一个伪元素,并且伪元素必须处于选择器语句的最后。

        简单来说,伪元素创建了一个虚拟容器,这个容器不包含任何DOM元素,但是可以包含内容。另外,开发者还可以为伪元素定制样式。

        以::first-line为例,它获取了指定元素的第一行内容并且将第一行的内容加入到虚拟容器中。当然,这些问题也可以用JavaScript来解决的,但是相对于::first-line简简单单的几个字,用JavaScript要写的代码就多了吧!

        接下来我们通过一个例子来看看CSS3伪元素在实际中的应用。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>通过实例告诉你CSS3伪类和伪元素的区别-www.woaidaogu.com</title> 
<style>
#content
{
font-size:20px;
line-height:30px;
}
#content::first-line 
{
color:#ff0000;
font-variant:small-caps;
font-size:30px;
line-height:50px;
}
</style>
</head>
<body>
<div id="content">
念奴娇·赤壁怀古</br>
大江东去,浪淘尽,千古风流人物。</br>
故垒西边,人道是,三国周郎赤壁。</br>
乱石穿空,惊涛拍岸,卷起千堆雪。</br>
江山如画,一时多少豪杰。</br>
遥想公瑾当年,小乔初嫁了,雄姿英发。</br>
羽扇纶巾,谈笑间,樯橹灰飞烟灭。</br>
故国神游,多情应笑我,早生华发。</br>
人生如梦,一尊还酹江月。</br>
</div>
</body>
</html>

image.png

        最后,我们总结一下伪类与伪元素的特性和它们的区别:

        1、伪类本质上是为了弥补常规CSS选择器的不足,以便获取到更多信息;

        2、伪元素本质上是创建了一个有内容的虚拟容器;

        3、CSS3中伪类和伪元素的语法不同;

        4、可以同时使用多个伪类,而只能同时使用一个伪元素;

        通过以上内容我们知道了CSS3伪类和伪元素的区别,感谢您访问“我爱捣鼓(www.woaidaogu.com)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!

相关资讯

  • 设置英文首字母大写的css属性是什么?

    设置CSS text-transform 的属性为capitalize就可以实现英文首字母大写。 定义和用法  text-transform 属性控制文本的大小写。 属性值 值 描 述 none 默认。定义带有小写字…

    2021/7/14 20:35:17
  • 只让页面显示横滚动条,不显示竖滚动条如何实现?

    只让页面显示横滚动条,不显示竖滚动条的方法其实很简单,主要用到body的两个css属性 overflow和 overflow-y,如下所示:body { overflow:scroll; overflow-y:hidden;}

    2021/2/28 21:45:25
  • 网页的滚动条样式可以修改吗?如何修改?

    网页的滚动条样式可以修改的,主要是使用css来控制那如何修改呢?如下代码:<div class="inner"> <div class="innerbox"> <p style="height:200px;">这是内容111</p> <p style="hei…

    2021/2/28 21:15:24
  • css如何实现6张图片均匀排列在一行?

    css部分如下:img{width:120px; height:80px;float:left;margin-right:16px;}.img3{margin-right:0;}html部分如下:<img src="images/001.jpg" /><img src="images/002.jpg" /><img src="images/003.jpg" /><img src=…

    2021/2/28 21:10:01