使用CSS的类名交集复合选择器

首先先看一下基本定义:


  复合选择器就是两个或多个基本选择器,通过不同方式连接而成的选择器,主要包括“交集”选择器、“并集”选择器、“后代”选择器。

  交集选择器

  “交集”复合选择器是由两个选择器直接连接构成,其结果是选中二者各自元素范围的交集。其中第一个必须是标记选择器,第二个必须是类别选择器或者ID选择器。这两个选择器之间不能有空格,必须连续书写。

  注意其中第一个必须是标记选择器,如p.class1,但有时候会看到.class1.class2,即2个都是类选择器,在其他浏览器中是允许出现这种情况的,但IE6不兼容。如下表:

  两个类选择器的“交集”复合选择器浏览器支持表:

  复合选择器的使用

  这是个简单的tab菜单:

  如下是html代码:

<ul class="nav">
<li class="first"><a href="">节目</a></li>
<li class="current"><a href="">合集</a></li>
<li><a href="">草稿</a></li>
<li class="last"><a href="">项目</a></li>
</ul>

  为了实现以上效果,我们在css中可以使用复合选择器。

  选择<a> 标签

  可以用一个选择器来定义所有的 <a> 元素, 如下:

.nav li a {}

  选择第一个 <a> 元素

  为了增加列表左上角的圆角效果, 你需要选择第一个 <a> 元素.
这可以用如下的选择器来实现:

.nav li.first a {}

  选择最后一个 <a> 元素

  为了增加列表右上角的圆角效果, 你需要选择最后一个 <a> 元素.
这可以用如下的选择器来实现:

.nav li.last a {}

  突出显示当前页

  通过改变tab的颜色来显示页面是当前页,我们可以在类名中加入current这个类名来实现,如下:

.nav li.current a {}

  为当前页面的左右上角添加圆角样式

  现在有个问题,第一个和最后一个选项被选中的时候拐角是直角的。为了达到选中时候是当前页的样式,拐角也是圆角效果,我们需要给专门给它们写特殊的选择器,由于现在我们的类名都在同一个元素中,所以我们最终可以用交集复合选择器来实现,如下:

.nav .first.current
a {}
.nav .last.current
a {}

  结果

  这看上去很简单,是不是?就像上面提到的,现在的问题是:IE5和IE6都不支持类名交集复合选择器。IE5和IE6在识别类名时候只会识别最后一个类名。效果如下:

.nav .first.current
a {}
.nav .last.current
a {}

  IE5和IE6把这2个选择器解析为:

.topnav .currents
a {}
.topnav .current
a {}

  这意味着这些浏览器会给所有的当前页都增加圆角效果,效果如下:

  在IE7下也是没问题的,说明IE7也支持类名交集复合选择器。

  解决的办法

  可以给第一个和最后一个li单独加一个current的样式,但这样增加了js的负担。

<ul class="nav">;
<li class="first
first_current"><a href="">节目</a></li>;
<li class="current"><a href="">合集</a></li>;
<li><a href="">草稿</a></li>;
<li class="last
last_current"><a href="">项目</a></li>;
</ul>; .nav
.first_current a {}
.nav
.last_current a {}

  讨论

  有一种方法可以让我们不用在页面中增加像first、last这种多余的类名,那就是使用css3的样式。css3让我们选择元素变得越来越简单,实现头尾效果可用如下效果:

li:first-of-type
a {}
li:last-of-type
a {} 3 1

来源:http://www.codesocang.com/news/Webqianduan/2014/0511/7604.html

时间: 2024-10-12 16:10:53

使用CSS的类名交集复合选择器的相关文章

(2)css的复合选择器与特性

css的复合选择器与特性 在本篇学习资料中,将深入了解css的相关概念,上一篇介绍的3种基本选择器的基础上,学习3种由基本选择器复合构成的选择器,然后再介绍css的两个重要的特性. 1.复合选择器 复合选择器就是两个或多个基本选择器,通过不同的方式连接成的选择器. 复合选择器的三种类型:交集选择器.并集选择器.后代选择器. (1)交集选择器 “交集”复合选择器由两个选择器直接连接构成:其中第一个必须是标记选择器,第二个必须是类别选择器或者ID选择器:这两个选择器之间不能有空格. 例如:下图声明了

CSS之特性,背景,行高,复合选择器,显示模式

css复合选择器 css 分为 基础选择器 和 复合选择器 , 但是基础选择器不能满足实际开发中 快速高效的选择标签 目的是为了选择更准确更精细的目标元素标签 复合选择器是由两个或者多个基础选择器 , 通过不同的方式组合而成 后代选择器 ( 重点 ) 父级 子级 { 属性名: 属性值; } div a { color: #ccc; } 当标签发生嵌套时 , 内层标签就成为外层标签的后代; 子孙后代都可以选择 , 或者说 , 它能包含任何包含在内的标签 . 子元素选择器 作用 : 子元素选择器只能

css学习_css复合选择器

css复合选择器 a.交集选择器  (即...又...:选择器之间不能有空格) p.one{color:red;] b.并集选择器(中间由逗号隔开) p,div{color:red;} c.后代选择器(可以选择到所以的子孙后代 :中间用空格隔开) .class h3{color:red} d.子元素选择器(中间用 大括号  >; 选的是儿子,孙子啥的不算) div>span{color:red;} e.属性选择器(用中括号表示) a[title]{color:red;} input[type=

CSS复合选择器是什么?复合选择器是如何工作

原文:CSS复合选择器是什么?复合选择器是如何工作 复合选择器介绍# 复合选择器其实很好理解,说白了就跟我们生活中的有血缘关系家庭成员一样,通过标签或者class属性或id属性,去找对应的有血缘关系的某个选择器,具体的大家往下看哦. 如果是初学者对基本的选择器不是很了解的可以看笔者之前写过的基本选择器文章,CSS基本选择器是什么?基本选择器是如何工作,在这就不过多的介绍基本选择器的使用了. 复合选择器说明表# 选择器 描述 举例 选择器1 选择器2{属性:值;} 多元素选择器.同时匹配选择器1和

CSS基础-引入方法,选择器,继承

一.CSS引入方法:行内式.嵌入式.导入式.链接式. 1.行内式. 即:在标签的style属性中设定CSS样式. 例子:<div style="行内式</div> 2.嵌入式 即:将页面各种元素的设置集中写在<head></head>标签里. 例子: <head> <style type="text/css"> div{ background-color:blue; } </style> </

jQuery 复合选择器应用的几个例子

这篇文章主要介绍了jQuery 复合选择器应用的几个例子,本文例子所引用的jQuery版本为 jQuery-1.8.3.min.js,喜欢的朋友可以学习下 <!-- 本文例子所引用的jQuery版本为 jQuery-1.8.3.min.js --> 一. 复合选择器对checkbox的相关操作 ? 1 2 3 4 5 <input type="checkbox" id="ckb_1" />  <input type="chec

我给女朋友讲编程CSS系列(2)- CSS语法、3大选择器、选择器优先级

首先看一下使用Css设置h1标签字体颜色和大小的例子,效果图如下: 新建一个网页test.html,然后复制粘贴下面的内容: <html> <head> <style type="text/css"> h1 {color:red; font-size:14px;} </style> </head> <body > <h1>使用Css让h1标签字体变红</h1> </body> &

【复合选择器】

1.交集选择器 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/css;charset=utf-8">

【3-24】css样式表分类、选择器、样式属性、格式布局

一.css样式表分类: (一)内联样式表:代码写在标签内的样式表  控制精确 代码重用性差  优先级最高 格式:<p style="样式属性">内容</p> <div style="text-decoration:line-through;">第四格第三元</div> (二)内嵌样式表:将代码写在标签<style type="text/css"></style>之间,此标签一