CSS快速回顾
- 前端三件套
HTML+CSS+JavaScript
结构+表现+交互
- css历史
- 1.0
- 2.0
- 2.1
- 3.0
- 怎么学CSS
- CSS是什么
- CSS怎么用
- CSS选择器(重难点)
- 美化网页(文字,阴影,超链接,列表,渐变)
- 盒子模型(重点)
- 浮动
- 定位
- 网页动画(特效)
什么是CSS
- 层叠样式表(Cascading Style Sheets),美化网页(字体,颜色,边距,高度,宽度,背景图片,网页)
- 发展史:
- CSS1.0:高耦合内联基础样式
- CSS2.0:DIV+CSS,HTML和CSS结构分离的思想,网页变得简单,利于SEO
- CSS2.1:浮动,定位
- CSS3.0:圆角,阴影,动画…..有浏览器兼容性问题(IE6前端之殇)
CSS快速入门
|
|
- CSS优势:
- 内容和表现分离
- 网页结构表现统一,可以实现复用
- 样式十分丰富
- 建议使用独立于html的css文件
- 利用seo,容易被搜索引擎收录
三种导入方式
|
|
三种样式表的优先级:就近原则
选择器
作用:选择页面上的某一个或者某一类元素
标签选择器
|
|
类选择器
|
|
ID选择器
|
|
**三种基础选择器的优先级:**ID选择器 > Class选择器 > 标签选择器
层次选择器
|
|
伪类选择器 & 伪元素选择器
|
|
|
|
|
|
属性选择器
最好用的一种选择器:相当于把class选择器和id选择器结合了
|
|
字体 & 文本 等 美化
- 有效传递页面信息
- 美化网页,页面漂亮能吸引用户
- 凸显网页主题
|
|
字体样式
|
|
文本样式
-
颜色
1 2 3 4 5
h1{ color: red; color: #FF0000; color: rgb(255,0,0,0.4);/*最后是浓度*/ }
-
文本对齐方式
1 2 3 4
p{ text-align: center; vertical-align: middle; }
-
首行缩进
1 2 3
p{ text-indent: 2em; }
-
行高
1 2 3
p{ line-height: 10px;/*和height一致就可以单行文本垂直居中*/ }
-
装饰
1 2 3 4 5 6
p{ text-decoration: underline;/*下划线*/ text-decoration: overline; text-decoration: line-through; text-decoration: none; }
-
阴影
1 2 3 4
h1{ /*text-shadow: h-shadow v-shadow blur color*/ text-shadow: 5px 5px 5px #FF0000; }
其他样式
-
列表美化
1 2 3 4 5 6 7 8 9 10
ul li{ height: 30px; /* 可以按顺序设置如下属性: list-style-type:none,disc,circle,square,decimal... list-style-position list-style-image */ list-style: square inside url('/i/arrow.gif'); }
-
背景 & 渐变
1 2 3 4 5 6 7 8 9 10 11 12 13 14
div{ /* 可以设置如下属性: 背景颜色background-color 背景图像位置background-position 背景图片尺寸background-size 如何重复background-repeat 规定背景图片的定位区域background-origin 规定背景图片的绘制区域background-clip 图像是否固定or随着页面滚动background-attachment 背景图片地址background-attachment */ background: #00FF00 url(bgimage.gif) no-repeat fixed top; }
盒子模型

-
border:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
<style> /*body默认有一个8px的margin,一般先干掉他*/ /*一般开发的时候会专门一个reset.css文件*/ body{ margin: 0; } /*border: 粗细,样式,颜色*/ #app{ width: 300px; border: 1px solid red; } </style> <div id="app"> </div>
-
margin & padding:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
<style> /*auto表示自动,"margin: 20px auto;"就会使浏览器根据窗口大小自适应地使定宽块状元素左右居中显示*/ #app{ /*顺序是上右下左*/ margin:10px 5px 15px 20px; /*两个是上下,左右*/ padding:10px 10px; /*三个是上,下,左右*/ padding:10px 5px 10px; } </style> <div id="app"> </div>
-
圆角边框 & 阴影
1 2 3 4 5 6 7 8 9 10 11 12 13 14
<style> #app{ width:100px; height:100px; border:10px solid red; /*四个值:左上角、右上角、右下角、左下角 两个值:左上右下对角线,右上左下对角线*/ border-radius: 50px 20px; /* 向 div 元素添加阴影: box-shadow: h-shadow v-shadow blur spread color inset; */ box-shadow: 10px 10px 5px #888888; }
注意:margin和text-align的区别:
-
text-align:center 设置文本或img标签等一些内联对象(或与之类似的元素)的居中。
-
margin:0 auto 设置块元素(或与之类似的元素)的居中。
margin:0 auto;在不同场景下生效条件如下:
**块级元素:**给定要居中的块级元素的宽度。
**行内元素:**①设置display:block;②给定要居中的行内元素的宽度。(行内元素设置成块级元素后可以对其宽高进行设置)
**行内块元素:**设置display:block。(如input、button、img等元素,自带宽度可以不用设置其宽度)
文档流
元素分类
块级元素(block-level)
块元素会独自占据一整行,或者多行,可以任意设置其大小尺寸,是用于搭建网页布局的必须部分,使网页结构更加紧凑合理。
- 总是另起一行(特立独行)
- 可以设置其宽度、高度,内外边距
- 在不手动设置宽度的情况下,宽度默认为所在容器的100%(即容器宽度)
- 可以容纳行内元素和其他块元素。
|
|
行内元素(inline-level)
行内元素也称为内联元素,行内元素不占有独立区域,其大小仅仅被动的依赖于自身内容的大小(例如文字和图片),所以一般不能随意设置其宽高、对齐等属性。常用于控制页面中文本的样式。
- 总是和相邻的行内元素在同一行上(物以类聚)
- 设置宽高无效,水平方向的padding和margin属性可以设置,但是垂直方向上的无效。
- 默认宽度是他自身内容的宽度。
- 行内元素只能容纳其他行内元素或者文本。
|
|
行内块元素(inline-block)
普遍的规则里总有那么几个不一样的,在行内元素中就有那么几个特殊标签,比如<img>/<input>/<td>
,可以给他们设置宽高、对齐属性,我们把这样特殊的一类标签称为行内块元素。行内块元素综合了块元素和行内元素的不同特点。
- 和相邻行内元素在同一行,但是之间会有空白缝隙。
- 默认宽度是他本身内容的宽度。
- 宽度、高度、行高、外边距以及内边距都可以手动设置。
标签显示模式转换:displey
- 块元素——>行内元素 : display:inline;
- 行内元素——>块: display:block;
- 块、行内元素——>行内块: display: inline-block;
- 元素不会显示:display:none;
文档流
-
文档流:
将窗体自上而下分成一行一行,众多盒子模型在每行中按从左至右依次排放元素,称为文档流。
-
脱离文档流:
元素脱离文档流之后,将不再在文档流中占据空间,而是处于浮动状态。当一个元素脱离文档流后,依然在文档流中的其他元素将忽略该元素并填补其原先的空间。
-
脱离文档流的三种方法:
-
float:left/right;
使用float脱离文档流时,其他盒子会无视这个元素,但其他盒子内的文本依然会为这个元素让出位置,环绕在该元素的周围。
-
position: absolute;
因为使用absolute脱离文档流后的元素,是相对于该元素的父类(及以上,如果直系父类元素不满足条件则继续向上查询)元素进行定位的,
并且这个父类元素的position必须是非static定位的(static是默认定位方式)。
-
position: fixed;
完全脱离文档流,相对于浏览器窗口进行定位。(相对于浏览器窗口就是相对于html)。
-
-
浮动:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
<html> <head> <style type="text/css"> #a { width:100px; height:100px; background: blue; float:left; } #b{ width:150px; height:150px; background: red; float:left; /*清除其他浮动元素对自己的影响:left针对左浮动,right针对右浮动,both同时针对*/ clear:left; } </style> </head> <body> <div id="a"></div> <div id="b"></div> </body> </html>
父级边框塌陷问题
子元素浮动后脱离文档流导致的父级边框塌陷问题的解决方法:
-
增加父级元素的高度
-
父元素中增加一个空div标签,然后清除浮动
1 2 3 4 5 6 7 8
<div class="clear"></div> <style> .clear{ clear:both; margin:0; padding:0; } </style>
-
开启BFC
开启元素的BFC后,元素将会有以下特性:
- 垂直外边距不会和子元素重叠
- 不会被浮动元素所覆盖
- 可以包含浮动的子元素
如何开启BFC:
- 设置元素浮动
- 设置元素绝对定位
- 设置元素为inline-block
- 将overflow设置为一个非visible的值(推荐:将overflow设置为hidden是副作用最小的开启BFC的方法)
-
父类添加一个伪类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
/*解决父子元素垂直外边距重叠问题*/ .clearfix:before{ content: ""; display: table; } /*解决父元素高度塌陷问题*/ .clearfix:after{ content: ""; display: block; clear: both; } /* 同时解决父子元素垂直外边距重叠问题 和父级高度塌陷问题 */ .clearfix:before, .clearfix:after{ content: ""; display: table; clear: both; }
定位
相对定位
相对于自己原来的位置进行偏移,原来的位置还是被保留,元素仍然处于文档流中。
|
|
绝对定位
绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块。
只能在相对的那个祖先元素范围内移动,元素绝对定位后已经脱离文档流
|
|
固定定位
相对于浏览器窗口进行定位,脱离原来的文档流
|
|
Z-index & 透明度
|
|
动画
css3动画主要常用的属性有三种
- 变形(transform)
- 转换(transition)
- 动画(animation)
|
|
hack
CSS hack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的,CSS hack就是让你记住这个标准),解决兼容性问题。
- 条件hack
|
|
- 属性hack
|
|
还有很多hack,有需求的时候百度就行了。
但是css的hack不到万不得已最好不要使用,因为维护起来很麻烦。