1、(×)css盒子模型?
border-box和content-box
width部分說的很亂
現在我知道了,确實是width,offset隻是為了好計算的
2、(×)垂直居中,有幾種方法
說了flex、position,vertacal-align,line-height 那如果是就父元素呢。行内塊又怎麼辦
為什麼記不住?死知識記不住?css真難纏
(1)行内
父元素水準:text-align :center
父元素垂直:line-height設定成和height一樣
也正是因為行内,是以都要設定在它外層的盒子身上!!(父元素不能設定成100%
2、塊級
(1)外position relative
内absolute,top: 50%;left: 50%;
此時是這樣,然後平移自身的一半 transform: translate(-50%,-50%);
tranform:改變,使改變
translate:轉化,翻譯,移動,本來這個就是往哪裡移動的
記的話就是me
【或者是知道了具體的寬高,那就寫margin-top和left的負值】
(2)flex布局,IE是有些相容問題的。都在父級
(3)table布局也是實作方法的一種,但不太常用~
水準① display: table-cell;
vertical-align: middle;以上這兩種就已經實作了 垂直居中
垂直② text-align: center;
行内:直接就ok了【這就是上面的那個方法】
塊:這個一定要給塊級子元素設定一個 display: inline-block 才能用
垂直③ margin 0 auto
快:如果子元素是div這種這個ok
行内就不行了

3、(×)清除浮動,幾種方法
說了flex、position、overflow hidden,設定before僞元素
為什麼就還在往後問??
原因:排版會超出父元素,甚至會影響兄弟元素
【首先解釋部分】
eg:父topDiv 浮動floatDiv (左浮)子textDiv / 父的兄弟bottomDIv
首先 textDiv設定clear left
(1)通過上面的樣式,
.textDiv
告訴浏覽器,我的左邊不允許有浮動的元素存在,請清除掉我左邊的浮動元素。然而,因為浮動元素( .floatDiv
)位置已經确定,浏覽器在計算 .textDiv
的位置時,為滿足其需求,将 .textDiv
渲染在浮動元素下方,保證了 .textDiv
左邊沒有浮動元素。同時可以看出,父元素的高度也被撐起來了,其兄弟元素的渲染也不再受到浮動的影響,這是因為 .textDiv
仍然在文檔流中,它必須在父元素的邊界内,父元素隻有增加其高度才能達到此目的,可以說是一個意外收獲。( clear
的值為 both
也有相同的效果,通俗了解就是,哪邊不允許有浮動元素,clear就是對應方向的值,兩邊都不允許就是 both
)
(2)如果先孩子,再float元素(不行,因為先确定子元素,浮動另起一行就影響不到了)(是以也有個局限,最好的還是用空的代替)
.textDiv
的位置先确定了,于是浮動元素就緊接着 .textDiv
下方渲染在父元素的左側。然而,父元素的高度并沒有被撐起來,沒有将浮動影響“内化”,導緻浮動影響到了接下來的元素排版。
實際上,這裡主要是為了清除浮動,撐起來父元素是個附屬品
(3)根據這個思路,因為不能确定是否父元素的最後一個元素能否做到clearboth 更為通用的是添加一個blank來清除
<div class="blankDiv"></div>
注意必須是塊級元素,否則無法撐起父級元素高度。
(是因為為了滿足這個塊級的clear要求,父元素額外定位的,行内的話就沒有高度了)
(4)同樣的 原理 隻是利用僞元素來做都不用加新元素了
原理是,想讓after的左邊也沒有僞元素,這樣兄弟就正常了,底部和父元素的邊框也正常了,
可以看到before是完了才另起一行的,after才能碰到float,是以就在after身上設定clear both
設定block是必須要有高度才能有能力撐起來,哪怕高度是0,也是有那個能力在的…… 如果是行内的話就直接被忽略了塊元素不會!
(5)父元素 overflow: auto;
這裡的overflow值,可以是除了"visible"之外的任何有效值
副作用比如,scroll值會導緻滾動條始終可見,hidden會使得超出邊框部分不可見等
因為bfc:BFC在計算高度的時候,内部浮動元素的高度也要計算在内。也就是說,即使BFC區域内隻有一個浮動元素,BFC的高度也不會發生塌縮,高度是大于等于浮動元素的高度的。
display inline -block也可以bfc,但是
在各種建構BFC的方式中,
overflow
方式可能是外部影響更可控的一種是以也是最常用
【其次解決方案】
解決方案:看了半天,一般這三個是最主流的:
(1)比如有三個浮動的元素,再加一個浮動的子元素,并設定clear: both
語義化不太好
(2)父元素overflow:hidden,形成bfc(scroll也可以)
(3)父元素僞元素
.clearfix:after{/*僞元素是行内元素 正常浏覽器清除浮動方法*/content:"";display:block;clear:both;}.clearfix{*zoom:1;/*ie6清除浮動的方式 *号隻有IE6-IE7執行,其他浏覽器不執行*/}
其他的bfc會有一些問題(子元素它确實沒有影響到外部了,這個影響是父元素影響到了外部)
QAQ bfc呢,也是
overflow(不是visible)
display flex 、inline-block
position(ab,fix)
float(right left
(但首先bfc有一些問題,尤其是下面那兩個,其次你講bfc太混亂了人家不懂)
附贈補充:
1、僞類
僞類是選擇器的一種,它用于選擇處于特定狀态的元素,比如當它們是這一類型的第一個元素時,或者是當滑鼠指針懸浮在元素上面的時候。它們表現得會像是你向你的文檔的某個部分應用了一個類一樣,幫你在你的标記文本中減少多餘的類,讓你的代碼更靈活、更易于維護。
僞元素
表現得是像你往标記文本中加入全新的HTML元素一樣,而不是向現有的元素上應用類。僞元素開頭為雙冒号
::(早期單冒号 但是雙冒号更規範哦)
比如
::first-line可以精準自适應選中第一行
::before 這些僞元素的更推薦的用法是插入一個圖示,例如下面的示例加入的一個小箭頭,作為一個視覺性的提示,而且我們并不希望螢幕閱讀器讀出它。
深拷貝和淺拷貝的差別 √
首先明确,深淺都是對複雜資料類型來說的,簡單是無所謂的