使用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>
注:这个办法也不是我想出来的,而是网上搜索找到的,正好我的项目中要使用且觉得很不错就自己整理了一下,谢谢网上的大牛们!!!
使用css让动态容器按固定宽高比显示的更多相关文章
- css实现保持div的等宽高比
这篇文章主要为回答这个问题:“做响应式网页,如何让一个div的高和宽保持比例放大或是缩小?”,这里不介绍媒体查询的实现. 那么css如何实现高度height随宽度width变化保持比例不变呢?即给定可 ...
- 确保img的宽高比固定
html: <div class="wrapper"> <swiper :options="swiperOption"> <swi ...
- CSS 图片自适应容器
https://www.jb51.net/css/660677.html 经常有这样一个场景,需要让图片自适应容器的大小. 1.img标签的方式 我们马上就能想到,把width.height 设置为1 ...
- 我的前端组件 ---- 16:9固定宽高比例的div
目标:遇到一个需求,让图片在页面中,不管宽度如何变化.宽高保持16:9的比例. 实现: 方法一:这也是比较经典的一个方法,利用padding-bottom来实现. <!DOCTYPE html& ...
- android -------- ConstraintLayout 宽高比和偏移量比(三)
前面的文章 ConstraintLayout 介绍 (一) ConstraintLayout约束属性 (二) 此博文主要讲解: app:layout_constraintHorizontal_bias ...
- CSS左侧固定宽 右侧自适应(兼容所有浏览器)
左侧固定宽,右侧自适应屏幕宽: 左右两列,等高布局: 左右两列要求有最小高度,例如:200px;(当内容超出200时,会自动以等高的方式增高) 要求不用JS或CSS行为实现: 仔细分析试题要求,要达到 ...
- 【CSS】三栏/两栏宽高自适应布局大全
页面布局 注意方案多样性.各自原理.各自优缺点.如果不定高呢.兼容性如何 三栏自适应布局,左右两侧300px,中间宽度自适应 (1) 给出5种方案 方案一: float (左右浮动,中间不用给宽,设置 ...
- 【原】用css让一个容器水平垂直
这种css布局平时用的比较多,也是面试题常出的一个题,网上一搜一大丢,不过还是想自己总结一下. 这种方法比较多,本文只总结其中的几种,以便加深印象. 效果图都为这个: 方法一:position加mar ...
- div 固定宽高 水平垂直居中方法
div固定宽高,水平垂直居中,根据所用单位不同,分成两种情况,分别是"px"和"%"情况. 例:将三层div做出三个边框,要求水平垂直居中.效果如图 情况一(单 ...
随机推荐
- PXE高效能批量网络装机
PXE简绍 PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器 ...
- python八荣八耻
Python八荣八耻 以动手实践为荣 , 以只看不练为耻; 以打印日志为荣 , 以单步跟踪为耻; 以空格缩进为荣 , 以制表缩进为耻; 以单元测试为荣 , 以人工测试为耻; 以模块复用为荣 , 以复制 ...
- VS2017 C/C++输入密码显示*星号
VS2017 C/C++输入密码显示*星号 _getch()函数使用时遇到的坑 参考: https://blog.csdn.net/guin_guo/article/details/46237905 ...
- 2019年4月zstu月赛A: 我不会做
问题 A: 我不会做 时间限制: 1 Sec 内存限制: 128 MB 题目描述 众所周知,duxing201606就是plw. 然而已经9102年了,plw仍旧没有npy.plw非常难过,于是他打 ...
- 14. Encryption tools (加密工具 8个)
SSH(Secure Shell)现在是无处不在的程序,用于在远程机器上登录或执行命令. 它通过不安全的网络在两个不受信任的主机之间提供安全的加密通信,取代了可怕的不安全的telnet / rlogi ...
- python实现linux下文件遍历
import os def getAllFile(*names): if len(names) == 0: return "" else: allList = [] for nam ...
- vim的学习
vi和vim的关系: vim是vi发展而来的. 2.vim的三种模式: 1>.命令模式 -- 打开文件后,默认进入命令模式. 2>.编辑模式 -- 需要输入一些命令,切换到编辑模式. 3& ...
- Filebeat工作过程(二)
Filebeat简介 Filebeat是一个轻量级的收集日志和传输日志的工具(一直以为Filebeat是存储数据,并不是的它只是做一个收集传输功能):Filebeat安装在每一个你想要收集日志的服务器 ...
- Java创建对象的4种方式
Java创建对象的方式共有四种: 使用new语句实例化一个对象: 通过反射机制创建对象: 通过clone()方法创建一个对象: 通过反序列化的方式创建对象. 一.使用new语句实例化一个对象 new语 ...
- day03 文件操作
目录 1.文件操作实例 2.文件常用操作 3.with模块操作文件 常用实例,把文件里面的内容读出来做成字典的形式在做成字列表展示. 1.精简版. lst = []f = open("fil ...