现代网站页面基本都需要响应式,一个div的长宽往往我们都设置为百分之多少,这个百分之是相对于父容器动态计算的

这样在浏览器宽度变化之后,我们的元素也能自动更新长宽。例如:我们在页面上摆了一个div,这个宽度设置为20%,

同时又要求div始终保持4:3的长宽比来显示,因为这样看上去可能美观一点。很显然,不能因为宽度是20%了,把高度

设置为15%,这是肯定错误的。通常想到的方法就是用js动态计算,但是在浏览器窗口动态变化的时候,必须在resize的时候

再次更新这个div的高度,这样比较麻烦。

下面用例是用纯CSS控制这个div的长宽比,不论浏览器怎么变化,div实时也会变化,并保持比例不变

 1 <!DOCTYPE html>
 2 <html>
 3 <body>
 4 <div class="contain">
 5     <div class="item">
 6         <div class="verticalCenter horizaCenter box">1</div>
 7     </div>
 8     <div class="item">
 9         <div class="verticalCenter horizaCenter box">2</div>
10     </div>
11     <div class="item">
12         <div class="verticalCenter horizaCenter box">3</div>
13     </div>
14     <div class="item">
15         <div class="verticalCenter horizaCenter box">4</div>
16     </div>
17     <div class="item">
18         <div class="verticalCenter horizaCenter box">5</div>
19     </div>
20     <div class="item">
21         <div class="verticalCenter horizaCenter box">6</div>
22     </div>
23     <div class="item">
24         <div class="verticalCenter horizaCenter box">7</div>
25     </div>
26     <div class="item">
27         <div class="verticalCenter horizaCenter box">8</div>
28     </div>
29     <div class="item">
30         <div class="verticalCenter horizaCenter box">9</div>
31     </div>
32     <div class="item">
33         <div class="verticalCenter horizaCenter box">10</div>
34     </div>
35     <div class="item">
36         <div class="verticalCenter horizaCenter box">11</div>
37     </div>
38 </div>
39 </body>
40 </html>
41 <style>
42     html, body {43         margin: 0;
44         padding: 0;
45         width: 100%;
46         height: 100%;
47     }
48     .contain {49         width: 50vw;/*屏幕宽度的一半*/
50         height: 70vw;/*屏幕宽度的70%*/
51         background: red;
52     }
53     .item {54         float: left;
55         position: relative;
56         background-color: darkslategrey;
57         margin: 10px;
58         /*这里显示的就是20:15=4:3,以后div就会保持这个比例*/
59         width: 20%;
60         padding-bottom: 15%;
61     }
62     /*垂直居中*/
63     .verticalCenter{64         display: flex;
65         align-items:center;
66         height: 100%;
67     }
68     /*水平居中*/
69     .horizaCenter{70         display: flex;
71         justify-content:center;
72         text-align: center;
73         width: 100%;
74     }
75     .item .box{76         font-size: 1.5rem; width: 100%;height: 100%;background: blue;position: absolute;left: 0;top: 0;border: 1px solid yellow
77     }
78 </style>

View Code

代码中的vw是viewport的宽度,vh就是高度,这个始终是拿viewport计算的

看下面的效果图(1244X774):

缩小浏览器宽高之后(653X774):

这里主要利用了padding-bottom,这个熟悉的百分比是按照宽度来算的,相当于这个div的高度是0,通过padding-bottom,把div

撑开到我们想要的高度,然后里面再套一个div绝对定位,在套的div里面就可以填任何内容了。

转载于:https://www.cnblogs.com/JimmyBright/p/6511052.html

纯css实现长宽等比例的div相关推荐

  1. 如何使用纯CSS实现固定宽高比div?

    在很多场景下,我们都需要一个固定长宽比的div作为容器.直接使用js动态设置固然可行,但在页面大小变化时就不得不通过触发onresize事件来动态设置,十分不便.此文旨在于探讨使用纯CSS实现固定长宽 ...

  2. 网页(全屏)背景图实现方式(纯CSS向)

    全屏背景的意思就是背景图占满整个浏览器视窗,在没有body其他内容的时候不出现滚动条.就算有滚动条的时候,背景也是固定的,不跟随滚动. 对于这类的全屏背景图片的实现,我们需要注意的是,有五种情况: 图 ...

  3. 纯CSS输入区域下划线

    使用纯CSS实现文本输入的下划线,简洁有效,实现效果: 实现方式 实现方式也很简单: background: linear-gradient(#999 1px, transparent 0) 0 -1 ...

  4. 前端图片压缩上传(纯js的质量压缩,非长宽压缩)

    前端图片压缩上传(纯js的质量压缩,非长宽压缩) 此demo为大于1M对图片进行压缩上传 若小于1M则原图上传,可以根据自己实际需求更改. demo源码如下: <!DOCTYPE html> ...

  5. 5.前端CSS之基本属性(长宽,字体,文体,背景图片,阴影,border画圆,display)

    1.块儿标签长宽height,width块儿标签可以设置长宽,设置长宽后依然独占一行 h1-h6,p,div行内标签无法设置长宽 写了 也不会生效 i,u,s,b span2.字体样式:font-fa ...

  6. 不固定图片宽高瀑布流_类百度图片的固定高度横向瀑布流js方法及纯css实现的方法记录...

    微信图片_20190117105118.png 纯css实现代码: Document div{ display: flex;/*显示模式设置为弹性盒子*/ flex-wrap: wrap;/*进行强制 ...

  7. java图像处理002---JAVA图片压缩_图片缩放_图片按照比例缩放_图片指定长宽缩放_Java使用google开源工具Thumbnailator实现图片压缩

    JAVA技术交流QQ群:170933152 前言 作为靠谱的java服务端程序员,图片这个事情一直是个头疼的事情. 现在很多网站上,都有上传图片这个功能,而图片对于现在的很多手机来说,拍摄出来的都是高 ...

  8. html自动平分宽度,HTML5使用纯CSS实现“按比例平分”整个垂直空间

    HTML5使用纯CSS实现"按比例平分"整个垂直空间 需求 需要实现头部固定在"屏幕"上方+中部滚动+底部固定在"屏幕"下方的页面布局样式. ...

  9. php相机图片的长宽比例,照片常用的长宽比介绍,裁剪照片原来还有这么多选择...

    在拍摄照片的时候我们往往会在后期进行二次构图,在裁剪的时候有不同的相片长宽比供我们选择,不同的长宽比带给观众的感受也不一样.这里为大家介绍一下照片拍摄中常用到长宽比例. 3:2(6:4) 这张照片是用 ...

最新文章

  1. 转 vi 编辑器,gcc 编译器的使用
  2. java设计模式-建造者模式
  3. delphi 纯虚函数的应用
  4. [转]对数据仓库进行数据建模
  5. 通过命令解锁Oracle,在命令行下进行Oracle用户解锁
  6. Spiral Matrix I II
  7. Android开发笔记(二十二)瀑布流网格WaterfallGridView
  8. 二叉搜索树(排序二叉树)
  9. 物理内存是如何组织管理的
  10. 浅谈算法和数据结构: 四 快速排序
  11. 通用crt更新不适用计算机,Office2016安装提示需要通用补丁CRT(KB2999226)
  12. wx2540h配置教程_H3C无线AP控制器EWP-WX2540H 无线AP 无线云台控制器 无线控制器
  13. python 二项分布编程_Python模拟伯努利试验和二项分布代码实例
  14. 程序员必备网络基础知识清单,简单易懂
  15. CSP介绍、以及使用CryptoAPI枚举CSP并获取其属性
  16. 二分图的最大匹配算法
  17. 四平方和定理(每个正整数均可表示为4个平方数的和)
  18. 485与232的区别
  19. Backpack Cryptography【背包密码】
  20. python图片缩放不失真

热门文章

  1. 手机浏览器直接唤起微信方案调研
  2. Maven版本与IDEA版本不匹配的问题( ERROR - #org.jetbrains.idea.maven - IntelliJ IDEA ***)
  3. opengl复习(一)
  4. 信息安全复习六:公开密钥密码学
  5. linux脚本条件判断或,Shell脚本IF条件判断和判断条件总结
  6. strftime函数
  7. 安徽合肥芜湖数字孪生智慧工厂,工厂车间数字化三维仿真交互,3d可视化数据大屏展示系统
  8. 大数据篇--数据倾斜
  9. 微信小程序上拉触底案例添加loading效果
  10. CSS Grid 网格布局详解