一、CSS的发展历程
从HTML被发明开始,样式就以各种形式存在。不同的浏览器结合它们各自的样式语言为用户提供页面效果的控制。最初的HTML只包含很少的显示属性。 随着HTML的成长,为了满足页面设计者的要求,HTML添加了很多显示功能。但是随着这些功能的增加,HTML变的越来越杂乱,而且HTML页面也越来越臃肿。于是CSS便诞生了。
二、CSS初识
CSS英文全称为Cascading Style Sheets,中文译为“层叠样式表(级联样式表)”,主要是对HTML标记的内容进行更加丰富的装饰,并将网页表现样式与网页结构分离的一种样式设计语言。可以使用CSS控制HTML页面中的文本内容、图片外形以及版面布局等外观的显示样式。
三、CSS选择器
选择器概念
概念:用于找到目标元素
普通选择器
-
id选择器(#)
-
类选择器(.)
-
标签选择器(标签名字):匹配所有标签
-
通配符选择器(*):表示所有元素
复合选择器
- 后代选择器(空格):匹配所有指定元素的后代元素
- 交集选择器(不分割):由两个选择器构成,其中第一个为标签选择器,第二个为class选择器
- 并集选择器(逗号):只要逗号隔开的,所有选择器都会执行后面样式。
- 子元素选择器(>):匹配下一层子元素(只包含亲儿子)
- 相邻兄弟选择器(+):匹配紧挨的兄弟元素
- 普通兄弟选择器(~):匹配指定元素的相邻兄弟元素
- 属性选择器([]):选取标签带有某些特殊属性的选择器
链接伪类选择器
- :link /* 未访问的链接 */
- :visited /* 已访问的链接 */
- :hover /* 鼠标移动到链接上 */
- :active /* 选定的链接 */
注意:书写顺序不能颠倒
四、CSS样式书写位置
内联样式
概念:通过标签的style属性来设置元素的样式。
语法:<标签名 style="属性1:属性值1; 属性2:属性值2; 属性3:属性值3;"> 内容 </标签名>
内部样式表
概念:将CSS代码集中写在HTML文档的head头部标签中,并且用style标签定义。
语法:
<head>
<style type="text/CSS">
选择器 {属性1:属性值1; 属性2:属性值2; 属性3:属性值3;}
</style>
</head>
外部样式表
概念:将所有的样式放在一个或多个以.CSS为扩展名的外部样式表文件中,通过link标签将外部样式表文件链接到HTML文档中
语法:
href:定义所链接外部样式表文件的URL,可以是相对路径,也可以是绝对路径。 type:定义所链接文档的类型,在这里需要指定为“text/CSS”,表示链接的外部文件为CSS样式表。 rel:定义当前文档与被链接文档之间的关系,在这里需要指定为“stylesheet”,表示被链接的文档是一个样式表文件。
五、CSS三大特性
CSS层叠性
概念:指多种CSS样式的叠加。
现象:相同属性的不同样式作用于同一元素上,例,元素设置了颜色为红色,又设置颜色为蓝色,即样式冲突
规范:按照css书写的顺序,以最后的样式为准
CSS继承性
概念:子标签会继承父标签的某些样式
内容:
1.text‐,font‐,line‐开头的属性可继承,color属性可继承
2.关于文字样式的,都能够继承;
3.所有关于盒子的、定位的、布局的属性都不能继承。
CSS优先级
概念:多规则应用在同一元素上
规则:
1.!important命令最大的优先级。
2.行内样式优先,应用style属性的元素,比选择器高。
3.id选择器>类选择器>标签选择器
选中元素时:
1.当权重不一样时,统计权重(id的数量,类的数量,标签的数量),权重大则优
2.当权重一样时,以最后出现的css样式为准(即覆盖)
没有选中元素时(权重为0):
1.当描述层数不相同时,依据就近原则:看选择器描述到的层数,描述靠近目标则优先。
2.当描述相同层数时,以最后出现的css样式为准(即覆盖)
六、CSS样式
字体样式属性
font-size:字号大小
font-size属性用于设置字号,该属性的值可以使用相对长度单位,也可以使用绝对长度单位。
font-family:字体
font-family属性用于设置字体。网页中常用的字体有宋体、微软雅黑、黑体等。
font-weight:字体粗细
font‐weight属性用于定义字体的粗细,其可用属性值:normal、bold、bolder、lighter、100~900(100的整数倍)【数字 400 等价于 normal,而 700 等价于 bold】
font-style:字体风格
font-style属性用于定义字体风格,如设置斜体、倾斜或正常字体。其可用属性值:normal:默认值,浏览器会显示标准的字体样式。italic:浏览器会显示斜体的字体样式。oblique:浏览器会显示倾斜的字体样式。
font:综合设置字体样式 (重点)
font属性用于对字体样式进行综合设置,其基本语法格式:选择器{font: font‐style font‐weight font‐size/line‐height font‐family;}
注意:语法格式必须按顺序书写,必须保留font‐size和font‐family属性,否则font不起作用
文本属性
color:文本颜色
color属性用于定义文本的颜色,其取值方式有如下3种: 1.预定义的颜色值,如red,green,blue等。 2.十六进制,如#FF0000,#FF6600,#29D794等。(最常用的定义颜色的方式)。 3.RGB代码,如红色可以表示为rgb(255,0,0)或rgb(100%,0%,0%)。 注意:如果使用RGB代码的百分比颜色值,取值为0时也不能省略百分号,必须写为0%。
line-height:行间距
line-height属性用于设置行间距,就是行与行之间的距离,即字符的垂直间距,一般称为行高。其常用属性值单位:像素px,相对值em和百分比%。
text-align:水平对齐方式
text‐align属性用于设置文本内容的水平对齐,相当于html中的align对齐属性。其可用属性值:left:左对齐(默认值);right:右对齐;center:居中对齐
vertical-align:垂直对齐
vertical-align属性用于设置或检索对象内容的垂直对其方式。其可用属性值: baseline:基线对齐;top:顶部对齐;middle:垂直对齐;bottom:底部对齐。
注意:vertical-align 不影响块级元素中的内容对齐,它只针对于行内元素或者行内块元素,特别是行内块元素, 通常用来控制图片/表单与文字的对齐。
text-indent:首行缩进
text-indent属性用于设置首行文本的缩进,其属性值可为不同单位的数值、em字符宽度的倍数、或相对于浏览器窗口宽度的百分比%,允许使用负值, 建议使用em作为设置单位。1em 就是一个字的宽度 如果是汉字的段落, 1em 就是一个汉字的宽度。
letter-spacing:字间距
letter-spacing属性用于定义字间距,所谓字间距就是字符与字符之间的空白。其属性值可为不同单位的数值,允许使用负值,默认为normal。
word-spacing:单词间距
word-spacing属性用于定义英文单词之间的间距,对中文字符无效。和letter-spacing一样,其属性值可为不同单位的数值,允许使用负值,默认为normal。
注意:word-spacing和letter-spacing均可对英文进行设置。不同的是letter-spacing定义的为字母之间的间距,而word-spacing定义的为英文单词之间的间距。
text-decoration:文本的装饰
text-decoration 通常我们用于给链接修改装饰效果,其可用属性值:none:默认。定义标准的文本;underline:定义文本下的一条线;overline:定义文本上的一条线;line-through:定义穿过文本下的一条线。
text-transform:文本转换
text-transform属性用于转换不同元素中的文本,其可用属性值:uppercase(全部转大写);lowercase(全部转小写);capitalize(首字母转大写)。
word-break:自动换行
word-break属性主要用于处理英文单词。其可用属性值:normal 使用浏览器默认的换行规则;break-all 允许在单词内换行;keep-all 只能在半角空格或连字符处换行。
white-space:强制一行显示内容
white-space属性用于设置或检索对象内文本显示方式。其可用属性值:normal : 默认处理方式; nowrap : 强制在同一行内显示所有文本,直到文本结束或者遭遇br标签对象才换行。
text-overflow :文字溢出
text-overflow属性用于设置或检索是否使用一个省略标记(...)标示对象内文本的溢出;其可用属性值:clip : 不显示省略标记(...),而是简单的裁切;ellipsis : 当对象内文本溢出时显示省略标记(...)。
注意:一定要强制一行内显示,再和overflow属性搭配使用
背景属性
背景图片(background-image )
语法:background‐image : none | url (url) none : 无背景图(默认的) url : 使用绝对或相对地址指定背景图像
背景平铺(background‐repeat)
语法:background‐repeat : repeat | no‐repeat | repeat‐x | repeat‐y
repeat : 背景图像在纵向和横向上平铺(默认的);no-repeat : 背景图像不平铺;repeat-x : 背景图像在横向上平铺;repeat-y : 背景图像在纵向平铺
背景位置(background‐position)
语法:background‐position : x坐标|| y坐标 单位:百分数|长度值|top | center | bottom| left | center | right
背景附着(background‐attachment)
语法:background‐attachment : scroll | fixed scroll : 背景图像随对象内容滚动 fixed : 背景图像固定
背景简写(background)
建议语法:background:背景颜色 背景图片地址 背景平铺 背景滚动 背景位置
实例:background: transparent url(image.jpg) repeat‐y scroll 50% 0 ;
多背景
以逗号分隔可以设置多背景,可用于自适应布局。
四、标准文档流
标准文档流定义
标准文档流:在排版布局过程中,元素会默认从左往右,从上往下的流式排列方式。并最终窗体自上而下分成一行行,并在每行中从左至右的顺序排放元素。即不使用其他的与排列和定位相关的特殊规则时,各种元素的排列规则
标准文档流微观现象
空白折叠现象
现象:多个空格会被合并成一个空格显示
实例1:img左右空白间隙--img是行内块元素,换行是会显示一个空格字符
解决方案:
-
父级元素设置font-size:0;
-
图片标签连着写,没有空格换行符;
-
设置 浮动float, 但要记得清除掉float。
-
实例2:【拓展】img上下空白间隔:图片默认是按基线对齐方式,基线和底线有一小段间隙
解决方案:
-
图片设置display:block,将图片转为块级元素;
-
图片设置vertical-align:top; 值可以是top,middle,bottom,text-top,text-bottom;(垂直对齐方式)
高矮不齐,底边对齐
现象:当文字和图片在同一行且大小不一时,页面会出现高矮不齐现象,而底边总会对齐(图片置顶对齐,文字置底对齐)
解决方案:
-
图片设置:vertical-align:middle;
-
使用background设置图片为背景图片,再用padding调整文字位置
-
把图片和文字放入不同的div中,再用浮动和margin调整位置
-
自动换行现象
现象:一行内文字过多,浏览器会自动换行。注意:纯英文时不自动换行
解决方案:
父级块元素设置:overflow: hidden;text-overflow: ellipsis;white-space: nowrap;超过宽度用...代替
标准文档流等级
1.块级元素
特性:1) 独占一行,不能与其他任何元素并列;2)可设置宽、高;3) 如果不设置宽度,那么宽度将默认变为父亲的100%,即和父亲一样宽;4)所有容器级标签都是块级元素
列表:div、h系列、li、dt、dd、p
2.行内元素
特性:1) 与其他元素并排;2)不能设置宽、高。默认的宽度就是文字的宽度3.所有文本级标签都是行内元素,除p以外。
列表:span、a、b、i、u、em
五、浮动
浮动定义
元素的浮动是将元素从普通的布局排版中拿走,其他盒子在定位的时候,会当没看到它,两者位置重叠都是可以的。通过float属性来定义浮动。其可用属性值:left:元素向左浮动。right:元素向右浮动。none:元素不浮动(默认值)。
浮动特性
1.浮动的元素脱标
实例:1)浮动元素不区分块级元素或行内元素,浮动后,元素实现并排,并且可以设置宽高。2)浮动元素会渲染在页面上方,和标准文档流不在同一层;
2.浮动的元素互相贴靠:当父元素有足够的空间。浮动元素会贴靠,没有足够空间,往边靠;
3.浮动元素有“字围”效果:其他盒子看不见被float的元素,但是盒子里的文本看得见,图片设置浮动,文本不设置浮动;
4.浮动元素收缩效果:当元素没有设置宽度值,而设置浮动属性,元素的宽度随内容的变化而变化。设置浮动之后,会对紧邻它之后的元素产生影响;
浮动的影响
父模块没有设置浮动,子模块设置浮动,父模块会被影响,不能进行扩展,高度为0。
清除浮动方法
1.给父盒子设置高度
一般不会设置,后期维护很麻烦。常用页面中固定高度的,并且子元素并排显示的布局有:导航栏
2.给浮动的盒子添加clear:both属性
表示内部元素,不受其他盒子影响,其可用属性:left:当前元素左边不允许有浮动元素;right:当前元素右边不允许有浮动元素;both:当前元素左右两边不允许有浮动元素。
缺点:导致margin失效
3.隔墙法
在两个浮动元素的中间新增一个空的div并设置div的高度。
缺点:浮动盒子没有高度
4.额外标签法
在盒子内浮动元素的后面新增一个空的div并且该元素不浮动,设置clear:both
缺点: 添加许多无意义的标签,结构化较差。
5.父元素设置overflow:hidden属性
通过触发BFC的方式,可以实现清除浮动效果。
缺点: 内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素。
6.伪类清除法(常用)
父元素添加clearfix类,并设置
.clearfix:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix {*zoom: 1;} /* IE6、7 专有 使用 zoom:1触发 hasLayout。*/
六、定位
定位的分类
1.static :静态定位
移动位置基准:自动定位(默认定位方式)
概念:静态定位是所有元素的默认定位方式,网页中所有元素都默认是静态定位。
特性:不脱标;不可以使用偏移量。
2.relative:相对定位
移动位置基准:相对于它在标准流中的位置进行定位(以自己左上角为基点移动)
特性:不脱标;可以使用偏移量;在文档流中的位置仍然保留;
3.absolute:绝对定位
移动位置基准:相对于最近的已经定位(绝对、固定或相对定位)的父元素(祖先)进行定位。若所有父元素都没有定位,以浏览器为准对齐(document文档)。
概念:子绝父相:因为子级是绝对定位,不会占有位置, 可以放到父盒子里面的任何一个地方。父盒子布局时,需要占有位置,因此父亲只能是相对定位.
特性:脱标;可以使用偏移量;不占位置;
4.fixed:固定定位
移动位置基准:相对于浏览器窗口进行定位
概念:元素设置固定定位后,它将脱离标准文档流的控制,始终依据浏览器窗口来定义自己的显示位置。不管浏览器滚动条如何滚动也不管浏览器窗口的大小如何变化,该元素都会始终显示在浏览器窗口的固定位置。
特性:脱标;可以使用偏移量;不占位置;
定位叠放次序
当对多个元素同时设置定位时,定位元素之间有可能会发生重叠,要想调整重叠定位元素的堆叠顺序,可以对定位元素应用z-index层叠等级属性,其取值可为正整数、负整数和0。
注意:1. z-index的默认属性值是0,取值越大,定位元素在层叠元素中越居上。2. 如果取值相同,则根据书写顺序,后来居上。3. 后面数字一定不能加单位。4.只有相对定位,绝对定位,固定定位有此属性,其余标准流,浮动,静态定位都无此属性。
七、元素的显示和隐藏
1.display: 设置或检索对象是否及如何显示。
display : none 隐藏对象
display:block 除了转换为块级元素之外,同时还有显示元素的意思。
特点: 隐藏之后,不再保留位置。
2.visibility :设置或检索是否显示对象。
visibility :visible 对象可视
visibility :hidden 对象隐藏
特点: 隐藏之后,继续保留原有位置。
3.overflow :检索或设置当对象的内容超过其指定高度及宽度时如何管理内容。
overflow :visible : 不剪切内容也不添加滚动条。
auto : 超出自动显示滚动条,不超出不显示滚动条
overflow :hidden : 不显示超过对象尺寸的内容,超出的部分隐藏掉
overflow :scroll : 不管超出内容否,总是显示滚动条
八、CSS精灵技术
精灵图概念
CSS精灵是一种处理网页背景图像的方式式。它将一个页面涉及到的所有零星背景图像都集中到一张大图中去,然后将大图应用于网页,这样,当用户访问该页面时,只需向服务发送一次请求,网页中的背景图像即可全部展示出来。
精灵图使用
1.使用background-image、background-repeat和background-position属性进行背景定位。
九、字体图标
使用流程
1.获取UI设计的svg格式的图标
2.上传生成兼容性字体文件包
推荐网站:
icomoon字库:icomoon.io
阿里iconfont字库: www.iconfont.cn/
fontello:fontello.com/
Glyphicon Halflings:glyphicons.com/
Icons8:icons8.com/
3.下载兼容字体文件包到本地
网站会把svg图片转换为字体格式,上传完毕后,即可下载
4.把字体文件包引用到页面
(1)把下载下来的文件夹放到项目中,可命名为fonts
(2)引入字体样式文件