CSS3
CSS3是css技术的升级版本,CSS3语言开发是朝着模块化发展的。以前的规范作为一个模块实在是太庞大而且比较复杂,所以,把它分解为一些小的模块,更多新的模块也被加入进来。这些模块包括: 盒子模型、列表模块、超链接方式 、语言模块 、背景和边框 、文字特效 、多栏布局等。
css3的优点:CSS3将完全向后兼容,所以没有必要修改现在的设计来让它们继续运作。网络浏览器也还将继续支持CSS2。对我们来说,CSS3主要的影响是将可以使用新的可用的选择器和属性,这些会允许实现新的设计效果(譬如动态和渐变),而且可以很简单的设计出现在的设计效果(比如说使用分栏)
渐进增强
渐进增强 progressive enhancement:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验
优雅降级
渐进增强 graceful degradation:一开始就构建完整的功能,然后再针对低版本浏览器进行兼容
渐进增强 & 优雅降级
区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。
CSS3选择符
- 属性选择器 1、E[attr]:只使用属性名,但没有确定任何属性值 2、E[attr=“value”]:指定属性名,并指定了该属性的属性值 3、E[attr^=“value”]:指定了属性名,并且有属性值,属性值是以value开头的 4、E[attr$=“value”]:指定了属性名,并且有属性值,而且属性值是以value结束的 5、E[attr*=“value”]:指定了属性名,并且有属性值,而且属值中包含了value

-
伪类选择器
- 结构性伪类选择器X:first-child 匹配子集的第一个元素。IE7就可以支持X:last-child匹配父元素中最后一个X元素X:nth-child(n) 用于匹配索引值为n的子元素。索引值从1开始X:nth-last-child(n) 从最后一个开始算索引。
X:first-of-type匹配同级兄弟元素中的第一个X元素 X:last-of-type**匹配同级兄弟元素中的最后一个X元素 X:nth-of-type(n) 匹配同类型中的第n个同级兄弟元素X X:only-of-type匹配属于同类型中唯一兄弟元素的X X:nth-last-of-type(n) 匹配同类型中的倒数第n个同级兄弟元素X
-
目标伪类
- 目标伪类选择器E:target 选择匹配E的所有元素,且匹配元素被相关URL指向

- UI 元素状态伪类选择器E:enabled 匹配所有用户界面(form表单)中处于可用状态的E元素 E:disabled 匹配所有用户界面(form表单)中处于不可用状态的E元素 E:checked 匹配所有用户界面(form表单)中处于选中状态的元素E E::selection 匹配E元素中被用户选中或处于高亮状态的部分
- 目标伪类选择器E:target 选择匹配E的所有元素,且匹配元素被相关URL指向
-
动态伪类选择器a :link 链接伪类选择器 选择匹配的E元素,而且匹配元素被定义了超链接并未被访问过。常用于链接描点上 a :visited 链接伪类选择器 选择匹配的E元素,而且匹配元素被定义了超链接并已被访问过。常用于链接描点上 E :active 用户行为选择器 选择匹配的E元素,且匹配元素被激活。常用于链接描点和按钮上 E:hover 用户行为选择器 选择匹配的E元素,且用户鼠标停留在元素E上。IE6及以下浏览器仅支持a:hover E:focus 用户行为选择器 选择匹配的E元素,而且匹配元素获取焦点
- 层级选择器E>F 子选择器 选择匹配的F元素,且匹配的F元素所匹配的E元素的子元素 E+F 相邻兄弟选择器 选择匹配的F元素,且匹配的F元素紧位于匹配的E元素的后面 E~F 通用选择器 选择匹配的F元素,且位于匹配的E元素后的所有匹配的F元素## css
CSS(cascading style sheet) 汉译为层叠样式表(层叠性),是用于控制网页样式
WEB标准中的表现标准语言,在网页中主要对网页信息的显示进行控制。
目前推荐遵循的是W3C发布的CSS3.0版本;
用来表现HTML或者XHTML等样式文件的计算机语言。
1998年5月21日由w3C正式推出的css2.0
HTML + CSS
弥补html语言的不足
缩减页面代码,提高访问速度;
代码减少,页面文件就会小,占用网络带宽就少,客户端打开速度就快,用户体验就会更好
结构清晰,有利于seo优化
有利于搜索引擎优化
缩短改版时间
对网站的重构有很好的支持
CSS语法
CSS语法由两部分组成:选择符、声明。
声明包括:属性和属性值
选择符(选择器) {属性:属性值;属性:属性值;}
p{width:100px;height:200px;}
选择符说明:CSS选择符(选择器)
选择符表示要定义样式的对象(标签名字),可以是元素本身,也可以是一类元素或者制定名称的元素,简单来说就是给对应的元素起个名称。
1)每个CSS样式由两部分组成,即选择符和声明,声明又分为属性和属性值;
2)声明必须放在花括号中,属性与属性值用冒号连接。(html属性与属性值用等号链接)
3)每条声明用分号结束。
4)当一个属性有多个属性值的时候,属性值与属性值不分先后顺序,用空格隔开。
5)在书写样式过程中,空格、换行等操作不影响属性显示。(html会受空格换行影响)
CSS样式表
1:内部样式表
语法:
<style type="text/css">
css语句
</style>
注:使用style标记创建样式时,最好将该标记写在<head></head>;
2:外部样式
(1) 语法:<link rel="stylesheet" type="text/css" href="目标文件的路径及文件名全称" />
说明:使用link元素导入外部样式表时,需将该元素写在文档头部,即<head>与</head>之间。
rel:用于定义文档关联,表示关联样式表;
type:定义文档类型;
(2)、导入外部样式表
<style type="text/css">
@import url("目标文件的路径及文件名全称");
</style>
说明:@和import之间没有空格 url和小括号之间也没有空格;括号内部加引号,必须结尾以分号结束;
link @import区别
差别1:老祖宗的差别:link属于XHTML标签,而@import完全是CSS提供的一种方式。 link标签除了可以加载CSS外,还可以做很多其它的事情,比如定义RSS,定义rel连接属性等,@import就只能加载CSS。
差别2:加载顺序的差别:当一个页面被加载的时候(就是被浏览者浏览的时候),link引用的CSS会同时被加载,而@import引用的CSS 会等到页面全部被下载完再被加载。所以有时候浏览@import加载CSS的页面时开始会没有样式。
差别3:兼容性的差别。:@import是CSS2.1提出的,所以老的浏览器不支持,@import只在IE5以上的才能识别,而link标签无此问题。
差别4:使用dom控制样式时的差别:当使用javascript控制dom去改变样式的时候,只能使用link标签,因为@import不是dom可以控制的.
3:内联样式表
<标签 style="属性1:值1;属性2:值2; ……"></标签>
CSS样式表的权重关系
1)内联样式表的优先级别最高
2)内部样式表与外部样式表的优先级和书写的顺序有关,后书写的优先级别高。
3)同在一个样式表中的优先级和书写的顺序也有关,后书写的优先级别高。(被覆盖的只是相同属性的样式)
CSS选择符(器)
CSS基本选择符:类型选择符、id选择符、class选择符(类选择符)、包含选择器
Css选择符分类:
类型选择符(标记选择器)
类选择符 (class选择符)
ID选择符 (id选择器)
伪类选择器
通配符(*)设置全局属性
群组选择符(集合选择器)
包含选择符(后代选择器)
属性选择符
伪对象选择符
类型选择符
类型选择符(选择器)是根据html语言中的标记来直接定义
语法:标签名称 {属性:属性值;}
a)类型选择符就是以文档对象html中的标签作为选择符,即使用结构中元素名称作为选择符。例如html(根元素)、body、div、p,img,em,strong,span......等。
b)所有的页面元素都可以作为选择符;
用法:
(1)如果想改变某个元素的默认样式时,可以使用类型选择符;(如:改变一个p段落样式)
(2)当统一文档某个元素的显示效果时,可以使用类型选择符;(如:改变文档所有p段落样式)
类(class)选择符
语法 : .class名{属性:属性值;}
用法:class选择符更适合定义一类样式;
(1)当我们使用类选择符时,应先为每个元素定义一个类名称,
(2)类选择符的语法格式:
如:<div class="box xiaoming aming"></div>
<div></div>
.box{属性:属性值;}
ID选择符
语法: <标签 id=“名”></标签>
#id名{属性:属性值;}
(1)可以给每个元素使用id选择符,但id是元素的唯一标识符,不可出现重复的id名;
如:<div id="top"></div>
(2)id选择符的语法格式是“#”加上自定义的id名
如:#top{width:300px; height:300px;}
(3) 起名时要取英文名,不能用关键字:(所有的标记和属性都是关键字)
如:div标记
(4)一个id名称只能在文档中出现一次,因为id是唯一的
伪类选择器
a:link {color: red;} /* 未访问的链接状态 */
a:visited {color: green;} /* 已访问的链接状态 */
e:hover {color: blue;} /* 鼠标滑过元素状态 */
e:active {color: yellow;} /* 鼠标按下去时的状态 */
说明:
1)当这4个超链接伪类选择符联合使用时,应注意他们的顺序,正常顺序为:
a,a:link,a:visited,a:hover,a:active,错误的顺序有时会使超链接的样式失效;
2)为了简化代码,可以把伪类选择符中相同 的声明提出来放在a选择符中;
例如:a{color:red;} a:hover{color:green;}
表示超链接的三种状态都相同,只有鼠标划过变化颜色
通配符
语法:*{属性:属性值;}
说明:通配选择符的写法是“*”,其含义就是所有标签;
表示该样式适用所有网页元素;
用法:常用来重置样式。
例:*{margin:0;padding:0;}
群组选择符
语法:选择符1,……,选择符5 {属性:属性值;}
说明:当有多个选择符应用相同的样式时,可以将选择符用“,”分隔的方式,合并为一组。
实例:.top, #nav, p{width:100px;}
包含选择器
语法:选择符1(父) 选择符2(后代){属性:属性值;}
选择符父级 选择符子级{属性:属性值;}
说明:选择符1和选择符2用空格隔开,含义就是选择符1中包含的所有选择符2;
实例: div ul li{height:200px;}
选择符权重
css中用四位数字表示权重,
权重的表达方式如:0,0,0,0;
权重规则:HTML标签(类型选择符)的权重是1,class的权重是10,id的权重是100。
类型选择符的权重为0001
class选择符的权重为0010
id选择符的权重为0100
属性选择符的权重为0010
伪类选择符的权重为0010
伪元素(对象)选择符的权重为0001
包含选择符的权重:为包含选择符的权重之和
内联样式的权重为1000
继承样式的权重为0000
群组集合选择符权重为他本身
注:如果权重相同时,则执行后写的样式;
css层叠性
css层叠指的是样式的优先级,当产生冲突时以优先级高的为准。
1. 开发者样式>读者样式>浏览器样式(除非使用!important标记 )
2. id选择符>(伪)类选择符>元素选择符
3. 权重相同时取后面定义的样式
\