学习笔记---css中伪元素与伪类(迷惑我的:after与:hover)
来源:互联网 发布:python str.format 编辑:程序博客网 时间:2024/06/01 10:16
一直被伪类与伪元素所迷惑,以为是同一个属性名称,这两天看css动画,越来越多的看到诸如 a:hover:after,a.hover:after 的用法,越来越糊涂,索性翻翻定义研究研究。
本文出现的伪类伪元素均为css2、css1中内容。css3中伪类、伪元素还未做整理。
先看定义:
伪元素:(pseudo-element)是HTML 中并不存在的元素。用于将特殊的效果添加到某些选择器。
W3C:
以下是CSS3中对伪元素的描述:
伪元素的由两个冒号::开头,然后是伪元素的名称 。
使用两个冒号::是为了区别伪类和伪元素(CSS2中并没有区别)。当然,考虑到兼容性,CSS2中已存的伪元素仍然可以使用一个冒号:的语法,但是CSS3中新增的伪元素必须使用两个冒号::
一个选择器只能使用一个伪元素,并且伪元素必须处于选择器语句的最后。
从定义当中我们可以知道,伪元素原来在DOM结构中不存在的。伪元素创建了一个容器,这个容器不包含在DOM结构中,但是有内容,使用 “content” 来添加内容,可以对其进行样式的自定义,可以获取其中的内容。为了规范,我们在伪元素前面加两个冒号,比如::after,但是为了兼容性,仍然使用了一个冒号的形式。
例如: 这是没有添加伪元素的代码和网页截图。
当我在 .div1 之前加上:before之后,样子是这样:
可以看到,:before里的内容添加在了相对.div1内容之前,同理,:after中的内容会出现在.div1 内容之后。当然如果对他们进行位置的设置,这种前后就只是一个说法上的区别了。
在我看来,:after 与:before的用处最大在于,可以减少html代码里的节点个数及内容,优化代码阅读。当我要在特定区间加入某些内容时,只用在css样式表中利用:after与:before来输入内容样式,但更多的,可以结合伪类:hover 来设置动画样式。
这里在提一点,如果我们利用伪元素来进行动画设置,需要给父元素添加样式{position:relative;},给:after或者:before添加{position:absolute;}
另外,:after还有一个妙用,那就是清除浮动,给父元素追加:after之后,设置content:“ ”;clear:both; 就可以清除浮动,详情还可以戳学习笔记---css中清除浮动的方法
另外两个相对于来说,更不常用,所以我也就没有深究,用到再说吧~
下面看看伪类:
伪类:(pseudo-class)则应用于一组HTML 元素。用于向某些选择器添加特殊的效果。
W3C:
css3中定义:
伪类存在的意义是为了通过选择器找到那些不存在于DOM树中的信息以及不能被常规CSS选择器获取到的信息。
伪类由一个冒号:
开头,冒号后面是伪类的名称和包含在圆括号中的可选参数。
任何常规选择器可以在任何位置使用伪类。伪类语法不区别大小写。一些伪类的作用会互斥,另外一些伪类可以同时被同一个元素使用。
并且,为了满足用户在操作DOM时产生的DOM结构改变,伪类也可以是动态的。
从定义得知,伪类的作用是获取页面中不存在的信息。比如<a></a> 标签中的:linked :visited,这些内容不存在页面当中,只能通过css选择器来获取。
且一个元素可以同时设置多个伪类效果。
其中,运用伪类最多的是<a></a>添加链接样式。
a:link
{color: #FF0000}/* 未访问的链接 */a:visited
{color: #00FF00}/* 已访问的链接 */a:hover
{color: #FF00FF}/* 鼠标移动到链接上 */a:active
{color: #0000FF}/* 选定的链接 */
这里要注意的是,这几个伪类如果同时出现在一个元素的操作上,顺序不能改变,否则很大程度上会产生紊乱,效果不生效。
最后来总结下伪类与伪元素的区别:
1.引用博主(@denied)的总结,伪类与伪元素的根本区别在于它们是否创造了新的元素(抽象)。
从我们模仿其意义的角度来看,如果需要添加新元素加以标识的,就是伪元素,反之,如果只需要在既有元素上添加类别的,就是伪类。
2.一个元素可以同时添加多个伪类,而每一次只能对一个伪元素进行操作。
3.书写形式上的区别,单冒号是伪类,双冒号是伪元素(但这点不能作为绝对区分的点)。
- 学习笔记---css中伪元素与伪类(迷惑我的:after与:hover)
- 【:before与:after】css的伪类与伪元素
- css的伪类与伪元素
- CSS伪元素选择器:before与:after
- CSS伪类与CSS伪元素
- CSS伪类与CSS伪元素
- CSS 伪类与伪元素
- CSS中的伪类与伪元素
- CSS 伪类与伪元素
- css 伪类与伪元素
- [CSS]伪类与伪元素
- CSS 伪类与伪元素
- css伪类与伪元素
- CSS 伪类与伪元素
- CSS 伪类与伪元素
- css伪类与伪元素
- css 伪类与伪元素
- css 伪类 与 伪元素
- MySQL基础-DML语句
- 538. Convert BST to Greater Tree
- Mac系统下安装和卸载HomeBrew的方法
- phpMyAdmin 最新版快速使用文档V4.7.3 (2017年8月9日)
- svn 提交 has encountered a problem
- 学习笔记---css中伪元素与伪类(迷惑我的:after与:hover)
- svn回到历史的某个版本
- AJAX
- 侧滑+传值
- 2017-8-24 java课堂笔记方法重载
- 微信开发使用access_token 获取微信的ip地址
- 男人不想打工一辈子,再忙也要读这10本书,提高情商智商
- CentOS-6.6版本防火墙的启动与关闭相关指令
- 前后、左右、去掉所有的空格的正则表达式