1.HTML标签
1.1.常用标签
- 标题标签:h1-h6
- 段落标签:p
- 换行标签:br
- 没有语义标签:div span
- 链接标签:a(后面target = _blank为打开新页面,href = # 为空链接,#id为锚点链接)
- 空格标签: 
- 小于标签:<
- 大于标签:>
- 表格标签:table(border=1为边框为1,cellspacing=0为相邻距离为0),tr为表格的行,th为单元格表格的头,td为表格的单元格内容,thead为表格的头部,tbody为表格的主体,rowspan为跨行合并单元格,clospan为跨列合并单元格
- 列表标签:ul li(list-stype:none为去掉小圆点)
- 有序列表:ol li
- 自定义列表:dl dt dd
- 表格标签:form(action=url,method为传输方式)
- 输入表单元素:input(id="“来作为标识)
- 文本标签:label(配合input使用,for="input的id")
- 下拉表格:select(option为内容)
- 文本域标签:textarea
1.2.查阅css文档
2.CSS样式
2.1.字体属性
- 字体样式:font-amily
- 字体大小:font-size
- 字体粗细:font-weight(加粗:bold,也可以是700)
- 字体类型:font-style(斜体:italic)
2.2.文本属性
- 字体颜色:color
- 对齐方式:text-align(水平居中对齐:center)
- 装饰文本:text-decoration(去除效果:none,下划线:underline,划线:line-through)
- 文本缩进:text-indent(文本段落缩进,2个字体就是2em)
- 行间距:line-height(设置和高度一样高,就可以垂直居中)
2.3.伪类选择器
- 鼠标移动到链接上:a:hover
- 鼠标未选择过:a:link
- 鼠标点击过链接:a:visited
- 鼠标正在按下链接:a:active
- 获得光标的输入表单:input:focus
2.4.元素显示模式
- 块级元素:宽度默认100%,独占一行,如div
- 行内元素:一行可显示多个,高宽设置无效,设置内边距无效,默认宽度为本身内容宽度,如span
- 行内块元素:可以设置宽高,内边距,一行可显示多个,如img,input
- 其它元素转换为块级元素:display:block(元素就可以设置宽高)
- 其它元素转换为行内元素:display:inline(元素可以一行展示,少用)
- 其它元素转换为行内块元素:display:inline-block(元素就可以拥有设置宽高,一行可显示多个)
2.5.CSS背景
-
背景颜色:background-color
-
背景图片:background-image: url('')
-
背景平铺:background-repeat(不重复:no-repeat)
-
背景图片位置:background-positon(可以用center top方位,也可以用数字)
-
背景随着滚动设置:background-attachement(滚动:scroll,不动:fixed)
-
半透明背景颜色:background: rgba(0, 0, 0, 0.3) (透明度为0.3)
-
综合写法:background: url(' ') no-repeate fixed center top (没有规定位置顺序)
-
背景图片大小:background-size(cover:全部覆盖,图片可能有裁剪,50%: 一半,contain:图片扩展到最大尺寸,还是等比例,不过可能有空白区域)
-
背景线性渐变:background:liner-gradient(left,red, blue)起始方向 颜色1,颜色2
-
一般用法:作为背景图,小图片和文字一起
width: rpx; height: rpx; background: url('') no-repeat; background-size: 100%;
2.6.盒子模型
- 边框宽度:border-width
- 边框颜色:border-color
- 边框样式:border-style(实线:solid,虚线:dashed,点线:dotted)
- 边框方位:border-bottom,border-top,border-left,border-right
- 边框圆角:border-radius(设置50%为本身宽度一半,来达到圆形效果)
- 边框方位圆角:borer-top-left-radius
- 综合写法:border: 1px solid #eee
- 内边框:padding(上右下左原则,顺时针,盒子有宽度和高度时,指定内边距,会撑大盒子,消除需要使用box-sizing)
- 外边距:margin(上右下左原则,顺时针)
- 盒子阴影:box-shadow(x, y, blur, spread, color, inset,x:水平阴影,y:垂直阴影, blur:模糊距离,spread:扩展距离,color:阴影颜色,inset为内阴影,例子:box-shadow: 4px 4px 115px #eee)
- 文字阴影:text-shadow(例子:5px 5px 6px raba(0, 0, 0, 0.3))
2.7.css浮动
- 说明:浮动最经典就是让多个块级元素一行内排列显示。
- 左浮动:float: left ,右浮动:float: right.
- 特性:浮动会脱离标准流,浮动的盒子不再保留原来的位置,浮动会具有行内块元素属性,大小根据内容决定。
- 文字环绕效果:浮动不会压住文字,文字会围绕浮动元素,如设图片文字环绕。
清除浮动方式:
方式1:clear:both。
方式2:父元素overflow:hidden。
方式3(推荐):
clearfix:after {content:"";display:block;height:0;clear:both;visbility:hidden}
2.8.css定位
- 相对定位:position:relative (移动位置靠自己的位置而定,原来的位置还继续保留,典型的作用是给绝对定位当爹)
- 绝对定位:position:absolute(元素移动位置是相对于有定位的祖先元素的,经典的是子绝父相)
- 固定定位:position:fixed(以浏览器为可视窗口为参照移动元素,可以在浏览器滚动的时候保留位置不变,不会随着滚动而滚动)
- 粘性定位:postion:sticky(必须加上方位如top才生效,以浏览器为可视窗口为参照移动元素,跟页面滚动搭配使用,IE不支持)
- 叠放次序:z-index(数值越大,盒子越靠上,默认为0)
2.9.元素的显示和隐藏
- display:none,隐藏对象,隐藏元素后不再占有原来的位置。
- display:block,除了转为块级元素,还有显示意思。
- visibility:hidden,隐藏对象,继续占有原来的位置。
- visibility:visible,元素可见。
- overflow:hidden,溢出部分隐藏。
- overflow:scroll,溢出部分显示滚动条,不溢出也显示滚动条
- overflow:auto,再需要的时候显示滚动条
2.10.界面样式
-
鼠标样式:cursor (小手样式:pointer,禁止样式:not-allowed,文本样式:text)
-
轮郭线:outline: none(取消)
-
文本域禁止拖动:resize: none
-
垂直居中:vertical-align(一般图片文字一行的时候用到)
-
单行文字省略号:
white-space:nowrap,overflow:hidden,text-overflow:ellipsis -
多行文字省略号:
text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
3.CSS属性
3.1.css特性
- 层叠性:就近原则
- 继承性:子承父业,子类可以继承父类的属性
- 优先级:继承或* < 元素 < class < id < style < !important
3.2.css属性顺序
- 布局定位属性:display, position, float, overflow
- 自身属性:width, height, margin, padding, border, background
- 文本属性:color, font, text-decoration, text-align, vertical-align, white-space, berak-word
- 其它属性:content, cursor, border-radius, box-shadow, text-shadow
3.3.小图标
- 精灵图:移动背景图片位置,background-position来显示位置,下左为负数。
- 字体图标:本质是字体,展示的是图标,可以改变颜色大小,参考阿里的iconfont字库,样式简单既可以使用。
- 三角形:width,height:0,border:10px solid transparent,border-top-color:pick,盒子宽高为0,设置一个边框,3个方向透明,1个方向有颜色,就可以显示三角形。
3.4. 2倍精灵图
移动端,在firework里面把精灵图等比例缩放到原来的一半之后根据大小测量坐标。
注意:代码里面的background-size也要写,大小为精灵图原来宽度的一半。
4.CSS3新样式
4.1.新样式
-
input[value] {},必须是input,且具有value
-
input[type=text]{},必须是input,且type为text
-
ul li: first-child,第一个子元素
-
ul li: last-child,最后一个字元素
-
ul li: nth-child(2),第2个子元素
-
ul li: nth-child(n), n可以是数字,公式。从0到n
-
ul li: nth-child(even),偶数
-
ul li: nth-child(odd),奇数
-
ul li: nth-child(2n),偶数,也可以说是2的倍数
-
ul li: nth-child(2n+1),奇数,也可以说是2的倍数+1
-
ul li: nth-child(n + 2),第2个开始
-
ul li: nth-child(-n + 2),前2个,包含2
-
nth-of-type(n),同上效果,并且对于相同子类可以排序。
-
::before,在元素内部的前面插入内容,一般为伪元素使用,必须设置content,需要设置display:block才可以设置宽高。一般使用绝对定位来调整位置。
-
::after,在元素内部的后面插入内容。
-
box-sizing: content-box(盒子大小为padding + width + border)
-
box-sizing: border-box(盒子大小为width,padding和border不会撑开盒子大小)
-
filter:blur(5px),滤镜,模糊大小,数值越大越模糊
-
calc执行计算:width:calc(100% - 80px)
4.2.过渡动画
- transition:要过渡的属性 花费时间 运动曲线 何时开始(后面2个可选),坚持一个原则:谁做过渡给谁加。例子:transition: width .5s, height .5s。常用:taransition: all 0.5s。一般配合 :hover 使用,如:div:hover{width:500px}表示鼠标移动过去宽度动画变成500px。
- translate:转移移动,例如:transform: translate(x, y)。也可以直接用translateX(x),translateY(y)。这个不会影响其它位置,可以移动相对于自身的50%。如translateX(50%)。
- rote:转换旋转,例子:transform:rotate(45deg),表示顺时针旋转45度。默认中心点是50% 50%,即center center(方位名词)。可以通过transform-orgin: x y转换中心点。
- sacle:转换缩放,例子:transform:scale(x, y),里面写的数字就是倍数,(2, 2)就是2倍的意思,直接简写(2)也行。不会影响其它盒子,默认为中心点缩放。如果变大,可以通过overflow:hidden来隐藏放大的区域,达到动画的效果,如:div img: hover{transform: sacle(1.1)},表示鼠标移动到图片,图片放大1.1倍。
- 综合写法:div: hover{transform: translate(150px 150px) rotate(180deg) scale(2)}。顺序会影响转换效果,当我们有位移属性,需先把位移属性放在最前面。
4.3.动画
先定义动画序列,再使用动画。例子:
@keyframes move {
0% {
transform: translate(0px)
}
100%{
transform: translate(100px)
}
}
div {
animation-name: move;
animation-duration: 2s;
}
0%表示动画开始,100%动画完成,中间想要50%等也可以,可以用form to来代替0%和100%也行,里面的百分比就是总时间的划分。div表示使用动画名称move,时间为2s,达到效果是移动x轴100px。
- animation-name:动画名称
- animation-duration:动画时间
- animation-delay:何时开始
- animation-timing-function:运动曲线(ease:低速开始加速,慢速结束。linear:匀速)
- animation-itearation-count:重复次数(infinite:无限)
- animation-direction:重复执行时是否反方向播放(alternate:反方向)
- animation-fill-mode:动画结束状态(backwards:返回起点,forwards:停留原地)
- animation-play-state:动画状态(pause:暂停)
- 常用综合写法:animation: name duration timeing-function delay
4.4. 3D转换
- tarnslate3d,translate3dX(x),x轴转换。translate3dY(y),y轴转换。translate3dX(z),z轴转换。正面是z轴,上下是x轴,左右是y轴。可以用左手原则来判断方向是哪面正。
- perspective:透视。不透视的话看不到z轴效果。
- transform-style:3D呈现(preserve-ed开启立体空间)
4.5.最大最小宽度
-
max-width:最大宽度
-
min-width:最小宽度
body { width: 100%; max-width: 640px; min-width: 320px; margin: 0 auto; background: #fff; font-size: 14px; color: #666; line-height: 1.5; }
5.布局
5.1.flex布局
原理:弹性布局,任何一个容器都可以指定定位flex布局,通过父盒子添加flex属性,来控制子盒子的位置和排序方式。通过flex布局,子元素的float,clear,vertical-align属性失效。
父元素属性:
- flex-direction:设置主轴方向(row左到右,column上到下)
- justify-content:设置主轴上子元素的排列方式(center:子元素居中对齐,space-around:平分剩余空间,space-between:先到两边贴边,再分配剩余空间,space-evenly:空间均匀)
- flex-warp:设置子元素是否换行(warp:换行)
- align-items:单行排序时设置侧轴上的子元素排列方式(center:垂直居中)
- align-content:多行排序时设置侧轴上的子元素排列方式(flex-start:顺序排序,center:垂直中间排序,space-between:两边排序空出中间,space-around:平分空间排序)
- flex-flow:column wrap。简写。
子元素属性:
-
flex:定义子项目剩余分配空间,表示占多少份,默认为0,可以用flex:1表示平分剩余空间,数字越大分配越多。多行的时候,例如4个一行,可以用相对于父级百分比25%来写。
-
align-self:控制子元素自己在侧轴上的排列方式。
-
order:属性定义项目的排列方式,默认为0,-1可以排在前面,越小越靠前。
-
flex-shrink:默认为1,空间不足的时候,该item缩小,为0则不缩小。
-
flex: 0 表现为最小内容宽度, 场景不多
-
flex: none 表现为最大内容宽度,如按钮内容文字固定不换行,宽度为内容宽度就适用该属性,适用于不换行的内容固定或者较少的小控件元素上。
-
flex: 1 平分比例, 充分分配容器的尺寸,适合等分布局。
-
flex: auto 元素充分利用剩余空间,但是各自的尺寸按照各自内容进行分配,适合基于内容动态适配的布局。
5.2.REM布局
原理:rem是相对于html元素字体大小来说。如html{font-size:12px}
媒体查询:可以根据不同的屏幕尺寸改变不同的样式,样式有层叠性,最好从小到大来写。
- @media mediatype and not noly
- @media screen and(max-width: 800px) {body{样式}}
适配方案:
- less + 媒体查询 + rem:设计稿尺寸宽度基本以750为准,页面的rem值=元素大小750/划分的等分。例如750/15等分,则html{font-size: 50px}。
- flexible.js + rem,分成10等分,再设置rem(已不用)
推荐链接:
6.CSS功能问题
6.1.水平居中方式
块级盒子有默认宽度,可以使用margin: 0 auto来让块级盒子水平居中,行内元素或者行内块元素就用text-align:center来居中。
6.2.绝对定位居中方法
left: 50%, margin 自己盒子一半。或者left:50%,tarnsform: translateX(50%)
6.3.相邻元素外边框
相邻的边框会合并最大的,建议设置一个就好。border-collapse: collapse可以让相邻的边框合并在一起,表格的可以用到。
6.4.嵌套块元素都设置外边距问题
都设置会塌陷最大的值,解决方案可以设置父元素内边距来代替子元素外边距,或者设置边框,或者overflow:hidden也可以解决。
6.5.清除内外边距
*{margin: 0, padding: 0}
6.6.鼠标移动显示遮罩层
class mask{display:none} class:hover mask{display:block}
6.7.图片底部空白
verical-align:middle,top,bottom都可以解决。
6.8.flex=1和text换行冲突问题
方案1:flex=1的视图,使用overflow:hidden,或者min-width=0
方案2:冲突的视图,添加flex-shrink防止被压缩**。**