CSS定义:
CSS 指层叠样式表 (Cascading Style Sheets)
CSS通常称为CSS样式表或层叠样式表(级联样式表),主要用于设置HTML页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)以及版面的布局等外观显示样式。
CSS以HTML为基础,提供了丰富的功能,如字体、颜色、背景的控制及整体排版等,而且还可以针对不同的浏览器设置不同的样式。
CSS就是控制页面布局和样式。
CSS的版本:到了3.0版本。(目前还是用2.1版本)
HTML和CSS的关系:
HTML结构层负责从语义的角度搭建页面结构。(HTML:页面结构)
CSS样式层负责从审美的角度美化页面。(CSS:页面样式表现)
JavaScript行为层负责从交互的角度提升用户体验。(JavaScript:交互行为)
引入CSS的方式:
所有的标签都有一个默认样式,我们称为浏览器样式,或者默认样式。
缺省样式(浏览器样式):
可以通过设置修改浏览器的样式 ; 所有的标签都有默认的样式:h1,h2,p,div,span,ul等。
缺省样式(浏览器样式)的优先级是最低的。
补充快捷键:看上图。
行内样式:
行内样式,是通过在标签中设置style属性来达到实现控制标签的样式的效果。(下图){red后面少了个;}
Style属性中,可以设置多条的CSS样式。(下图)
嵌入样式:
嵌入样式又叫:内嵌样式、内部样式。
在head标签中,嵌套一个style标签,在style标签中可以书写CSS的样式内容。
Style标签有一个属性type属性,默认值就是text/css,可以省略。
外部样式(外联样式):
通过link标签引入css样式文件。
type属性:只有一个选项,“text/css",指定当前为css文本文件。()
rel:指定当前HTML文件与CSS文件的关系是样式表。href:指定外联样式表的路径。
导入样式:@import,导入样式会导致,css文件不能并行下载。不推荐使用。
导入样式的书写必须在所有的css规则书写之前。
导入样式:
@import,导入样式会导致,css文件不能并行下载。不推荐使用。
导入样式的书写必须在所有的css规则书写之前。
CSS语法:
选择符、属性声明、括号。
换行不敏感、空格不敏感
CSS简单属性:
width:设置宽度,单位px像素。
height:高度。
color:前景色,也就是文字的颜色。
background-color:背景色。
font-size:字体的大小。
CSS案例:
CSS注释:
CSS的注释语法: /*注释的内容*/
注释不能嵌套,比如: /*注释的*/内容*/ (中间多了*/,是错误的)
多行注释:
/*
放多行的注释内容1
放多行的注释内容2
*/
一般用于模块的 注释:
文件头的注释:
例如:
CSS选择器:
标签选择器:
标签选择器就是选择当前页面中相同名字的标签
通配符选择器
通配符选择器用“*”号表示,他是所有选择器中作用范围最广的,能匹配页面中所有的元素。
基本语法格式: *{属性1:属性值1;属性2:属性值2; 属性3:属性值3;}
使用通配符选择器定义CSS样式,清除所有HTML标记的默认边距。
通配符的穿透力很强,优先级高于继承的样式,会覆盖继承的样式。一般不用。
ID选择器
HTML标签中ID的属性值在一个页面中必须是唯一的。
id一般用于css的选择器和js的钩子。
ID选择器是可以帮助我们选择当前页面中唯一id值的标签,也就是根据标签的id属性值进行选取设置样式。
id选择器使用“#”进行标识,后面紧跟id名。
语法: #id名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
类选择器:
类选择器就是选取页面中所有标签的class属性值相同的一类标签。
类选择器的符号是: . (点)
标签可以包含多个类选择器,在class标签中用空格隔开。
ID选择器和class选择器的区别
相同的Class属性值,可以在HTML中出现多次。ID属性值在页面中只能出现一次。
一个class的属性可以有多个值,也就是说一个标签可以有多个类。
尽量使用类选择器。使用ID时候情况:当确实能唯一确定当前页面中标签只会出现一次,这时候可以使用ID选择器。
如果不能保证相同的作用的标签在页面中只出现一次,那么这时候就选择使用类选择器。
选择器综合案例
CSS复合选择器
复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的。
标签指定式选择器(即....又....)
标签指定式选择器又称交集选择器,由两个选择器构成,其中第一个为标记选择器,第二个为class选择器或id选择器,两个选择器之间不能有空格,如h3.special或p#one。
比如:h3.demo {} ,需要同时满足既是标签h3又拥有demo类才能被选择到。
注意:使用非常少,一般不用。要么直接用id选择器,要么直接用类选择器。
后代选择器:
后代选择器用来选择元素或元素组的后代,其写法就是把外层标记写在前面,内层标记写在后面,中间用空格分隔。当标记发生嵌套时,内层标记就成为外层标记的后代。
并集选择器:
并集选择器是各个选择器通过逗号连接而成的,任何形式的选择器(包括标记选择器、class类选择器id选择器等),都可以作为并集选择器的一部分。如果某些选择器定义的样式完全相同,或部分相同,就可以利用并集选择器为它们定义相同的CSS样式。
子元素选择器:
子代选择器,是让CSS选择器智能选择儿子辈的元素。
尖括号和选择器之间可以有空格也可以没有,没有限制。
建议:选择器和尖括号间有空格。
属性选择器:
属性选择器就是根据html标签的属性进行过滤选择。
CSS伪类 伪元素:
状态是动态变化的,当一个元素达到一个特定状态时,它可能得到一个样式,当状态改变时,又失去这个样式。
它的功能和class有些类似,但它是基于文档之外的抽象,所以叫伪类。
CSS伪类:
:link 伪类将应用于未被访问过的链接。IE6不兼容,解决此问题,直接使用a标签。
:hover 伪类将应用于有鼠标指针悬停于其上的元素。在IE6只能应用于a连接,IE7+所有元素都兼容。
:active 伪类将应用于被激活的元素,如被点击的链接、被按下的按钮等。
:visited 伪类将应用于已经被访问过的链接
:focus 伪类将应用于拥有键盘输入焦点的元素。
顺序问题:LoVeHAte原则。看下图(顺序不要乱了)
伪元素选择器
伪元素 是控制内容。
:first-line伪元素。
:first-letter伪元素。
注释:以上两个伪元素只能用于块级元素。
:first-child伪元素,选择属于第一个子元素的元素。
例如:span:first-child{ } (选择属于第一个子元素的所有span标签。)
:before与:after伪元素,可以设置元素之前后之后的内容,并且配合content设置相关内容。比如:#demo:after,#demo:before{content:"--";display:block;}
重点,圈起来,会考
下面两图有不同效果:
CSS的层叠性:
CSS的层叠性,也就是说后来设置的样式会层叠(覆盖)之前的样式,层叠性的前提是CSS的选择器的优先级相同。
例如,当使用内嵌式CSS样式表定义标记字号大小为12像素,链入式定义标记颜色为红色,那么段落文本将显示为12像素红色,即这两种样式产生了叠加。
�CSS继承性:
所谓继承性是指书写CSS样式表时,子标记会继承父标记的某些样式(子容器的样式会继承父容器的样式),如文本颜色和字号。想要设置一个可继承的属性,只需将它应用于父元素即可。
恰当地使用继承可以简化代码,降低CSS样式的复杂性。但是,如果在网页中所有的元素都大量继承样式,那么判断样式的来源就会很困难,所以对于字体、文本属性等网页中通用的样式可以使用继承。例如,字体、字号、颜色、行距等可以在body元素中统一设置,然后通过继承影响文档中所有文本。
所有字相关的都可以继承,比如:color、text-系列、font-系列、line-系列、cursor
并不是所有的CSS属性都可以继承,例如,下面的属性就不具有继承性:边框、外边距、内边距、背景、定位、元素宽高属性。
所有盒子相关的属性都不能继承。
CSS的特殊性(优先级):
CSS的特殊性,定义CSS样式时,经常出现两个或更多规则应用在同一元素上,那么谁的优先级更高呢,这就是CSS的特殊性。
内联样式最大,内联样式的优先级最高。> ID选择器的优先级,仅次于内联样式。> 类选择器优先级低于ID选择器。> 标签选择器低于类选择器。
256个标签选择器相加大于 一个类选择器 , 256个类选择器相加大于 一个ID选择器。
在考虑权重时,还需要注意一些特殊的情况,具体如下:
继承样式的权重为0。即在嵌套结构中,不管父元素样式的权重多大,被子元素继承时,他的权重都为0,也就是说子元素定义的样式会覆盖继承来的样式。
行内样式优先。应用style属性的元素,其行内样式的权重非常高,可以理解为远大于100。总之,他拥有比上面提高的选择器都大的优先级。
权重相同时,CSS遵循就近原则。也就是说靠近元素的样式具有最大的优先级,或者说排在最后的样式优先级最大。
所有都相同时,声明靠后的优先级大。
CSS定义了一个!important命令,该命令被赋予最大的优先级。也就是说不管权重如何以及样式位置的远近,!important都具有最大优先级。
综述:行内样式 > 页内样式 > 外部引用样式 >浏览器默认样式。
•important > 内联 >ID > 伪类|类 | 属性选择> 标签> 伪对象 >通配符 > 继承。
复合选择器的样式优先级核算: