需求:页面上有一个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>

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

使用css让动态容器按固定宽高比显示的更多相关文章

  1. css实现保持div的等宽高比

    这篇文章主要为回答这个问题:“做响应式网页,如何让一个div的高和宽保持比例放大或是缩小?”,这里不介绍媒体查询的实现. 那么css如何实现高度height随宽度width变化保持比例不变呢?即给定可 ...

  2. 确保img的宽高比固定

    html: <div class="wrapper"> <swiper :options="swiperOption"> <swi ...

  3. CSS 图片自适应容器

    https://www.jb51.net/css/660677.html 经常有这样一个场景,需要让图片自适应容器的大小. 1.img标签的方式 我们马上就能想到,把width.height 设置为1 ...

  4. 我的前端组件 ---- 16:9固定宽高比例的div

    目标:遇到一个需求,让图片在页面中,不管宽度如何变化.宽高保持16:9的比例. 实现: 方法一:这也是比较经典的一个方法,利用padding-bottom来实现. <!DOCTYPE html& ...

  5. android -------- ConstraintLayout 宽高比和偏移量比(三)

    前面的文章 ConstraintLayout 介绍 (一) ConstraintLayout约束属性 (二) 此博文主要讲解: app:layout_constraintHorizontal_bias ...

  6. CSS左侧固定宽 右侧自适应(兼容所有浏览器)

    左侧固定宽,右侧自适应屏幕宽: 左右两列,等高布局: 左右两列要求有最小高度,例如:200px;(当内容超出200时,会自动以等高的方式增高) 要求不用JS或CSS行为实现: 仔细分析试题要求,要达到 ...

  7. 【CSS】三栏/两栏宽高自适应布局大全

    页面布局 注意方案多样性.各自原理.各自优缺点.如果不定高呢.兼容性如何 三栏自适应布局,左右两侧300px,中间宽度自适应 (1) 给出5种方案 方案一: float (左右浮动,中间不用给宽,设置 ...

  8. 【原】用css让一个容器水平垂直

    这种css布局平时用的比较多,也是面试题常出的一个题,网上一搜一大丢,不过还是想自己总结一下. 这种方法比较多,本文只总结其中的几种,以便加深印象. 效果图都为这个: 方法一:position加mar ...

  9. div 固定宽高 水平垂直居中方法

    div固定宽高,水平垂直居中,根据所用单位不同,分成两种情况,分别是"px"和"%"情况. 例:将三层div做出三个边框,要求水平垂直居中.效果如图 情况一(单 ...

随机推荐

  1. laravel-阿里大于

    安装扩展 # 安装curl模块apt-get install curl # 安装php5-curl扩展apt-get install php5-curl # 安装laravel阿里大鱼服务compos ...

  2. IntelliJ IDEA 实用快捷键

    psvm--------------主(main)-----------------public staitc void main(String[] args) sout--------------- ...

  3. load data local to table

    步骤: 1.使用show语句查找服务器上当前存在的数据库: 2.如果数据库存在,尝试访问它,之后创建表(我这里是之前创建的,所以就直接show tables) 3.将本地文件加载到表中,创建一个文本文 ...

  4. Visual Stdio2017 使用

    1. 快捷键: https://www.cnblogs.com/happyzwt/p/7769129.html 2.

  5. 试写foxit reader的ConvertToPDF功能的wrapper

    相比于直接fuzzing大型程序本身,针对程序的某一特定功能写wrapper后再fuzzing则要高效的多.网上搜了下,仅有两篇关于foxit reader的wrapper文章,一个用python,另 ...

  6. MySQL和MySQL的注释方式

    MySQL的注释方式   mysql 服务器支持如下几种注释方式: (1) # 到该行结束     # 这个注释直到该行结束 mysql> SELECT 1+1; (2)-- 到该行结束     ...

  7. edgedb 内部pg 数据存储的探索 (四) 源码编译

      edgedb 基于python开发,同时源码重包含了好多子项目,以下进行简单的源码编译 clone 代码 需要递归处理,加上recursive,比较慢稍等 git clone --recursiv ...

  8. HBASE基础知识总结

    HBASE基础知识总结 一,概要说明 文章首先回顾HBase 的数据模型和数据层级结构,对数据的每个层级的作用和架构进行了详细阐述:随后介绍了数据写入和读取的详细流程.先把架构图和流程图来坐镇. 架构 ...

  9. Eclipse从GitHub下载代码

    转载自:http://blog.csdn.net/u014785687/article/details/73473769 打开git视图(window->show view),搜索git,选择G ...

  10. ss - linux网络工具

    用以替代netstat 参看 http://www.cnblogs.com/peida/archive/2013/03/11/2953420.html 常用命令: ss -ptl | grep 991 ...