css3 伪元素和伪类选择器详解


Posted in HTML / CSS onSeptember 04, 2014

伪类选择器:CSS中已经定义好的选择器,不能随便取名

常用的伪类选择器是使用在a元素上的几种,`如a:link|a:visited|a:hover|a:active`

 提示:在 CSS 定义中,a:hover 必须被置于 a:link 和 a:visited 之后,才是有效的。

提示:在 CSS 定义中,a:active 必须被置于 a:hover 之后,才是有效的。

伪元素选择器:并不是针对真正的元素使用的选择器,而是针对CSS中已经定义好的伪元素使用的选择器。

CSS中有如下四种伪元素选择器:
· first-line:为某个元素的第一行文字使用样式;
· first-letter:为某个元素中的文字的首字母或第一个字使用样式;
· before:在某个元素之前插入一些内容;
· after: 在某个元素之后插入一些内容;
   使用方法:选择器:伪元素{样式}

 结构性伪类选择器
 1.  四个最基本的:root、not、empty、target   

 2. first-child、last-child、nth-child、nth-last-child、              
nth-child(odd)、nth-child(even)、nth-last-child(odd)、nth-last-child(even)

 3.  nth-of-type、nth-last-of-type   
 4. 循环使用样式 
 5. only-child

:root()选择器,从字面上我们就可以很清楚的理解是根选择器,他的意思就是匹配元素E所在文档的根元素。在HTML文档中,根元素始终是<html>。“:root”选择器等同于<html>元素

:not()选择器称为否定选择器,和jQuery中的:not选择器一模一样,可以选择除某个元素之外的所有元素。

:empty()选择器表示的就是空。用来选择没有任何内容的元素,这里没有内容指的是一点内容都没有,哪怕是一个空格。

:target()选择器来对页面某个target元素(该元素的id被当做页面中的超链接来使用)指定样式,该样式只在用户点击了页面中的超链接,并且跳转到target元素后起作用

“:first-child()”选择器表示的是选择父元素的第一个子元素的元素E。简单点理解就是选择元素中的第一个子元素,记住是子元素,而不是后代元素。

:nth-child()选择某个元素的一个或多个特定的子元素;
:nth-last-child()从某父元素的最后一个子元素开始计算,来选择特定的元素。

看下面一个例子:

复制代码
代码如下:

<style type="text/css">
div p:nth-last-child(2){
color:red;
}
</style>
</head>
<body>
<div>
<p>前端</p>
<p>开发</p>
<p>工程</p>
<p>软件</p>
<p>工程</p>
</div>
</body>

:nth-child()可以选择某个的一个或多个特定的子元素,你可以按这种方式进行选择:
        :nth-child(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);/*表示隔几选一*/
        //上面length为整数

 值得注意的是:nth-child(0)没有选择元素,nth-child(1)选择第一个元素。

复制代码
代码如下:

<style type="text/css">
*{list-style:none;};
.demo {
width: 400px;
padding: 10px;
}
.demo li {
padding: 5px;
float: left;
margin-right:4px;
}
.demo li a {
float: left;
display: block;
height: 20px;
line-height: 20px;
width: 20px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;
text-align: center;
background: #f36;
color: white;
text-decoration: none;
}
.demo li:nth-child(1){
background:#01FEFE;
}
.demo li:nth-child(2n){
background:#4679BD;
}</p> <p> </style>
</head>
<body>
<div class="demo">
<ul>
<li class="one" id="first"><a href="">1</a></li>
<li class="two"><a href="">2</a></li>
<li class="three"><a href="">3</a></li>
<li class="four"><a href="">4</a></li>
<li class="five"><a href="">5</a></li>
<li class="six"><a href="">6</a></li>
<li class="seven"><a href="">7</a></li>
<li class="eight"><a href="">8</a></li>
<li class="nine"><a href="">9</a></li>
<li class="ten" id="last"><a href="">10</a></li>
</ul>
</div>

“:nth-of-type(n)”选择器和“:nth-child(n)”选择器非常类似,不同的是它只计算父元素中指定的某种类型的子元素。当某个元素中的子元素不单单是同一种类型的子元素时,使用“:nth-of-type(n)”选择器来定位于父元素中某种类型的子元素是非常方便和有用的。

":only-child"表示的是一个元素是它的父元素的唯一一个子元素。

伪元素:
 CSS中的伪元素大家以前看过::first-line,:first-letter,:before,:after;
 那么在CSS3中,他对伪元素进行了一定的调整,在以前的基础上增加了一个“:”也就是现在变成了“::first-letter,::first-line,::before,::after”另外他还增加了一个“::selection”,两个“::”和一个“:”css3中主要用来区分伪类和伪元素,到目前来说,这两种方式都是被接受的,也就是说不管使用哪种写法所起的作用都是一样的,只是一个书写格式不同而以。

::first-line选择元素的第一行,比如说改变每个段落的第一行文本的样式,我们就可以使用这个
p::first-line {font-weight:bold;}

::before和::after这两个主要用来给元素的前面或后面插入内容,这两个常用"content"配合使用,见过最多的就是清除浮动,

复制代码
代码如下:

.clearfix:before,
.clearfix:after {
content: ".";
display: block;
height: 0;
visibility: hidden;
}
.clearfix:after {clear: both;}
.clearfix {zoom: 1;}

::selection用来改变浏览网页选中文的默认效果

HTML / CSS 相关文章推荐
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
Jun 15 HTML / CSS
CSS Grid布局教程之什么是网格布局
Dec 30 HTML / CSS
CSS3圆角和渐变2种常用功能详解
Jan 06 HTML / CSS
HTML5的video标签的浏览器兼容性增强方案分享
May 19 HTML / CSS
使用HTML5 IndexDB存储图像和文件的示例
Nov 05 HTML / CSS
HTML5地理定位实例
Oct 15 HTML / CSS
HTML5 video标签(播放器)学习笔记(二):播放控制
Apr 24 HTML / CSS
移动HTML5前端框架—MUI的使用
Dec 18 HTML / CSS
用canvas做一个DVD待机动画的实现代码
Apr 12 HTML / CSS
HTML5语义化元素你真的用对了吗
Aug 22 HTML / CSS
使用canvas压缩图片上传的方法示例
Feb 07 HTML / CSS
HTML+CSS+JS实现图片的瀑布流布局的示例代码
Apr 22 HTML / CSS
CSS3实现的文本3D效果附图
Sep 03 #HTML / CSS
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
Sep 02 #HTML / CSS
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
Sep 02 #HTML / CSS
用纯css3实现的图片放大镜特效效果非常不错
Sep 02 #HTML / CSS
CSS3 中的@keyframes介绍
Sep 02 #HTML / CSS
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
Sep 02 #HTML / CSS
css3中背景尺寸background-size详解
Sep 02 #HTML / CSS
You might like
PHP实现分页的一个示例
2006/10/09 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
如何判断图片地址是否失效
2007/02/02 Javascript
jquery 双色表格实现代码
2009/12/08 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
用p5.js制作烟花特效的示例代码
2018/03/21 Javascript
jQuery实现菜单的显示和隐藏功能示例
2018/07/24 jQuery
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
vue.js的简单自动求和计算实例
2019/11/08 Javascript
解决vue-cli输入命令vue ui没效果的问题
2020/11/17 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
python设定并获取socket超时时间的方法
2019/01/12 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
美国一家运动专业鞋类零售商:Warehouse Shoe Sale(WSS)
2018/03/28 全球购物
公司户外活动总结
2014/07/04 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
教师考核鉴定意见
2015/06/05 职场文书
丧事主持词
2015/07/02 职场文书
开业典礼致辞
2015/07/29 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
Redis 哨兵集群的实现
2021/06/18 Redis
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js