ctrl+F按照关键字查找需要的内容
结构(HTML)、样式(CSS)、行为(js)
HTML:超文本标记语言
ECMA:管JS
W3C:管HTML,CSS
xhtml:扩展超文本标记语言
HTML5:HTML的第五代
<标签 属性=“值”>标签>
双标签,也叫常规标签
<标签 属性=“值”/>
单标签,也叫空标签
单双引号是成对出现的
标题标签:
h1~h6,默认加粗变大,独占一行,依次变小
倾斜标签:
i/em:在一行内显示,默认倾斜
i是视觉效果上的倾斜,em是倾斜体(强调作用)
加粗标签:
b/strong:加粗标签,默认文本加粗,在一行显示,strong强调 作用
下划线标签:
u,在一行内显示
功能标签:
br换行,hr水平线
上下标:
sup:上标;sub:下标
段落标签:
单独占据一行,里面不能嵌套块元素,div,p,a,h
 :空格
>:>
<:<
© ©
目录文件夹:
普通的项目文件夹
根目录:
打开文件夹的第一层
绝对路径:
从盘符开始往下
相对路径:
图片相对于HTML的位置。
./强调在这一级;…/返回上一级
type="circle/square/disc"
style="list-style:none;"
start="起始序号";
type="a/A/i/I/1" //修改修饰符
style="list-style:none"; //删除修饰符
一般用来做导航或列表
目标:实现应用之间的跳转
a>
target = "_new"在新页面刷(很久没点击会打开新页面而不是在新页
面刷新)
="_self"当前页面刷新
="_blank"打开新页面
title="鼠标悬停提示文本"
图片常见格式:png,jpg,gif
文件夹的命名:
数字字母下划线美元符号中划线,第一个不能是数字
盒子标签:单独占据一行,结合CSS搭建页面结构
table>tr>td
属性:
border:边框
bordercolor:边框颜色
BgColor:背景颜色
width:
height:
cellspacing:单元格间隙
cellpadding:边框与内容之间的间距
align:center,left,right对齐方式(写在表格上是表格相对于窗口的位置)
valign:top/bottom/middle垂直对齐方式
colspan:跨行对齐
rowspan:水平对齐
th:
加粗居中的td
建议不要省略tbody
<form action="提交地址">
<input type="" name="" value=""/>
type属性值:text,password,button,submit,reset
value的属性值:值
name = "名字" 提交的数据的名字
form>
注意事项:
span标签:容器标签,没功能***包裹文本,给文本添加样式***。
样式分类:外部样式,内部样式,行内样式
创建方式:
@charset "utf-8";
开发中不建议使用@import的引入方式
写在标签内
写在style标签里面
.类名 {
键:值
}
#id {
键值对;
}
div {
height:80px;
}
* {
margin:0;
padding:0;
}
a:link {
background:red;
}
谁靠后改变谁,谁加上选择器移入谁
7. 群组选择器:
选择器1,选择器2,选择器3 {
各算各的,用到那个就算哪个的权重
}
选择器 选择器 选择器 {
键值对;
}
文字分为四条线:顶线,中线,基线,底线
两行文字之间的距离:上一行底线和下一行顶线之间也有间隙,测量元素高度(第一行文字顶部到第二行文字顶部,也称为行高)
值:颜色单词;16进制;rgb();rgba() ,a的范围0~1
px:具体像素值
%:跟随父元素的大小
em:跟随父元素的大小,成倍数关系
rem:跟随根元素,与根元素大小成倍数关系
默认16px,最小限制12px
middle:16px
bolder/bold/normal/100-900{取整百}
italic/oblique/normal
italic是指斜体字,oblique是斜体效果(没有斜体字用这个)
单位:px
行高小于高度值:偏上
行高大于高度值 :偏下
不带单位和带%:需要乘以字体大小,从而得到行高为px
不能为负数
font:倾斜 加粗 文本大小/行高 字体类型;(文本大小之后的顺序不可调)
注意:
font-size:20px;
font:16px/16px arial;
显示为16px,但是font-size的值依旧是20px
可以取负值
只对第一行起作用
2em代表缩进两个字符
注意:有四个值:left,center,right,justify(两端对齐)
none:去掉修饰
underline:下划线
overline:上划线
line-through:中划线
letter-spacing:字符间距(汉字与汉字之间,英文字母之间拆开)
word-spacing:词间距(只对英文单词有效)
可以为负数:字间距,词间距,首行缩进
list-style:修饰符的形状
disc:circle,square
list-style-image:url(“图片地址”);//修饰符替代为图片
list-style-position:outside(默认),inside(都是相对于li来说的)
list-style-type:none等价于list-style:none
border:大小 形态 颜色(没顺序)
border-left
border-left-style/width/color
先写个容器:宽高为0
border:20px solid transparent(或者rgba(0,0,0,0));
然后:border-left-style:red
background-color:背景颜色
background-image:背景图片
background-position:背景图片位置
关键字写法:left , center,right,top,bottom(水平和垂直都是center可以省略),具体像素(可以为负值)
background-size:背景定位(CSS3)
单位:px或者%(只写一个代表宽度,等比例缩放)
auto:不改变宽高
cover:等比例缩放填满整个容器,不会变形,某些部分可能无法显示
contain:缩放至某一边贴紧容器边缘
background-repeat:背景图是否重复
no-repeat,repeat-x,repeat-y,repeat
background-attachment:背景关联
scroll(滚动,默认)/fixed(固定)
background:color image repeat position/size attachment;
position和size的顺序不能错误
常见错误:
background:url(),url()
前面一个不要设置颜色,不然报错
line-height:60px;
height:60px;
float(浮动):
值:left,right,none
作用:在一行显示
元素默认文档流:从上至下,从左至右
浮动影响:
脱离文档流,浮动元素会挨着父元素的边缘,浮动影响后写的元素,不影响先写的元素
相同方向:先浮动的显示在前面
不同方向:左浮找左浮,右浮找右浮
浮动的先后是取决于在文档流中的位置,和CSS样式的顺序无关
贴靠现象:浮动最后一个元素超过父元素剩下的宽度,会找上一个元素贴上去,还不够的继续找上一个,宽度超过父元素直接在最下面
浮动是不遮挡文字的
登高不等宽,等宽不等高的两个div可形成图文结合
不可继承的:
所有元素可以继承:
内联元素可以继承;
块级元素可继承:
列表元素可继承:
表格可继承:
标准盒模型:
内容区(content),填充(padding),外边距(margin),边框(border)
怪异盒模型:
特点:
padding和border都在元素的宽高内部,不会把盒子撑大
组成:
内容区域;width,height,padding
边框:border
外边距:margin
触发条件:
触发怪异盒模型之后,在给元素添加border或者padding就不会把盒子撑大,也不需要去做减法了
也就是说占位高height+margin*2:
padding
padding-left:左内边距
padding-right:右内边距
paddingt-top
padding-bottom
综合写法;
padding:上下左右
padding:上下 左右
padding;上 左右 下
padding:上 右 下 左
特点:
margin
综合写法与padding一致
width= 左右内边距+左右边框+左右外边距
Height = 上下内边距+上下边框+上下外边距
加字符或者hr可以隔开,但是带来新的问题
只写一个方向的边距(不要写一个top,一个bottom,外边距集中在一个上)
可以通过父元素的内边距或者加边框阻隔(padding或border隔开)
水平方向是不会重叠的
也可以给父元素的第一格子元素加上浮动
overflow:hidden
值:
overflow可以解决外边距溢出问题(子元素外边距设置大了超出),但是子元素超出部分被隐藏
给父元素加上hidden,可以解决外边距重叠,但是超出部分隐藏
div里面的数字和字母没有空格是不会换行的,被解析成一个单词
clip;裁减超出部分
ellipse:省略号(一般用这个)
white-spacing:nowrap
overflow:hidden
text-overflow:ellipse
必须是单行文本才能设置文本溢出(多行文本可自行百度)
分块级元素,内联元素,内联块元素(CSS2.1增加)
block,如div,form,table,ul,li,dl等
特征:
inline,如:span,a,i,em,textarea,select
特征:
(上下外边距无效,上下内边距会遮挡文本或被文本遮挡)
inline-block,也属于内联(可以说只分两种,块级,内联)
img,input
特征:
多个空格和换行解析成一个空格,想要实现多个可以借助之前说的转义字符和
标签
这里的隐藏是不占位置的
行内块和行内元素的对齐方式(并列关系,垂直对齐)
top/middle/bottom
作用:改变两个元素的垂直对齐方式
下面是最常用的情况:
vertical-align:middle;
width:0;
height:0;
display:inline-block;
置换元素:浏览器根据元素的属性和标签,来决定具体显示的内容
img依靠src,input依靠type决定(记住这两个就行了)
非置换元素:不是置换元素的元素
基线:英文字母的基线正好是小写字母x的·正下方
普通流,浮动流,定位流
定位作用:改变元素的位置
position:static(默认),absolute,relative,fixed
参考点默认是浏览器的窗口
relative:相对定位
二级导航:
ul>li里的li设置为相对定位,,包含ul>li,ul设置相对定位
鼠标划过去会display:none
尽量少用定位
包含块就是为定位元素提供坐标,偏移和显示范围的参照物,最大为HTML
元素嵌套:
子用relative,父用absolute
定位元素层级关系:z-index
有定位元素才可以使用,值越大优先级越高,默认0/auto,可为负值
div{
width:200px;
height:200px;
background:#f00;
position:fixed;
left:0;
top:0;
right:0;
bottom:0;
margin:auto;
}
width:200px;
height:200px;
background:#f00;
position:fixed;
left:50%;
top:50%;
margin:-100px 0 0 -100px;
"#box1">
"box1">跳转位置
href里面装id选择器
使网页更加灵活,适应不用窗口大小和设备等。
外边距最好不要自适应
要写百分比必须加上这个
html,body{
height:100%;
}
宽度自适应:html,body{width:100%}或者不写
高度自适应:自适应元素高度:height:auto或者不写(靠内容撑起来)
子元素浮动可以加高度
子元素高度为百分比,那么父元素必须设置高度
定位时的坐标可以是百分比
实战技巧:
有的背景观察像素发现像素间颜色不一致(为图片),可以纵向切宽一像素 作为图片,然后repeat-x即可。
min-height:IE6不识别,height:在IE6识别成最小高
方法一:
min-height:60px;//IE6不识别
height:auto ! important;//IE6不识别
height:60px://IE6解析成最小高
方法2;
min-height:100px;
height:auto;//IE6不识别
_height:100px;//IE6识别成最小高
方法3:
min-height:100px;
height:100px;
值:visible显示;hidden隐藏
和display的区别:
都是显示隐藏
前者占据文档流,后者不占据
通过CSS设置对应的元素
单双引号都可以的
div ::after {
content:"添加的内容";
}
div::before {
content:"添加的内容";
}
content是必须的,后面可以跟空字符串表示不写内容
注意:下面只是用于块元素
选择器::first-line{}
选择器::first_letter{}
::before {
content:""
}
::after {
content:""
}
div:first-line{
必须是块元素
}
div:first-letter {
必须是块元素
}
原因:
子元素浮动,父元素没有设置高度
解决:
clear::after {
//伪对象选择器
content:".";//里面是有内容的
display:"block";
clear:both;//前三行效果就出来的
width:0;//可以不写
height:0;
visibility:hidden;
overflow:hidden;(超出宽0高0部分隐藏)
}
5.父元素也跟着浮动(不准使用,因为父元素产生了新的高度塌陷问题)
目的:引入这个模板可以省事,可被多个页面同时使用,比一个页面写一次要好
@charset "utf-8";
html,body,,ol,ul,lih1,h2,h3,h4,h5,h6,p,th,td,dl,dd,form,fieldset,legend,input,textarea,select{
margin:0;padding:0;}//去除这些元素自带的内外边距,不用星号因为*的范围大,有无效功
body{
font-size:16px; font-family: '微软雅黑';}
ul,ol,li{
list-style:none;}
h1,h2,h3,h4,h5,h6{
font-size:16px; font-weight: normal;}
b,strong{
font-weight: normal;}
i,em{
font-style: normal;}
a,u{
text-decoration: none;}
img{
border:0;display:block;//去除下边3px的像素}
input,fieldset{
outline: none;//去除框框的蓝色模糊光条border:0;}
.clear_fix:after{
//清除浮动
content:'.';
clear:both;
height:0;
width:0;
overflow:hidden;
display:block;
visibility: hidden;
}
.clear_fix{
//兼容IE浏览器zoom:1;}
.fs12 {
font-size:12px}//一直到font-size20px
.psa{
position:absolute;}//绝对定位
.psr {
position:relative}//相对定位
//背景色类,一般是网站主打色
.bgRed{
background-color:red;}
.fw_b{
font_weight:bold;}
.fw_n{
font-weight:none;}
//用得最多的
.fl {
float:left}
.fr {
float:right}
注意:要写在所有的link最前面
写在table里面:
border-spacing:边框间距,不能为负数
border-colspan:separate(默认)/collapse合并边框
table-layout:单元格宽度是否固定(加快运行速度)
auto(默认,自适应);fixed(固定宽度)
empty-cell:无内容单元格设置:show显示,hidden隐藏·
multiple:多选
"radio" value="man" name="sex">男
注意:name值要一致,不然不能单选
checked 或者 checked = "checked“ 表示默认选中(单选和多选)
"checkbox" name="" value="">
name值不同,也存在checked
disabled="disabled"或者disabled表示禁用
<select>//下拉列表
<option><option>//下拉列表项
<option><option>
<option><option>
select>
selected="selected"或者selected表示默认选中
name不是必须的
disabled有效
<textarea>textarea>
文本域属性:
resize:禁止拖拽,一般CSS设置宽高
cols:字符宽
rows:字符高
可以自由拖拽
<input type="file">
<fieldset>
<legend>legend>
fieldset>
<form>
<label for="male">Malelabel> //for里面套id选择器
<input type="radio" name="sex" id="male" />
<br />
<label for="female">Femalelabel>
<input type="radio" name="sex" id="female" />
form>
auto是基于总宽度——已知固定宽度获取到的,inline-block元素水平方向的属性没有总宽度的限制,所以margin设置为auto时,不知道如何取值,所以默认为0,于是没有我们的居中效果
自己也搞不懂需要常看链接
BFC是一个独立的布局环境,其中的元素不受外界影响,并且在一个BFC中,块盒与行盒(行盒有一行中的所有内联元素组成),都会垂直的沿着其父元素的边框排列
HTML根元素
添加了浮动的元素(除了none)
添加了定位的元素(absolute,fixed)
添加了display的元素(inline-block,table-cell,table-caption,flex,inline-flex)
元素添加了overflow:(visible除外)
内部的Box在垂直方向,一个接一个的放置
BOX垂直方向的距离由margin决定。属于同一个两个相邻的BOX的margin会发生重叠
每个盒子(行盒与块盒)的margin box的左边,与包含块border box的左边相接触(对于从左往右的格式化,否则相反),即使存在浮动也是如此
BFC的区域不会与float box重叠
BFC就是一个页面上隔绝的独立容器,容器里面的元素不会影响外面的元素。反之也如此。
计算BFC的高度时,浮动元素也参与了计算。
text-transform:capialize(首字母大写)/uppercase(全大写)/lowercase(全小写)
解决了margin叠加问题
解决了高度塌陷问题
解决了覆盖问题(两列布局):浮动后面跟标准流,标准流变为BFC就可以和浮动元素分开
1、两列布局,三列布局
2、解决高度塌陷(解决高度塌陷的问题)
3、解决外边距溢出的问题
重置样式:就是之前的public.css
@charset "utf-8";
html,body,ol,ul,li,h1,h2,h3,h4,h5,h6,p,th,td,dl,dd,form,fieldset,legend,input,textarea,select{
margin:0;padding:0;}//去除这些元素自带的内外边距,不用星号因为*的范围大,有无效功
body{
font-size:16px;
font-family: '微软雅黑';
}
ul,ol,li{
list-style:none;
}
h1,h2,h3,h4,h5,h6{
font-size:16px;
font-weight: normal;
}
b,strong{
font-weight: normal;
}
i,em{
font-style: normal;
}
a,u{
text-decoration: none;
}
img{
border:0;
display:block;//去除下边3px的像素
}
input,fieldset{
outline: none;//去除框框的蓝色模糊光条
border:0;
}
.clear_fix:after{
//清除浮动
content:'.';
clear:both;
height:0;
overflow:hidden;
display:block;
visibility: hidden;
}
.clear_fix{
//兼容IE浏览器
zoom:1;
}
不同浏览器去读取对应的css属性
渐变不是背景颜色,而是背景图
background-image也可以,但是background-color是错误的
让你在两个或多个指定的颜色之间平稳的过渡
background:linear-gardient(direction,color-step1,color-step2,…)
direction
默认to bottom 自上而下的变化
to right bottoim 自左上到右下
角度:水平线和渐变线逆时针之间的角度,0deg为自下而上,90deg为自左到右,可为负数
有的浏览器的标准旧的,0deg自左到右,90deg自下而上。
格式转换:90 -标准角度 = 非标准角度
stop:颜色分布位置,默认均匀分布,三个颜色默认每个33.3%。
background:-webkit-linear-gradient(left,red,green);
background:linear-gradient(to left,red,green);
不加to 需要兼容前缀,step可为像素或者百分比
由一点向四周渐变
background:radial-gradient(center,ellipse,closest-side,red,green);
第一个参数开始位置(可为单词或者两个百分比)
第二个参数形状(ellipse默认椭圆,circle默认圆形,容器为正方形时两者一样)
第三个参数:渐变到哪里停止,closest-side,farthest-side;closest-corner;farthest-corner
第四个参数:颜色
div{
background:repeating-linear-gradient (red,yellow 10%,green 20%);}
div{
background:repeating-radial-gradient(red,yellow 10%,green 20%);}
一定的时间内平滑的过渡(如鼠标点击,获得焦点,被点击等对元素改变的触发)
简写:
transition:all/具体属性值 运动时间 s/ms 动画类型 延迟时间
linear(动画类型:线性)
坐标系:水平x轴(向右为正),垂直y轴(向下为正)
translate(100px)水平向右移动100px
0.01~0.99缩小
接收角度(单位deg),如果参数为正值围着原点中心顺时针旋转,为负值围着原点中心逆时针旋转
一个值时表示水平方向的倾斜角度
第一个值为水平方向的倾斜角度
第二个值为垂直方向的倾斜角度
默认时元素的中心基点,transform进行的函数变换都是围绕着中心位置发生变化的
单位百分比或者像素
小总结
transform:
translate()两个参数,只写一个默认变x轴
rotate()默认第二个参数等于第一个参数,可以rotateX和rotateY
skew()两个参数,第一个水平第二个垂直
scale():一个参数:正值顺时针,负值原点逆时针
简记:
transform四特点:移缩斜转
在父元素中:prespective:1200px;
在子元素中:
transform:perspective(1200px);
通常只设置父元素,数值在900px~1200px之间
center center(中心)
left top
100% 100% 右下角
相对于2D多出来个z轴靠近屏幕为正,远离屏幕为负
transform-style属性:指定嵌套位置如何在3D空间中呈现
值:flat(默认,2D)和preserve-3d表示所有子元素在3D空间中展示
translateZ(t)和translate3D(tx,ty,tz)
rotateX(a)
rotateY(a)
rotateZ(a)
rotate3d(x,y,z,a)
x,y,z为0~1之间的的数值,围绕各自轴旋转的矢量值
a是角度值,旨在3D空间中的旋转,正值代表正旋转,负值代表逆时针旋转
scaleZ()和scale3D()两个功能函数
scale3D中,x,y为1时,tz表示在Z轴上等比例缩放
注:单独使用是没有任何效果,需要配合其他的变形函数才能一起使用
关键帧:
过渡动画只实现了第一帧到最后一帧这连个关键帧,而关键帧动画可以实现任意多关键帧,实现更复杂的动画效果
@keyframes mymove{
from{
初始状态值}
to{
结束状态值}
}
或者:
@keyframes mymove {
0%{
初始化状态值}
50%{
可以添加几个类似的关键帧}
100%{
结束状态属性}
}
相同点:随着时间改变的元素
不同点:transition需要触发一个事件;而animation在不需要任何事件触发的情况下也可以随时改变CSS样式
简写:
animation: mymove east-in-out 2s infinite alternate;
动画名 过渡类型 持续时间 循环次数 是否反向
动画名需要配合keyframes使用
过渡类型:
linear线性 ease-in由慢到快
ease:平滑 ease-out:由快到慢
step-start:马上跳到动画每一帧结束的状态
infinite
无限循环/也可以为数字表示循环次数
是否往返:
normal正常
reverse;反方向
alternate:现正向再反向,交替持续
alternate-reverse:先反向再正向,交替持续
没写的:动画的状态running/paused(暂停鼠标移入动画时)
文件名:
.html或者.htm
DOCTYPE不区分大小写
指定字符集编码
< meta charset=“UTF-8” >
不可以写结束标记的元素:(和平时一样)
br,col,embed,hr,img,input,link,meta
可以省略结束标记的语句:
li,dt,dd,p,option,colgroup,thead,tbody,tfooter,tr,td,th
基本和表单相关的元素(标签)
可以省略全部的标签元素:
html,body,head,colgrounp,tbody
也就是大框架可以省略,但是不要这么干,不然看不懂
属性值可以用单引号,可以用双引号(前端一向单双引号自由,不严谨)
小总结:
文件名
doctype
不可以写结束标记的标签
可以写结束标记的标签
可以省略全部的标签
属性上面的引号自由
<video src="">video>
<audio src="">audio>
属性:
<source>source>:写在媒体标签内部,后备资源供选择
type属性:
用于视频:video/ogg video/mp4 video/webm
用于音频:audio/ogg audio/mpeg
下面也是面试题:什么是优雅降级,渐进增强
渐进增强:由小到大
优雅降级:针对低版本,
保证最近本的功能,
针对高版本浏览器进行新效果交互等进行改造达到最佳效果体验,由大到小
区别:降级意味着往前看,渐进意味着向后看
a元素是讲了伪类选择器
双冒号(也可以单个)说了伪对象选择器
p.title {
background:red;
}
选中的是:
<p class="title">p>
同时满足多个属性选择器可以将中括号写在一起
e[attr]:是e元素,且具有att属性
e[attr="value"],e元素,并且attr="value"
e[attr~="value"]选取属性值中包含指定词汇的元素
e[attr^="value"]选取属性值是指定值开头的元素(类似正则的样子)
e[attr$="value"]选取属性值以指定值结尾的元素(类似正则的样子)
e[attr|="value"]选取必须带有指定值开头的属性值的元素,该值必须是整个单词
e[attr*="value"]:属性值包含指定值的某个元素
属性选择器简记
e[属性="value"] //只有等于表示必须是value(精准匹配)
等于号前是:(模糊匹配)
~ 包含value这个单词
^ 必须value开头
$ 必须value结尾
| 必须以value为整个单词开头
* 无论什么位置只要有这个单词就行
下面选择器你知道长什么样子吗
:first-child{第一个子元素}//不是第一个就不选中
:last-child{最后一个子元素}//不是最后一个就不选中
:nth-child(n){指定位置的子元素}(**n从0开始**,可为2n,2n-1,odd(奇数),even(偶数))
:only-child{唯一子元素}//不是唯一子元素不选择
双冒号不可以(那就是伪对象了)
div:nth-last-child(n){倒数第n个不是就不选择}
first-of-type:当前类型的第一个元素
last-of-type:最后一个当前类型的元素
nth-of-type(n)当前类型的指定位置的子元素
only-of-type{}:当前类型的指定位置的子元素
only-of-type{}当前类型下唯一的子元素
nth-last-of-type{}当前类型下倒数指定位置的元素
:root{}根元素选择器,其实就是HTML
: empty{}选择内容为空的元素(不叫空元素选择器),如选择a:emnpty{}选中a内容为空的元素
学习补充:浮动元素大小被撑起来后可以设置宽高,拥有块级特性
:enable{}可以输入的状态
:target{}点击关联元素的
:disabled{}禁用的状态
:checked{}选中的状态
:selection{}选中文字,修改背景颜色和文本颜色
:focus{}光标选中的状态
子元素选择器:
e>a: e的子元素a,最终选择的是a
区分后代选择器(子孙级别都选)
相邻兄弟选择器:
e+a e元素最近的a,最终选择a
{因为只能选择一个,按照加载顺序自上而下,第一个不会被选中}
通用兄弟选择器:e~a
e元素后面的所有a 最终选择a
text-shadow:文本阴影 垂直阴影 模糊度 阴影颜色;
单位都是px
可以用逗号连接多个
word-wrap:
normal:断字点换行(浏览器保持默认处理)
break-word:属性允许长单词或者URL地址换到下一行
word-break:
break-all:进行单词内断句
keep-all:文本不会换行,只会在半角空格或者连字符处换行
background-origin:背景图起始位置
backfround-clip:背景图裁减(图片不一定完整)
border-box从边框开始
padding-box:从内边距区域开始
content-box:从内容区开始
background-size:背景图大小
数值,百分比,contain(不会超出但可能填不满),cover(超出可能显示不全)
多个背景图:backfround:url(),url();
颜色模式:
hsl(色调,饱和度,亮度)
hsla
h(0~360)
s(0~100%)
l(0~100%)
a(0~1)
border-image是复合写法
border-image-source 用在边框的图片的路径。
border-image-slice 图片边框向内偏移(不加单位)。
border-image-repeat 图像边框是否应平铺(repeat)、铺满(round)或拉伸(stretch)
border-image-outset 边框图像区域超出边框的量(值是一个倍数)
border-radius:(左上) (右上)(右下) (左下)
border-radius:(左上) (右上左下)(右下)
border-radius:(左上右下) (右上左下)
border-radius:四个角
可以指定单个
下载图标
在页面种引入iconfont.css
调用对应图标的类名
box-shadow:水平阴影 垂直阴影 模糊度 阴影大小 阴影颜色 内外部阴影
默认outside(写了就错),inside(内部)
calc( 数值 - 数值 )
一定要注意空格
有的时候需要加前缀
如width:calc(100% - 200px);//连个元素浮动在一行
可以穿透div点中下面的div(没用过,看看知道就好)
不推荐看下面的部分,推荐链接阮一峰flex布局
display:flex,inline-flex(类似行内,行内块)
注:设置容器后子元素的float,clear,vertical-align都失效
元素默认在水平摆放;元素宽度由内容撑起来,高度和父元素一致
子元素为行内元素也可以设置宽高
特点:
flex-direction:主轴方向
值 | 意思 |
---|---|
row(默认) | 水平主轴(从左到右) |
row-reverse | 反向水平主轴(从右到左) |
column | 垂直主轴(从上到下) |
row-reverse | 垂直反向主轴 |
flex-wrap:是否设置换行
值 | 意思 |
---|---|
nowrap | 不换行 |
wrap | 换行 |
wrap-reverse | 反向换行 |
综合写法:flex-flow:flex-direction flex-wrap
justify-content:设置项目在主轴上的对齐方式
flex-start:起始位置
flex-end:终点位置
center:整体居中
space-around:两端平分(像外边距)
space-between:两端对齐(去除两端的外边距)
space-evenly:两端对齐(空隙间距一致)(有的不支持)
align-items:侧轴对齐方式
flex-start:起始位置
flex-end:终点位置
center:整体居中
baseline:文本底部对齐(容器对不对齐不参与)
stretch:拉伸(默认值,主轴水平方向拉升的是高度,否则是宽度)
align-content:侧轴多根轴向对齐方式(应该是换行之后产生多个交叉轴)
将整个一行作为一个项目
flex-start:起始位置
flex-end:终点位置
center:整体居中
space-around:两端对齐
space-between:两端对齐
stretch:(没设高度时默认自适应高度)拉伸
align-self
会覆盖align-item,对单个项目有效
order:项目排序
数值越小越靠前,可以为负值,默认是0
flex-grow:项目的放大比例
默认是0,即存在剩余空间也不放大
都为1就会等分剩余空间(剩余空间按照flex-grow的值按比例分配)
flex-shrink:项目的缩小比例
默认是1,不够时都等比缩小;若是有为0的,那么除了为0的都缩小
flex-basis:分配多由空间之前占据的空间(使用和height差不多)
默认值是auto,即项目本来大小
上面的总结起来就是flex属性(建议使用这个属性,不要拆开写,因为浏览器会推算相关值)
flex:flex-grow flex-shrink flex-basis (默认值0 1 auto)
快捷值:auto(1 1 auto) none(0 0 auto)
用的少,看看就好
@media all and (min-width:320px) {
body { background-color:blue;}
}
and 被称为关键字,其他关键字还包括 not(排除某种设备),only(限定某种设备)
(min-width: 400px) 就是媒体特性,其被放置在一对圆括号中。
all支持所有类型,screen支持屏幕
在vscode里面自动创建的模板中包含一个mate标签(H5只允许它为单标签)
<meta name="viewport" content="width=device-width, initial-scale=1.0">
不要手写,容易出错
width:宽度等于当前设备的宽度
initial-scale:初始缩放比例(默认设置1.0)
minimum-scale:允许用户缩放最小比例
maxmum-scale:允许用户缩放最大比例
user-scalable:用户是否可以手动缩放(默认no)
什么是物理像素
出场时你屏幕就决定了你的物理像素
逻辑像素
UI给你的设计图测出来的像素就是逻辑像素
css像素
你最终写的像素
设备像素比
这里需要查询文档,我这里离可能不准确
设备像素 | 设备像素比(物理像素/逻辑像素) | css像素 |
---|---|---|
750px | dpr = 2 | 375px |
640px | dpr=2 | |
1080px | dpr=3 |
常见单位
单位 | 表示什么 |
---|---|
px | 像素 |
em | 父元素大小,和font-size成倍数关系 |
rem | 根元素大小,和font-size成倍数关系 |
vw | 跟浏览器窗口大小相关,1000vw=屏宽,随着浏览器宽度变化而变化 |
vh | 同vw,是表示高度的 |
vmin | 选择vm和vh中小的作为基准 |
vmax | 选择vm和vh中大的作为基准 |
如果浏览器设置为1100px宽、700px高,1vmin会是较小的7px,而1vmax将是较大的11px。
然而,如果宽度设置为800px,高度设置为1080px,1vmin将会是较小的8px,而1vmax将会是较大的10.8px
动态设置font-size
注:要给body重置一下font-size,不然行内元素空格特别大
移动端布局:流式布局(文字流式,控件弹性,图片等比例缩放)
好处:横平竖直 ,对仗工整
display:grid/inline grid 网格布局
grid-template-columns:第一列 第二列 第三列(分列);
px
,%
,fr,
auto:自动填充列宽
repeat(列数,列宽)
auto-fill:自动根据列宽填充多少列
minmax(最小宽,最大宽)
最小宽可以是px,百分比,不可是fr
grid-template-rows:分行,同上
项目(子元素)
grid-column-gap:列间距 grid-row-gap行间距 grid-gap:行间距 列间距;
新版本可省略grid前缀
grid-template-areas:”第一列 第二列 第三列 第四列”
”第一列 第二列 第三列 第四列”
”第一列 第二列 第三列 第四列”
”第一列 第二列 第三列 第四列”
注:需要结合项目属性grid-area:列名 使用;
区域连接后必须是矩形
grid-auto-flow:row/column//未指定区域的子项的排列顺序,按照行或列去填
justify-items:项目在 单个网格中的水平对齐方式
start,end,center,stretch
align-items:项目在当个网格中的垂直对齐方式
start,end,center,stretch
综合写法:
place-items:垂直对齐方式 水平对齐方式
justify-content:网格整体水平对齐方式
align-content:网格整体垂直对齐方式
综合写法:place-content:垂直 水平
start
end
center
stretch
space-around
space-between
space-evenly
添加在项目上的:
grid-area:项目调用指定分区
grid-column-start起始列项
grid-column-end结束列项
grid-row-start起始行项
grid-row-end结束列项
综合写法:grid-column:起始/结束
grid-row:起始/结束
后续补充
浏览器兼容;
CSS bug(问题):
css hack(解决办法):
filter(过滤器):
IE常见bug:
常见问题:
bug1:
超链接里面的img,默认由蓝色边框
hack1:img{border:0/none;}
bug2:img下方自带3像素间距
hack2:img{display:block;}或img不换行(有的能解决)
bug3:浮动元素添加margin(在IE6下将解析双倍margin)
hack3:给元素添加display:inline;
bug4:默认高度,ie6-
hack4:font-size为0或overflow为hidden;
非IE BUG:
bug5:表单元素对齐不一致:
hack5:添加浮动
bug6:按钮元素大小不一致
hack6:统一大小或者用a标签模拟
使用其他的标签模拟大小,去掉input原有的边框
如果是图片按钮,那么就使用背景图,同时去掉input的背景色。
bug7: cursor:hand 指针 ie9-识别
hack9: cursor:pointer; 所有的浏览器都识别
bug8:opacity:0.5 ;IE低版本不识别
hack8:fliter:alpha(opacity=50);
过滤器:
bug9:最小高度设置
hack9:min-geight”100px;ie低版本不识别
_height:100px;IE低版本识别