1,常用选择器:元素(标签/简单)选择器、ID选择器、类选择器、后代选择器(可以将类或者ID应用于它们的祖先,然后使用后代选择器来定位)

2,伪类:有时候,我们需要根据文档结构之外的其他条件对元素应用样式,例如表单元素或链接的状态,可以使用伪类选择器来完成:

/*makes all unvisited links blue*/
a:link { color: blue; } /*makes all visited links green*/
a:visited { color: green; } /*makes links red when hovered or actived. focus is added for keyboard support*/
a:hover, a:focus, a:active { color: red; } /*makes table rows red when hovered over*/
tr:hover { background-color: red; } /*makes input elements yellow when focus is applied*/
input:focus { background-color: yellow; }

:link和:visited成为链接伪类,只能应用于锚元素。:hover、:active和:focus称为动态伪类,理论上可以应用于任何元素,大多数浏览器都支持这个功能。但是IE6只注意应用于锚链接的:active和:hover选择器,完全忽略:focus。IE7在任何元素上都支持:hover,但是忽略:active和:focus。如果不需要兼容IE6、IE7,就很好啦。

最后,值得指出的是,通过把伪类链接在一起,可以创建更复杂的行为,比如在已访问链接和未访问链接上实现不同的鼠标悬停效果。

    /*makes all visited links olive on hover*/
a:visited:hover { color: olive; }

通用选择器:最强大但最少用,在与其他选择器结合使用时,通用选择器可以用来对某个元素的所有后代应用样式,或者跳过一级后代。

3,高级选择器:

CSS2.1和CSS3有其他许多有用的选择器。不过,虽然现代大多数浏览器支持这些高级选择器,但是IE6或更低版本不支持。好在在创建CSS时考虑到了向后兼容性。如果浏览器不理解某个选择器,那么它会忽略整个规则。因此,可以在现代浏览器中应用样式和易用性方面的改进。同时不必担心它在老式浏览器中造成问题。但是要记住,在对于站点功能或布局很重要的任何元素上,都应该避免使用这些高级浏览器。

3.1 子选择器和相邻同胞选择器

IE7和更高版本都支持子选择器。但是IE7中有一个小bug,如果父元素和子元素之间有HTM注释,就会出问题。

在IE6和更低版本中,可以使用通用选择器模拟子选择器的效果。为此,先在所有后代上应用你希望子元素具有的样式,然后,使用通用选择器覆盖子元素的后代上的样式。请看下面的例子:

<ul id="nav">
<li><a href="#">Home</a></li>
<li><a href="#">Service</a>
<ul>
<li><a href="#">Design</a></li>
<li><a href="#">Development</a></li>
<li><a href="#">Consultancy</a></li>
</ul>
</li>
<li><a href="#">Contact Us</a></li>
</ul> 
    #nav li {
background: url(folder.png) no-repeat left top;
padding-left: 20px;
} #nav li * {
background-image: none;
padding-left:;
}
    #nav > li {
background: url(folder.png) no-repeat left top;
padding-left: 20px;
}

上面2中CSS的写法,效果是一样的。

相邻兄弟选择器(Adjacent sibling selector)可选择紧接在另一元素后的元素,且二者有相同父元素。与子选择器一样,如果在目标元素之间有注释,这在IE7中也会出现问题。

3.2 属性选择器

属性选择器可以根据某个属性是否存在或属性的值来寻找元素,因此能够实现某些非常有意思和强大的效果。

例如,当鼠标悬停在具有title属性的元素上时,大多数浏览器会显示一个工具提示。可以使用这种特性来解释某些内容(比如首字母缩拼词和缩写词)的含义:

<p>The term<acronym title="self-contained underwater breathing apparatus">SCUBA</acronym> is an acronym rather than an abbreviation as it is pronounced as
a word
</p>
 但是,如果不把鼠标悬停在这个元素上,那么没有任何迹象能够表明存在这一额外信息。为了解决这个问题,可以使用属性选择器对具有title属性的acronym元素应用与其他元素不同的样式——在下面的例子中,在它们下面加上点,还可以在鼠标悬停在这个元素上时将鼠标指针改成问号,表示这个元素与众不同,从而提供更多的上下文相关信息。
    acronym[title] {
border-bottom: 1px dotted #999;
} acronym[title]:hover,
acronym[title]:focus {
cursor: help;
}

除了根据某个属性是否存在对元素应用样式之外,还可以根据属性值应用样式。例如,使用rel属性值nofollow链接的站点无法从Google获得评级收益(ranking benefit)。以下规则在这种链接旁边显示一个图像,以此表示不推荐这个站点:

a[rel='nofollow'] {
background: url(nofollow.gif) no-repeat right center;
padding-right: 20px;
}

包括IE7的现代浏览器都支持这些选择器,然而,由于IE6不支持属性选择器,可以利用它对IE6应用一种样式,对更符合标准的浏览器应用另一种样式。例如,AndyClarke利用这种技术为IE6提供网站的黑白版本,为其他浏览器提供彩色版本。

    #header {
background: url(branding-bw.png) repeat-y left top;
} [id='header'] {
background: url(branding-color.png) repeat-y left top;
}

一些属性可以有多个值,值之间用空格分隔。属性选择器允许根据属性值之一寻找元素。例如,XFN微格式允许在锚链接的rel属性中添加关键字来定义你与站点的关系。假设某个站点属于我的同事,我就可以在博客上的链接中添加co-worker关键字来表示这一关系。然后可以在这位同事的姓名旁边显示一个特殊的图标,以此表明我和这个人一起工作。

.blogroll a[rel~="co-worker"] {
color: #fff;
background: blue;
}
    <ul class="blogroll">
<li><a href="http:adactio.com/" rel="friend met colleague co-worker">Jeremy Keith</a></li>
</ul>

3.3 层叠和特殊性

CSS层叠(cascade)的重要度次序如下:

a,标有!important的用户样式

b,标有!important的作者样式

c,作者样式

d,用户样式

e,浏览器/用户代理应用的样式

具有更加特殊性选择器的规则优先于具有一般选择器的规则,如果两个规则的特殊性相同,那么后定义的规则优先。(可以通过将任何规则指定为!important来提高它的重要度,让它优先于任何规则,甚至优先于作者加上的!important标志的规则。)

3.3.1 特殊性

为样式找到应用目标-CSS选择器的更多相关文章

  1. 【前端学习】【CSS选择器】

    CSS选择器     CSS选择器 CSS(Cascading Style Sheets)是一项出色的技术,它使得网页的结构和表现样式完全分离.利用CSS选择器能轻松地对某个元素添加样式而不改动HTM ...

  2. CSS选择器基本介绍

    一.web标准 所谓的web标准就是用来衡量我们当前的网页书写是否规范的一系列要求,这个标准是由W3C组织制定,在web标准中具体的要求就是结构.样式.行为三者相分离 结构:通过HTML标签来搭建的网 ...

  3. 关于CSS选择器连续性的问题

    在html中有以下结构: --- ----- <div class="row100"> <div class="col"> <di ...

  4. HTML5 -入门 (---css样式-------------(css基础与css选择器)---------------------—)

    ---恢复内容开始--- 一css基础入门与css选择器 CSS英文全拼:cascading style sheet 层叠样式表. 在html中使用:要在head中写style标签,所有样式放在sty ...

  5. Css选择器(上) 让样式无孔不入

    css选择器    一个可以选择样式的工具, 这里适用于无论是内部代码还是外部引用 abc.css 这类型的文件. 基本选择器*{ }        就是一个简单的*, 代表应用于全部. 不适合于个性 ...

  6. Day 31:CSS选择器、常用CSS样式、盒子模型

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. from表单、css选择器、css组合器、字体样式、背景属性、边框设置、display设置

    目录 一.form表单 1.form表单功能 2.表单使用原理 二.前端基础之css 1.关于css的介绍 2.css语法 3.三种编写CSS的方式 3.1.style内部直接编写css代码 3.2. ...

  8. 前端极易被误导的css选择器权重计算及css内联样式的妙用技巧

    记得大学时候,专业课的网页设计书籍里面讲过css选择器权重的计算:id是100,class是10,html标签是5等等,然后全部加起来的和进行比较... 我只想说:真是误人子弟,害人不浅! 最近,在前 ...

  9. CSS 选择器及各样式引用方式

    Css :层叠样式表 (Cascading Style Sheets),定义了如何显示HTML元素. 目录 1. 选择器的分类:介绍ID.class.元素名称.符合.层次.伪类.属性选择器. 2. 样 ...

随机推荐

  1. leetcode-64-最小路径和

    题目描述: 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入: [  [1,3,1], [1 ...

  2. 【PaddlePaddle系列】手写数字识别

      最近百度为了推广自家编写对深度学习框架PaddlePaddle不断推出各种比赛.百度声称PaddlePaddle是一个“易学.易用”的开源深度学习框架,然而网上的资料少之又少.虽然百度很用心地提供 ...

  3. 剑指offer三十六之两个链表的第一个公共结点

    一.题目 输入两个链表,找出它们的第一个公共结点. 二.思路 如果存在共同节点的话,那么从该节点,两个链表之后的元素都是相同的.也就是说两个链表从尾部往前到某个点,节点都是一样的.我们可以用两个栈分别 ...

  4. C++的开源跨平台日志库glog学习研究(一)

    作为C++领域中为数不多的好用.高效的.跨平台的日志工具,Google的开源日志库glog也算是凤毛麟角了.glog 是一个C++实现的应用级日志记录框架,提供了C++风格的流操作. 恰巧趁着五一我也 ...

  5. 漫谈NIO(3)之Netty实现

    1.前言 上一章结合Java的NIO例子,讲解了多路IO复用的一个基本使用方法,通过实际编码加深对其理解.本章开始进入Netty的环节,前面两章都是为了Netty进行铺垫说明.此节将对比Java的NI ...

  6. tensorflow进阶篇-4(损失函数1)

    L2正则损失函数(即欧拉损失函数),L2正则损失函数是预测值与目标函数差值的平方和.L2正则损失函数是非常有用的损失函数,因为它在目标值附近有更好的曲度,并且离目标越近收敛越慢: # L = (pre ...

  7. Python基础语法——(引号、字符串、长字符串、原始字符串、Unicode)

    一.单引号字符串和转义引号 当字符串中出现单引号'时,我们可以用双引号""将该字符串引起来:"Let's go!" 而当字符串中出现双引号时,我们可以用单引号' ...

  8. javac之BridgeMethod及泛型擦除重写

    When compiling a class or interface that extends a parameterized class or implements a parameterized ...

  9. Hbase 维护

    停止 regionserver : ./graceful_stop.sh host

  10. c++面试题中经常被面试官面试的小问题总结(一)(本篇偏向基础知识)

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/10711810.html 1.类中的函数定义后加了一个const代表什么? 代表它将具备以下三个 ...