網頁上每個元素均可以看作一個盒子,他從內到外包括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