一、元素选择器(所有浏览器支持

元素选择器(标签名选择器)其实就是文档的元素,如html,body,p,div等等,

下面例子中选择了span元素,并设置了字体颜色为红色。

<body>
<p>这里使用<span>标签名选择器</span>改变了样式</p>
</body>

CSS:

span{
color: red;
}

 效果

二、类选择器

所有浏览器都支持类选择器,但多类选择器(.className1.className2)不被ie6支持。

类选择器根据类名来选择,前面以”.”来标志,使用类选择器之前需要在html元素上定义类名,类名自定义。

<body>
<div class="demo"></div>
</body>

CSS

.demo{
width: 150px;
height: 150px;
background:#0e0;
}

效果:

三、ID选择器(所有浏览器都支持

根据元素ID来选择元素,具有唯一性。前面以”#”号来标志。

<body>
<div id="demo"></div>
</body>

 CSS

#demo{
width: 150px;
height: 150px;
background:red;
}

 效果

四、后代选择器( E F )(所有浏览器都支持

后代选择器也称为包含选择器,用来选择特定元素或元素组的后代,后代选择器用两个常用选择器,中间加一个空格表示。

其中前面的常用选择器选择祖元素,后面的常用选择器选择子元素,样式最终会应用于子元素中。

比如说:E F,前面E为祖先元素,F为后代元素。

所表达的意思就是选择了E元素的所有后代F元素,这里F不管是E元素的子元素或者是孙元素或者是更深层次的关系,都将被选中。

换句话说,不论F在E中有多少层关系,都将被选中。

<body>
<div class="demo">
<div class="one">
<ul>
<li>列表一</li>
</ul>
<p>这里是一个段落</p>
</div>
</div>
</body>

CSS

.demo .one{
color: red;
}

 效果:

五、通配符选择器(所有浏览器支持

1、通用选择器用*来表示,下例中表示所有的元素的字体大小都是12px;

*{
font-size: 12px;
}

2、 通用选择器还可以和后代选择器组合。

<body>
<p>
所有的文本都被定义成红色<br>
<span>所有的文本都被定义成红色</span><br>
<span>所有的文本都被定义成红色</span><br>
<span>所有的文本都被定义成红色</span>
</p>
</body>

CSS

p *{
color: red;
}

表示所有p元素后代的所有元素都应用这个样式,注意,若p元素后没有元素,则样式没有效果。

3、与后代选择器的搭配容易出现浏览器不能解析的情况。

<body>
<p>
<p>所有的<span>文本</span>都被定义成红色</p>
<span>此处没有变色</span><br>
<span>此处没有变色</span>
</p>
</body>

CSS

p *{
color: red;
}

效果:

六、子元素选择器(IE6不支持

请注意这个选择器与后代选择器的区别:

子选择器(child selector)仅是指它的直接后代,或者你可以理解为作用于子元素的第一个后代。

而后代选择器是作用于所有子后代元素。

后代选择器通过空格来进行选择,而子选择器是通过“>”进行选择

<body>
<p id="links">
<a href="#">链接一</a>
<span><a href="#">链接二</a></span>
<span><a href="#">链接三</a></span>
</p>
</body>

CSS

#links a {color:red;}

#links > a {color:blue;}

效果:

七、群组选择器(所有浏览器都支持

当几个元素样式属性一样时,可以共同调用一个声明,元素之间用逗号分隔。

<body>
<p>这里是一个段落!</p>
<ul><li>列表</li></ul>
<a href="#" class="demo1">链接一</a><br>
<span class="demo2">文字文字!</span>
</body>

CSS

p,li{
color: blue;
}
.demo1,.demo2{
color: red;
}

效果:

八、相邻兄弟元素选择器(E+F)(IE6不支持这个选择器

相邻兄弟选择器可以选择紧接在另一元素后的元素,而且他们具有一个相同的父元素。

换句话说,EF两元素具有一个相同的父元素,而且F元素在E元素后面,而且相邻,这样我们就可以使用相邻兄弟元素选择器来选择F元素(选中的仅一个元素)。

<body>
<ul>
<li>列表一</li>
<li class="active">列表二</li>
<li>列表三</li>
<li>列表四</li>
   <li>列表五</li>
</ul>
</body>

CSS

.active+li{
background: #0e0;
}

效果:

注释:选择了li.active后面相邻的li元素,注意了和li.active后面相邻的元素仅只有一个的。

九、通用兄弟选择器(E 〜 F)(IE6不支持这个选择器

通用兄弟元素选择器是CSS3新增加一种选择器。

这种选择器将选择某元素后面的所有兄弟元素,他们也和相邻兄弟元素类似,需要在同一个父元素之中。

换句话说,E和F元素是属于同一父元素之内,并且F元素在E元素之后,那么E ~ F 选择器将选择中所有E元素后面的F元素。

<body>
<ul>
<li>列表一</li>
<li class="active">列表二</li>
<li>列表三</li>
<li>列表四</li>
<li>列表五</li>
</ul>
</body>

CSS

.active~li{
background: #0e0;
}

效果:

选择器的优先级问题?

如何规定优先级?

一般而言,选择器越特殊,优先级越高。也就是选择器指向越准确,它的优先级就越高。

如用数字来表示优先级高低:

标签名选择器 =  1

类选择器 = 10

ID选择器 = 100

例:

结果是蓝色,color没有效果

结果

原因

.demo span{ color: blue;}的选择器优先级是10+1=11

.color{color: red;}的优先级是10

所以浏览器显示的是蓝色。

后代选择器定位原则

对于后代选择器,浏览器是如何查找元素的呢?

浏览器CSS匹配不是从左到右进行查找,而是从右到左进行查找。

比如DIV#divBox p span.red{color:red;},

浏览器的查找顺序如下:先查找html中所有class='red'的span元素,找到后,再查找其父辈元 素中是否有p元素,再判断p的父元素中是否有id为divBox的div元素,如果都存在则匹配上

浏览器从右到左进行查找的好处是为了尽早过滤掉一些无关的样式规则和元素。

如果按从左到右查找,那会先查找到很多不相关的p和span元素。

而如果按从左到右的方式进行查找,则首先就查找到<span class='red'>的元素。

firefox称这种查找方式为key selector(关键字查询),所谓的关键字就是样式规则中最后(最右边)的规则,上面的key就是span.red。

 

CSS选择器之基本选择器总结的更多相关文章

  1. CSS 选择器之基本选择器 属性选择器 伪类选择器

    CSS 选择器 常见的选择器列表图 CSS选择器笔记 基本选择器 通配符选择器(*) 元素选择器(E) 类选择器(.className)    所有浏览器都支持类选择器,但多类选择器(.classNa ...

  2. CSS选择器之通配符选择器和多元素选择器

    1.通配符选择器 如果希望所有的元素都符合某一种样式,可以使用通配符选择器. 基本语法: *{margin:0; padding:0} 可以让所有的html元素的外边距和内边距都默认为0. 写一段ht ...

  3. CSS选择器之基本选择器

    一.通用选择器 选择器 * 匹配 所有元素 最低支持CSS版本 2 二.类型选择器 选择器 <元素类型> 匹配 所有指定类型的元素 最低支持CSS版本 1 三.类选择器 选择器 <类 ...

  4. CSS选择器之基本选择器+属性选择器

    1.1      id选择器 #main{ font-size:12px; margin:0; padding:0; } 其中的#main就是id选择器,用于选择HTML页面中id = "m ...

  5. CSS选择器之兄弟选择器(~和+)

    今天在改以以前人家写的网页的样式的时候,碰到这个选择器,‘~’,当时我是懵逼的,傻傻分不清 ‘+’ 跟 ‘~’的区别,虽然我知道他们都是兄弟选择器. 后来网上查了下,也许是我查找的方式不对,没有找到我 ...

  6. CSS选择器之伪类选择器(伪元素)

    selection [CSS4]应用于文档中被用户高亮的部分(比如使用鼠标或其他选择设备选中的部分).(IE8及以下不支持)(火狐-moz-selection) first-line 选择每个 < ...

  7. css笔记08:id选择器之父子选择器

    1.父子选择器 (1)01.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...

  8. 深入学习jQuery选择器系列第四篇——过滤选择器之属性选择器

    × 目录 [1]简单属性 [2]具体属性 [3]条件属性 前面的话 属性过滤选择器的过滤规则是通过元素的属性来获取相应的元素,对应于CSS中的属性选择器.属性过滤选择器可分为简单属性选择器.具体属性选 ...

  9. DOM选择器之元素选择器

    DOM中元素选择器 在DOM中我们可以将元素选择器分为两类:1.元素节点选择器:2.其它节点选择器.通过选择器选择HTML中的元素以对其进行操作,以此实现用JS对页面的操作. 一.元素节点选择器 1. ...

随机推荐

  1. 浅谈Kotlin(二):基本类型、基本语法、代码风格

    浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 通过上面的文章,在A ...

  2. git 入门教程之忽略文件

    忽略文件 "并不是所有的牛奶都叫特仑苏",在版本控制系统中也有相似的表达,那就是"并不是所有的文件都需要提交". 有的是因为没必要提交,比如日志文件,系统缓存文 ...

  3. webpack项目轻松混用css module

    前言 本文讲述css-loader开启css模块功能之后,如何与引用的npm包中样式文件不产生冲突. 比如antd-mobilenpm包的引入.在不做特殊处理的前提下,样式文件将会被转译成css mo ...

  4. JavaScript中解决计算精度丢失的问题

    在做项目之前老师就给我们封装好了一个js文件,解决计算中丢失精度的一些函数,直接引用js文件就可以使用. eg: var numA = 0.1; var numB = 0.2; alert( numA ...

  5. TNS-12535: TNS:operation timed out

    AWS数据库云服务器出现了连接超时的错误,于是查看相关时段的alert日志,发现了如下的错误: **************************************************** ...

  6. NUMA导致的Oracle性能问题

    背景简介: Oracle版本:11.2.0.4 OS 版本:OEL5.8 在一次Oracle的Dataguard正常switchover过程中,遇到了一个极其诡异的问题,一条主业务的SQL语句在新主库 ...

  7. Linux学习历程——Centos 7重置root密码

    一.自述 最近刚刚接触linux,因为我设置密码比较随性,把自己做系统的时候设置的root密码给forget,每当系统崩溃,重新把虚拟机备份还原后,就面临无法登陆的尴尬情况,只得重置root密码,好了 ...

  8. 安装Jenkins getting started卡住

    前言 jenkins版本:2.32.3 操作系统:windows 卡住信息 如果在安装jenkins时卡在getting startted的界面,如下所示 解决方法 1.打开 运行  输入 servi ...

  9. SpringDataJpa的批量 保存 修改 操作

    SpringDataJpa进行修改数据库操作有两种方式: 一.调用保存实体的方法 1.保存一个实体:repository.save(T entity) 2.保存多个实体:repository.save ...

  10. IPerf——网络测试工具介绍与源码解析(4)

    上篇随笔讲到了TCP模式下的客户端,接下来会讲一下TCP模式普通场景下的服务端,说普通场景则是暂时不考虑双向测试的可能,毕竟了解一项东西还是先从简单的情况下入手会快些. 对于服务端,并不是我们认为的直 ...