CSS3中的伪类概览,很实用的

CSS的目标,或者说是革命纲领就是:“将样式与内容分离”,这个目标能否实现,很大程度上依赖于CSS访问内容的能力。在CSS3中,这个任务得到了有力支持,强大的结构伪类Structural
pseudo-classes
出现了。提供了非常丰富的查询方式,让CSS选择器变得如此和蔼可亲了。让我们来快速概览一下,同时期待着浏览器整体换代的来到,毕竟只有最新的浏览器才支持CSS3选择器及其他特性。
支持浏览器:Firefox 3.1+, IE8+ (only in IE8 standards mode), and Safari 3.1+

CSS3结构伪类 Method Description E:root 选择文档的根结点,在HTML文档中也就是HTML节点
E:first-child 选择该节点的第一个子节点。 E:last-child 选择该节点的最后一个子节点。 E:nth-child(n)
选择指定节点的第N个子节点。
示例:

li:nth-child(1) /*选择Li元素的第一个节点*/

E:nth-last-child(n) 和上面的伪类逆序,选择指定节点从最后一个子节点开始的第N个子节点示例:

li:nth-last-child(1) /*选择Li节点的最后一个子节点*/

E:nth-of-type(n) 选择父节点之下,所有指定类型的的节点中的第N个,有点晦涩的一句话。还是看示例比较清楚:

ul li:nth-of-type(1)
/*选择当前页面上所有Ul之下的第一个Li节点,包含嵌套的Ul之下的第一个Li*/
p:nth-of-type(odd)
/*选择所有的奇数项的P元素,一下子解决了表格的交替背景色问题*/

E:nth-last-of-type(n) 选择父节点之下,所有指定类型的节点中倒序的第N个节点,和上面的正好顺序相反

示例:

option:nth-last-of-type(2)
/*选择所有的select下倒数第二个option节点*/
option:nth-last-of-type(-n+3)
/*选择倒数3个option节点,是多重选择*/

E:first-of-type 和上面的两个伪类类似,不过这个简单版,就是取第一个或者是最后一个示例:

p>quote:first-of-type /*选在所有P节点下第一个quote节点*/

E:last-of-type 同上:

tr>td:last-of-type /*选择每一行的最后一个单元格*/

E:only-of-type
选择在父节点之下,符合所有子节点中只有一个该类型节点条件的节点。又是比较难懂的一句话,也就是说,在子节点集合中,该元素必须符合指定类型,同时仅含有一个的情况。示例:

div>p:only-of-type
/*s选择Div之下,如果只含有一个P节点,选择该节点*/
input[type="radio"]:only-of-type
/*如果form中,只有一个input类型为radio的,选择该input节点*/

E:only-child 和上面类似,不过更加严格,仅当符合,该父节点下仅含有一个子节点的情况。示例:

div>p:only-child /*选择那些Div下只有一个p节点的p节点*/

E:empty 选择那些没有子节点的节点,也就是选择那些叶子节点(包含text节点).
HTML注释不计入子节点数。来看一下具体例子:下面的都是空节点Empty Elements:

<p></p>
<p><!–Empty
paragraph</p>

以下都是非空节点Non Empty:

<p>Welcome to oncontextmenu=”return false;”
id=KonaLink1
onmouseover=adlinkMouseOver(event,this,1);
style=”POSITION:
static; TEXT-DECORATION: underline!
important”
onclick=adlinkMouseClick(event,this,1);
onmouseout=adlinkMouseOut(event,this,1);
href=”http://www.javascriptkit.com/dhtmltutors/structuralcss.shtml#”
mce_href=”http://www.javascriptkit.com/dhtmltutors/structuralcss.shtml#”
target=_top>
style=”FONT-WEIGHT:
400; FONT-SIZE: 13px; COLOR: blue! important; FONT-FAMILY: Courier new;
POSITION: static”
color=blue> style=”FONT-WEIGHT: 400; FONT-SIZE: 13px;
COLOR: blue! important; FONT-FAMILY: Courier new; POSITION:
relative”>JavaScript
Kit</p>
<p><b></b></p>

E:target
这是一个很玄妙的伪类,可以定位到当前页面url跳转位置。还是结合示例来看:当前页面的url:http://www.javascriptkit.com/dhtmltutors/structuralcss.shtml#该伪类可以选中跳转的anchor,在其前面加上一个箭头图标
<style
type=”text/css”>
*:target:before{
content:
url(arrow.gif) /*adds an
image in front of the current active
HTML
anchor*/
}
</style>
<body>
<a
href=”#whatsnew”
mce_href=”#whatsnew”>Jump to what’s new</a>

<a
name=”whatsnew”></a><b>New
content
1…</b>
</body>

Also
see:
href=”http://www.javascriptkit.com/dhtmltutors/cssgenerate2.shtml”
mce_href=”http://www.javascriptkit.com/dhtmltutors/cssgenerate2.shtml”>Added
Generated
Content in CSS2.

:not(s) 这个被称为逆伪类(很不准确的翻译,还是看原文吧)negation
pseudo-class
,
:not(s)
选择不是指定类型的节点,节点类型由参数传入(不含伪类元素本身)示例:

:not(p) /*选择所有不是P的节点*/
input:not([type="submit"])
/*选择所有不是submit按钮的input元素*/
option:not([selected="selected"])
/*选择所有不是默认选中的option*/

E:enabled 选择enabled节点。示例:

input[type="text"]:enabled /*选择所有enabled的text节点*/
input
[type="submit"]:enabled /*选择所有类型为submit,且enabled的节点*/

E:disabled 选择diabled节点。示例:

input[type="text"]:disabled /* /*selects text boxes that
are
disabled*/
input[type="submit"]:disabled /*selects submit buttons that
are
disabled*/

E:checked 选择checked节点。通常为checkbox和radiobox元素。示例:

input:checked /*selects radio or checkbox elements that are
currently
checked*/
input[type="radio"]:checked /*selects radio buttons that
are
currently checked*/

CSS结构伪类中的表达式

在伪类“E:nth-child(n)” 和
“E:nth-of-type(n)”中,都支持参数传入,前面的例子中,我们只是简单的传入数字,选择指定位置的节点,其实这里的参数有着非常玄妙的表达式。我们来看一下:

首先他的表达式结构,或者说这个序列的通式为:

an+b

  • n n为该类型元素本身或者指定数字(大于等于0的整数)位置的元素。这是一个基数。

  • a 为n的系数。

  • b 偏移量。

单看公式是比较难以理解的,具体看些例子好了。

p:nth-of-type(n+1)
/*选择所有第一个子节点之后的子节点,含第一个,等价于全部子节点,p:nth-of-type(n),其实是一个效果*/
p:nth-of-type(n+5)
/*选择所有第五个子节点之后的节点,含第五个*/
p:nth-of-type(3n+2)
/*选择,第二个,第五个,第八个节点,是一个数列,表达式即为通式。*/

tr:nth-of-type(-n+5)
/*数学游戏,其实就是前五行,因为负数不具意义,所以当表达式结果为负数时,停止求值*/
tr:nth-last-child(-n+5)
/*同上*/

所以原来可能让我们觉得很麻烦的交替显示,只需要这样:

option:nth-of-type(even) /*even OPTIONs in a
SELECT*/
option:nth-of-type(2n) /*same as proceeding*/

option:nth-of-type(odd) /*odd OPTIONs in a
SELECT*/
option:nth-of-type(2n+1) /*same as
proceeding*/

CSS3中的伪类概览,很实用的,布布扣,bubuko.com

时间: 2024-10-10 17:36:37

CSS3中的伪类概览,很实用的的相关文章

css3中关于伪类的使用

目标: css中after伪类,last-child伪类的使用.以及部分css3的属性. 过程: 在制作导航时,经常会遇到在每一个li后面添加一个分割符号,到最后一个元素的时候,分割符就会去掉的一种效果. 如图 那么制作这样的一个效果,怎么用纯css很简单的完成了.这里用到了css的伪类. html部分 <body> <ul class="nav"> <li><a href="">Home</a></

CSS3中的伪类选择器详解

  类选择器和伪类选择器区别 类选择器我们可以随意起名,而伪类选择器是CSS中已经定义好的选择器,不可以随意起名. 伪类选择器以及伪元素 我们把它放到这里 p.aaas{ text-align: left; color: red; } 它同样的会被选择 最常见的伪类选择器 未被访问的链接 a:link{ color: #ff6600 } /* 未被访问的链接 */ 我们来测试一下,我们给它添加一个超链接. 伪类选择器 我们给这个伪类选择器,选定样式,第一种 a:link{ color: #000

CSS3中结构伪类选择器——root、not、empty、target选择器

1.root选择器 将样式绑定到页面的根元素中.根元素是指位于文档树中最顶层结构的元素,在HTML页面中就是指包含整个页面的<html>部分. <style type="text/css"> :root{ background:yellow; } body{ background:green; } </style> 注意:不使用root选择器来指定root元素的背景色,只指定body元素的背景色,则整个页面就全部变成了绿色. 2.not选择器 如果想

CSS3中only-child伪类选择器

<body> <style type="text/css"> //只对li1设置样式 li:nth-child(1):nth-last-child(1){ background:yellow; } </style> <h2>列表1</h2> <ul> <li>li1</li> </ul> <h2>列表2</h2> <ul> <li>

CSS3的一个伪类选择器

CSS3的一个伪类选择器“:nth-child()”. 语法: :nth-child(an+b) 为什么选择她,因为我认为,这个选择器是最多学问的一个了.很可惜,据我所测,目前能较好地支持她的只有Opera9+和Safari3+. 描述: 伪类:nth-child()的参数是an+b,如果按照w3.org上的描述,写成中文,很可能会让人头晕,再加上笔者的文笔水平有限,所以我决定避开an+b的说法,把它拆分成5种写法共5部分来说明. 第一种:简单数字序号写法 :nth-child(number)

CSS中的伪类和伪元素

伪类 伪类与类相似,但又没有类附加标签上.伪类分为UI伪类和结构化伪类. UI伪类 :link(将样式添加到未被访问的链接上) :visted(将样式已添加到访问的链接上) :hover(将样式添加到鼠标悬浮的元素上) :active(将样式添加到被激活的元素上) :focus(将样式添加到被选中的元素上) 结构化伪类 :first-child(将样式添加到第一个子元素上) :last-child(将样式添加到最后一个子元素上) 伪元素 伪元素是在文档中若有实无的元素. 主要有以下几种 :fir

CSS3的状态伪类选择器

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>CSS3的状态伪类选择器</title> 6 <style type="text/css"> 7 :enabled{ 8 background-color: blue; 9 }; 10 :disabled{

Java 中必的常用类(很实用)

Java中必须了解的常用类 一.包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int.float.double.boolean.char 等.基本数据类型是不具备对象的特性的,比如基本类型不能调用方法.功能简单...,为了让基本数据类型也具备对象的特性, Java 为每个基本数据类型都提供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型. 基本类型和包装类之间的对应关系: 注意:有两个包装类的名称比较特殊一个是Integer,另一个是Character,其他都是基本数据类首

CSS3学习笔记——伪类hover作用于子元素

最近看到一篇文章:“Transition.Transform和Animation使用简介及应用展示”    ,想看看里面 “不同缓动类效果demo” 例子的效果,发现了一个问题如下: .Trans_Box :hover (冒号前空格)这个伪类只能作用于 .trans_box中的子元素,鼠标移到自身时只能激发其子元素的样式发生改变. <!--Html部分代码--><div id="hhh" class="Trans_Box"> <div