网页上每个元素均可以看作一个盒子,他从内到外包括content,padding,border,margin. 举例: box-sizing:content-box
: width属性 === 内容区宽度。当border和padding变宽的时候,内容区宽度不变css
box-sizing:border-box
: width属性 === 内容区宽度 + padding 宽度 + border 宽度,当固定width的时候,调整border和padding的大小,内容区宽度会自动收缩。html
举例,好比说段落用 p,边栏用 aside,主要内容用 main 标签,看到标题用h1或者h2。 语义化的好处是易读、有利于SEO。html5
html5中新增长的标签,技术(api)(包括promise,localStorage,canvas等),统称为html5.面试
死背:canvas
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
复制代码
控制页面在移动端不要缩小显示。segmentfault
侃侃而谈api
一开始,全部页面都是给PC准备的,乔布斯推出 iPhone 3GS,让手机也能够访问PC端的页面,可是页面是不适应手机屏幕的,因此乔布斯的工程师想了一个办法,默认把手机模拟成 980px,页面缩小。后来,智能手机普及,这个功能在部分网站不须要了,因此咱们就用 meta:vp 让手机不要缩小个人网页。promise
手机页面不写meta viewport:浏览器
document.documentElement.clientWidth //980
复制代码
overflow: hidden
(方方反对) 用: .clearfix
清除浮动写在爸爸身上bash
.clearfix::after{
content: ''; display: block; clear:both;
}
.clearfix{
zoom: 1; /* IE 兼容 */
}
复制代码
.
类选择器,#
id选择器,input[type=text] [data-x] [target=_blank]
属性选择器
直接子代选择器>
后代选择器空格 ,
表明两个都选
伪类选择器:
input:focus
选择得到焦点的 input 元素。 a:hover
p:first-child
p:last-child
p:nth-child(1)
p:nth-child(even)
p:nth-child(odd)
p:before
p:after
input:enabled
选择每一个启用的 元素。 input:disabled
选择每一个禁用的 元素 input:checked
选择每一个被选中的 元素。
div{
border:1px solid red;
/*如下三行*/
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
}
复制代码
float
position:absolute
position:fixed
注意: position:relative
没有脱离文档流,只是相对于以前的位置定位,原来的地方还占据位置。position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;
SVG:SVG实际上是一段代码,浏览器能够解析这段代码,将它变成图形 优势:能够渐变,不会失真,能够动
我理解flex从两个方面去理解:
/*容器上:*/
flex-direction/* 弹性元素按主轴排列的方向*/
flex-wrap/*nowrap | wrap | wrap-reverse,主轴排列不下,是否换行 。默认是nowrap不折行。不会溢出。元素的弹性伸缩*/
flex-flow/*上面两个的缩写*/
justify-content/* 主轴对齐方式,五个属性*/
align-items/* 单行交叉轴的元素对齐方式。默认stretch(元素未在交叉轴上设置尺寸,将把交叉轴自动填满,有flex-start,end,center,baseline几个属性)*/
align-content/*多行交叉轴的对齐方式。flex-wrap: wrap的时候。stretch(这几行在垂直方向上占满) | flex-start(这几行挤在上面) | flex-end(挤在下面) | center(挤在中间) | space-between | space-around */
/*元素上:*/
order/* 元素排列次序*/
align-self/* 单个元素的align-items*/
复制代码
flex-wrap: nowrap;
时,元素会伸缩。 在元素上写:flex-shrink
默认为1,按比例缩小,占满一行flex-grow:
放大比例。默认为0,不放大。若是两个子元素flex-grow:3,flex-grow:2,那么意思就是剩下的空间按3:2分配。flex-basis
默认为为auto
。若是有width
,就由width
决定,若是没有width
,就由内容的宽度决定。
flex-basis
有数值。忽略width
,由flex-basis
决定flex-basis:0
由内容宽度决定。由于他的优先级比width
高flex
是上面三个的缩写。
flex: 1 = flex: 1 1 0%
既之内容的大小(无论width是多少) 按比例放大或缩小,占满一行 -flex: auto = flex: 1 1 auto;
既考虑width, 按比例放大或缩小,占满一行flex: none = flex: 0 0 auto;
不放大也不缩小,width是多少,就是多少经常使用于固定尺寸 不伸缩width: calc(50% - 10px);
宽度100%会把父盒子撑破, 解决方法:
box-sizing:border-box;
width: calc(100% - 10px);
圣杯布局和双飞翼布局 是老的布局方式,2012年之前流行,如今已不流行,可是面试可能会考察到. why it?
原理:实际上都用了浮动和负边距的特性。 双飞翼实现方法: 1先所有fl 2main width100% 3 左边的一块 margin-left: -100%; /4/ 右边的一块 margin-left: -150px; /5/ 4.main.wrap{ margin-left: 100px; /6/ margin-right: 150px; /6/ background: blue; /7/ height: 350px; /7/ } 双飞翼:js.jirengu.com/fevifumike/…
内部元素彻底包起来(float等),外部元素界限分明,不重叠。
面试官问的时候就说:
@media (max-width: 768px){/*0-768*/
body{
background-color: blue;
}
}
@media (max-width: 425px){/*0-425*/
body{
background-color: red;
}
}
复制代码
2.加上meta viewport
历史缘由:最开始手机浏览器(苹果三)会在本身的三四百像素的手机上模拟980像素的显示效果,而后让用户本身去缩放,查看网页. 那么就告诉浏览器不要缩放网页,手机屏幕是多少像素,就显示多少像素的网页.使用下面的代码<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
复制代码
手机端什么CSS属性均可以用,不用考虑兼容的问题
动态 REM是手机专用,是如何适配全部手机的方案。 em
:一个m的宽度.就说是一个汉字的宽度.这个单位是相对于font-size的 rem
:root em,根元素的font-size
.即 <html>
的font-size
.rem是相对于html的font-size的.
vh
:视口高度,总共100vh
vw
:视口宽度,总共100cw
pc端只须要选一个布局(flex或者float),而后定宽就能够了。可是手机端不行,由于屏幕太多了 解决方法:
动态rem: 由于rem
这个单位跟<html>
标签的font-size
挂钩。那么用js
将<html>
标签的font-size
与页面宽度挂钩(pagewidth),那么rem
这个单位就间接地与页面宽度挂钩了。
<head>
<meta charset="utf-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <title>动态REM</title> <script></script> </head> 复制代码
而后布局等大单位就用rem,可是border,font-size等小单位,还用px便可,由于这些单位就算统一,在任何手机上的表现都没有多少影响。
这样写以后,10rem就是页面宽度。这样就能够总体按比例缩放了。
伪类: :hover :focus :active :visited :link :first-child ,:last-child ,nth-child()用来选取不一样状态的元素 伪元素: ::before ::after ,实际存在的元素,用content:''来作小三角形,小圆点
html5标签header footer main artical section aside nav,有点:若是都用div或者span来着,那么不清楚每一部分的含义,语义化,结构清晰,提升可读性。有利于seo,好比标题是h1,爬虫爬取数据会优先爬取标题。
DOCTYPE 规定使用哪一个版本的html 使用html5
块级元素:div p header footer main artical section aside nav
行内元素:span、a、b、i,strong
行内块元素:img,input,button