css浮動(dòng)與定位

1.浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素、普通元素、文字分別有什么影響?

  • 浮動(dòng)模型也是一種可視化格式模型,浮動(dòng)的框可以左右移動(dòng)(根據(jù)float屬性值而定),直到它的外邊緣碰到包含框或者另一個(gè)浮動(dòng)元素的框的邊緣。浮動(dòng)元素不在文檔的普通流中,文檔的普通流中的元素表現(xiàn)的就像浮動(dòng)元素不存在一樣.
  • 對(duì)于父元素,若其子元素都是浮動(dòng)元素,則其失去高度,視覺上在子元素外面,不包含。
1.png
  • 對(duì)于其它浮動(dòng)元素的影響,如果包含塊太窄無法容納水平排列的全部浮動(dòng)元素,那么其它浮動(dòng)元素會(huì)向下移動(dòng),直到有足夠的空間,而如果浮動(dòng)元素的高度不同,那么向下移動(dòng)的時(shí)候可能會(huì)被卡住。
2.png
  • 普通元素會(huì)視浮動(dòng)元素不見,占據(jù)浮動(dòng)元素原有的位置,但會(huì)被浮動(dòng)元素遮罩。
3.png
  • 文字會(huì)感知到浮動(dòng)元素的存在,會(huì)留出空間,形成環(huán)繞效果。
4.png

2.清除浮動(dòng)指什么? 如何清除浮動(dòng)? 兩種以上方法

  • 清除浮動(dòng)指解決浮動(dòng)父容器高度塌陷問題
  • 在父元素的子元素最后添加一個(gè)空div,并對(duì)其設(shè)置樣式:clear:both;
5.png
  • 利用BFC來清除浮動(dòng)。
    因?yàn)锽FC可以包含浮動(dòng),因此可以讓父元素生成一個(gè)新的BFC從而包圍浮動(dòng)的子元素,可以對(duì)父元素設(shè)定以下樣式之一生成新BFC。
    float: left | right;
    overflow: hidden | auto | scroll;
    display: table-cell | table-caption | inline-block;
    position: absolute | fixed;
6.png
  • 通用方法
  .clearfix:after{
      content:"";
      display:block;
      clear:both;
  }

3.有幾種定位方式,分別是如何實(shí)現(xiàn)定位的,參考點(diǎn)是什么,使用場(chǎng)景是什么?

  • inherit 規(guī)定從父元素繼承 position 屬性的值
  • static 默認(rèn)值,沒有定位,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)
  • relative 相對(duì)定位,元素的位置通過 left, top, right 以及 bottom 屬性進(jìn)行規(guī)定 相對(duì)于元素本身正常位置進(jìn)行定位 一般作為絕對(duì)定位的元素參考點(diǎn)


    8.png
  • absolute 絕對(duì)定位,元素的位置通過 left, top, right 以及 bottom 屬性進(jìn)行規(guī)定 相對(duì)于static定位以外的第一個(gè)祖先元素(offset parent)進(jìn)行定位如果元素沒有已定位的祖先元素,那么他的位置就相對(duì)于初始包含塊html來定位demo。適用于元素的水平垂直居中
9.png
  • fixed 絕對(duì)定位,元素的位置通過 left, top, right 以及 bottom 屬性進(jìn)行規(guī)定 相對(duì)于瀏覽器窗口進(jìn)行定位,不隨滾動(dòng)條的滾動(dòng)而移動(dòng) ;適用于飄窗、固定導(dǎo)航等
10.png
  • sticky CSS3新屬性,表現(xiàn)類似position:relative和position:fixed的合體,在目標(biāo)區(qū)域在屏幕中可見時(shí),它的行為就像position:relative; 而當(dāng)頁面滾動(dòng)超出目標(biāo)區(qū)域時(shí),它的表現(xiàn)就像position:fixed,它會(huì)固定在目標(biāo)位置

4.z-index 有什么作用? 如何使用?

因?yàn)榻^對(duì)定位的元素脫離了普通流,所以絕對(duì)定位的元素可以覆蓋頁面上的其它元素。這時(shí)可以通過給元素設(shè)置z-index屬性來控制疊放順序,默認(rèn)值為auto,則不建立層疊上下文。設(shè)置為0則會(huì)建立層疊上下文


11.png
image.png
image.png

5.position:relative和負(fù)margin都可以使元素位置發(fā)生偏移?二者有什么區(qū)別

  • position:relative,元素顯示位置發(fā)生變化,但是元素在文檔流中的位置不變,不影響后面元素在文檔流中的布局。
  • 負(fù)margin,元素的顯示位置和在文檔流中的位置均發(fā)生變化,會(huì)影響后面元素在文檔流中的位置

6.BFC 是什么?如何生成 BFC?BFC 有什么作用?舉例說明

  • BFC是塊級(jí)格式上下文
  • 對(duì)元素設(shè)置以下屬性
    float: left | right;
    overflow: hidden | auto | scroll;
    display: table-cell | table-caption | inline-block;
    position: absolute | fixed;
  • 解決margin重疊問題。所謂margin重疊是指處于同一個(gè)BFC的相鄰元素、嵌套元素,只要它們之間沒有阻擋(如:邊框、非空內(nèi)容、padding等)就會(huì)發(fā)生margin重疊。這是只要讓其中一個(gè)元素生成新的BFC就能解決margin重疊問題。
12.png
13.png

清除浮動(dòng)。因?yàn)锽FC可以包含浮動(dòng),所以讓父容器生成新的BFC可以讓父容器在視覺上包圍了浮動(dòng)的子元素,因而清除了浮動(dòng)

image.png

7.在什么場(chǎng)景下會(huì)出現(xiàn)外邊距合并?如何合并?如何不讓相鄰元素外邊距合并?給個(gè)父子外邊距合并的范例

  • 兩個(gè)兄弟元素在垂直方向上合并外邊距,取較大值進(jìn)行合并
14.png
  • 父子元素間沒有阻擋(如:邊框、非空內(nèi)容、padding等)時(shí)發(fā)生上和/或下外邊距合并
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
  <style>
    .box{
  width: 200px;
  height: 200px;
  background-color: gray;
  margin: 20px;
}
.box1{
  width: 100px;
  height: 100px;
  background-color: red;
  margin:40px;
}
  </style>
</head>
<body>
<div class="box">
  <div class="box1">
    
  </div>
</div>
</body>
</html>

效果圖

image.png
  • 當(dāng) margin 都是負(fù)值的時(shí)候,取的是其中絕對(duì)值較大的,然后,從0位置,負(fù)向位移,當(dāng)有正有負(fù)的時(shí)候,先取出負(fù) margin 中絕對(duì)值中最大的,然后,和正 margin 值中最大的 margin 相加。
  • 如果存在一個(gè)空的塊級(jí)元素,其 border、padding、inline content、height、min-height都不存在。那么此時(shí)它的上下邊距中間將沒有任何阻隔,此時(shí)它的上下外邊距將會(huì)合并.
  • 對(duì)于相鄰元素,讓他們不在同一個(gè)BFC,外邊距就不會(huì)合并。

代碼練習(xí)

  1. 實(shí)現(xiàn)如下alert效果,效果范例
    代碼如下:http://js.jirengu.com/fijam/5/edit
  2. 實(shí)現(xiàn)如下表單效果, 效果范例
    代碼如下:http://js.jirengu.com/xaga/2/edit
  3. 實(shí)現(xiàn)如下模態(tài)框效果, 效果范例
    代碼如下:http://js.jirengu.com/deni/1/edit?html,css
  4. 實(shí)現(xiàn)如下導(dǎo)航欄效果,效果范例
    代碼如下:http://js.jirengu.com/xaba/1/edit?html,css,output
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,806評(píng)論 1 92
  • 1.浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素、普通元素、文字分別有什么影響? 答:浮動(dòng)模型也是一種可視化格式模型...
    饑人谷_牛牛閱讀 406評(píng)論 0 0
  • 問答 1. 浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素、普通元素、文字分別有什么影響? 浮動(dòng)元素有什么特征floa...
    cheneyzhangch閱讀 317評(píng)論 0 0
  • 浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素、普通元素、文字分別有什么影響? 4.對(duì)普通元素:普通元素將不能感知到浮...
    l_meng閱讀 318評(píng)論 0 0
  • 浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素、普通元素、文字分別有什么影響? 浮動(dòng)元素脫離了普通文檔流,文檔的普通流...
    Zzzoecho閱讀 238評(píng)論 0 0