css的伪类和伪元素理解

伪类和伪元素的理解

官方解释

伪类一开始单单只是用来表示一些元素的动态状态,典型的就是链接的各个状态(LVHA)。随后CSS2标准扩展了其概念范围,使其成为了所有逻辑上存在但在文档树中却无须标识的“幽灵”分类。

伪元素则代表了某个元素的子元素,这个子元素虽然在逻辑上存在,但却并不实际存在于文档树中。

我自己的理解:

伪类,类,class是一个类,就类似class这样,表示一些元素的状态的,但是无须标识的分类。

伪元素,就是一个元素,类似p标签元素,等等,逻辑上存在,但是实际并不存在在文档树中。

另外一个简单的理解和区分就是:

伪类前面是一个冒号,为元素前面是两个冒号。E:first-child 伪类,E::first-line为元素。

特殊情况::before 和 ::after 伪元素

before 和after是在元素前面和后面添加一些元素,因此是伪元素,CSS3选择器中已经将其前面变为两个冒号了。请看:w3cselect

问题来了,那么为什么我们平时用before和after前面就一个冒号?

当你看了css2选择器就知道了,老的规范中,伪类和伪元素都用一个冒号,新规范为了区分,伪元素统一用两个“::”,所以,大家注意了,往后在写css3的时候,为元素要用两个冒号,伪类用一个冒号。

伪类和伪元素的应用

我之前的css常用效果,讲了一些。

像伪元素

::-webkit-scrollbar

::selection

::-webkit-input-placeholder

::after

等等。

伪元素中用的最多的要数::after和::before了

可以用这两个伪元素做很多效果!

html

<a href="#">haorooms</a>
css

a {
    position: relative;
    display: inline-block;
    outline: none;
    text-decoration: none;
    color: #000;
    font-size: 32px;
    padding: 5px 10px;
}

a:hover::before, a:hover::after { position: absolute; }
a:hover::before { content: "\5B"; left: -20px; }
a:hover::after { content: "\5D"; right:  -20px; }
其中content中可以用attr也可以用url

例如:

a::after { content:"(" attr(href) ")"; }
h1::before { content: url(logo.png); } 

伪类中用的最多的要数:nth-child()选择器了,关于nth-child(),我们看下文

nth-child()浏览器支持

IE9及以上版本,火狐,谷歌,Safari ,Opera都支持!

定义和用法

:nth-child(n) 选择器匹配属于其父元素的第 n个子元素,不论元素的类型。

n 可以是数字、关键词或公式。

例如:

p:nth-child(2)
{
background:#ff0000;
}

<body>

<h1>这是标题</h1>
<p>haorooms第一个段落。</p>
<p>haorooms第二个段落。</p>
<p>haorooms第三个段落。</p>
<p>haorooms第四个段落。</p>

</body>
上面这段代码请问那个段落颜色是红色的?

答案是“haorooms第一个段落。”颜色变成了红色!

解释::nth-child(n) 选择器匹配属于其父元素的第 n个子元素,不论元素的类型。p:nth-child(2),P标签的父元素是body,body的第二个子元素是“haorooms第一个段落。”所以haorooms第一个段落颜色变为了红色!!!

注意

很多朋友经常把:nth-child() 和:nth-of-type()混淆。

CSS3 :nth-of-type() 选择器的意思是“规定属于其父元素的第二个 p 元素”

看下面的例子:

p:nth-of-type(2)
{
background:#ff0000;
}

<body>

<h1>这是标题</h1>
<p>haorooms第一个段落。</p>
<p>haorooms第二个段落。</p>
<p>haorooms第三个段落。</p>
<p>haorooms第四个段落。</p>

</body>
代码一样,我的样式仅仅是把 p:nth-child(2)改成了 p:nth-of-type(2),现在就是“haorooms第二个段落。”颜色变成了红色。

奇偶数匹配

现在开始说说我开通说的table的tr偶数行变色的问题了。

因为table的子元素一般是tr,不会有别的,所以可以用

tr:nth-child(odd) 与 tr:nth-child(even)

当然也可以用

tr:nth-of-type(odd) tr:nth-of-type(even)

分别匹配序号为奇数与偶数的元素。奇数(odd)与(2n+1)结果一样;偶数(even)与(2n+0)及(2n)结果一样。

倍数写法

:nth-child(an) 【:nth-of-type(an)同理,不解释】

匹配所有倍数为a的元素。其中参数an中的字母n不可缺省,它是倍数写法的标志,如3n、5n。

例子:

li:nth-child(3n){background:orange;}/*把第3、第6、第9、…、所有3的倍数的LI的背景设为橙色*
延伸

:nth-child(2n+1), :nth-child(2n-3) , :nth-child(4n+3) ,还可以 :nth-child(-an+b)也就是反向匹配。

总之,你可以用了:nth-child伪类,可以对多个标签有规律的进行不同的显示,显示出CSS3的强大。css3需要多用,熟能生巧,在书写的时候,经常会把一些css3的属性忘掉,你可以多手写几遍。

时间: 2024-09-16 06:06:01

css的伪类和伪元素理解的相关文章

学习CSS之伪类和伪元素

css 在CSS中,模式(pattern)匹配规则决定那种样式规则应用于文档树(document tree)的哪个元素.这些模式叫着选择符(selector). 一条CSS规则(rule)是选择符{属性:值;属性:值;}(selector {property:value;property1:value2;}),即选择符决定了{}中的声明(declaration)匹配哪个元素. 在CSS2.1中的选择符有: Pattern Meaning Described in section * Matche

CSS中伪类及伪元素用法详解

原文:CSS中伪类及伪元素用法详解 伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的读者可以自己尝试:   :active  大致效果为用鼠标点击时,元素增加特效,鼠标松开时,特效消失.多用在按钮的点击上.  写法: 这里id为box的是一div块,在css中首先设置了他的基本样式,下面为加入:active伪类后需要修改的样式. 未点击时: 点击之后: :active.:hove

CSS中一些利用伪类、伪元素和相邻元素选择器的技巧

前几天遇到一个页面需求是这样的: 一个评论框,后面的按钮有点赞或者发送评论两种状态,其中发送按钮有根据输入框中是否有字分为可点击和不可点击两种状态. 需求: 没有文字,没有聚焦--点赞 没有文字,聚焦--灰色发送 有文字--红色发送 如果用JS实现,需要监听输入框的change和focus事件,比较麻烦.但是用CSS中的伪类就可以实现相近效果. <input type="text" class="input" required>    <div c

通过实例学习网页技术CSS的伪类 (Pseudo-classes)

css|网页 CSS伪类用于向某些选择器添加特殊的效果. CSS 伪类 (Pseudo-classes)实例: 超链接 本例演示如何向文档中的超链接添加不同的颜色. <html><head><style type="text/css">a:link {color: #FF0000}a:visited {color: #00FF00}a:hover {color: #FF00FF}a:active {color: #0000FF}</style&

CSS :active 伪类

:active -- CSS :active 伪类,适用于一个元素被激活时的样式 语法: :active CSS版本:CSS1 引用网址:http://www.dreamdu.com/css/pseudo-class_active/ 说明: 适用于一个元素被激活时的样式,例如鼠标在此元素的区域内按下但还没有释放时 客户端(浏览器)可以根据用户与其交互的动作改变其渲染效果,CSS为这种情况提供了三个伪类:hover.active.focus 上述三种伪类不是互斥的,一个元素同时可以适用其中的若干个

css 伪类的使用方法详解

css 伪类这个词很奇怪, 在我看来更像标识了特殊状态的标签. 和程序中的类什么的, 一点关系都没有. 伪类用:跟在选择器后面,标识了一些状态 ::表示 css3 新增的一些伪类, 建议全部都使用::.这年头还不支持 css3 的浏览器可以不管了 比如这几个伪类: link 链接还没被用户点击 visited 已经点击的链接 hover 鼠标指针悬停在链接上 active 链接正在被点击(鼠标在元素上按下,还没有释放) ::first-letter 给我感觉更像一个增强选择器 p::first-

谈谈一些有趣的CSS题目(十)-- 结构性伪类选择器

开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉到生僻的 CSS 属性,赶紧去补习一下吧. 不断更新,不断更新,不断更新,重要的事情说三遍. 谈谈一些有趣的CSS题目(一)-- 左边竖条的实现方法 谈谈一些有趣的CSS题目(二)-- 从条纹边框的实现谈盒子模型 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少 谈谈一些有趣

css伪类伪元素域高级选择器的介绍

 给链接定义样式 a:link 表示尚未访问的链接,鼠标未划过和点击 a:visited 表示已经访问的链接 a:hover 表示鼠标划入的链接 a:active 表示激活的链接,也就是鼠标点击链接的一瞬间 注意上面这四个链接的伪类在使用的时候要有一定的顺序,即上面列举的顺序,否则看不到效果.可以简单记为LOVE(包含link和visited首字母)和HATE(包含hover和active的首字母). 给段落定义样式 :first-letter 为一行中的第一个字符创建样式 :first-lin

《HTML 5与CSS 3权威指南(第3版·下册)》——19.4.5 E::selection伪类选择器

19.4.5 E::selection伪类选择器 E::selection伪类选择器用来指定当元素处于选中状态时的样式.代码清单19-24为一个E::selection伪类选择器的使用示例,在该示例中分别给出了一个p元素,一个文本框控件以及一个表格.当p元素处于选中状态时,被选中文字变为红色:当文本框控件处于选中状态时,被选中文字变为灰色:当表格处于选中状态时,被选中文字变为绿色. 这段代码的运行结果如图19-36所示: 19.4.6 E:invalid伪类选择器与E:valid伪类选择器 q