這是個人第一篇掘金文章,但願你們不要嫌棄。我仍是一名在校大學生,就是想把本身所學到的知識寫出來,加深本身的印象,記錄本身成長的過程,這篇文章主要是介紹HTML 、 CSS 的一些小知識點。css
<div class="app"></div><div class="app2"></div>
.app { height: 60px; margin-bottom: 100px; background-color: #165; } .app2 { height: 60px; margin-top: 100px; background-color: #981; }
margin-bottom: 100px
時,
margin-top: 100px;
時,發現根本沒有變化。
<div class="app"> <div class="app2"></div> </div>
.app
設置
margin-top: 100px;
變成這樣:
.app2
設置
margin-top:100xp;
發現沒動。
.app2
加了
margin-top:100px;
的樣式了啊,它爲何不動,此時咱們試着加大
.app2
的
margin-top
值神奇的發現
動了,但不只它動還帶着它爸一塊兒動,這是要帶全家跑的節奏啊。 此時是否是感受很奇怪爲何啊?由於在垂直方向上的
maigin
會合並,就好像父級沒有了頂同樣,露天的了,並且他們還會取最大的一個,你說貪不貪,看個玩笑啊。
看下面錯誤的解決方法: 當咱們給.app
加上border-top: 10px solid yellowgreen
(加10px
只是爲了方便看見)時,發現咱們的bug也獲得瞭解決。 前端
border
啊。去掉?那這個問題沒解決啊。那怎麼辦,你是否是想着減少它,那咱們試試,我把
10px改爲了1px
。是否是感受看不見了,
transparent
,這確定看不見吧,並且也解決了這個問題。是否是很開心,但要是用這種方法解決我以爲我就沒有寫的必要了。
記住咱們不要輕易去改變DOM結構不要爲了解決一些問題去添加沒有實際意義的標籤或樣式。
2.在說解決方案以前先讓咱們瞭解一下什麼是BFC(不是KFC啊)。 BFC(Block formattingcontext)直譯爲"塊級格式化上下文"它是一個獨立的渲染區域,只有Block-level box參與, 它規定了內部的Block-level Box如何佈局,而且與這個區域外部絕不相干。 簡單來講就是你能經過BFC來改變一個元素的渲染規則。聽着是否是很厲害。瀏覽器
那BFC是否是一個屬性或元素啊,NO!不過他好像沒多大的做用但它就恰恰解決了這個所謂的bug
,好像就是爲它而生的。那怎麼樣觸發一個元素的BFC呢,很簡單,你幾乎隨時都在觸發一個元素的BFC,是否是很懵逼,什麼!。下面介紹幾個css屬性,這些你確定每天在用:bash
一、浮動元素,float 除 none 之外的值;
二、定位元素,position(absolute,fixed);
三、display 爲如下其中之一的值 inline-block,table-cell,table-caption;
四、overflow 除了 visible 之外的值(hidden,auto,scroll);```
複製代碼
是否是很熟悉,上面列出來的都能觸發一個個盒子的BFC,就是這麼簡單。 當咱們給.app
加上display: inline-block;
時:app
.app2
的頂變成了
.app
再也不是瀏覽器了。或者咱們在給
.app
設置成
overflow: hidden
發現也能解決
margin
合併的問題:
overflow: hidden
是否是很尷尬。
好了,margin
塌陷解決了,那就剩margin
合併了,一樣應用上面的BFC規則。佈局
但不推薦使用,爲何?由於你這樣會改變HTML文檔結構,沒事你改它幹什麼,能不動就不動。那咱們該怎麼解決?接下來我要放大招了,別嚇到你。個人解決辦法是:不解決! ,對你沒看錯不解決!。字體
其實當你遇到margin
合併時你爲何要子設置一個父設置一個,最後還想着改變他們的渲染規則有甚者改變HTML結構,它既然取大的值那你就給它個大的。好比你想要他們上下間距是200px
,你非得一個margin-top: 100px
,一個margin-bottom: 100px
,你直接取一個margin-top | margin-bottom : 200px
不得了。spa
浮動前效果看下圖: 3d
border
,但願不會影響到你)。
clear: both
,那咱們來試試。
p
標籤,設置了
clear: both
問題解決了。
::after { content: ""; clear: both; }
看看。發現沒變化,哈哈。你可能忘了僞元素是行內元素,只有塊元素才能清除浮動。在這裏再說一下,全部的行內元素就是
帶有inline
的都能看到浮動元素,塊元素看不到浮動元素。當咱們把
after
變成塊元素後發現浮動被清除了。
float
後,主動清除一下浮動,避免之後遇到很奇怪的問題。
3.用HTML + CSS畫一個等腰梯形。code
HTML部分:<div class="app"></div>
CSS部分:
.app {
width: 0;
height: 0;
border: 100px solid #561;
}
複製代碼
border
設置成透明的一個三角形就畫出來了。
border-top: 100px solid transparent;
border-bottom: 100px solid #561;
border-left: 100px solid transparent;
border-right: 100px solid transparent;
複製代碼
.app {
position: relative;
width: 100px;
height: 100px;
background-color: #561;
}
.app::after {
content: "";
position: absolute;
right: -100px;
border: 50px solid transparent;
border-bottom-color: #561;
border-left-color: #561;
}
.app::before {
content: "";
position: absolute;
left: -100px;
border: 50px solid transparent;
border-bottom-color: #561;
border-right-color: #561;
}
複製代碼
line-height
也能決定一個元素的高度。.app {
width: 100px;
color: #fff;
background-color: #561;
}
複製代碼
line-height=100px
時:
總結: 以上是我對我瞭解的一些知識點的總結,但願能夠幫到一些人,同時也讓我加深了對這些知識點的理解和認識,做爲一名自學前端的在校大學生但願大佬們指出錯誤,一塊兒探討。感謝。