一、常见的选择器
1. 类型选择器和后代选择器,类型选择器:允许以一种独立于文档元素的方式来指定样式,该选择器可以单独使用,也可以与其他元素结合使用;后代选择器:以其它两个选择器之间的空格表示,后代选择器是所有的后代,下面例子中将div后面的2个p元素都调整边距
类型选择(又叫元素选择):p {color: black;} h1 {font-weight: bold;}
<html><body><h1>This is test</h1> <p>this is paragraph</p></body></html>
后代选择(又叫包含选择):div p {padding-left: 2em;}
<div><p>test paragraph1</p><p>test paragraph2</p></div>
PS:如上2种适合应用范围广的一般性样式;
2. ID选择器和类选择器,指定ID(以#开始)或者类名(class)【以.开始】的元素
ID选择:#paragraph1 {font-weight: bold;}
类选择:.context {color: #ccc;}
<p id="paragraph1">this is test</p> <p classnaub="context">testtest</p>
ps:配合使用:#maincontent h1 {font-size: 1.8em;}
#seccontent h1 {font-size:1.2em;}
<div id="maincontext"><h1>......</h1></div><div id="seccontent"><h1>......</h1></div>
3. 通用选择器,适用所有元素,由于渲染速度、以及实际需求问题很少使用,采用通配符方式
* {color:red;}
4. 子选择器和相邻同胞选择器
子选择器:#nav>li {} 只针对直接后代应用样式,ul id="nav"里面的 ul<li>不应用样式
<ul id="nav">
<li></li>
<li><ul><li></li><li></li></ul></li>
<li></li>
</ul>
相邻同胞:h1 + p {};只针对第一个p元素应用样式;
<h1> </h1> <p></p><p></p>
5. 属性选择器,根据某个属性或者属性值选择某个(类)元素
p[title] {} p[title="help"] {} [title="new"] {}
<p title="help"></p><p></p><p title="new"></p>
扩展:
p[title="help"]:hover {}
6. 伪类
:link,:visited为链接伪类,只能应用于锚元素<a></a>;:hover,:active,:focus为动态伪类,可以应用于任何元素
二、层叠样式与特殊性以及继承
层叠
层叠样式优先级由高到低分别为1. 网站开发者编写的样式 2.用户通过浏览器自定义的样式(可自写CSS文件关联到浏览器)3. 浏览器默认的样式(根据浏览器不同而不同);
用户可通过!important提升优先级,从而得到1. !important用户样式 2.!important 作者样式 3上述三层样式
特殊性(对于调整样式、解决Bug、提升优先级有重要的意义并提供依据)
<<高级Web标准解决方案>>给每个选择器分配一个数字值,然后,将规则的每个选择器的值加在一起,计算出规则的特殊性;特殊性是对同一个层次(如上提到的层叠顺序)样式的优先级定义,总体规则是选择越细样式的优先级越高,如果级别相同则后定义的优先级高,如下一个简化的特殊性规则计算(在选择器少于10个的情况下)截图:
继承
应用元素样式的后代会继承样式的某些属性,如颜色与字号等;
PS:有些情况样式感觉没有被继承,是因为浏览器的默认样式覆盖了继承的样式;这里误解是层叠优先级种浏览器样式没有自定义的高为什么会覆盖,原因是继承的样式的特殊性为空;
三、样式定义的原则
1. 命名在样式定义时class的名称按照内容定义时一个比较好的方法,后续修改也方便,比如 class=“news”,class=“head”;
2. 样式的分割注释很有意义,方便在大量的样式种寻找到定义、模块划分;同时方便后续问题排查
3. 页面样式文件过大,可进行压缩(浏览器下载样式、js的并行数量有限制,如果过多则会发生串行从而引发客户满意度问题)
4. 样式文档结构
一般性样式:主体样式、reset样式、链接、标题、其它元素
辅助样式:表单、通知和错误、一致的条目
页面结构:标题、页脚和导航、布局、其它页面结构
页面组件:各个页面
四、样式的引入方式
常用方式:<link href="/css/XXX" rel="stylesheet" type="text/css" />
倒入样式:<style>!import url(/css/XXX.css)</style> 效率低
网友评论