第七章,CSS构造块



CSS里有控制基本格式的属性(font-size,color),有控制布局的属性(position,float),还有决定访问者打印时在哪里换页的打印控制元素。CSS还有很多控制项目显示或消失的动态属性,可以用于创建下来列表和其他交互性组件。



构造样式规则



样式表中的每条规则都有两个部分:选择器和声明块。



选择器决定哪些块受影响,声明块由一个或多个属性-值对组成,指定应该做什么。




html5与css3基础教程电子版 html5与css3基础教程(第8版)电子书_html5与css3基础教程电子版


为样式规则添加注释


/* 注释 */,可以是多行注释,放在样式表的任何位置都可以,需要成对出现,不能嵌套。


理解继承


继承是CSS里一个很重要的概念。浏览器会将HTML理解为文档树,对某个元素应用CSS属性时,不仅会影响该元素,还会影响其下分支元素。


对大多数属性而言,可以使用inherit值强制进行继承


会被继承的CSS属性


文本:


color:颜色,a元素除外


direction:方向


font:字体


font-family:字体系列


font-size:字体大小


font-style:用于设置斜体


font-variant:用于设置小型大写字母


font-weight:用于设置粗体


letter-spacing:字母间距


line-height:行高


text-align:用于设置对其方式


text-indent:用于设置首行缩进


text-transform:用于修改大小写


visibility:可见性


white-space:用于指定如何处理空格


word-spacing:字间距


 


列表:


list-style:列表样式


list-style-image:用于为列表指定定制的标记


list-style-position:用于确定列表标记的位置


list-style-type:用于设置列表的标记


 


表格:


border-collapse:用于控制表格相邻单元格的边框是否合并为单一边框


border-spacing:用于指定表格边框之间的空隙大小


caption-side:用于设置表格标题的位置


empty-cells:用于设置是否显示表格中的空单元格


 


页面设置:


orphans:用于设置当元素内部发生分页时在页面底部需要保留的最少行数


page-break-inside:用于设置元素内部的分页方式


widows:用于设置当元素内部发生分页时在页面顶部需要保留的最少行数


 


其他:


cursor:鼠标指针


quotes:用于指定引号样式


层叠:当规则发生冲突时


定义规则不冲突时,则多条规则结合,一起应用到元素上。


1、编写的规则与浏览器默认规则冲突时,以编写的规则为准


2、编写的规则之间发生冲突,CSS用层叠的原则来考虑特殊性、顺序、重要性,从而判断相互冲突的规则中哪个规则应该起作用。


(1)特殊性


特殊性规则指定选择器的具体程度。选择器越特殊,规则就越强。冲突时,优先应用特殊性强的规则。id选择器最特殊。


建议:在样式表中多使用类选择器,避免使用ID选择器。会降低灵活性


(2)顺序


晚出现的优先级高。直接应用在HTML元素上的规则被认为比外部样式表中或插在HTML文档顶部的特殊性相同的规则出现得更晚。


(3)重要性


不建议


属性的值


1、inherit:显示指出该属性值与对应父元素对该属性设定的值相同。p{border:inherit}(IE8之前大部分属性不支持inherit值)


2、预定义值。大多数CSS属性都有一些可供使用的预定义值。例:float可设置为left,right,none。


3、长度和百分数。em,px,pt,百分数。一个em长度大约与对应元素的字号相等。(当em用于设置font-size属性时,它的值继承自对应父元素的字号)


4、纯数字,只有极少数CSS属性接收不带单位的数字,最常见的:line-height,z-index,opacity


5、URL


6、CSS颜色


7、RGB


8、十六进制数


9、更多CSS3提供的指定颜色方式:RGBA、HSLA、HSL


RGBA:在RGB基础上加了一个代表alpha透明度的A。所有现代浏览器都支持,IE9之前的不支持。格式:color:rgb(89,0,127),color:rgba(89,0,127,0.75)


HSL和HSLA


HSL:色相(hue)、饱和度(saturation)、亮度(lightness)。色相取值:0-360,饱和度和亮度均为百分数:0-100%


格式:property:hsl(hue,saturation,lightness);


HSLA格式:property:hsla(hue,saturation,lightness,alpha transparency)


第八章,操作样式表


一定要将CSS文件保存为以.css为扩展名、用UTF-8编码的文件


外部样式表可以通过链接引用,也可以导入(通过import),不推荐导入,性能不好


链接到外部样式表


<link rel="stylesheet" href="url.css">


可以在页面中使用多个link元素加载多个样式表,产生冲突则以后面文件的规则为准。


创建嵌入样式表


<style>样式表</style>,放在head部分


当且仅当style元素出现在link元素后面的时候,嵌入样式表中的样式才会覆盖外部样式表中的样式。


应用内联样式表


在HTML元素中定义style属性。内联样式优先级高于其他所有样式,除非其他地方与之冲突的样式标记了!important


样式的层叠和顺序


嵌入样式表与任何链接的外部样式表之间的关系取决于他们在HTML中的相对位置。发生冲突,以出现顺序较后的为准。


内联样式优先级最高。一旦应用,覆盖所有与之冲突的样式。


相互冲突的样式顺序对优先级影响,有一种例外情况,就是标记!important的样式总是具有最高的优先级。尽量不使用important,除非不得已


使用与媒体相关的样式表


可以指定一个只用于特定输出的样式表。如:可以创建一个具有打印和屏幕版本共有特征的通用样式表,再创建单独的只用于打印的属性和只用于屏幕显示的属性。在link或style元素中使用media属性,例:media="output",output可以是print,screen,all(这些是最常见的)等


第九章,定义选择器


html5与css3基础教程电子版 html5与css3基础教程(第8版)电子书_CSS_02


html5与css3基础教程电子版 html5与css3基础教程(第8版)电子书_样式表_03


建议:尽量不要使用id选择器


编写CSS的一个重要目标就是让选择器尽可能简单,仅保持必要的特殊性


按名称选择元素


类型选择器


按类或ID选择元素


1、按类选择要格式化的元素


使用.(点号)开头,不加空格,输入className


2、按ID选择要格式化的元素


使用#(井号)开头,不加空格,输入idName


除非必须特别针对目标元素,最好不要再id或class选择器中添加元素名称,降低灵活性


类选择器与ID选择器的比较


建议尽量使用class选择器。


id选择器会引入如下问题:


1、不可复用


2、特殊性强,要覆盖需要编写特殊性更强的规则,较难管理


按上下文选择元素


.architect > p{
     color:red;
}


这个选择器仅选择architect类元素的子元素(而非子子元素、子子子元素)的p元素。


<body>
     <h1></h1>
     <p></p>
     <h2></h2>
</body>


h1与p是相邻同胞,h1与h2不是相邻同胞,p与h2是相邻同胞


.architect p+p{
     color:red;
}


3、普通同胞结合符:~


h1~h2{
     color:red;
}


选择第一个或最后一个子元素


:first-child,:last-child。均为伪类。


<ul>
     <li>1</li>
     <li>2</li>
     <li>3</li>
     <li>4</li>
</ul>


li:first-child{
     color:red;
}


选中的是 <li>1</li>,并不是li的子元素,:last-child类似


选择元素的第一个字母或者第一行


:first-letter,:first-line


伪元素:::first-letter,::first-line,::before,::after


伪类::first-child,:link,:hover


按状态选择链接元素


a:link:从未被激活或指向,当前也没有被激活或指向的链接的外观


a:visited:访问者已激活过的链接的外观


a:focus:前提是链接是通过键盘选择并已准备好激活的


a:hover:光标指向链接时链接外观


a:active:激活过的链接的外观


按属性选择元素


选择器

属性值

[attribute]

匹配指定属性,不论值是什么

[attribute="value"]

完全匹配指定属性值

[attribute~="value"]

属性值是以空格分隔的多个单词,其中一个完全匹配指定值

[attribute|="value"]

属性值以 value- 打头

[attribute^="value"]

属性值以value开头,value为完整单词或单词一部分

[attribute$="value"]

属性值以value结尾,value为完整单词或单词一部分

[attribute*="value"]

属性值为指定值的子字符串


指定元素组


h1,h2{
     color:red;
}


组合使用选择器


em{
     color:red;
}
.project em{
     color:red;
}
.architect .project em{
     color:red;
}
/* 以上实现相同效果,特殊性由低到高 */


第十章,为文本添加样式

选择字体系列


font-family:name


对于包含多个单词的字体名称,应该用引号(单引号或双引号)包围起来。


虽然font-family属性是继承的,但有几个元素不会继承父元素的字体设置,其中有表单的select、textarea、input元素。不过可以强制它们继承。


指定替代字体


可以在font-family属性中列举一种以上的字体,备用。font-family:name,name2,name3..


创建斜体


font-style:italic


取消斜体


font-style:normal


应用粗体格式


font-weight:bold(粗体)、font-weight:bolder(更粗)、font-weight:light(更细)、或者输入100~900之间100的倍数,400代表正常粗细,700代表粗体


设置字体大小


为网页的文本设置字体大小有两种方法:直接使用像素指定要使用的特定字号,或使用百分数、em或者rem指定相对于父元素文本的大小


建议使用em为单位


1em总是等于默认字号大小,这是em的工作原理


rem总是以根元素作为参照系


font-size:xx-small、font-size:x-small、font-size:small、font-size:medium、font-size:large、font-size:x-large、font-size:xx-large、或者使用数字加单位,或者百分比


设置行高


行高指的是段落的行距,即段落内每行之间的距离


line-height:n -- 它与元素字体大小相乘,得出需要的行高


line-height:a -- 这里的a是以em、px、pt为单位的值


line-height:p% -- 字体大小百分比


同时设置所有字体值


可以使用font同时设置字体样式、粗细、变体、大小、行高和字体系列


使用font,至少需要包含字体大小和字体系列属性


设置颜色


color:red;


使用样式表可以包含颜色名称、十六进制值、RGB、HSL、RGBA和HSLA值的任意组合来定义颜色


设置背景


background-color、background-image、background-repeat(重复背景图像)、background-attachment、background-position,还可以使用background简记法


background-repeat:重复背景图像,background-repeat:direction,direction有四个可选值:repeat、repeat-x、repeat-y、no-repeat


background-attachment:控制背景图像是否随页面滚动,fixed:背景图像附着在浏览器窗口上,即使访问者滚动窗口,图像仍会继续显示,scroll:访问者滚动页面时背景图像会移动,local:只有访问者滚动背景图像所在元素时,背景图像才会移动。


background-position:指定元素背景图位置


控制间距


可以增加或减少单词之间或字母之间的距离,前者称为字间距,后者称为字偶距


字间距:word-spacing:length


字偶距:letter-spacing:length


添加缩进


text-indent属性,可以指定段落第一行前面应该空出多大空间


对齐文本


text-align:left(right,center,justify),左对齐,右对齐,居于中间,两端对齐


修改文本的大小写


text-transform属性,可以为样式定义文本大小写。


text-transform:capitalize -- 每个单词首字母大写


text-transform:uppercase -- 让所有字母大写


text-transform:lowercase -- 让所有字母小写


text-transform:none -- 让文本保持本来的样子


使用小型大写字母


小型大写字母:字母是大写的,但缩小到了小写字母的大小。使用font-variant控制。


使用:font-variant:small-caps


取消:font-variant:none


装饰文本


text-decoration属性装饰文本,添加下划线或其他类型线条


text-decoration:underline -- 添加下划线


text-decoration:overline -- 添加上划线


text-decoration:line-through -- 添加删除线


取消:text-decoration:none


设置空白属性


使用white-space


white-space:pre -- 让浏览器显示原文本中所有空格和回车