zoukankan      html  css  js  c++  java
  • 使用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{
         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{
         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>

    注:这个办法也不是我想出来的,而是网上搜索找到的,正好我的项目中要使用且觉得很不错就自己整理了一下,谢谢网上的大牛们!!!

  • 相关阅读:
    字符串与指针{学习笔记}
    selenium 测试脚本
    多维数组与指针{笔记}
    SQL注入常用语句{笔记}
    C语言指针{学习笔记}
    字符编码
    移动窗体
    TreeView树形结构
    未能找到元数据文件解决办法
    gridview分页的问题
  • 原文地址:https://www.cnblogs.com/coolle/p/6553092.html
Copyright © 2011-2022 走看看