1. CSS 样式表的使用方式
(1). 内联方式,又称为行内样式,将样式定义在某 html 元素中(style 属性中)
语法:
<div style="color:red;font-size:24px;">
内容部分
</div>
(2). 内部样式表,以独立的方式,定义页面元素的样式(元素与样式相分离),并且能够让样式应用在多个元素中(提升可重用性和可维护性)
语法:
<head>
<style>
p{
color:red;
background-color:yellow;
font-size:24px;
}
</style>
</head>
(3). 外部样式表,将样式定义在外部独立的 css 文件中(*、css),哪个页面想使用,可以引入css 文件
语法:
<head>
<link rel="stylesheet" href="文件 URL">
</head>
2. CSS 语法规范
(1). 继承性,大部分的样式属性是可以被继承的
(2). 层叠性,可以为一个元素定义多个样式规则或样式声明,只要样式声明不冲突时,那么所有的样式声明都可以应用到元素上
(3). 优先级,层叠性基础上,如果样式声明冲突的话,则按照样式规则的优先级来进行样式的使用
低=>浏览器缺省设置(User Agent)
中=>内部样式表 或 外部样式表 ,内部样式表中就近原则,即后定义者优先
高=>内联方式
(4). !important 规则,显示调整样式属性的优先级
语法: 属性:值 !important;
3. 选择器(重点),规范页面中哪些元素能够使用声明好的样式,起始选择器也是为了匹配页面中的元素
(1). 通用选择器,匹配页面中所有的元素,效率低
语法:*{样式声明;}
(2). 元素选择器,匹配指定标记的元素
语法:标记名{样式声明;},如 div{color:red;}
(3). 类选择器(重点),允许被任何一个元素的 class 属性进行引用的选择器
语法: .类名{样式声明;} ,引用:<标记 class="类名"></标记>
注意:类名允许包含字母,数字、-、 _ 、,不允许以数字开头
(4). 多类选择器,多类选择器的引用方式,允许一个元素同时引用多个选择器
语法:<标记 class="class1 class2 class3">
(5). 分类选择器,允许将元素选择器和类选择器放在一起进行声明定义,以便达到对某种元素中不同样式的细分控制
语法:元素选择器、类选择器{样式声明;}
div.redColor{
margin:0;
padding:0;
list-style:none;
}
(6). id 选择器,与元素 id 相关,专门定义指定 id 值的元素的样式
语法:#idName{样式声明;},
引用:<标记 id="idName"> </标记>
(7). 群组选择器,将多个选择器放在一起,统一声明样式
语法:选择器 1,选择器 2,选择器 3{ }
#top,redColor ,span,heavy ,div,important{
color:blue;
}
等同于:
#top{color:blue;}
.redColor{color:blue;}
span{color:blue;}
heavy{color:blue;}
div.important{color:blue;}
(8). 后代选择器,不限制层级关系的元素(出现在某元素中的),称之为后代
语法:选择器 1 选择器 2{ }
div span{
/*div 中所有的 span*/
}
#d1 span{
/*id 为 d1 元素中所有的 span */
}
#d1 .span1{
/*id 为 d1 中的 所有的 class 为 span1 的元素*/
}
(9). 子代选择器,只具备一层层级关系的元素,称之为子代
语法:选择器 1>选择器 2>选择器 3{ }
div>span>i{
/*匹配 div 中 span 中 i 元素*/
}
#d1>span >i{
/*匹配 id 为 d1 中 span 中的 i 元素*/
}
(10). 伪类选择器,匹配元素不同状态的、
语法:伪类{ }、a:伪类{ }、#d1:伪类{ }
①. 链接伪类
A. link 适用于未被访问的链接的状态
B. visited 适用于访问过的链接的状态
②. 动态伪类
A . hover 适用于鼠标悬停在元素上的状态
B . active 适用于元素被激活时的状态
C . focus 适用于元素获取焦点时的状态
③. 目标伪类
④. 元素状态伪类
⑤. 结构伪类
⑥. 否定伪类
注意:自定的选择器中的样式永远都会覆盖继承的样式(不看权值)
4. CSS 尺寸单位
(1). %
(2). in 英寸 1in = 2、54cm
(3). cm 厘米
(4). mm 毫米
(5). pt 磅 1pt = 1/72in 多用于文字大小的描述
(6). px 像素 1024px * 768px
(7). em 倍数,1em 相当于父元素默认大小
(8). rem 相对于根元素(html)设置的字体大小来指定倍数
5. 颜色单位(取值)
(1). rgb (r,g,b)
r:red , 0~255
g:green ,0~255
b:blue ,0~255
color:rgb(128,12,6)
(2). rgb(r%,g%,b%)
(3). rgba(r,g,b,alpha) alpha : 透明度 0~1 之间的数字
(4). #rrggbb,通过 6 位 16 进制数字表示一种颜色,每位数字的范围:0-9 ,A-F
(5). #rgb #rrggbb 的缩写形式,只有在每两位数字相同的情况下可以使用简写,如:#ff0000 -> #f00 #ffaacd -> 无简写
(6). 颜色的英文表示法
6. 尺寸属性,设置元素的宽度和高度,取值单位一般为 px 或 %
(1). width 宽度
max-width 最大宽度
min-width 最小宽度
(2). height 高度
max-height 最大高度
min-height 最小高度
(3). 页面中哪些元素允许修改尺寸
A. 所有的块级元素都能修改尺寸
div p pre h1~h6 ulli ol dl dt dd
B. 大部分行内块元素允许修改尺寸,input 元素为行内块元素允许修改尺寸,但是 radio和 checkbox 除外
C. 小部分行内元素允许修改尺寸,html 元素中本身就具备 width 和 height 属性的行内元素允许修改尺寸,否则不能改,如:img
7. 溢出,当使用尺寸属性限制元素大小时,如果内容所需的空间大于元素本身空间,则会产生溢出的效果
(1). overflow:溢出处理
overflow-x:横向溢出处理
overflow-y:纵向溢出处理
(2). 属性
A. visible 默认值,溢出可见
B. hidden 溢出隐藏
C. scroll 滚动,默认显示滚动条,内容溢出时,滚动条可用
D. auto 自动,只有在溢出的方向才会显示滚动条
8. border 边框属性,通过一个属性设置四个方向边框的 宽度、样式、颜色,为元素设置边框后,元素的占地面积会发生更改
语法: border:width style color;如 border:1px solid red;
(1). width:边框宽度,以 px 为单位
(2). style:边框样式
solid:实线
dotted:点状虚线
dashed:线状虚线
(3). color:边框颜色,取值为颜色值或透明
(4). border:none 取消边框
9. border 只设置一个方向的边框
(1). 单方向设置,只设置某一条边的 宽度,样式,颜色
语法:border-方向:width style color;
方向:top/right/bottom/left
(2). 单属性设置,只设置某一条边相关属性
语法:border-属性:值;
属性:width/style/color
(3). 单边单属性设置,只设置某条边的某个属性值
语法:border-方向-属性:值;
方向:top/right/bottom/left
属性:width/style/color
10. border-radius 边框倒角
(1). 具体数值(px) 或 %
(2). 最少一个值,最多 4 个值
(3). border-top-left-radius:左上角倒圆角
border-bottom-right-radius:右下角倒圆角
11. box-shadow 边框阴影
语法:box-shadow:h-shadow v-shadow blur spread color inset;
(1). h-shadow:(必须),阴影的水平偏移距离,取值为正,右偏移,取值为负,左偏移
(2). v-shadow:(必须),阴影的垂直偏移距离,取值为正,下偏移,取值为负,上偏移
(3). blur:模糊距离,取值为数值
(4). spread :阴影的大小
(5). color :颜色
(6). inset :将默认的外阴影改为内阴影
12. outline 轮廓位于元素和边框之外的一条线
语法:outline:width style color;
(1). outline-width:宽度;
(2). outline-style:样式;
(3). utline-color:颜色;
(4). outline:none;无轮廓(常用)
13. 框模型(Box Model) ,框模型定义了元素框处理元素内容尺寸、内边距、边框和外边距的一种方式 ,元素一旦增加框模型对应属性的属性,那么实际的占地区域会发生改变元素的实际宽度=左右外边距 左右边框 左右内边距 width;元素的实际高度=上下外边距 上下边框 上下内边距 height;
(1). margin 外边距,围绕在元素边缘周围的空白区域,默认不能被其他元素所占据,作用是拉伸两个元素间的距离,页面中具备默认外边距的元素
语法:margin:value; 四个方向外边距的值
margin:v1 v2; v1 上下外边距 v2 左右外边距
margin:v1 v2 v3; v1 上外边距 v2 左右外边距 v3 下外边距
margin:v1 v2 v3 v4; v1 上外边距 v2 右外边距 v3 下外边距 v4 左外边距
margin-方向:value;方向:top/right/bottom/left
①. px 像素值
②. % 百分比
③. 负值
④. auto 自动 ,由浏览器计算外边距的值应该是多少,默认情况下,auto 只对左右有效,上下无效,为块级元素设置宽度后,再设置其左右外边距为 auto,该元素能水平居中显示。
⑤. 特殊注意
A. 当两个垂直外边距相遇时,将合并成一个
B. 大部分行内元素垂直外边距无效 ,img 允许设置
C. 行内块元素设置垂直外边距,该行的所有元素都跟着变
D. 外边距的溢出, 特殊场合下,为子元素设置外边距(上下)会作用到父元素上
特殊场合:
a. 父元素没有边框(上下)
b. 为第一个(最后一个)子元素设置外边距
解决方案:
a. 为父元素增加边框(透明的),弊端:父元素会变高
b. 可以为父元素设置上内边距来取代子元素上外边距,弊端:父元素高度会变高
c. 为父元素增加一个空子元素<table></table>,弊端:多一个子元素
(2). padding 内边距 内容区域和边框(边缘)之间的距离,内边距会扩大边框所占用的区域
语法: padding: value;四个方向内边距的值
padding:v1 v2;v1 上下内边距 v2 左右内边距
padding:v1 v2 v3;v1 上内边距 v2 左右内边距 v3 下内边距
padding:v1 v2 v3 v4;v1 上内边距 v2 右内边距 v3 下内边距 v4 左内边距
padding-方向:值;方向:top/right/bottom/left
①. px 像素值
②. % 百分比
③. auto
④. 特殊注意,为行内元素增加上下内边距时,只影响自己,并不影响其他元素
(3). box-sizing 重新指盒模型尺寸大小
占地宽度 = margin border padding width
可见宽度 = border padding width
①. content-box 默认值,width 只表示内容区域的宽度,border 和 padding 额外进行计算
可见宽度=border padding width
②. border-box,width 包含边框内所有的距离(padding,border)
可见宽度=width(border padding width)
14. 背景
(1). background-color 背景颜色
语法:background-color:颜色值 或 transparent
注意:背景颜色从边框位置处开始绘制
(2). background-image 背景图像
语法:background-image :url(背景图 url)
(3). background-repeat 背景重复
①. repeat 默认值,即横向又纵向平铺
②. repeat-x 只在横向平铺
③. repeat-y 只在纵向平铺
④. no-repeat 不平铺
(4). background-size 背景图片尺寸
语法: background-size : value1 value2
①. value1 value2 指定背景图像宽度和高度
②. value1% value2% 采用当前元素宽和高的占比,来作为背景图大小
③. cover 覆盖,会将背景图像等比放大,直到背景图完全覆盖到元素为止
④. contain 包含,会将背景图像等比放大,直到右边或下边碰到元素边缘为止
(5). background-attachment 背景图片固定
语法:background-attachment :value
①. scroll 滚动,默认值
②. fixed 固定,让背景图一直在可视化区域中
(6). background-position 背景图片定位
语法: background-position:value
①. x y 指定背景图水平和垂直偏移距离
x : 水平偏移距离,取值为正,背景图右偏移,取值为负,背景图左偏移
y : 垂直偏移距离,取值为正,背景图下偏移,取值为负,背景图上偏移
②. x% y% 指定背景图相对模型大小的百分比位置
③. 关键字
x :left / center / right
y : top / center/ bottom
(7). 在一个 background 属性中声明所有的背景属性值
background:color url repeat attachment position;
(8). CSS Sprites(精灵图/雪碧图)
15. background-image 渐变
(1). linear-gradient 线性渐变
语法:background-image:linear-gradient(angle,color-point1,color-point2,……)
①. angle 为第一个参数,指定渐变的方向,可以是角度值,也可以是关键词,如 to top(对应 0 deg),to right (对应 90 deg),to bottom (对应 180 deg),to left (对应 270 deg)
②. color-point 表示颜色的起始点、中间点或者是结束点,取值为颜色和和位置的组合,如 red 0%、green 50%,也可以(to top,red,green,blue)让系统指定色标的位置
(2). radial-gradient 径向渐变
语法:background-image:radial-gradient([size at position],color-point1,color-point2,……)
①. size at position:size 为渐变区域,at 为特定的介词,position 指定渐变圆心的渐变位置,默认为 center,可以取值为:数值、百分比、或者关键字,如(200px at left top ,red,blue)此参数可以省略
②. color-point 表示颜色的起始点、中间点或者是结束点,取值为颜色和和位置的组合,如 red 0%、green 50%
(3). repeating-linear-gradient 重复线性渐变
语法:background-image:repeating-linear-gradient(angle,color-point1,color-point2,……)
(4). repeating-radial-gradient 重复径向渐变
语法:background-image:repeating-radial-gradient([size at position],color-point1,color-point2,…)
(5). 浏览器兼容性问题,主流浏览器都支持渐变,对于不支持的浏览器,需要添加浏览器前缀的方式实现兼容性,相关前缀如下
①. Firefox:-moz-
②. Chrome 和 Safari :-webkit-
③. Opear :-o-
④. Microsoft IE :-ms-
如果浏览器不支持属性的话,则将前缀添加到属性名称前,如下所示:
①. -moz-aniamtion:值
②. -webkit-aniamtion:值
③. -o-aniamtion:值
④. -ms-animation:值
如果浏览器支持属性,但不支持属性值的话,则将前缀添加到属性值前,如下所示:
①. background-image:-moz-linear-gradient( )
②. background-image:-webkit-linear-gradient( )
③. background-image:-o-linear-gradient( )
④. background-image:-ms-linear-gradient( )
16. font-family 设定字体样式
语法:font-family:value1,value2
注意:字体中包含中文或特殊字符的话,尽量使用 "" 引起来,浏览器在加载的时候会默认以第一种为首选,如果没有第一种,则依次往后加载
17. font-size 设定字体小
语法:font-size:value (单位为 px 或 pt)
18. font-weight 字体加粗
语法:font-weight:value
①. normal 非加粗显示,正常体
②. bold 加粗显示,类似于<b></b>
③. 400 ~ 900 其中 400 相当于 normal ,900 相当于 bold,而且取值只能以整百为准
19. font-style 字体样式
语法:font-weight:value
①. normal 正常体
②. italic 斜体 类似于<i></i>
20. font-variant 小型大写字符
语法:font-variant:value
①. normal 正常,默认值
②. small-caps 小型大写字符
21. font 字体属性 用于把所有针对字体的属性设置在一个声明中
语法:font:font-style font-variant font-weight font-size font-family
注意:该简写属性中,必须包含 family 的值,不设置的值,则使用默认的设置
22. color 文体颜色
语法:color:value
23. text-align 文本排列
语法:text-align:value
①. left
②. center
③. right
④. justify(两端对齐)
24. text-decoration 文本修饰
语法:text-decoration:value
①. none 无线条修饰
②. underline 显示下划线
③. line-through 显示删除线,相当于<s></s>
④. overline 显示上划线
25. line-height 一行数据的高度
语法:line-height:value
①. 50px 字体大小
②. 1.5 当前字体大小的倍数
注意:文字将在指定行高的范围内垂直居中显示
26. text-indent 首行文本缩进
语法:text-indent:value
①. 4px 字体大小
27. text-shadow 文本阴影
语法:text-shadow: h-shadow v-shadow blur color
①. h-shadow 阴影水平的偏移距离,正值向右偏移,负值向左偏移
②. v-shadow 阴影垂直的偏移距离,正值向下偏移,负值向上偏移
③. blur 是指阴影的模糊程度,其值不能是负值,如果值越大,阴影越模糊,反之阴影越清晰,如果不需要阴影模糊可以将其值设置为 0
④. color 指阴影的颜色
28. padding 设置表格内边距
语法:padding:value
29. margin 设置表格外边距
语法:margin:value
注意:不能为 td 设置外边距
30. width 设置表格的宽度
语法:width:value
31. height 设置表格的宽度
语法:height:value
32. font-*、text-*、line-height、color 文本格式化属性
33. background 设置背景颜色 图片 渐变、
34. border 设置边框
35. vertical-align 垂直方向对齐
语法:vertical-align:value
①. top
②. middle
③. bottom
36. border-collapse 边框合并
语法:border-collapse:value
①. separate 默认值
②. collapse 合并
37. border-spacing 边框边距
语法:border-spacing:value
①. 指定 1 个值,每个单元格的水平和垂直间距相同
②. 指定 2 个值,第一个值,表示水平间距 ,第二个值,表示垂直间距
注意:此命令类似于 cellspacing,必须保证 border-collapse 是 separate 时才有效
38. caption-side 标题位置
语法:caption-side:value
①. top 标题位于表格上方,为默认值
②. bottom 标题位于表格下方
39. table-layout 显示规则,指定浏览器如何来布局一张表格
语法:table-layout:value
(1). auto 自动,即自动表格布局为默认值,列的宽度高度是由内容来决定
(2). fixed 固定,即固定表格布局,列的宽度和高度由设定的值决定
(3). 自动表格布局 VS 固定表格布局
①. 自动表格布局
A. 单元格的大小会适应内容
B. 表格复杂时,加载速度较慢(缺点)
C. 适用于不确定每列大小时使用
D. 特别灵活(优点)
②. 固定表格布局
A. 尺寸取决于设定的值,与单元格内容无关
B. 任何情况下,都会加速显示表格(优点)
C. 不够灵活(缺点)
③. 推荐:复杂的布局不能使用 table,简单显示数据的布局可以使用 table
40. 定位,改变元素在网页中的默认位置,按照定位效果,可以分为以下几种方式:
(1). 普通流定位/文档流定位
(2). 浮动定位
(3). 相对定位
(4). 绝对定位
(5). 固定定位
41. 普通流定位,又称为文档流定位,网页元素默认定位方式
(1). 页面中所有元素都有自己的位置
(2). 按照从左到右,从上到下的方式排列
(3). 块级元素,从上到下排列
(4). 行内/行内块,从左到右排列
42. 浮动定位
(1). 语法:float:value
①. none 默认值,即无任何浮动
②. left 元素左浮动,停靠在父元素的左边或其他已浮动元素的右边上
③. right 元素右浮动,停靠在父元素的右边或其他已浮动元素的左边上
(2). 浮动定位特点
①. 会排除在文档流之外即"脱离文档流",不再占据页面空间,后续元素则上前补位
②. 浮动元素只在当前行内浮动
③. 浮动元素会停靠在父元素的左边或右边或其他已浮动元素的边缘上
④. 浮动元素依然位于父元素之内
⑤. 解决问题-多个块级元素在一行内的显示问题
(3). 浮动引发的特殊效果
①. 当父元素容纳不下所有已浮动子元素,最后一个将换行显示(有可能被卡住)
②. 元素一旦浮动起来后,宽度将变成自适应(非手动指定情况下)
③. 元素一旦浮动起来后,都将变成块级元素
块级:允许修改尺寸,允许设置上下 margin
行内元素:不能改尺寸,不能设置上下 margin
④. 行内块元素,文本采用的是环绕的排列方式,无法被浮动元素压在底下
43. Clear 清除浮动,清除当前元素前面元素浮动所带来的影响,清除浮动影响后,当前元素不会上前占位
语法:clear:value
(1). none 默认值,无清除效果
(2). left 清除当前元素前面元素左浮动带来的影响
(3). right 清除当前元素前面元素右浮动带来的影响
(4). both 清除当前元素前面元素任何一种浮动方向所带来的影响
44. 浮动元素为父元素高度带来的影响,父元素的高度是以未浮动的子元素高度为准,如果一个元素中所有的子元素全部都是浮动的,那么该父元素的高度为 0,解决父元素的高度问题方案:
(1). 直接设置父元素高度,
弊端:必须知道父元素的高度
(2). 让父元素也浮动
弊端:对后续元素会产生影响
(3). 为父元素增加溢出处理属性
属性:overflow
取值:hidden 或 auto
弊端:要溢出显示的内容,也一同被隐藏
(4). 在父元素中,增加空子元素到最后一个位置处,并且设置其 clear 属性为 both
弊端:多一个子元素在页面上
45. position:relative 相对定位,元素会相对于它原来的位置偏移某个距离,以实现元素位置微调,元素原来所占的空间会被保留
语法:position:relative :value
(1). top 顶部偏移距离(px)
(2). bottom 底部偏移距离(px)
(3). left 左边偏移距离(px)
(4). right 右边偏移距离(px)
46. position:absolute 绝对定位
语法:position:absolute:value
(1). top 顶部定位距离(px)
(2). bottom 底部定位距离(px)
(3). left 左边定位距离(px)
(4). right 右边定位距离(px)
(5). 绝对定位的特点:
①. 绝对定位的元素会脱离文档流即不占据页面空间
②. 绝对定位的元素会相对于离它最近的已定位的祖先元素去实现定位
③. 如果没有已定位的祖先元素,那么就会相对于最初的包含块去实现定位比如 body 或html
④. 绝对定位元素会变成块级元素
⑤. 绝对定位元素的 margin 可以使用,默认情况下,auto 会失效
47. position 定位属性,改变元素定位方式
语法: position:value
(1). static 静态的,默认值
(2). relative 相对的
(3). absolute 绝对的
(4). fixed 固定定位
注意:relative,absolute,fixed 被称之为 "已定位元素"
48. z-index 堆叠顺序,在已定位元素中调整堆叠顺序
语法:z-index:value
取值为无单位的数字,数值越大,显示越靠前,默认是 0,可以取负值,当前元素在页面所有内容之下
(1). 只有已定位元素才能设置 z-index
(2). 默认的堆叠顺序是后来者居上
(3). 父子元素中,永远都是子压在父上,是不受 z-index 影响的
49. display 显示方式
语法:display:value
(1). none 将指定的元素不显示 并且不占据页面空间(脱离文档流)
(2). block 将指定的元素显示为块级
(3). inline 将指定的元素显示为行内
(4). inline-block、 将指定的元素显示为行内块,行内块特点:
①. 多个元素能够在一行内显示
②. 允许修改尺寸
(5). table 将指定的元素显示为 table,实现任意行垂直居中
50. visibility 显示效果,规范元素可见性
语法:visibility:value
(1). visible 元素 默认值
(2). hidden 元素不可见,但是占据页面空间
(3). collapse 用在表格元素上,删除一行或一列时,不影响表格整体布局
51. display:none 和 visibility:hidden 区别
(1). display:none 脱离文档流,所以不占据页面空间
(2). visibility:hidden 只是改变可见性,并不脱离文档流,空间依然占据
52. opacity 改变元素的透明度
语法:opacity:value
取值:从 0、0(完全透明) ~ 1、0(完全不透明) 之间的数字
53. vertical-align 垂直对齐
语法:vertical-align:value
(1). top 顶端对齐
(2). middle 中间对齐
(3). bottom 底部对齐
(4). baseline 基线对齐
(5). 运用场合
①. 在 td 中,设置文本的垂直对齐方式
②. 设置行内块元素两边文本的垂直对齐方式
③. 设置图片两端文本垂直对齐方式
54. cursor 光标,改变鼠标在页面(元素)中的状态
语法:cursor :value
(1). default
(2). pointer 小手
(3). crosshair
(4). text 文本状态 I
(5). wait 等待
(6). help 帮助
55. list-style 列表属性
语法: list-style:type url position
常用方式:list-style:none
56. list-style-type 列表项标识
语法:list-style-type:value
(1). none 无标识
(2). disc 实心圆
57. list-style-image 列表项图像
语法:list-style-image :url(图像的地址)
58. list-style-position 列表项标识位置
语法:list-style-position:value
(1). outside 默认值,列表项标识的默认位置是在内容区域之外
(2). inside 将列表项标识的位置改为内容区域之内
59. CSS Reset (CSS 重写),修改元素的默认样式
body,p,h1,h2,h3,h4,h5,h6,pre,ul,ol,dl,dd{
margin:0;
padding:0;
list-style:none;
}
60. 复杂选择器
(1). 兄弟选择器 通过兄弟级别的位置关系来匹配页面元素,注意:兄弟选择器只能向后找,不能向前找
①. 相邻兄弟选择器,通过相邻(紧紧挨着)位置关系匹配元素
语法:选择器 1 选择器 2
<div id="d1"></div>
<div id="d2"></div>
<div id="d3"></div>
A. div p :匹配 div 后面 p 元素的内容
B. #top 、important :匹配 id 为 top 元素后面 class 为 important 的元素
②. 通用兄弟选择器,用于匹配某元素后面所有的兄弟元素
语法:选择器 1~选择器 2
A. #d1~div:匹配 id 为 d1 元素后面所有的 div 元素
B. #box~p:匹配 id 为 box 元素后面所有的 p 元素
(2). 属性选择器 通过元素所附带的属性及其值来匹配页面中的元素
①. 基础属性选择器
语法:[attr]
语义:匹配页面中所有附带 attr 属性的元素
A. [id] 匹配页面中所有附带 id 属性的元素
②. [attr1][attr2]
语义:匹配页面中同时附带 attr1 和 attr2 属性的所有元素
A. [id][class] 匹配页面中既有 id 属性又有 class 属性的所有元素
B. input[name][value] 匹配页面中既有 name 属性又有 value 属性的所有 input 元素
③. elem[attr]
elem 表示任意元素名称
attr 表示任意属性名称
语义:匹配页面中附带 attr 属性的 elem 元素
A. div[id] 匹配页面中所有附带 id 属性的 div 元素
B. input[name] 匹配页面中所有附带 name 属性的 input 元素
④. [attr=value]
语义:匹配页面中所有 attr 属性的值为 value 的元素
A. input[type=text] 匹配页面中所有的输入文本
⑤. [class~=value] 主要使用在多类选择器上
语义:匹配页面中 class 属性值列表中包含 value 选择器的元素
A. div[class~=redColor] 匹配 class 属性值列表中包含 redColor 独立选择器的 div 元素,如后面这个 div,<div class="important redColor blueBack"></div>
⑥. [attr^=value]
^= 以…作为开始
语义:匹配以 value 值作为开始的 attr 属性的元素
A. div[class ^= col] 匹配页面中 class 属性值是以 col 作为开始的 div 元素,如后面这个 div,<div class="col-sm-5"></div>
⑦. [attr$=value]
$= 以 … 作为结束
A. [class$="ant"] 匹配页面中 class 属性值是以 ant 作为结尾的元素
⑧. [attr*=value]
* 包含什么字符
语义:匹配 attr 属性值中包含 value 字符的所有元素
A. [class*=ac] 匹配 class 属性值中包含 ac 字符的所有元素
(3). 伪类选择器
①. 目标伪类 作用是突出显示活动的 HTML 锚元素
语法: :target
②. 结构伪类 通过元素之间的结构关系来匹配元素
A. :first-child 获取属于其父元素中的 首个子元素
a. td:first-child 获取属于每个 tr 中的第一个 td
b. #tbl td:first-child 获取 id 为 tbl 表格中每个 tr 中的第一个 td
B. :last-child 获取属于其父元素中的最后一个子元素
C. :nth-child(n) 获取属于其父元素中的第 n(数字)个子元素
注意:td:nth-child(1)等同于 td:first-child
D. :empty 匹配没有子元素(包含文本)的元素
a. <div><span></span></div>,<div >非 empty ,<span>是 empty
b. <div> </div>,<div>非 empty,有一个空格
c. <div></div>,<div>是 empty
E. :only-child 匹配属于其父元素中的唯一子元素
③. 否定伪类将匹配某选择器的元素排除出去
语法: :not(选择器)
A. #tbl tr:not(:first-child) 匹配 id 为 tbl 表格中除第一行以外的所有行
(4). 伪元素选择器
① . :first-letter 或 ::first-letter,作用:匹配某元素的首字符
②. :first-line 或 ::first-line,作用:匹配某元素的首行字符
③. ::selection ,作用:匹配用户选取的内容部分
(5). 伪类选择器和伪元素远择器
①. 伪类匹配元素不同的状态,伪元素匹配的是元素中的内容
②. 在 CSS 2.1 中,伪类选择器和伪元素选择器都是用 : 来表示
如:hover 、:active、 :first-line、:first-letter
在 CSS3 中,所有的伪类选择器用 : 表示,所有的伪元素选择器用 :: 表示
61. 内容生成,通过 css 动态的向某个元素的内容区域之前/之后增加一部分内容
(1). 伪元素选择器
①. :before 或 ::before,定位到元素的内容区域之前
②. :after 或 ::after,定位到元素的内容区域之后
(2). 属性:content
①. 普通文本
②. 图像 url(图像地址)
③. 计数器
(3). 语法
div:before{
content:"小明:";
color:#f00;
font-weight:bold;
margin-right:10px;
}
p:before{
content:"老王:";
display:block;
float:right;
}
(4). 解决的两个问题
①. 外边距溢出问题
外边距常规的解决方法:
A. 为父元素添加边框
B. 使用父元素的内边距,取代子元素的外边距
D. 在父元素的第一个或最后一个子元素位置处,增加一个空 table
用内容生成解决外边距的代码如下:
选择器:before{
content:"";
display:table;
}
②、解决浮动元素父元素的高度问题,代码如下:
.clear:after{
content:"";
display:block;
clear:both;
}
62. 弹性布局(Flexible Box),可伸缩布局,为普通布局带来更大的灵活性
(1). 基本概念
①. flex 容器:简称容器,将元素设置为 Flex 容器后,其子元素允许实现灵活的位置摆放
②. flex 项目:简称项目,存放在 Flex 容器中的内容
(2). 语法 display:value
①. flex 将块级元素 变为 flex 容器
②. inline-flex 将元素变为行内flex 容器,容器的宽度为子元素的宽度
注意:将元素设置为 flex 布局之后,子元素的 float、clear、vertical-align 属性将失去作用
(3). 容器的属性,该组属性要添加在容器元素上,控制子元素的位置
#container{
display:flex;
flex-direction:row;
flex-wrap:wrap;
justify-content:space-around;
align-items:center;
align-content:space-between;
}
①. flex-direction 决定主轴(main-axsis)的方向
A. row 主轴为水平方向的轴,起点在容器左端,默认值
B. row-reverse主轴为水平方向的轴,起点在容器右端
C. column 主轴为交叉轴,起点在容器的顶端
D. column-reverse 主轴为交叉轴,起点在容器的底端
②. flex-wrap 当一条轴线(一行)排列不下时,子元素将如何换行
A. nowrap 默认值,不换行,窗口大小改变不换行
B. wrap 换行,第一行在上方,窗口大小改变会换行
C. wrap-reverse,第一行在下方, 窗口大小改变会换行
③. flex-flow direction 和 wrap 的缩写方式
A. row nowrap 默认值
B. direction wrap
如:flex-flow:column wrap-reverse
④. justify-content 定义项目在主轴上的对齐方式
A. flex-start 主轴起点对齐
B. flex-end 主轴终点对齐
C. center 居中对齐
D. space-between 两端对齐,项目之间的距离是相等的
E. space-around 每个项目两侧间距是相等的,注意:项目与项目之间的间隔,要比项目与父元素之间的间隔大一倍
F. space-evenly 所有的间隙距离平均分配
⑤. align-items 定义项目在交叉轴的对齐方式(单行项目有效)
A. flex-start 在交叉轴的起点对齐, 交叉轴为与主轴相反的轴
B. flex-end 在交叉轴的终点对齐, 交叉轴为与主轴相反的轴
C. center 在交叉中的中间对齐
D. baseline 基线对齐,以所有项目中的第一行文本为准
E. stretch 默认值,如果项目不设置高度或高度为 auto 时,那么项目将沾满整个容器的高度
⑥. align-content 定义了多跟轴线的对齐方式,如果项目只有一根轴线,该属性无效
A. flex-start 交叉轴起点对齐, 交叉轴为与主轴相反的轴
B. flex-end 与交叉轴的终点对齐, 交叉轴为与主轴相反的轴
C. center 与交叉轴的中间对齐, 交叉轴为与主轴相反的轴
D. space-between 与交叉轴两端对齐,轴线之间的间隔平均分布
E. space-around 每个轴线的两侧的间隔都相等。所以,轴线之间的间隔比轴线边框的间隔大一倍
F. stretch 默认值,轴线占满整个交叉轴
(4). 项目的属性 该组属性主要设置于项目中
①. order 定义项目的排列顺序,值越小越靠前,默认为0,取值要为整数,可为负数
②. flex-grow 指定项目的放大比例,取值整数,默认为 0,即不放大
③. flex-shrink 指定项目的缩小比例,取值整数,默认为 1,即空间不足时,等比缩小,取值 越大,容器大小改变时,缩小的越严重
注意:取值为 0,即不缩小
④. flex-basis 指定项目占据主轴的剩余空间大小,取值为数字
A. auto 为默认 即项目本身大小
B. length 自定义大小,可以跟width和height属性值一样,则项目占据固定空间
⑤. flex 是 flex-grow,flex-shrink,flex-basis 的简写模式,默认为 0 1 auto
A. auto 相当于 1 1 auto
B. none 相当于 0 0 auto
C. flex-grow [,flex-shrink,flex-basis]
⑥. align-self 作用:允许定义当个项目与其他项目不一样的交叉轴对齐方式(类似于 align-items),能够覆盖 align-items 的效果
A. auto 默认值,使用 align-items 的值
B. flex-start
C. flex-end
D. center
E. base-line
F. stretch
(5). 弹性布局的另一种写法
①. 父元素:
display:-webkit-box;
-webkit-box-pack:center;
-webkit-box-align:center;
②. 子元素
-webkit-box-orient:horizontal/vertical;
-webkit-box-flex:1
(6). 弹性布局的兼容性写法
.container{
/* Chrome 4 , Safari 3.1, iOS Safari 3.2 */
display: -webkit-box;
/* Firefox 17- */
display: -moz-box;
/* Chrome 21 , Safari 6.1 , iOS Safari 7 , Opera 15/16 */
display: -webkit-flex;
/* Firefox 18 */
display: -moz-flex;
/* IE 10 */
display: -ms-flexbox;
/* Chrome 29 , Firefox 22 , IE 11 , Opera 12.1/17/18, Android 4.4 */
display: flex;
}
(7). 弹性布局的潜在问题
①. input与另一个元素作为子元素弹性布局时,另一元素的宽度如果是按份等分,那么input的宽度将不准确,解决方案是将另一元素的宽度设为固定宽度,如百度移动端
②. 弹性布局如果与浮动布局混用,会出现一些问题,解决方案是position:relative
③. 父元素的高度如果参照上级元素设为100%,那么在弹性布局时,子元素也参照父元素设为100%,子元素将无法显示,解决方案时将子元素设为固定高度
63. CSS Hack
IE6 之前无兼容性可言,IE6 之后 各个浏览器追求标准统一,开始支持标准
IE 的其他浏览器要向前兼容,所以出现各种模式
(1). 三种模式
①. 混杂模式、无标准可言,编写代码时,不写<!doctype>就是混杂模式,采用的是 IE5.5的内核进行渲染
②. 标准模式 、完全支持标准
③. 准标准模式、即支持标准代码,也同时向前兼容非标准代码
(2). 属性前缀
在 CSS 样式属性名称前加上一些只有特定浏览器才能识别的的 hack 前缀,如下表所示
(3). 选择器 Hack、在 CSS 选择器前加上一些只有某些特定浏览器才能识别前缀,如下所示
①. *前缀:IE6,比如*html
②. * 前缀:IE7,比如* html
(4). HTML 头部引用 Hack,即为 IE 条件注释,通过 html 的条件注释来判断浏览器版本,去执行不同的 CSS
语法:
<!--[if 条件 IE 版本]>
<![endif]-->
①. 相关判断条件
A. gt: greater than,选择条件版本以上的版本,不包含条件版本
B. lt: less than ,选择条件版本以下的版本,不包含条件版本
C. gte: greater than or equal,选择条件版本以上版本,包含条件版本
D. lte: less than or equal,选择条件版本以下版本,包含条件版本
E. ! :选择条件版本以外所有版本,无论高低
②. 语句示例
A. 只在 IE 下生效
<!--[if IE]>这段文字只在 IE 浏览器显示<![endif]-->
B. 只在 IE6 下生效
<!--[if IE 6]>这段文字只在 IE6 浏览器显示<![endif]-->
C. 只在 IE6 以上版本上生效
<!--[if gate IE6]>这段文字只在 IE6 以上(包括)版本 IE 浏览器上显示<![endif]-->
D. 只在 IE8 上不生效
<!-- [if ! IE 8]>这段文字在非 IE8 浏览器显示<![endif]-->
E. 非 IE 浏览器生效
<!--[if ! IE]>这段文字只在非 IE 浏览器显示<![endif]-->
F. IE6 浏览器上字体显示为红色
<div>
<!--[if IE6]>
<style>div {color:red;}</style>
<![endif]-->
一些文本
</div>
64. 转换 改变元素在页面中的形状、角度、大小,位置的一种效果,允许进行 2D 和3D 方向的转换、
(1). transform 转换属性,为元素应用 2D 或 3D 转换效果
①. none:没有任何转换效果
②. transform-function :value 指定转换类型
A. translate( ) : 位移转换函数
B. skew( ) :改变形状函数
注意:如果指定多个转换函数的话,中间用空格隔开
(2). transform-origin 转换原点,默认转换原点在元素中心处
①. 两个值,表示原点在 x 轴 和 y 轴上的位置
②. 三个值,表示原点在 x 轴 y 轴和 z 轴上的位置
(3). 2D 转换
①. 位移 改变元素在页面中的位置
语法:transform:value
A. translate(x) 改变元素在 x 轴的位置
x 取值为正向右移动
x 取值为负向左移动
B. translate(x,y) 改变元素在 x 和 y 轴的位置
x 取值为正向右移动
x 取值为负向左移动
y 取值为正向下移动
y 取值为负向上移动
C. translateX(x) 元素只在 x 轴上移动
D. translateY(y) 元素只在 y 轴上移动
②. 缩放 改变元素在页面中的大小
语法:transform:value
A. scale(value) 表示横向和纵向等比缩放
a. 原始大小:默认值 1
b. 放大:大于 1 的数值
c. 缩小:0~1 之间小数
B. scale(x,y) 改变元素在 x 和 y 轴的比例
C. scaleX(x) 改变元素在 x 轴的比例
D. scaleY(y) 改变元素在 y 轴的比例
③. 旋转 改变元素在页面上的角度,要根据转换原点实现转换效果
语法:transform:rotate(ndeg) || rotate(1turn),turn代表一圈
n 为旋转角度,n 取值为正顺时针旋转,n 取值为负逆时针旋转,旋转时元素的坐标轴也一同旋转
④. 倾斜改变元素在页面中的形状
语法:transform:value
A. skew(xdeg) 横向倾斜指定度数
x 取值为正 y 轴逆时针倾斜一定角度
x 取值为负 y 轴顺时针倾斜一定角度
B、skew(ydeg) 纵向倾斜度数
y 取值为正 x 轴顺时针倾斜一定角度
y 取值为负 x 轴逆时针倾斜一定角度
C. skewX(xdeg) x 轴单向倾斜一定角度
D. skewY(ydeg) y 轴单向倾斜一定角度
(4). 3D 转换
①. perspective 假定人眼到投射平面的距离,取值越大越远,取值越小越近,单位为 px
A. 该属性要放在 3D 转换元素的父元素上
B. 兼容性问题 Chrome 和 Safari 需要加前缀,如 -webkit-perspective:500px;
②. 旋转
语法:transform:value
A. rotateX(xdeg) 以 x 轴为中心轴旋转元素
X 取值为正顺时针旋转
X 取值为负逆时针旋转
B. rotateY(ydeg) 以 y 轴为中心轴旋转元素
Y 轴取值为正顺时针旋转
Y 轴取值为负逆时针旋转
C. rotateZ(zdeg) 以 z 轴为中心轴旋转元素
Z 轴取值为正顺时针旋转
Z 轴取值为负逆时针旋转
D. rotate3D(x,y,z,ndeg) 多个轴同时旋转时使用
X 、Y、Z,取值为 1,该轴参与旋转,如 rotate3D(1,1,1,45deg)
X 、Y、Z,取值为 0,该轴不参与旋转,如 rotate3D(1,0,0,45deg)
③. 位移 改变元素在 z 轴上的位置
语法:transform:translateZ(z)
④. transform-style 定义如何在 3D 空间中呈现被嵌套的元素
A. flat 默认值,子元素不保留其 3D 位置
B. preserve-3d,子元素将保留其 3D 位置(translateZ(z)必须)
65. 过渡 使得 CSS 属性值在一段时间内平缓变化的效果
(1). transition-property:属性名称 | all,指定哪个属性值在变化时使用过渡效果展示,允许设置过渡效果的属性如下:
①. 颜色属性
②. 渐变属性
③. 取值为数字的属性
④. 转换属性
⑤. visibility 属性
⑥. 阴影属性
(2). transition-duration:s | ms,指定过渡时长,取值为数值(1s=1000ms)
(3). transition-timing-function:指定过渡时间速度曲线函数(速率)
①. ease 默认值,慢速开始,快速变快,慢速结束
②. linear 匀速
③. ease-in 慢速开始,加速结束
④. ease-out 快速开始,减速结束
⑤. ease-in-out 慢速开始和结束,先加速再减速
(4). transition-delay:s | ms, 指定过渡的延迟时间
(5). transition:prop duration timing-fun delay;简写属性
transition:prop1 duration1 timing-fun1 delay1,prop2 duration2 多过渡效果
(6). 触发过渡
①. 将过渡编写在元素声明的样式中,由:hover、:active 等进行触发,即管去又管回
②. 将过渡编写在 :hover ,:active 伪类中,管去不管回