css3高级选择器使用方法


Posted in HTML / CSS onDecember 02, 2013

css3属性选择器

css3之属性选择器,其中包括:

复制代码
代码如下:

1.[att=val]
2.[att*=val]
3.[att^=val]
4.[att$=val]

下面我将用实例演示它们的用法

css代码:

复制代码
代码如下:

<style type="text/css">
p[id=p_name] {color:red;}
p[id*=p] {border:1px solid #DDD;}
p[id^=start] {font-weight:700}
p[id$=end] {background:yellow}
</style>

效果如图1:

结构性伪类选择器

1.伪类选择器

在讲伪类选择器之前,我先说下类选择器,类选择器的使用如下所示:

复制代码
代码如下:

<style type="text/css">
p.p_test {color:#F60;}
</style>

伪类选择器,大家看到这个术语不是很懂,楼主跟你们一样,但是看到下面的示例,立马知晓:

复制代码
代码如下:

<style type="text/css">
a:link {color:#F00; text-decoration:none;}
a:visited {color:#0F0; text-decoration:none;}
a:hover {color:#F0F; text-decoration:underline;}
a:active {color:#00F; text-decoration:none;}
</style>

看到这大家顿时知道了吧,在css中我们最常用的伪类选择器是使用在a元素上。那么伪类选择器与类选择器额区别是,类选择器可以随便起名字如“p.right”,
“p.left”;但是伪类选择器是css中已经定义好的选择器,不能随便起名。

2.伪元素选择器

伪元素选择器是指并不是对真正的元素使用的选择器,而是针对css中已经定义好的伪元素使用的选择器。

在css中有下面四个伪元素选择器:

2.1.first-line伪元素选择器(它用于某个元素中的第一行文字使用样式,只能与块级元素关联)

示例如下:

复制代码
代码如下:

<html>
<head>
<style type="text/css">
p:first-line
{
color:#ff0000;
font-variant:small-caps;
}
</style>
</head></p> <p><body>
<p>
This is a text.<br/>
That is a text.
</p>
</body>
</html>

2.2.first-letter伪元素选择器(向文本的第一个字母添加特殊样式,在 CSS2.1 之前,:first-letter 只能与块级元素关联。CSS2.1 扩大了这个范围,可以与任
何元素关联)

示例如下:

复制代码
代码如下:

<html>
<head>
<style type="text/css">
p:first-letter
{
color:#ff0000;
font-size:xx-large;
}
</style>
</head></p> <p><body>
<p>This is a text.</p>
</body>
</html>

2.3.before伪元素选择器(在元素之前添加内容)

这个伪元素允许创作人员在元素内容的最前面插入生成内容。默认地,这个伪元素是行内元素,不过可以使用属性 display 改变这一点.

示例如下:

复制代码
代码如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title> 选择器 </title>
<style type="text/css">
li {list-style:none;}
li:before {content:'■'}
</style>
</head>
<body>
<ul>
<li>项目1</li>
<li>项目2</li>
<li>项目3</li>
</ul>
</body>
</html>

2.4.after伪元素选择器(在元素之后添加内容)

示例如下:

复制代码
代码如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title> 选择器 </title>
<style type="text/css">
li {list-style:none;}
li:after {content:'--测试文字';color:red}
</style>
</head>
<body>
<ul>
<li>项目1</li>
<li>项目2</li>
<li>项目3</li>
</ul>
</body>
</html>

3. 4个基本结构性伪类选择器

3.1.root选择器(将样式绑定到页面的根元素中)

所谓根元素,是指位于文档树的最顶层结构的元素,在html页面上就是指包含整个页面的“html”部分.

示例如下:

复制代码
代码如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title> 选择器 </title>
<style type="text/css">
:root {background:yellow;}
body {background:red;}
</style>
</head>
<body>
<ul>
<li>项目1</li>
<li>项目2</li>
<li>项目3</li>
</ul>
</body>
</html>

ps:在使用样式指定root元素与body元素的背景时,根据情况不同的指定条件,背景色的显示范围会有所变化,如上面的代码不使用root选择器来指定root元素
的背景色,只指定body元素的背景色,则整个页面就变成红色的了。

3.2.not选择器(想对某个结构使用样式,但是想排除这个结构元素下面的子结构元素,让它不使用这个样式,就使用not选择器)

示例如下:

复制代码
代码如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title> 选择器 </title>
<style type="text/css">
body *:not(p) {color:blue;}
</style>
</head>
<body>
<p>我是排除元素</p>
<ul>
<li>项目1</li>
<li>项目2</li>
<li>项目3</li>
</ul>
</body>
</html>

3.3.empty选择器(指定当元素的内容为空时使用样式)

示例如下:

复制代码
代码如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title> 选择器 </title>
<style type="text/css">
table td {padding:10px;}
table td:empty {background:#DDD}
</style>
</head>
<body>
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</p> <p></tr>
<tr>
<td>4</td>
<td>5</td>
<td></td>
</tr>
</p> <p></table>
</body>
</html>

3.4.target选择器(使用target选择器来对页面中的某个target元素[该元素的id被当作页面的超链接类使用]指定样式,该样式只有在用户点击了页面中的超链接

,并且跳转到target元素后起作用)

示例如下:

复制代码
代码如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title> 选择器 </title>
<style type="text/css">
:target {background:yellow;}
</style>
</head>
<body>
<a href="#div1">连接一</a>
<a href="#div2">连接一</a>
<div class="test" id="div1">内容一</div>
<div id="div2">内容二</p> <p></div>
</body>
</html>

4. 下面接着说其它几个选择器

first-child,last-child,nth-child,nth-last-child这几个选择器能够针对一个父元素中的第一个,最后一个,指定序号的子元素,甚至第偶数个,第奇数
个子元素进行样式指定。

4.1.first-child与last-child的运用,first-child在ie7开始被支持,其它现代浏览器都支持

复制代码
代码如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title> 选择器 </title>
<style type="text/css">
.ul1 li:first-child {background:yellow;}
.ul1 li:last-child {background:red;}
</style>
</head>
<body>
<ul class="ul1">
<li>项目1</li>
<li>项目2</li>
<li>项目3</li>
</ul>
</body>
</html>

4.2.nth-child(表示第几个元素),运用如下:

复制代码
代码如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title> 选择器 </title>
<style type="text/css">
.ul1 li:nth-child(2) {background:yellow;}
</style>
</head>
<body>
<ul class="ul1">
<li>项目1</li>
<li>项目2</li>
<li>项目3</li>
</ul>
</body>
</html>

4.3.nth-last-child(表示倒数第几个元素),运用如下:

复制代码
代码如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title> 选择器 </title>
<style type="text/css">
.ul1 li:nth-last-child(1) {background:yellow;}
</style>
</head>
<body>
<ul class="ul1">
<li>项目1</li>
<li>项目2</li>
<li>项目3</li>
</ul>
</body>
</html>

ps:nth-child与nth-last-child的序号是从1开始,当然也可以是关键词或公式。;除了对指定序号的子元素使用样式以外,还可以对某个父元素中的所有第奇
数个子元素或第偶数个子元素使用样式。

4.3.1 nth-child 对某个父元素中的所有第奇数个子元素的样式设置

复制代码
代码如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title> 选择器 </title>
<style type="text/css">
.ul1 li:nth-child(odd) {background:yellow;}
</style>
</head>
<body>
<ul class="ul1">
<li>项目1</li>
<li>项目2</li>
<li>项目3</li>
<li>项目4</li>
</p> <p><li>项目5</li>
<li>项目6</li>
<li>项目7</li>
</ul>
</body>
</html>

4.3.2 nth-last-child 对某个父元素中的所有倒数上去的第偶数个子元素的样式设置

复制代码
代码如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title> 选择器 </title>
<style type="text/css">
.ul1 li:nth-last-child(even) {background:yellow;}
</style>
</head>
<body>
<ul class="ul1">
<li>项目1</li>
<li>项目2</li>
<li>项目3</li>
<li>项目4</li>
</p> <p><li>项目5</li>
<li>项目6</li>
<li>项目7</li>
</ul>
</body>
</html>

4.4.nth-of-type(匹配属于父元素的特定类型的第 N 个子元素的每个元素)

4.5.nth-last-of-type(配属于父元素的特定类型的第 N 个子元素的每个元素,从最后一个子元素开始计数)

好,既然知道他们的用处,那我们直接看个列子:

复制代码
代码如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title> 选择器 </title>
<style type="text/css">
h2:nth-of-type(odd) {background:red;}
h2:nth-last-of-type(even) {background:green;}
</style>
</head>
<body>
<h2>标题一</h2>
<p>内容一</p>
<h2>标题二</h2>
<p>内容二</p>
<h2>标题三</h2>
<p>内容三</p>
</body>
</html>

5.only-child(匹配属于其父元素的唯一子元素的每个元素)

其实“:nth-child(1):nth-last-child(1)”的结合用法

复制代码
代码如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title> 选择器 </title>
<style type="text/css">
div p:only-child {background:red;}
</style>
</head>
<body>
<div>
<p>孩子一</p>
</div>
<div>
<p>孩子一</p>
<p>孩子二</p>
</div>
<div>
<p>孩子一</p>
<p>孩子二</p>
</p> <p><p>孩子三</p>
</div>
</body>
</html>

上面说了那么多的css选择器的示例运用,有这些选择器可以大幅度的提高开发书写或修改样式表是的工作效率,我其实一直期待使用这些css选择器,可惜有IE
在几乎在pc上是不能使用这些高级的选择器,还好移动端的浏览器支持的不错。好啦,这些也只是css3的一部分选择器,下次我将会列出其余的部分,大家想知
道也可以下载css3手册先一睹为快!
HTML / CSS 相关文章推荐
CSS3中文字镂空、透明值、阴影效果设置示例小结
Mar 07 HTML / CSS
CSS3打造百度贴吧的3D翻牌效果示例
Jan 04 HTML / CSS
CSS3实现红包抖动效果
Dec 23 HTML / CSS
HTML5 device access 设备访问详解
May 24 HTML / CSS
使用css如何制作时间ICON方法实践
Nov 12 HTML / CSS
HTML5中meta属性的使用方法
Feb 29 HTML / CSS
HTML5+WebSocket实现多文件同时上传的实例
Dec 29 HTML / CSS
HTML5+css3:3D旋转木马效果相册
Jan 03 HTML / CSS
浅析HTML5中的 History 模式
Jun 22 HTML / CSS
html5简单示例_动力节点Java学院整理
Jul 07 HTML / CSS
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
Jul 24 HTML / CSS
CSS 实现Chrome标签栏的技巧
Aug 04 HTML / CSS
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
Nov 18 #HTML / CSS
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
Nov 05 #HTML / CSS
css3实现图片遮罩效果鼠标hover以后出现文字
Nov 05 #HTML / CSS
css3的transition效果和transfor效果示例介绍
Oct 30 #HTML / CSS
CSS3之多背景background使用示例
Oct 18 #HTML / CSS
CSS3之背景尺寸Background-size使用介绍
Oct 14 #HTML / CSS
CSS3之边框多颜色Border-color属性使用示例
Oct 11 #HTML / CSS
You might like
生成静态页面的PHP类
2006/07/15 PHP
关于PHP中操作MySQL数据库的一些要注意的问题
2006/10/09 PHP
PHP下对数组进行排序的函数
2010/08/08 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
Prototype Selector对象学习
2009/07/23 Javascript
js 数组的for循环到底应该怎么写?
2010/05/31 Javascript
一个简单的js动画效果代码
2010/07/20 Javascript
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
Bootstrap基本组件学习笔记之分页(12)
2016/12/08 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
2019/04/17 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
web.py 十分钟创建简易博客实现代码
2016/04/22 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
《美丽的小路》教学反思
2014/02/26 职场文书
春风行动实施方案
2014/03/28 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
少年雷锋观后感
2015/06/10 职场文书
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js
Java版 单机五子棋
2022/05/04 Java/Android