<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【面試說】字節(jié)跳動最愛考的前端面試題:CSS 基礎(chǔ)

          共 46983字,需瀏覽 94分鐘

           ·

          2021-03-21 19:00

          注意:每道題前面出現(xiàn)的 (xx) 數(shù)字代表這道題出現(xiàn)的頻次,此 CSS 基礎(chǔ)是基于 30+ 篇前端面經(jīng)整理出的問題和對應(yīng)的回答、參考鏈接等。文章內(nèi)容為拿到 Offer 的本人整理。

          (2)寫代碼:css div 垂直水平居中,并完成 div 高度永遠(yuǎn)是寬度的一半(寬度可以不指定)

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                * {
                  margin0;
                  padding0;
                }

                html,
                body {
                  width100%;
                  height100%;
                }

                .outer {
                  width400px;
                  height100%;
                  background: blue;
                  margin0 auto;

                  display: flex;
                  align-items: center;
                }

                .inner {
                  position: relative;
                  width100%;
                  height0;
                  padding-bottom50%;
                  background: red;
                }

                .box {
                  position: absolute;
                  width100%;
                  height100%;
                  display: flex;
                  justify-content: center;
                  align-items: center;
                }
              
          </style>
            </head>
            <body>
              <div class="outer">
                <div class="inner">
                  <div class="box">hello</div>
                </div>
              </div>
            </body>
          </html>

          參考鏈接

          • https://github.com/cttin/cttin.github.io/issues/2

          請你講一講 CSS 的權(quán)重和優(yōu)先級

          權(quán)重

          • 從0開始,一個行內(nèi)樣式+1000,一個id選擇器+100,一個屬性選擇器、class或者偽類+10,一個元素選擇器,或者偽元素+1,通配符+0

          優(yōu)先級

          • 權(quán)重相同,寫在后面的覆蓋前面的
          • 使用 !important 達(dá)到最大優(yōu)先級,都使用 !important 時,權(quán)重大的優(yōu)先級高

          參考鏈接

          • https://zhuanlan.zhihu.com/p/41604775

          問:介紹 Flex 布局,flex 是什么屬性的縮寫:

          • 彈性盒布局,CSS3 的新屬性,用于方便布局,比如垂直居中
          • flex屬性是 flex-growflex-shrink 和 flex-basis 的簡寫

          參考鏈接

          • https://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

          問:CSS 怎么畫一個大小為父元素寬度一半的正方形?

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                .outer {
                  width400px;
                  height600px;
                  background: red;
                }

                .inner {
                  width50%;
                  padding-bottom50%;
                  background: blue;
                }
              
          </style>
            </head>
            <body>
              <div class="outer">
                <div class="inner"></div>
              </div>
            </body>
          </html>

          CSS實(shí)現(xiàn)自適應(yīng)正方形、等寬高比矩形

          • width 設(shè)置百分比
          • padding 撐高
          • 如果只是要相對于 body 而言的話,還可以使用 vw 和 vh
          • 偽元素設(shè)置 margin-top: 100%撐高

          雙重嵌套,外層 relative,內(nèi)層 absolute

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                .outer {
                  padding-top50%;
                  height0;
                  background#ccc;
                  width50%;
                  position: relative;
                }

                .inner {
                  position: absolute;
                  width100%;
                  height100%;
                  top0;
                  left0;
                  background: blue;
                }
              
          </style>
            </head>
            <body>
              <div class="outer">
                <div class="inner">hello</div>
              </div>
            </body>
          </html>


          padding 撐高畫正方形

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                .outer {
                  width400px;
                  height600px;
                  background: blue;
                }

                .inner {
                  width100%;
                  height0;
                  padding-bottom100%;
                  background: red;
                }
              
          </style>
            </head>
            <body>
              <div class="outer">
                <div class="inner"></div>
              </div>
            </body>
          </html>


          相對于視口 VW VH

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                .inner {
                  width1vw;
                  height1vw;
                  background: blue;
                }
              
          </style>
            </head>
            <body>
              <div class="outer">
                <div class="inner"></div>
              </div>
            </body>
          </html>

          偽元素設(shè)置 margin-top

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                .inner {
                  width100px;
                  overflow: hidden;
                  background: blue;
                }

                .inner::after {
                  content"";
                  margin-top100%;
                  display: block;
                }
              
          </style>
            </head>
            <body>
              <div class="outer">
                <div class="inner"></div>
              </div>
            </body>
          </html>

          參考鏈接

          • http://www.fly63.com/article/detial/2104

          (2)問:實(shí)現(xiàn)兩欄布局的方式:

          左 float,然后右 margin-left(右邊自適應(yīng))

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                div {
                  height500px;
                }

                .aside {
                  width300px;
                  float: left;
                  background: yellow;
                }

                .main {
                  background: aqua;
                  margin-left300px;
                }
              
          </style>
            </head>
            <body>
              <div class="aside"></div>
              <div class="main"></div>
            </body>
          </html>

          右 float,margin-right

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                div {
                  height500px;
                }

                .aside {
                  width300px;
                  float: right;
                  background: yellow;
                }

                .main {
                  background: aqua;
                  margin-right300px;
                }
              
          </style>
            </head>
            <body>
              <div class="aside"></div>
              <div class="main"></div>
            </body>
          </html>


          BFC + float

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                div {
                  height500px;
                }

                .aside {
                  width300px;
                  float: left;
                  background: yellow;
                }

                .main {
                  overflow: hidden;
                  background: aqua;
                }
              
          </style>
            </head>
            <body>
              <div class="aside"></div>
              <div class="main"></div>
            </body>
          </html>


          float + 負(fù) margin

          <head>
            <style>
              .left {
                width100%;
                float: left;
                background#f00;
                margin-right: -200px;
              }

              .right {
                float: left;
                width200px;
                background#0f0;
              }
            
          </style>
          </head>

          <div class="left"><p>hello</p></div>
          <div class="right"><p>world</p></div>

          圣杯布局實(shí)現(xiàn)兩欄布局

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                /* div {
                  height: 500px;
                } */


                /* .box {
                  overflow: hidden;
                } */


                /* .container {
                  padding: 0 300px 0 200px;
                  border: 1px solid black;
                } */


                html,
                body {
                  height100%;
                }

                div {
                  height100%;
                }

                .container {
                  display: flex;
                }

                .content {
                  flex1 1;
                  order2;
                  background#f00;
                }

                .left {
                  float: left;
                  width100%;
                  background#0f0;
                }

                .right {
                  float: left;
                  width300px;
                  margin-left: -300px;
                  background#00f;
                }
              
          </style>
            </head>
            <body>
              <div class="container">
                <div class="left">你好</div>
                <div class="right">我好</div>
              </div>
            </body>
          </html>

          flex 實(shí)現(xiàn)兩欄布局

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                /* div {
                  height: 500px;
                } */


                /* .box {
                  overflow: hidden;
                } */


                /* .container {
                  padding: 0 300px 0 200px;
                  border: 1px solid black;
                } */


                html,
                body {
                  height100%;
                }

                div {
                  height100%;
                }

                .container {
                  display: flex;
                }

                .content {
                  flex1 1;
                  order2;
                  background#f00;
                }

                .left {
                  flex0 0 200px;
                  background#0f0;
                }

                .right {
                  flex1 1;
                  background#00f;
                }
              
          </style>
            </head>
            <body>
              <div class="container">
                <div class="left">你好</div>
                <div class="right">我好</div>
              </div>
            </body>
          </html>

          參考鏈接:https://juejin.im/post/5e8d5268f265da480f0f9c6e#heading-8

          position + margin

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                /* div {
                  height: 500px;
                } */


                /* .box {
                  overflow: hidden;
                } */


                /* .container {
                  padding: 0 300px 0 200px;
                  border: 1px solid black;
                } */


                html,
                body {
                  height100%;
                }

                div {
                  height100%;
                }

                .container {
                  display: flex;
                  position: relative;
                }

                .content {
                  flex1 1;
                  order2;
                  background#f00;
                }

                .left {
                  position: absolute;
                  width300px;
                  background#0f0;
                }

                .right {
                  width100%;
                  margin-left300px;
                  background#00f;
                }
              
          </style>
            </head>
            <body>
              <div class="container">
                <div class="left">你好</div>
                <div class="right">我好</div>
              </div>
            </body>
          </html>

          手寫題:實(shí)現(xiàn)一個兩欄三列的布局,并且要求三列等高,且以內(nèi)容最多的一列的高度為準(zhǔn)。

          實(shí)現(xiàn)三列布局的方式

          position + margin-left + margin-right

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                div {
                  height500px;
                }

                .box {
                  position: relative;
                }

                .left {
                  position: absolute;
                  left0;
                  top0;
                  width200px;
                  background: green;
                }

                .right {
                  position: absolute;
                  right0;
                  top0;
                  width200px;
                  background: red;
                }

                .middle {
                  margin-left200px;
                  margin-right200px;
                  background: black;
                }
              
          </style>
            </head>
            <body>
              <div class="box">
                <div class="left"></div>
                <div class="middle"></div>
                <div class="right"></div>
              </div>
            </body>
          </html>


          通過 float + margin

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                div {
                  height500px;
                }

                .left {
                  float: left;
                  width200px;
                  height200px;
                  background: green;
                }

                .right {
                  float: right;
                  width200px;
                  height200px;
                  background: red;
                }

                .middle {
                  margin-left210px;
                  margin-right210px;
                  background: black;
                  height200px;
                }
              
          </style>
            </head>
            <body>
              <div class="box">
                <div class="left"></div>
                <div class="right"></div>
                <div class="middle"></div>
              </div>
            </body>
          </html>

          圣杯布局

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                .container {
                  padding0 300px 0 200px;
                  border1px solid black;
                }

                .content {
                  float: left;
                  width100%;
                  background#f00;
                }

                .left {
                  width200px;
                  background#0f0;
                  float: left;
                  margin-left: -100%;
                  position: relative;
                  left: -200px;
                }

                .right {
                  width300px;
                  background#00f;
                  float: left;
                  margin-left: -300px;
                  position: relative;
                  right: -300px;
                }
              
          </style>
            </head>
            <body>
              <div class="container">
                <div class="content">中間內(nèi)容</div>
                <div class="left">左側(cè)區(qū)域</div>
                <div class="right">右側(cè)區(qū)域</div>
              </div>
            </body>
          </html>

          雙飛翼布局

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                html,
                body {
                  height100%;
                }

                div {
                  height100%;
                }

                .main {
                  float: left;
                  width100%;
                  background#f00;
                }

                .main .content {
                  margin-left200px;
                  margin-right300px;
                }

                .left {
                  width200px;
                  background#0f0;
                  float: left;
                  margin-left: -100%;
                }

                .right {
                  width300px;
                  background#00f;
                  float: left;
                  margin-left: -300px;
                }
              
          </style>
            </head>
            <body>
              <div class="main">
                <div class="content">hello world</div>
              </div>
              <div class="left">你好</div>
              <div class="right">王鵬浩</div>
            </body>
          </html>


          flex 布局

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                html,
                body {
                  height100%;
                }

                div {
                  height100%;
                }

                .container {
                  display: flex;
                }

                .content {
                  flex1 1;
                  order2;
                  background#f00;
                }

                .left {
                  flex0 0 200px;
                  order1;
                  background#0f0;
                }

                .right {
                  flex0 0 300px;
                  order3;
                  background#00f;
                }
              
          </style>
            </head>
            <body>
              <div class="container">
                <div class="content">hello world</div>
                <div class="left">你好</div>
                <div class="right">王鵬浩</div>
              </div>
            </body>
          </html>

          參考鏈接

          • https://segmentfault.com/a/1190000003942591
          • https://blog.csdn.net/crystal6918/article/details/55224670
          • https://blog.csdn.net/zhoulei1995/article/details/80161240

          問:CSS 動畫有哪些?

          • animation

          animation、transition、transform、translate 這幾個屬性要搞清楚:

          • animation:用于設(shè)置動畫屬性,他是一個簡寫的屬性,包含6個屬性
          • transition:用于設(shè)置元素的樣式過度,和animation有著類似的效果,但細(xì)節(jié)上有很大的不同
          • transform:用于元素進(jìn)行旋轉(zhuǎn)、縮放、移動或傾斜,和設(shè)置樣式的動畫并沒有什么關(guān)系
          • translate:translate只是transform的一個屬性值,即移動,除此之外還有 scale 等

          參考資料

          • https://juejin.im/post/5b137e6e51882513ac201dfb#heading-2

          (3)問:用css2和css3分別寫一下垂直居中和水平居中

          CSS2

          水平居中:

          • div + margin: auto;
          • span + text-align

          垂直居中

          • 使用 position 然后 left/top 和 margin 的方式垂直居中(已知寬高和未知寬高)
          • 使用 position + margin
          • 使用 display: table-cell;

          已知寬高,進(jìn)行水平垂直居中

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                .outer {
                  position: relative;
                  width400px;
                  height600px;
                  background: blue;
                }

                .inner {
                  position: absolute;
                  width200px;
                  height300px;
                  background: red;
                  left50%;
                  top50%;
                  margin: -150px 0 0 -100px;
                }
              
          </style>
            </head>
            <body>
              <div class="outer">
                <div class="inner"></div>
              </div>
            </body>
          </html>


          寬高未知,比如 內(nèi)聯(lián)元素,進(jìn)行水平垂直居中

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                .outer {
                  width400px;
                  height600px;
                  /* background: blue; */
                  border1px solid red;
                  background-color: transparent;
                  position: relative;
                }

                .inner {
                  position: absolute;
                  background: red;
                  left50%;
                  top50%;
                  transformtranslate(-50%, -50%);
                }
              
          </style>
            </head>
            <body>
              <div class="outer">
                <span class="inner">我想居中顯示</span>
              </div>
            </body>
          </html>

          絕對定位的 div 水平垂直居中

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                .outer {
                  width400px;
                  height600px;
                  /* background: blue; */
                  border1px solid red;
                  background-color: transparent;
                  position: relative;
                }

                .inner {
                  position: absolute;
                  background: red;
                  left0;
                  right0;
                  bottom0;
                  top0;
                  width200px;
                  height300px;
                  margin: auto;
                  border1px solid blue;
                }
              
          </style>
            </head>
            <body>
              <div class="outer">
                <div class="inner">我想居中顯示</div>
              </div>
            </body>
          </html>

          圖片和其他元素使用 display: table-cell; 進(jìn)行垂直居中

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                .outer {
                  width400px;
                  height600px;
                  /* background: blue; */
                  border1px solid red;
                  background-color: transparent;
                  display: table-cell;
                  vertical-align: middle;
                }

                .inner {
                  background: red;
                  width200px;
                  height300px;
                  border1px solid blue;
                  margin0 auto;
                }
              
          </style>
            </head>
            <body>
              <div class="outer">
                <div class="inner">我想居中顯示</div>
              </div>
            </body>
          </html>

          CSS3

          垂直、水平居中

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="UTF-8" />
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
              <title>Document</title>
              <style>
                .outer {
                  width400px;
                  height600px;

                  display: flex;
                  
                  /* 垂直居中 */
                  align-items: center;
                  
                  /* 水平居中 */
                  justify-content: center;
                  border1px solid red;
                  background-color: transparent;
                }

                .inner {
                  background: red;
                  width200px;
                  height300px;
                  border1px solid blue;
                }
              
          </style>
            </head>
            <body>
              <div class="outer">
                <div class="inner">我想居中顯示</div>
              </div>
            </body>
          </html>


          (2)問:visibility 和 display 的差別(還有opacity)

          • visibility 設(shè)置 hidden 會隱藏元素,但是其位置還存在與頁面文檔流中,不會被刪除,所以會觸發(fā)瀏覽器渲染引擎的重繪
          • display 設(shè)置了 none 屬性會隱藏元素,且其位置也不會被保留下來,所以會觸發(fā)瀏覽器渲染引擎的回流和重繪。
          • opacity 會將元素設(shè)置為透明,但是其位置也在頁面文檔流中,不會被刪除,所以會觸發(fā)瀏覽器渲染引擎的重繪

          問:opacity 可以有過渡效果嘛?

          可以設(shè)置過渡效果

          問:BFC 與 IFC 區(qū)別

          BFC 是塊級格式上下文,IFC 是行內(nèi)格式上下文:

          • 內(nèi)部的 Box 會水平放置
          • 水平的間距由 margin,padding,border 決定

          參考鏈接:

          • https://juejin.im/entry/5938daf7a0bb9f006b2295db
          • https://zhuanlan.zhihu.com/p/74817089

          問:BFC會與float元素相互覆蓋嗎?為什么?舉例說明

          不會,因?yàn)?BFC 是頁面中一個獨(dú)立的隔離容器,其內(nèi)部的元素不會與外部的元素相互影響,比如兩個 div,上面的 div 設(shè)置了 float,那么如果下面的元素不是 BFC,也沒有設(shè)置 float,會形成對上面的元素進(jìn)行包裹內(nèi)容的情況,如果設(shè)置了下面元素為 overflow:hidden;屬性那么就能夠?qū)崿F(xiàn)經(jīng)典的兩列布局,左邊內(nèi)容固定寬度,右邊因?yàn)槭?BFC 所以會進(jìn)行自適應(yīng)。

          參考鏈接

          • https://zhuanlan.zhihu.com/p/25321647

          問:了解box-sizing嗎?

          box-sizing 屬性可以被用來調(diào)整這些表現(xiàn):

          • content-box  是默認(rèn)值。如果你設(shè)置一個元素的寬為100px,那么這個元素的內(nèi)容區(qū)會有100px 寬,并且任何邊框和內(nèi)邊距的寬度都會被增加到最后繪制出來的元素寬度中。
          • border-box 告訴瀏覽器:你想要設(shè)置的邊框和內(nèi)邊距的值是包含在width內(nèi)的。也就是說,如果你將一個元素的width設(shè)為100px,那么這100px會包含它的border和padding,內(nèi)容區(qū)的實(shí)際寬度是width減去(border + padding)的值。大多數(shù)情況下,這使得我們更容易地設(shè)定一個元素的寬高。

          (2)什么是 BFC

          BFC(Block Formatting Context)格式化上下文,是 Web 頁面中盒模型布局的 CSS 渲染模式,指一個獨(dú)立的渲染區(qū)域或者說是一個隔離的獨(dú)立容器。

          形成 BFC 的條件

          五種:

          • 浮動元素,float 除 none 以外的值
          • 定位元素,position(absolute,fixed)
          • display 為以下其中之一的值 inline-block,table-cell,table-caption
          • overflow 除了 visible 以外的值(hidden,auto,scroll)
          • HTML 就是一個 BFC

          BFC 的特性:

          • 內(nèi)部的 Box 會在垂直方向上一個接一個的放置。
          • 垂直方向上的距離由 margin 決定
          • bfc 的區(qū)域不會與 float 的元素區(qū)域重疊。
          • 計算 bfc 的高度時,浮動元素也參與計算
          • bfc 就是頁面上的一個獨(dú)立容器,容器里面的子元素不會影響外面元素。

          (2)問:了解盒模型嗎?

          CSS盒模型本質(zhì)上是一個盒子,封裝周圍的HTML元素,它包括:外邊距(margin)邊框(border)內(nèi)邊距(padding)實(shí)際內(nèi)容(content)四個屬性。CSS盒模型:標(biāo)準(zhǔn)模型 + IE模型

          標(biāo)準(zhǔn)盒子模型:寬度=內(nèi)容的寬度(content)+ border + padding

          低版本IE盒子模型:寬度=內(nèi)容寬度(content+border+padding),如何設(shè)置成 IE 盒子模型:

          box-sizingborder-box;

          參考鏈接

          • https://zhuanlan.zhihu.com/p/74817089

          問:說一下你知道的position屬性,都有啥特點(diǎn)?

          static:無特殊定位,對象遵循正常文檔流。top,right,bottom,left等屬性不會被應(yīng)用。relative:對象遵循正常文檔流,但將依據(jù)top,right,bottom,left等屬性在正常文檔流中偏移位置。而其層疊通過z-index屬性定義。absolute:對象脫離正常文檔流,使用top,right,bottom,left等屬性進(jìn)行絕對定位。而其層疊通過z-index屬性定義。fixed:對象脫離正常文檔流,使用top,right,bottom,left等屬性以窗口為參考點(diǎn)進(jìn)行定位,當(dāng)出現(xiàn)滾動條時,對象不會隨著滾動。而其層疊通過z-index屬性定義。sticky:具體是類似 relative 和 fixed,在 viewport 視口滾動到閾值之前應(yīng)用 relative,滾動到閾值之后應(yīng)用 fixed 布局,由 top 決定。

          問:兩個div上下排列,都設(shè)margin,有什么現(xiàn)象?

          • 都正取大
          • 一正一負(fù)相加

          問:為什么會有這種現(xiàn)象?你能解釋一下嗎

          是由塊級格式上下文決定的,BFC,元素在 BFC 中會進(jìn)行上下排列,然后垂直距離由 margin 決定,并且會發(fā)生重疊,具體表現(xiàn)為同正取最大的,同負(fù)取絕對值最大的,一正一負(fù),相加

          BFC 是頁面中一個獨(dú)立的隔離容器,內(nèi)部的子元素不會影響到外部的元素。

          問:清除浮動有哪些方法?

          不清楚浮動會發(fā)生高度塌陷:浮動元素父元素高度自適應(yīng)(父元素不寫高度時,子元素寫了浮動后,父元素會發(fā)生高度塌陷)

          • clear清除浮動(添加空div法)在浮動元素下方添加空div,并給該元素寫css樣式:{clear:both;height:0;overflow:hidden;}
          • 給浮動元素父級設(shè)置高度
          • 父級同時浮動(需要給父級同級元素添加浮動)
          • 父級設(shè)置成inline-block,其margin: 0 auto居中方式失效
          • 給父級添加overflow:hidden 清除浮動方法
          • 萬能清除法 after偽類 清浮動(現(xiàn)在主流方法,推薦使用)
          .float_div:after{
            content:".";
            clear:both;
            display:block;
            height:0;
            overflow:hidden;
            visibility:hidden;
          }
          .float_div{
            zoom:1
          }

          參考鏈接

          • https://juejin.im/post/5cc59e41e51d456e62545b66
          • https://segmentfault.com/a/1190000013325778
          • https://juejin.im/post/5ca80d366fb9a05e3345dccf#heading-16
          • https://juejin.im/post/5e8d5268f265da480f0f9c6e#heading-33
          • https://juejin.im/post/5cc59e41e51d456e62545b66#heading-75
          • https://juejin.im/post/5a0c184c51882531926e4294#heading-50
          • https://juejin.im/post/5ce607a7e51d454f6f16eb3d#heading-34
          • https://juejin.im/post/5e8b163ff265da47ee3f54a6#heading-12


          歡迎關(guān)注「前端雜貨鋪」,一個有溫度且致力于前端分享的雜貨鋪

          關(guān)注回復(fù)「加群」,可加入雜貨鋪一起交流學(xué)習(xí)成長



          喜歡本文,點(diǎn)個“在看”告訴我

          瀏覽 50
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产特级毛片AAAAAA喷潮 | 二区在线视频 | 亚洲高清无码在线播放 | 日本色一级片 | 日产无码久 |