CSS
css 定义和语法
层叠样式表,对 html 写出来的内容进行美化
选择器{
样式规则
属性名1:属性1;
属性名2:属性2;
属性名3:属性3;
}
css 引入方式
行内式
直接在标签的 style 属性中添加 css 样式
方便直观,缺乏可重复使用性
<div style="width:100px; height:100px; background:read ">hello</div>
内嵌式(内部样式)
在<head>标签内添加<style>标签,在<style>标签内写 css 代码
便于一个页面的维护,多个页面间可重复使用性不高
<head>
<style type="text/css">
h3 {
color: red;
}
</style>
</head>
外链式
将 css 写入单独的 css 文件里面,在<head>标签中使用<link>标签引入
css 样式与 html 页面分离,便于整个页面系统的规划和维护,可重复性高,css 代码分离单独文件,容易出现 css 代码过于集中,引起混乱
<link rel="stylesheet" type="text/css" href="css/main.css" />
选择器
类选择器
根据类名来选择标签,以 . 开始,类选择器作用在多个标签,多个选择器使用空格分隔,可复用
<style type="text/css">
.blue {
color: blue;
}
.big {
font-size: 20px;
}
.box {
width: 100px;
height: 100px;
background: gold;
}
</style>
<div class="blue">这是个div</div>
<h3 class="blue big box">这是一个标题</h3>
<p class="blue box">这是一个段落</p>
层级选择器
根据层级关系选择后代标签,以选择器 1 选择器 2 开头,应用在多级嵌套结构中,减少命名
<style type="text/css">
div p {
color: red;
}
.con {
width: 300px;
height: 80px;
background: green;
}
.con span {
color: red;
}
.con .pink {
color: pink;
}
.con .gold {
color: gold;
}
</style>
<div>
<p>hello</p>
</div>
<div class="con">
<span>哈哈</span>
<a href="#" class="pink">百度</a>
<a href="#" class="gold">百度</a>
</div>
<span>你好</span>
<a href="#" class="pink">新浪</a>
id 选择器
根据 id 选择标签,以#开头,id 名称建议不重复,id 一般给程序作为使用
<style type="text/css">
#box {
color: red;
}
</style>
<p id="box">这是一个段落标签</p>
<p>这是第二个段落标签</p>
<p>这是第三个段落标签</p>
组选择器
<style type="text/css">
.box1,
.box2,
.box3 {
width: 100px;
height: 100px;
}
.box1 {
background: red;
}
.box2 {
background: pink;
}
.box3 {
background: gold;
}
</style>
<div class="box1">这是第一个div</div>
<div class="box2">这是第二个div</div>
<div class="box3">这是第三个div</div>
伪类选择器
用于向选择器提供特殊的效果,以:分割开,使用伪类选择器可以改变网页的显示效果
通常是
动态伪类
a标签特有的:link超链接未被访问visited超链接被访问
- 所有标签都有的
hover悬浮active激活
- 表单标签特有的
focus聚焦
<style type="text/css">
.box1 {
width: 100px;
height: 100px;
background: gold;
}
.box1:hover {
width: 300px;
}
</style>
<div class="box1">这是一个div</div>
结构伪类
- 按照所有兄弟计算的
:first-child第一个子元素:last-child最后一个子元素:nth-child(n)第 n 个子元素,n=odd 奇数子元素,n=even 偶数子元素
- 按照所有同类计算的
:first-of-type第一个同类子元素:last-of-type最后一个同类子元素:nth-of-type(n)第 n 个同类子元素,n=odd 奇数子元素,n=even 偶数子元素
- 倒数计算
:nth-last-child(n)倒数第 n 个子元素:nth-last-of-type(n)倒数第 n 个同类子元素
- 唯一元素
:only-child唯一子元素:only-of-type唯一同类子元素
- 根元素
:root根元素
- 空元素
:empty空元素
<style>
/* 结构体1 div第一个子元素是p元素则选中 */
.structure1 div > p:first-child {
color: red;
}
/* 结构体2 div第一个子元素是p元素则选中,否则不选择 */
.structure2 div > p:first-child {
color: red;
}
/* 结构体3 只选择div中的第一个子元素是p元素则选中,否则不选择 */
.structure3 div > p:first-child {
color: red;
}
/* 结构体4 div中的后代元素是p的元素,必须是其父元素的第一个子元素 */
.structure4 div p:first-child {
color: red;
}
/* 结构体5 选择必须为div中的后代元素中是p的元素,必须是其父元素的第一个子元素 */
.structure5 div p:first-child {
color: red;
}
/* 结构体6 选择p元素,必须是其父元素的第一个子元素 */
.structure6 p:first-child {
color: red;
}
</style>
<ul>
<li class="structure1">
<div>
<p>张三</p>
<p>李四</p>
<p>王五</p>
<p>赵六</p>
</div>
</li>
<li class="structure2">
<div>
<span>张三</span>
<p>李四</p>
<p>王五</p>
<p>赵六</p>
</div>
</li>
<li clas="structure3">
<div>
<span>
<p>张三</p>
</span>
<p>李四</p>
<p>王五</p>
<p>赵六</p>
</div>
</li>
<li class="structure4">
<div>
<span>
<p>张三</p>
</span>
<p>李四</p>
<p>王五</p>
<p>赵六</p>
</div>
</li>
<li class="structure5">
<p>测试1</p>
<div>
<span>
<p>测试2</p>
<p>张三</p>
</span>
<p>李四</p>
<p>王五</p>
<p>赵六</p>
</div>
</li>
<li class="structure6">
<p>测试1</p>
<div>
<p>测试2</p>
<span>
<p>测试3</p>
<p>张三</p>
</span>
<p>李四</p>
<p>王五</p>
<p>赵六</p>
</div>
</li>
</ul>
否定伪类
:not(选择器)选中所有不满足选择器的元素
<style>
/* 选择类名为box1下的p元素,但是排除类名为red的,可以是class,id,:first-child */
.box1 p:not(.red) {
color: red;
}
</style>
<div class="box1">
<p class="red">这是第一个段落</p>
<p>这是第二个段落</p>
<p>这是第三个段落</p>
</div>
表单伪类
:enabled选中所有可用元素:disabled选中所有不可用元素:checked选中所有被选中的元素
<style>
/* 选中所有可用元素 */
input:enabled {
background: red;
}
/* 选中所有不可用元素 */
input:disabled {
background: pink;
}
/* 选中所有被选中的元素 */
input:checked {
width: 100px;
height: 100px;
background: gold; /* 这里不可用,不能修改颜色 */
}
</style>
<form>
<input type="text" value="可用" />
<input type="text" value="不可用" disabled />
<input type="checkbox" value="选中" checked />
<input type="checkbox" value="未选中" />
</form>
语言选择
:lang(值)选中指定语言的元素
<html lang="zh-CN">
<style>
/* 选中所有中文的元素 */
p:lang(zh-CN) {
color: red;
}
p:lang(en) {
color: blue;
}
</style>
<p>你好</p>
<p lang="en">Hello</p>
</html>
伪元素选择器
选中元素中的特殊位置
::before在元素内部的前面插入内容::after在元素内部的后面插入内容::first-letter选中元素中的第一个字符::first-line选中元素中的第一行::selection选中元素中被用户选中的内容::placeholder选中元素中的占位符
<style>
/* 选中a标签的文本 */
a::before {
content: "百度";
}
/* 选中a标签的文本 */
a::after {
content: "新浪";
}
</style>
<div>
<a href="#">百度</a>
</div>
选择器优先级
- 内联样式
- id 选择器
- 类选择器、伪类选择器、属性选择器
- 元素选择器、伪元素选择器
- 通配符选择器
优先级计算公式: (a, b, c)
a 为 id 选择器数量
b 为类选择器、伪类选择器、属性选择器数量
c 为元素选择器、伪元素选择器数量
强调:!important 可以提高选择器的优先级,但是不推荐使用
css 属性样式
尺寸样式
px像素em相对单位,按照字体的大小进行计算的n em=font-size * n没有设置 font-size 则向父辈找rem相对单位,相对于根元素的字体大小计算公式同上vw相对单位,相对于视口宽度的百分比vh相对单位,相对于视口高度的百分比vmin相对单位,相对于视口宽度和高度中较小的那个百分比vmax相对单位,相对于视口宽度和高度中较大的那个百分比%相对单位,相对于父元素的百分比cm厘米mm毫米
文本样式
设置的文本样式通常可以继承
font-size:- 设置文字大小(最好使用
body{font-size:16px}来设置基础)
- 设置文字大小(最好使用
font-family:- 设置文字字体 设置完成后应该加上
sans-serif(非衬线) 或serif(衬线) 作为结尾
- 设置文字字体 设置完成后应该加上
font-style:- 设置文字样式,通常使用
normal(正常)和italic(斜体)
- 设置文字样式,通常使用
font-weight:- 设置文字是否加粗,100-300(细体),400-500(正常)和 600-(加粗)
color:- 设置文字颜色
letter-spacing:- 设置文字间距,有负值
word-spacing:- 设置单词间距,识别空格,有负值
font:- 复合属性设置,顺序为
font-style font-weight font-size font-family,其中font-size和font-family是必须的,其他可以省略
- 复合属性设置,顺序为
text-decoration:- 设置文字下划线,通常用
underline(下划线),line-through(删除线)和none(无下划线)
- 设置文字下划线,通常用
text-indent:- 设置文字首行缩进,通常用 px,em,rem,%等
text-align:- 设置文字水平对齐方式,通常用
left(左对齐),center(居中对齐),right(右对齐)和justify(两端对齐)
- 设置文字水平对齐方式,通常用
line-height:- 设置文字行高,盒子 height 未设置时
height=line-height \* n - 单行文字时
line-height=height设置垂直居中
- 设置文字行高,盒子 height 未设置时
vertical-align:- 设置文字垂直对齐方式,通常用
top(顶部对齐),middle(居中对齐),bottom(底部对齐)和baseline(基线对齐)
- 设置文字垂直对齐方式,通常用
text-shadow:- 设置文字阴影,通常用
水平偏移 垂直偏移 模糊半径 阴影颜色,有负值
- 设置文字阴影,通常用
white-space:- 设置文字换行方式,通常用
normal(正常),nowrap(不换行),pre(保留空白和换行),pre-wrap(保留空白和换行,自动换行)和pre-line(保留换行,自动换行)
- 设置文字换行方式,通常用
text-overflow:- 设置文字溢出方式,通常用
clip(裁剪),ellipsis(省略号)和string(自定义字符串)。需要overflow:hidden.
- 设置文字溢出方式,通常用
text-decoration:- 设置文字下划线,通常用
underline(下划线),overline(上划线)line-through(删除线)和none(无下划线) text-decoration-style设置下划线样式,通常用solid(实线),double(双线),dotted(点线),dashed(虚线)和wavy(波浪线)text-decoration-color设置下划线颜色
- 设置文字下划线,通常用
@font-face{}- 设置自定义字体,通常用
font-family:字体名称; src:url(字体路径);,其中font-family是必须的,其他可以省略 - 这样引入字体,然后后续使用字体
font-family:字体名称;
- 设置自定义字体,通常用
- 矢量图标字体阿里图标库使用
- unicode 实现 使用
@font-face引入字体,然后使用font-family:导入,使用 unicode 编码写入 - font class 实现 使用
<link rel="stylesheet" href="./iconfont.css">引入字体,然后使用class:导入,使用 class 编码写入,调整时要用类选择器(常用) - symbol 实现 使用
<script src="./iconfont.js"></script>引入字体,然后使用<svg class="icon" aria-hidden="true"><use xlink:href="#icon-xxx"></use></svg>导入 - 在线使用 将上述三种方式中的 src 设置成网络链接即可使用
- unicode 实现 使用
列表样式
list-style- 复合属性设置,顺序为
list-style-type list-style-position list-style-image,其中list-style-type是必须的,其他可以省略
- 复合属性设置,顺序为
list-style-type- 设置列表项标记的类型,通常用
disc(实心圆),circle(空心圆),square(实心方块)和none(无标记)
- 设置列表项标记的类型,通常用
list-style-position- 设置列表项标记的位置,通常用
inside(标记在文本内部),outside(标记在文本外部)和inherit(继承父元素的值)
- 设置列表项标记的位置,通常用
list-style-image- 设置列表项标记的图片,通常用
url(图片路径),none(无标记)
- 设置列表项标记的图片,通常用
表格样式
border- 设置边框样式复合属性,顺序为
border-width border-style border-color这三个都要写,不只是表格能用
- 设置边框样式复合属性,顺序为
border-readius- 设置边框圆角,通常用 px,em,rem,%等
border-collapse- 设置表格边框合并方式,通常用
collapse(合并边框),separate(分开边框)
- 设置表格边框合并方式,通常用
border-spacing- 设置表格边框间距,通常用
px,em,rem,%等,生效前提是不能合并边框
- 设置表格边框间距,通常用
table-layout- 设置表格布局方式,通常用
auto(自动布局),fixed(固定布局)
- 设置表格布局方式,通常用
caption-side- 设置表格标题位置,通常用
top(顶部),bottom(底部)
- 设置表格标题位置,通常用
empty-cells- 设置表格空单元格显示方式,通常用
show(显示),hide(隐藏),生效前提是不能合并边框
- 设置表格空单元格显示方式,通常用
outline- 设置外边框样式,通常用
outline-width outline-style outline-color这三个都要写,不只是表格能用
- 设置外边框样式,通常用
outline-offset- 设置外边框偏移量,通常用
px,em,rem,%等,生效前提是不能合并边框
- 设置外边框偏移量,通常用
背景样式
background-color:- 设置背景颜色
background-image:- 设置背景图片,通常用
url(图片路径),none(无背景图片)
- 设置背景图片,通常用
background-repeat:- 设置背景图片是否重复,通常用
repeat(重复),no-repeat(不重复),repeat-x(水平重复),repeat-y(垂直重复)
- 设置背景图片是否重复,通常用
background-position:- 设置背景图片位置,通常用
top(顶部),bottom(底部),left(左边),right(右边),center(居中)
- 设置背景图片位置,通常用
background-origin:- 设置背景图片定位区域,通常用
padding-box(从 padding 区域开始),border-box(从 border 区域开始),content-box(从 content 区域开始)
- 设置背景图片定位区域,通常用
background-clip:- 设置背景图片裁剪区域,通常用
padding-box(从 padding 区域开始),border-box(从 border 区域开始),content-box(从 content 区域开始)
- 设置背景图片裁剪区域,通常用
background-size:- 设置背景图片大小,通常用
cover(覆盖),contain(包含),px,em,rem,%等
- 设置背景图片大小,通常用
background:- 复合属性设置,顺序为
background-color background-image background-repeat background-position background-attachment,其中background-color和background-image是必须的,其他可以省略
- 复合属性设置,顺序为
background:这样可以设置多个图片,background: background-image background-repaeat top/bottom/left/right
鼠标样式
cursor- 设置鼠标样式,url("path")
显示模式
- 块级元素
display:block- 主题标签
<html><body> - 排版元素
<h1><h6><hr><p><pre><div> - 列表元素
<ol><ul><li> - 表格元素
<table><tbody><thead><tfoot><tr> <form><option>
- 主题标签
- 行内元素
display:inline- 文本标签
<br><em><strong><sup><sub> <a><lable>
- 文本标签
- 行内块元素
display:inline-block- 图片
<img> - 单元格
<td><th> - 表单控件
<input><textarea><select><button> - 框架标签
<iframe>
- 图片
- 隐藏元素
display:none隐藏并占据空间
盒子模型
margin外边距,影响盒子位置,不影响盒子大小- 子元素的 margin 是根据父元素的 content 计算的
margin-top上边距 影响自己位置margin-left左边距 影响自己位置margin-right右边距 影响后续兄弟位置margin-bottom下边距 影响后续兄弟位置margin复合属性设置,顺序为margin-top margin-right margin-bottom margin-left,可以是负值- 第一个子元素设置 margin-top 会传递到父元素 margin-top 上,最后一个子元素设置 margin-bottom 会传递到父元素 margin-bottom 上,设置边框或设置 overflow:hidden 可解决
- 兄弟间设置 margin 时,会取最大值
border边框padding内边距content内容width盒子宽度,min-width最小宽度,max-width最大宽度,height盒子高度,min-height最小高度,max-height最大高度overflow内容溢出,visible可见,hidden隐藏,scroll滚动(一般不用),auto自动visibility隐藏,visible可见,hidden隐藏并占据空间
设置盒子大小时,最好使用 box-sizing:border-box,这样设置的宽高就是盒子的宽高,而不是内容的宽高。
默认的是 content-box,设置的宽高就是内容的宽高,盒子的宽高需要加上边框和内边距。
设置盒子宽时可以用resize:horizontal;overflow:auto,这样盒子就可以拖动改变宽度了。
设置盒子高时可以用resize:vertical;overflow:auto,这样盒子就可以拖动改变高度了。
设置盒子宽高时可以用resize:both;overflow:auto,这样盒子就可以拖动改变宽高了。
盒子阴影box-shadow:水平偏移 垂直偏移 模糊半径 阴影大小 阴影颜色 内阴影(inset)
盒子透明opacity:0-1
浮动
浮动后脱离文档流;
文字环绕;
对前面兄弟元素无影响;
对后续兄弟元素会占据浮动元素的位置,在浮动元素的下面;
不能支撑父元素高度,导致高度塌陷,父元素宽度仍然会束缚浮动元素。
float浮动,left左浮动,right右浮动,none不浮动clear清除浮动,left清除左浮动,right清除右浮动,both清除左右浮动,使用者不能浮动,且为块元素,一般情况下一个布局中兄弟间要么全浮动要么全不浮动。overflow内容溢出,visible可见,hidden隐藏,scroll滚动(一般不用),auto自动
定位
相对定位
开启相对定位position: relative;
相对于发生之前的位置进行定位,使用left``right``top``bottom进行移动。
相对定位后,元素不脱离文档流,但仍然占据原来的位置,可以超出父容器,不会影响其他元素的位置。
开启定位后元素层级提升。
绝对定位
开启绝对定位position: absolute;,元素变成行内块元素
相对于包含块元素进行定位,使用left``right``top``bottom进行移动。
绝对定位后,元素会脱离文档流,不占据原来的位置,可以超出父容器,会影响其他元素的位置。
一定要使用子绝父相来进行定位。
想要充满不固定的父元素,可以使用top:0;bottom:0;(上下充满)和right:0;left:0;(左右充满)
想要居中,使用left:0;right:0;top:0;bottom:0;margin:auto;
固定定位
开启固定定位position:fixed,元素变成行内块元素
相对于浏览器窗口进行定位,使用left``right``top``bottom进行移动。
固定定位后,元素会脱离文档流,不占据原来的位置,可以超出父容器,会影响其他元素的位置。
粘性定位
开启粘性定位position:sticky,元素变成行内块元素
相对于可滚动祖先进行定位,使用left``right``top``bottom设置生效位置。
粘性定位后,元素不会脱离文档流,占据原来的位置,不可以超出父容器,不会影响其他元素的位置。
定位的层级
z-index 属性可以设置元素的层级,值越大,层级越高,默认值为 0,可以为负值。
只有定位元素才能设置层级,非定位元素设置层级无效。
兄弟元素之间设置层级,层级高的元素会覆盖层级低的元素。
父子元素之间设置层级,层级高的元素会覆盖层级低的元素。
渐变
线性渐变
background: linear-gradient(方向, 颜色1, 颜色2, 颜色3, ...);
方向: to right,to left,to top,to bottom,角度deg;
颜色后面填px可设置颜色过渡范围
径向渐变
background: radial-gradient(形状 大小 at 位置, 颜色1, 颜色2, 颜色3, ...);
形状:ellipse(椭圆) circle(圆形)
大小:closest-side(最近边) closest-corner(最近角) farthest-side(最远边) farthest-corner(最远角)
位置:top left bottom right 10px
颜色后面填px可设置颜色过渡范围
重复渐变
在没有渐变的区域重复渐变
background: repeating-linear-gradient(方向, 颜色1, 颜色2, 颜色3, ...);
background: repeating-radial-gradient(
形状 大小 at 位置,
颜色1,
颜色2,
颜色3,
...
);
变换
2D 变换
- 位移
transform:translate(x,y)对行内元素无效 - 缩放
transform:scale(x,y)块内文字也会缩放;负数会翻转;可以只写一个值,表示等比例缩放;对行内元素无效 - 旋转
transform:rotate(角度deg)一个值默认按 Z 轴旋转(盒子中心),对行内元素无效 - 扭曲
transform:skew(x,y)可以只写一个值,表示等比例扭曲;对行内元素无效 - 组合
transform:translate(x,y) scale(x,y) rotate(角度deg) skew(x,y)一般旋转写到最后,因为旋转会影响其他变换的基准点 - 变换原点
transform-origin:x y对位移没有影响,对缩放/旋转/扭曲有影响,默认为盒子中心,可以写百分比,也可以写像素,也可以写方位词
3D 变换
要先对父元素开启 3Dtransform-style:preserve-3d,再对父元素开启景深perspective:距离(子元素高度的70%左右往上调),再对子元素进行变换
透视点,默认为开启 3D 元素的中心,perspective-origin:x y 可以设置透视点
- 位移
transform:translate3d(x,y,z)z 轴不能设置百分比,对行内元素无效 - 旋转
transform:rotate3d(x,y,z,角度deg)x,y,z 是 1 或 0,对行内元素无效 - 缩放
transform:scale3d(x,y,z)z 设置的是景深(景深/z),对行内元素无效 - 背部
backface-visibility:hidden隐藏背面,默认为可见
过渡
过渡效果,需要两个状态,开始状态和结束状态,中间的状态由浏览器自动计算。
过度属性必须在数字或百分比的属性基础上实现。
- 过渡属性
transition-property过渡的属性,默认为all,可以写多个属性,用逗号隔开transition-property: width, height; - 过渡时间
transition-duration过渡的时间,默认为0s,可以写多个时间,用逗号隔开transition-duration: 2s, 1s; - 过渡延迟
transition-delay过渡的延迟,默认为0s,可以写多个延迟,用逗号隔开transition-delay: 2s, 1s; - 过渡方式
transition-timing-function过渡的方式,默认为ease,可以写多个方式,用逗号隔开transition-timing-function: ease[慢,快,慢], linear[匀速], ease-in[慢,快], ease-out[快,慢], ease-in-out[慢,快,慢], step-start[不考虑过度直接到达],step-end[不考虑过度等待到达], steps(步数,start/end)[分几步走,start/end表示开始还是结束], cubic-bezier(x1, y1, x2, y2)[贝塞尔曲线]; - 过渡组合
transition: 过渡属性 过渡时间 过渡延迟 过渡方式
动画
帧,动画的最小单位,一般为一帧 1/60 秒。
关键帧,动画的关键部分,一般为一帧。
动画,由多个关键帧组成。
- 定义关键帧
@keyframes 动画名称{from{初始状态}to{结束状态}},也可以写百分比@keyframes 动画名称{0%{初始状态}100%{结束状态}},表示动画的进度 - 使用动画
animation:动画名称 - 动画时长
animation-duration:时间 - 动画延迟
animation-delay:时间 - 动画方式
animation-timing-function:方式[同过渡] - 动画次数
animation-iteration-count:次数[infinite[无限次]] - 动画方向
animation-direction:reverse[反向播放]/alternate[交替播放]和次数一起用 - 动画填充模式
animation-fill-mode:forwards[动画结束后保持结束状态] - 动画播放状态
animation-play-state:paused[暂停] - 动画组合
animation:动画名称 动画时长 动画延迟 动画方式 动画次数 动画方向 动画填充模式
多列布局
- 分列
column-count:列数分成几列 - 列宽
column-width:列宽计算宽度分层列 - 列间距
column-gap:间距列间距 - 列边框
column-rule:边框宽度 边框样式 边框颜色 - 列分割线
column-span:all[跨列]要找到具体的段落进行设置
伸缩盒模型(弹性盒模型)
外置的叫伸缩容器,内部的叫伸缩项目。
- 父元素设置
display:flex[块级伸缩容器]/inline-flex[行内伸缩容器,不常用],开启弹性布局;子元素会自动成为伸缩项目,自动变为块元素。 - 主轴方向
flex-direction:row[水平方向,默认]/row-reverse[水平方向,反向]/column[垂直方向]/column-reverse[垂直方向,反向] - 换行方式
flex-wrap:nowrap[不换行,默认]/wrap[换行,常用]/wrap-reverse[换行,反向] - 复合属性
flex-flow:主轴方向 换行方式 - 主轴对齐方式
justify-content:flex-start[左对齐]/flex-end[右对齐]/center[居中]/space-between[两端对齐,中间等间距]/space-around[两端对齐,中间等间距,两边间距是中间的一半]/space-evenly[等间距] - 侧轴对齐方式单行
align-items:flex-start[上对齐]/flex-end[下对齐]/center[居中]/baseline[基线对齐]/stretch[拉伸不给高度,默认] - 侧轴对齐方式多行
align-content:flex-start[上对齐]/flex-end[下对齐]/center[居中]/space-between[两端对齐,中间等间距]/space-around[两端对齐,中间等间距,两边间距是中间的一半]/space-evenly[等间距]/stretch[拉伸] - 主轴基准长度
flex-basis:宽度设置伸缩项目在主轴上的基准长度,默认为flex-basis:auto,即项目本身的大小。 - 伸缩比例
flex-grow:1设置伸缩项目在主轴上的伸缩比例,默认为 0,即项目不伸缩。分割剩余空间,按百分比分割。 - 伸缩比例
flex-shrink:1设置伸缩项目在主轴上的伸缩比例,默认为 1,即项目可以伸缩,使用时不能设置flex-wrap: wrap;。分割剩余空间,按百分比分割。 - 复合属性
flex:拉伸比例 压缩比例 基准长度,默认为flex:0 1 auto,即项目不拉伸,可以压缩,基准长度为项目本身的大小。
排序和单独对齐
- 顺序
order:0设置伸缩项目的顺序,默认为 0,值越小越靠前。 - 单独对齐
align-self:auto设置伸缩项目在侧轴上的对齐方式,默认为auto,即继承父元素的align-items属性。可以单独设置某个项目的对齐方式,不影响其他项目。
实时计算
- 百分比
calc(100% - 100px)计算百分比 - 颜色
calc(颜色1 + 颜色2)计算颜色 - 数值
calc(数值1 + 数值2)计算数值 - 长度
calc(长度1 + 长度2)计算长度
媒体查询
媒体查询,根据不同的屏幕尺寸,设置不同的样式。没有提高优先级
@media 媒体类型{
样式;
}
@media (条件) {
样式;
}
@media 媒体类型 and (条件) and (条件){ /* 两者都满足 */
样式;
}
@media 媒体类型 and (条件) or (条件){ /* 其中一个满足 */
样式;
}
@media not 媒体类型{ /* 否定 */
样式;
}
@media only 媒体类型{ /* 肯定通常用在ie兼容问题 */
样式;
}
媒体类型:all[所有设备]/print[打印设备]/screen[电脑屏幕]
条件:[min-/max-](width[视口宽度]/height[视口高度]/device-width[设备宽度])/orientation[方向,portrait[竖屏]/landscape[横屏]]
可以使用 html 写法
<link rel="stylesheet" media="条件" href="样式表路径" />
版心
二层版心,外层盒子不给设置宽度,内层盒子设置 960-1200.
多层版心,外层盒子不设置宽度,内层盒子设置 960-1200,高度设置为 100%。
响应式版心,使用媒体查询,根据不同屏幕宽度设置不同版心宽度。
常用类名
- 顶部导航条
topbar - 页头
page-header - 导航
nav-.... - 搜索框
search - 横幅
banner - 主体
main - 侧边栏
sidebar - 页脚
page-footer
重置默认样式
https://necolas.github.io/normalize.css/
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
BFC
- 开启 BFC 后,子元素不会产生
margin的传递问题 - 开启 BFC 后,自己不会被其他浮动元素所覆盖
- 开启 BFC 后,就算其子元素浮动,元素自身高度不会塌陷
开启 BFC 的方式
- 根元素
<html>自身携带 - 浮动元素
float:left/right自动开启 - 绝对定位.固定定位的元素
position:absolute/fixed自动开启 - 行内块元素
display:inline-block自动开启 - 表格元素
display:table自动开启 - 表格单元格
display:table-cell自动开启 - 表格标题
display:table-caption自动开启 - 当设置
overflow:且值不为visible自动开启 - 伸缩项目
display:flex/inline-flex自动开启 - 网格布局
display:grid/inline-grid自动开启 column-span为all的元素自动开启display:flow-root开启 BFC

浙公网安备 33010602011771号