使用css讓動態容器按固定寬高比顯示


需求:頁面上有一個div的寬度是隨着屏幕寬度的改變而改變的,但其寬高比始終是2:1,也就是當寬度是1000px時,高度為500px

分析:無論瀏覽器窗口如何改變,始終要讓目標元素的寬高比保持2:1,我們第一個想到的可能是使用js來實現,但是使用js來實現往往會比較耗費性能,那么今天我們就來講下使用css來完成這個需求。

實現:作為“碼農”我們還是直接上代碼來得直觀一點!

html:

<body>
  <div class="container">
    <div class="bracket"></div>
    <div class="target"></div>
  </div>
</body>

這里的.target為目標元素(讓其寬高2:1),.container為容器,而bracket為“支架”(實現需求的關鍵

css:

<style type="text/css">
  .container{
    width: 40%;
    position: relative;
    /*出發BFC,否則內部元素撐不開container*/
    overflow: hidden;
    /*為了讓大家看清楚效果加的邊*/
    border: 1px solid black;
  }
  /*支架,用於按2:1的寬高比撐開父級元素,如果是4:3,那么這里改成75%即可*/
  .bracket{
    margin-top: 50%;
  }
  .target{
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: pink;
  }
</style>

.container是我們的容器,因為寬度是百分比,所以它的寬度會隨着瀏覽器窗口的改變而改變,相應的.target也是如此。

而這里的.bracket設置了margin-top: 50%; 那么它的margin-top的實際值就是父級元素(.container)的寬度的一半,這里要注意,是父級元素的寬度,所以這里撐開的高度是寬度的一半,也就基本完成了寬高比2:1的需求。

最后,我們將.target填滿整個容器,也就是position:absolute;之后,上、下、左、右全部為0即可。

這里我再貼下完整的代碼:

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <title>demo</title>

  <style type="text/css">
  .container{
    width: 40%;
    position: relative;
    /*觸發BFC,否則內部元素撐不開container*/
    overflow: hidden;
    /*為了讓大家看清楚效果加的邊*/
    border: 1px solid black;
  }
  /*支架,用於按2:1的寬高比撐開父級元素,如果是4:3,那么這里改成75%即可*/
  .bracket{
    margin-top: 50%;
  }
  .target{
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    
  }
  </style>

</head>
<body>
  <div class="container">
    <div class="bracket"></div>
    <div class="target"></div>
  </div>
</body>

</html>

 

注:這個辦法也不是我想出來的,而是網上搜索找到的,正好我的項目中要使用且覺得很不錯就自己整理了一下,謝謝網上的大牛們!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM