1.<div class="parent"><div class="child"></div></div>,父元素和子元素寬高不固定,如何實現水平垂直居中。css
方法1:html
<style type="text/css">瀏覽器
html,body{height: 100%;}佈局
body{ margin: 0;display: flex; justify-content: center; align-items: center; }flex
.parent{ display: flex; justify-content: center; align-items: center;}網站
</style>搜索引擎
方法2:spa
html,body{height: 100%;}3d
body{ margin: 0;display: flex;}orm
.parent{ border: 1px solid red; display: flex;margin: auto;}
.child{ border: 1px solid blue; margin: auto;}
方法3:
<style type="text/css">
body{ margin: 0;}
.parent{position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%);}
</style>
2.分別實現骰子中的 '一點' 和 '三點' 的佈局。
一點的佈局:
<div>
<span></span>
</div>
<style type="text/css">
body{ margin: 0;}
div{width: 200px; height: 200px; border: 1px solid #000; display: flex; justify-content: center; align-items: center;}
span{width: 30px; height: 30px; background: #f00; display: block; border-radius: 50%;}
</style>
三點的佈局
<div>
<span></span>
<span></span>
<span></span>
</div>
<style type="text/css">
body{ margin: 0;}
div{width: 200px; height: 200px; border: 1px solid #000; display: flex; justify-content:space-between; padding: 20px;}
span{width: 30px; height: 30px; background: #f00; display: block; border-radius: 50%;}
div span:nth-child(1){ align-self: flex-end;}
div span:nth-child(2){ align-self:center;}
</style>
3.簡述選擇器~和+的區別。
1).相鄰兄弟選擇器。選擇有相同父元素的兩個挨着的元素的後一個元素。語法:元素1 + 元素2 {聲明}
例如1:
h1 + p { color:red;}
HTML中:
<h1>······</h1>
<p>·······</p> //能夠匹配
<a>······</a>
<p>·······</p> //不能夠匹配
例如2:
li + li { color:red;}
HTML中:
<ul>
<li>······</li>
<li>······</li> //能夠匹配,上一個<li>的兄弟
<li>······</li> //能夠匹配,上一個<li>的兄弟
</ul>
2).普通兄弟選擇器。選擇有相同父元素的兩個元素中,第一個元素後全部的第二個元素。語法:元素1 ~ 元素2 { 聲明}
例如:
h1 ~ p { color:red;}
HTML中:
<h1>······</h1>
<p>·······</p> //能夠匹配
<a>······</a>
<p>·······</p> //能夠匹配
<h2>······<p>···</p>······</h2> //不能夠匹配
4.簡述box-sizing的有效值以及所對應的盒模型規則。
box-sizing 屬性容許您以特定的方式定義匹配某個區域的特定元素。
語法:box-sizing: content-box|border-box|inherit;
1)box-sizing:content-box;這是由 CSS2.1 規定的寬度高度行爲。寬度和高度分別應用到元素的內容框。在寬度和高度以外繪製元素的內邊距和邊框。是默認值。若是你設置一個元素的寬爲100px,那麼這個元素的內容區會有100px 寬,而且任何邊框和內邊距的寬度都會被增長到最後繪製出來的元素寬度中
2)box-sizing:border-box;爲元素指定的任何內邊距和邊框都將在已設定的寬度和高度內進行繪製。告訴瀏覽器去理解你設置的邊框和內邊距的值是包含在width內的。也就是說,若是你將一個元素的width設爲100px,那麼這100px會包含其它的border和padding,內容區的實際寬度會是width減去border + padding的計算值。大多數狀況下這使得咱們更容易的去設定一個元素的寬高。
3)box-sizing:inherit;;規定應從父元素繼承 box-sizing 屬性的值
5.flex中元素的margin是否會合並?
不會合並
6.簡述align-items和align-content的區別。
align-items屬性適用於全部的flex容器,它是用來設置每一個flex元素在交叉軸上的默認對齊方式。若是是多行多行容器,多行和多行之間是有間距的。
align-content有相同的功能,可是align-content屬性只適用於多行的flex容器,有一個重點就是多行,而且align-content在對齊的過程當中,若是是多行多行容器,多行和多行之間的間距是沒有的。
單行容器:
多行容器:
7.簡述data:屬性的用法(如何設置,如何獲取);有何優點?
data-* 的值的獲取和設置,2種方法:
1)傳統方法
getAttribute() 獲取data-屬性值;
setAttribute() 設置data-屬性值
2)HTML5新方法
例如 data-href
dataset.href 獲取data-href屬性值
dataset.href = 'http://baidu.com' 設置data-href屬性值
傳統方法無兼容性問題,可是不夠優雅、方便
HTML5新方法很優雅、方便,可是有兼容性問題,能夠在移動端開發或不支持低版本瀏覽器的項目中使用
優點:自定義的數據可讓頁面擁有更好的交互體驗(不須要使用 Ajax 或去服務端查詢數據)。
8.簡述title與h1的區別,b與strong的區別,i與em的區別。
1)title與h1的區別:
定義:title是網站標題,h1是文章主題
做用:title歸納網站信息,能夠直接告訴搜索引擎和用戶這個網站是關於什麼主題和內容的,是顯示在網頁Tab欄裏的;h1突出文章主題,面對用戶,是顯示在網頁中的.
2)b與strong的區別:
從視覺上效果觀看b與strong是沒有區別的,從單詞的語義也能夠分析得出,b是Bold(加粗)的簡寫,因此這個B標記所傳達的意思只是加粗,沒有任何其它的做用,而Strong咱們從字面理解就能夠知道他是強調的意思,因此咱們用這個標記向瀏覽器傳達了一個強調某段文字的消息,他是強調文檔邏輯的,並不是是通知瀏覽器應該如何顯示。
3)i與em的區別:一樣,I是Italic(斜體),而em是emphasize(強調)。
9.什麼是標準文檔流?
標準文檔流:網頁在解析的時候,遵循於從上向下,從左向右的一個順序,而這個順序就是來源於標準文檔流。
標準文檔流等級,分爲兩種等級:塊級元素和行內元素;
塊級元素:
1).霸佔一行,不能與其餘任何元素並列
2).能接受寬、高
3).若是不設置寬度,那麼寬度將默認變爲父親的100%,即和父親同樣寬
行內元素:
1).與其餘元素並排
2).不能設置寬、高。默認的寬度就是文字的寬度
10.z-index是什麼?在position的值是什麼時能夠觸發?
z-index 屬性設置元素的堆疊順序。擁有更高堆疊順序的元素老是會處於堆疊順序較低的元素的前面,當脫離文檔流內容較多,而且相互重疊的時候,就有可能發生本想徹底顯示的內容被其餘內容遮擋的結果,這時咱們就須要人爲指定哪一個層在上面,哪一個在下面,z-index屬性就是幹這個用的。注意:Z-index 僅能在定位元素上奏效.
在position的值是relative、absolute、fixed、sticky時候能夠觸發
十一、PC端經常使用的佈局方法
固定佈局、浮動佈局、定位佈局、流式佈局、彈性佈局
12 佈局 左邊20% 中間自適應 右邊200px 不能用定位
方法1:
<div class>>left</div>
<div class>>center</div>
<div class>>right</div>
<style type="text/css">
body{ margin: 0; display: flex;}
.left{width: 20%; height: 200px; background: red;}
.center{height: 400px; background: blue; flex-grow: 1;}
.right{width: 200px; height: 600px; background: pink; }
</style>
方法2:
<div class>>left</div>
<div class>>right</div>
<div class>>center</div>
<style>
body{ margin: 0; }
.left{width: 20%; height: 200px; background: red; float: left;}
.center{height: 600px; background: blue; margin-left: 20%; margin-right: 200px;}
.right{width: 200px; height: 400px; background: pink; float: right;}
</style>
方法3:
<div class>left</div>
<div class>>right</div>
<div class>>center</div>
<style type="text/css">
body{ margin: 0; }
.left{width: 20%; height: 200px; background: red; float: left;}
.center{overflow: hidden; height: 400px; background: blue;}
.right{width: 200px; height: 600px; background: pink; float: right;}
</style>