关于伪类“:pseudo-class”和伪元素“::pseudo-element”的常见应用
伪类用于指定要选择的元素的特殊状态,向其添加特殊的效果,比如:
input {
width: 515px;
height: 50px;
padding: 10px 20px;
border: 1px #fff solid;
font-size: 16px;
box-shadow: 0 0 21px rgba(97, 104, 124, .15);
vertical-align: middle;
}
input:focus{
border-color: #2bb3ee;
}
效果:

给input元素添加一个:focus伪类,当input元素获得焦点时改变其边框颜色,常用于表单输入的美化。
常见的伪类有 :active, :hover, :focus, :first-child, :disabled, :visited, :last-child, :nth-child() 等。
:active 伪类用于匹配被激活的元素,比如点击一个链接时,鼠标按下到松开之间的时间这个链接时激活的。
:hover 伪类用于匹配“悬停”或说“虚指”但是没有被激活的元素,常见案例是鼠标悬停于元素上面触发。需要注意的是:对于触摸屏的设备来说,伪类:hover不一定起作用,所以对于一些很重要的内容,最好不要设计成悬浮才显示!
:focus 伪类用于匹配获得焦点的元素,在设计表单输入时常用,让获得焦点的元素更加突出,使使用者能更快找到输入地方。
:first-child, 用法如 span:first-child 用于匹配所有元素的第一个<span>,听起来有点难理解,举个栗子:
CSS:
span:first-child{
color:red;
} html:
<div>
<span>1</span>
<span>2</span>
</div>
在这里,<span>1</span>会被匹配到,“1”变成红色
:first-child伪类有一个很容易用错的地方就是:
CSS:
span:first-child{
color:red;
} html:
<div>
<a>0</a>
<span>1</span>
<span>2</span>
</div>
在上面的例子中,实际上span:first-child没有匹配到<span>1</span>,因为该例子里面,<span>的父元素<div>的第一个子元素是<a>,所以没有任何元素被匹配到,那如果要匹配<span>1</span>怎么办?用
span:first-of-type就可以了,这个坑在实际应用中还是很容易踩到的,应该注意一下。
:disabled 用于匹配被禁用的元素,比如给所有不可用的按钮(如未填写完时注册按钮不可用)disabled状态添加样式,让它变成灰色。
:visited 用于给已访问过的链接添加特殊的样式。
:last-child,:nth-child()用法和:first-child用法差不远。
伪元素允许给元素的某些部分添加样式。
所有伪元素有 ::before, ::after, ::first-letter, ::first-line, ::selection,其中 ::selection是属于CSS3新增的
伪元素用两个冒号是CSS3中的规定,用于区别 伪类,其实也是可以使用单冒号的,可以兼容过老版本的浏览器
值得注意的是,在伪类和伪元素结合使用时,如div::after:hover是不起效果的,div:hover::after则是有效的
::before 会在当前元素前面插入一个子元素作为伪元素。通过“content”属性来添加一些内容,比如加个箭头、标号什么的。
添加字符串:
CSS:
a:before{
content:"链接:";
} HTML:
<a href="https://home.cnblogs.com/u/maderlzp/">浮生若梦</a>
效果如:链接:浮生若梦
可以利用content的attr()调用当前元素的属性,如:
CSS:
a:before{
content:"("attr(href)")";
} HTML:
<a href="https://home.cnblogs.com/u/maderlzp/">浮生若梦</a>
效果图:

还可以使用url()引用媒体元素
CSS:
a:before{
content:""url(https://pic.cnblogs.com/face/1149666/20170419104717.png)"";
} HTML:
<a href="https://home.cnblogs.com/u/maderlzp/">浮生若梦</a>
效果图:

伪元素 ::after和 ::before用法差不多
比如下图中红框部分效果就可以用 ::after做的

代码如下:
CSS:
a{
position: relative;
top: 41px;
left: 50px;
}
a span::after{
content: '';
position: absolute;
width: 10px;
height: 10px;
bottom: -5px;
left: 27px;
border: 1px solid;
border-color: #E7E9EE #E7E9EE transparent transparent;
-webkit-transform: rotate(135deg);
transform: rotate(135deg);
background: #fff;
}
a:hover span{
display: block;
}
a span{
display: none;
position: absolute;
font-style: normal;
color: #414a60;
width: auto;
top:-38px;
left:-5px;
min-width: 44px;
height: 31px;
line-height: 30px;
padding: 0 10px;
white-space: nowrap;
border: 1px #E7E9EE solid;
text-align: center;
background: #fff;
z-index: 11;
box-shadow: 0 2px 8px rgba(0, 0, 0, .08);
-webkit-box-shadow: 0 2px 8px rgba(0, 0, 0, .08);
}
HTML:
<a><b>李雷</b><span>韩梅梅,你在哪里?</span></a>
鼠标悬停显示对话
还可以用来清除浮动、和css3的动画效果做出更多好看的页面等,这就需要发挥自己想象力了
:first-letter 选择器用于选取指定选择器的首字母。
:first-line 选择器用于选取指定选择器的首行。并且 ::first-line 伪元素只能应用在块容器中。
::selection 选择器匹配被用户选取的选取是部分。
::selection 选择器只能应用少量 CSS 属性:color, background-color, cursor, outline, text-decoration, text-emphasis-color和text-shadow。
如
CSS: ::selection
{
color:#00ff00;
}
应用上面的样式时,选取到的文字就会变成原谅色~~
关于伪类“:pseudo-class”和伪元素“::pseudo-element”的常见应用的更多相关文章
- js进阶 10-10 可见伪类选择器和内容伪类选择器的作用
js进阶 10-10 可见伪类选择器和内容伪类选择器的作用 一.总结 一句话总结:分组来描述.内容伪类选择器就是 四个 包含.可见的伪类选择器就是可见和不可见.查找功能,也就是内容伪类选择器非常 ...
- 前端(六)—— 伪类选择器:a标签的伪类、内容伪类、索引伪类、取反伪类
a标签的伪类.内容伪类.索引伪类.取反伪类 一.a标签的四大伪类 :link:未访问状态 :hover:悬浮状态 :active:活跃状态 :visited:已访问状态 四大伪类也可用于其他标签 &l ...
- CSS3 01. CSS3现状、属性选择器、伪类选择器、结构伪类、伪元素选择器、颜色、文本阴影shadow、盒子模型、私有化前缀
CSS 3 现状 兼容性差,需添加私有前缀/移动端优于PC端/不断改进中/渐进增强原则/考虑用户群体/遵照产品的方案 : CSS3手册 需要阅读其--阅读及使用指引 []表示全部的可选项 || 或者 ...
- HTML+CSS教程(五)外联样式、组选择器、圆角边框、样式优先级、伪类、盒子模型、元素溢出
一.外联样式 通过link标签引入外部css文件夹中的xxx.css文件到head标签中 例: 二. 1.组选择器 选择器名称1,选择器名称2,选择器名称3,…{属性:属性值;属性;属性值} 例: & ...
- 用HTML写伪类选择器,结构伪类选择器,伪元素选择器样式
html,css lorem乱序铭文 Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, nihil? Lorem ...
- CSS 伪类和伪元素--pseudo
总结在前: 0. 参考资料 1. 伪类和伪元素是不同的两种东西. 2. 伪类和伪元素都属于CSS选择器. 3. CSS引入伪类和伪元素是为了实现基于文档树之外的信息,i.e. 段落的第一行,的格式化. ...
- css中伪类和伪元素的区别
转载:http://www.cnblogs.com/ihardcoder/p/5294927.html CSS3伪类和伪元素的特性和区别 前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常 ...
- (4)《Head First HTML与CSS》学习笔记---文本的CSS规则和盒模型;div与span;<a>元素的链接色;伪类
1.每个font-family包含一组共同特征的字体.共五个字体系列: sans-serif----这个系列包括了没有衬线的字体,与serif相比,通常认为这个系列更容易在计算机上识读. serif- ...
- CSS 中的伪类和伪元素
伪类(Pseudo classes) 由于状态的变化是非静态的,所以元素达到一个特定状态时,它可能得到一个伪类的样式:当状态改变时,它又会失去这个样式.由此可以看出,它的功能和 class 有些类似, ...
- CSS笔记之伪类与伪元素
伪类分为两种:UI伪类 与 结构化伪类 UI伪类:a:link{} a:hover{} a:active{} a:visited{} input[type='text']:focus{} ...
随机推荐
- spring data jpa createNativeQuery 错误 Unknown entity
springdatajpa本地查询的时候,报错:org.hibernate.MappingException: Unknown entity: com.hzxc.guesssong.model.Que ...
- 线段树区间更新 lazy
1. hdu1698 http://acm.hdu.edu.cn/showproblem.php?pid=1698 /* x y k x~y的值变为k */ #include <cstdio&g ...
- 关于Thinkphp5类命名导致的“模块不存在”问题
不得不说,thinkphp5就是个十足的坑货, 在thinkphp3.2.3的基础上,函数.用法变了也就忍了, 在mac下写的一个类文件 GetRedisData.php,在mac+mamp环境下是正 ...
- 「Vue」JS方法学习
1.构造函数 大写开头的,能被NEW一个新实例,实例即执行回调函数 异步返回数据.then指定回调函数的时候,成功的回调函数必须传,失败的回调可以不传 var fs = require('fs') f ...
- faster rcnn 详解
转自:https://zhuanlan.zhihu.com/p/31426458 经过R-CNN和Fast RCNN的积淀,Ross B. Girshick在2016年提出了新的Faster RCNN ...
- Hadoop生态圈-zookeeper的API用法详解
Hadoop生态圈-zookeeper的API用法详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.测试前准备 1>.开启集群 [yinzhengjie@s101 ~] ...
- dynamic
dynamic的特性很多,好像和反射也有关,不过这里先介绍一个特性,关于反射的再补充. 我们来看一个方法: public virtual ActionResult Insert(T info) 有一个 ...
- CSS那些事!这个篇幅是我特意开的,不是因为帮助小菜之类的,而是在多人的团队配合中各种命名冲突的规范让人蛋疼
CSS那些事!这个篇幅是我特意开的,不是因为帮助小菜之类的,而是在多人的团队配合中各种命名冲突的规范让人蛋疼. css这个东西只要不是新的离谱都会写,但是每个人的命名风格,方法,都不同 有人喜欢驼峰, ...
- JavaScript1.6数组新特性和JQuery的几个工具方法
JavaScript 1.6 引入了几个新的Array 方法,具体的介绍见:New in JavaScript 1.6 .这些方法已经被写进了ECMA262 V5.现代浏览器(IE9/Firefox/ ...
- 20155328 2016-2017-2 《Java程序设计》第六周 学习总结
20155328 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 根据不同的分类标准,IO可分为:输入/输出流:字节/字符流:节点/处理流. 在不使用Inpu ...