为样式找到应用目标-CSS选择器

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: 0;
    }
    #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 特殊性

时间: 2024-10-12 22:03:51

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

《精通CSS高级web标准解决方案》——第一章、第二章(为样式找到应用目标)即选择器

2015-04-16 08:49:35 1.“多类症”:classitis.   “多div”:症. 第二章 为样式找到应用目标(选择器) 1.有效且结构良好的文档为你要应用的样式提供了一个框架. 2.选择器:1.类型选择器(即元素选择器) 2.后代选择器 3.类选择器 4.ID选择器 3.不要给这些元素指定不同的类,而应将一个类货ID应用于他们的祖先,然后使用后代选择器来定位他们. 4.有时我们需要根据文档结构之外的其他条件对元素应用样式,例如表单元素或链接的状态.这要使用伪类选择器来完成.

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

CSS选择器 CSS选择器 CSS(Cascading Style Sheets)是一项出色的技术,它使得网页的结构和表现样式完全分离.利用CSS选择器能轻松地对某个元素添加样式而不改动HTML(HyperText Markup Language)结构. 要使某个样式应用于特定的HTML元素,首先需要找到该元素.在CSS中,执行这一任务的表现规则称为CSS选择器1. CSS选择器 1 基本选择器 2 层次选择器 3 伪类选择器 3.1 动态伪类选择器 3.2 目标伪类选择器 3.3 语言伪类选择

html实践——IFE task 02(CSS选择器)

====任务描述==== [原链接]http://ife.baidu.com/task/detail?taskId=2 任务目的 针对设计稿样式进行合理的HTML架构,包括以下但不限于: 掌握常用HTML标签的含义.用法 能够基于设计稿来合理规划HTML文档结构 理解语义化,合理地使用HTML标签来构建页面 掌握基本的CSS编码,包括以下但不限于: 了解CSS的定义.概念.发展简史 掌握CSS选择器的含义和用法 实践并掌握CSS的颜色.字体.背景.边框.盒模型.简单布局等样式的定义方式 任务描述

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

在html中有以下结构: <div class="row100"> <div class="col"> <div class="inputBox textarea"> <div>123</div> </div> </div> </div> 在CSS文件中修改其样式: 选择器1: .row100 .inputBox .textarea div{} 选择器

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

css选择器    一个可以选择样式的工具, 这里适用于无论是内部代码还是外部引用 abc.css 这类型的文件. 基本选择器*{ }        就是一个简单的*, 代表应用于全部. 不适合于个性化细致化处理的页面, 副作用是它会覆盖原有的style, 不管好坏 *和继承无关, 无论是否一级标签,是否子标签, 一律收到*的影响.(神一般)p{ }        元素选择器, 或者说是标签选择器. p可以是任何其他标签 #123{ }    id选择器, 如<a id ="123&quo

前端笔记七,级联样式单与CSS选择器(二)

只插入部分元素: 在:after,:before前使用更严格的CSS选择器 配合quotes属性执行插入 首先定义quotes,然后再指定content使用open-quote或者close-quote 配合counter-increment属性添加编号 该属性指定的字符就是计算器名称,然后通过counter属性引用计数器即可 使用自定义编号:通过counter(name,list-style-type)实现 其中,list-style-type: decimal:阿拉伯数字,默认值. disc

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

记得大学时候,专业课的网页设计书籍里面讲过css选择器权重的计算:id是100,class是10,html标签是5等等,然后全部加起来的和进行比较... 我只想说:真是误人子弟,害人不浅! 最近,在前端群里还发现以上观点类似的奇葩聊天,真是*** 其实,也是在很久以前,看了腾讯ISUX的一位前端工程师-麦时分享的一篇技术文章(个人站点已失效,就不贴出来了),才了解到真正的css选择器权重计算. 以下是css选择器权重计算精华所在,翻译自国外的文档(记得是W3C给出的计算规则) 如果一个声明来自s

CSS 选择器及各样式引用方式介绍

引用自 :我们都是从菜鸟开始 CSS 选择器及各样式引用方式介绍 一个好的界面,是一个Web吸引人们最大的卖点. Css :层叠样式表 (Cascading Style Sheets),定义了如何显示HTML元素. 1.选择器的分类 语法结构: 1.1 Id选择器 1.1.1 格式 #id :#+元素的id:id是区分大小写. 1.1.2 示例 #title1 {background-color:Blue;border-width:thick;} 1.2 Class 类选择器 1.2.1 格式

css选择器,样式表导入

css笔记1.选择器(selecter)共9种 a.类型选择器 p{},body{} b.后代选择器 p h1{} c.ID选择 #idname{} d.类选择 .classname{} e.通用选择 *{} 页面上所有元素应用样式,利用此可以删除每个元素上默认 浏览器的填充和空白边.可以用来对特定元素的所有后代应用样式,或跳过一级后代 f.伪类选择 a:link{} g.高级选择器 IE6及更低版本不支持,避免在对于站点功能重要的使用高级选择器. 1.子选择器和相邻同胞选择器 子选择器选择元素