关于伪类“: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{} ...
随机推荐
- mfc视类中错误:IntelliSense: declaration is incompatible with。。。解决方案
基本情况是我自己写了一个类: class CDib {....} 然后在mfc自动生成的“工程名Dlg.cpp”中使用类CDib,我的工程名是MfcPictureProcessing,所以类是clas ...
- Atcoder Grand 011 C - Squared Graph
题意: 给出一个n个点的图,现在构造一个有n^2个点的新图,新图每个点表示为(a,b)(a,b<=n),两个点$(a,b),(c,d)$之间有边当且仅当原图中ac之间有边,bd之间有边. 问新图 ...
- C# 分析 IIS 日志(Log)
由于最近又要对 IIS日志 (Log) 分析,以便得出各个搜索引擎每日抓取的频率,所以这两天一直在尝试各个办法来分析 IIS 日志 (Log),其中尝试过:导入数据库.Log parser.Powse ...
- vue单页面应用项目优化总结(转载)
转载自:https://blog.csdn.net/qq_42221334/article/details/81907901这是之前在公司oa项目优化时罗列的优化点,基本都已经完成,当时花了点心思整理 ...
- 介绍C++11标准的变长参数模板
目前大部分主流编译器的最新版本均支持了C++11标准(官方名为ISO/IEC14882:2011)大部分的语法特性,其中比较难理解的新语法特性可能要属变长参数模板(variadic template) ...
- bzoj千题计划247:bzoj4903: [Ctsc2017]吉夫特
http://uoj.ac/problem/300 预备知识: C(n,m)是奇数的充要条件是 n&m==m 由卢卡斯定理可以推出 选出的任意相邻两个数a,b 的组合数计算C(a,b)必须是奇 ...
- C++ map & set
山东第六届ACM省赛B题 超时代码: #include<iostream> #include<cstdio> #include<string.h> #include ...
- SQL语句(十)查询结果排序
查询结果排序 使用ORDER BY 子句 SELECT <列名列表> FROM <表名> [WHERE 条件] ORDER BY <字段名1> [ASC|DESC] ...
- UVALive 6176 Faulhaber's Triangle
题目链接 http://acm.sdibt.edu.cn/vjudge/ojFiles/uvalive/pdf/61/6177.pdf 题意是 给定一个数n,代表着一共有n个人,且他们的身高从1到n ...
- python技巧 使用值来排序一个字典
In [8]: a={'x':11,'y':22,'c':4} In [9]: import operator In [10]: sorted(a.items(),key=operator.itemg ...