关于css伪类,伪元素详解总结
伪类
伪类就是一种虚构的状态或者说是一个具有特殊属性的元素可以使用CSS进行样式修饰。常见的几种伪类是:
:link , :visited , :hover , :active , :first-child 以及 :nth-child。
这里还有很多,接下来我们将要逐一进行介绍。此外,伪类前面总是加一个冒号(:)。之后跟着伪类的名字或者是括号里面的值,如:nth-child。
伪元素
关于伪元素,它们更像是虚拟的元素可以和HTML元素一样对待。区别在于它们并不存在于文档树或者DOM之中。这意味着我们并没有真正的指定伪元素,但是可以使用CSS进行创建。常见的几种伪元素是
::after , :before 以及 :first-letter。
在文章的最后我们将对他们进行详细的说明。
关于伪元素使用单冒号还是双冒号?
在大多数情况下,两者均可。
CSS3中引入双冒号(::)是为了在伪类中,如::hover,:active,区分伪元素,如::before,::after。除了IE8及其以下版本不支持外,所有的浏览器均支持伪元素中双冒号的使用。
一些伪元素,如::backdrop只接受双冒号的使用。
就我个人而言,我使用单冒号以便使我的CSS可以向后兼容一些旧浏览器。当然,在那些指定使用双冒号的伪元素上使用双冒号。
你可以自由的去选择使用,因为不存在对错之分。
然而在写这篇文章时,规范建议使用单冒号,理由如上所述,为了得到更好的向后兼容性
测试环境:xp ,ie7~8 chrome。
link 伪类 :(:link,:visited) 这个是链接专用
动态伪类 :(:hover,:active,:focus)
对于链接(a标记)不管是link伪类还是动态伪类,在ie7-8,chrome 都有效果
对于表单元素,
ie7 下不支持动态伪类,
ie8下文本框,单选框都支持:focus,
chrome下文本框支持:focus,复选框不支持focus对于p,tr ,ie7-8,chrome 都只支持:hover。
常见的hover、active伪类顺序问题
下面是正确的顺序:
- a:link{}
- a:visited{}
- a:hover{}
- a:active{}
伪类与伪元素的看起来很像,有什么区别吗?
很多人把伪类、伪元素都当做“伪类”来说,实际上是有区别的。
伪类、伪元素,都是属于CSS选择器的范围。
简单的说:
伪类,如果我放弃伪类不用而 又想要伪类同样的效果,一般我可以为元素加一个class类,也能达到伪类选择器一样的效果。(如,:first-child伪类)
伪元素,如果我放弃伪元素不用而 又想到达伪元素同样的效果,我必须创建一个元素,才能达到伪元素的效果。(如,:first-line伪元素)
为什么有些写一个冒号,有的是两个冒号?
w3c的CSS3规范中规定:
:单冒号,用于伪类
::双冒号,用于伪元素
但是在css2规范中,伪元素的写法是:before——单冒号的形式。
伪类、伪元素的单冒号、双冒号写法问题
在CSS3规范中,伪类 与 伪元素,写法是规定的:
伪类写法:单冒号+伪类(如:last-child)
伪元素写法:双冒号+伪元素(如::first-line)
在CSS2规范中,伪类、伪元素都是使用单冒号+伪类或伪元素。
一般浏览器为了兼容CSS,两种都会支持,
但是早期的IE并没有支持到CSS3的双冒号写法,为了兼容,推荐使用单冒号的写法。
(从IE9开始支持双冒号伪元素写法。)
关于css伪类,伪元素详解总结的更多相关文章
- CSS选择器:伪类(图文详解)
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 伪类(伪类选择器) 伪类:同一个标签,根据其不同的种状态,有不同的样式. ...
- css中伪类/伪元素详解
一.伪类和伪元素 伪类和伪元素都是用来修饰不在文档树中的部分,区别在于, 伪类用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根据用户行为而动态变化的(如:hover/:active). ...
- css伪类伪元素
在CSS中,模式(pattern)匹配规则决定哪种样式规则应用于文档树(document tree)的哪个元素.这些模式叫着选择符(selector). 一条CSS规则(rule)是选择符{属性:值; ...
- 史上最全web.xml配置文件元素详解
一.web.xml配置文件常用元素及其意义预览 <web-app> <!--定义了WEB应用的名字--> <display-name></display-na ...
- web.xml配置文件元素详解
一.web.xml配置文件常用元素及其意义 1 <web-app> 2 3 <!--定义了WEB应用的名字--> 4 <display-name></disp ...
- 【转】UML类图与类的关系详解
UML类图与类的关系详解 2011-04-21 来源:网络 在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(D ...
- String类的构造方法详解
package StringDemo; //String类的构造方法详解 //方法一:String(); //方法二:String(byte[] bytes) //方法三:String (byte[] ...
- [转]c++类的构造函数详解
c++构造函数的知识在各种c++教材上已有介绍,不过初学者往往不太注意观察和总结其中各种构造函数的特点和用法,故在此我根据自己的c++编程经验总结了一下c++中各种构造函数的特点,并附上例子,希望对初 ...
- Scala 深入浅出实战经典 第63讲:Scala中隐式类代码实战详解
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
随机推荐
- Run Faster-JAVA
又好久没有写点啥了,平时都忙于工作,忙于应付工作中的问题,各种吸收却并没有好好的消化,该是"反刍"一下的时候了. 本篇名叫"Run Faster,JAVA",其 ...
- CentOS7-Minimal1708安装设置python3
使用 python -V 命令查看一下是否安装Python然后使用命令 which python 查看一下Python可执行文件的位置可见执行文件在/usr/bin/ 目录下,切换到该目录下执行 ll ...
- hasattr(object, name)
查看object有没name属性 有返回True 没有返回 False
- 题目1018:统计同成绩学生人数(hash简单应用)
问题来源 http://ac.jobdu.com/problem.php?pid=1018 问题描述 给你n位同学的成绩,问获得某一成绩的学生有多少位. 问题分析 初见此题,有人会想到先将所有成绩存入 ...
- Codeforces Round #556 题解
Codeforces Round #556 题解 Div.2 A Stock Arbitraging 傻逼题 Div.2 B Tiling Challenge 傻逼题 Div.1 A Prefix S ...
- Android Fragment原理及应用
1.Fragment简介 Fragment(片段) 表示 Activity 中的行为或用户界面部分.您可以将多个片段组合在一个 Activity 中来构建多窗格 UI,以及在多个 Activity 中 ...
- &与&& ,|与||的区别
&&和||是短路运算符,&和|是非短路运算符 &&与& 区别:两者都表示“与”运算,但是&&运算符第一个表达式不成立的话,后面的表达式不 ...
- 2019.4.3 HTML&CSS 理论部分
HTML 块标签 1.独占一行,不和其他标签待在一行; 2.能设置宽高 常见的块标签:h1-h6,p,div,table,hr,br,ul,ol, 行标签 1.可以和其他行标签待在一行 2.不能设置宽 ...
- 移动APP的用户体验测试
经常被问到用户体验测试,什么是用户体验测试,用户体验测试要关注的都有哪些呢,现在为大家来罗列一下: 1.横竖屏测试 在移动设备上做用户体验测试,最容易想到的就是对APP做横竖屏的测试来观察APP的显示 ...
- Servlet入门小案例
案例一:tomcat9.jdk1.8 1.eclipse创建web项目 1)创建一个Dynamic web project,名字为Servlet_hjh 2)在src下创建一个包,为com.hjh.d ...