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

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

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

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

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

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

 <!DOCTYPE html>
<html>
<body>
<div class="contain">
<div class="item">
<div class="verticalCenter horizaCenter box">1</div>
</div>
<div class="item">
<div class="verticalCenter horizaCenter box">2</div>
</div>
<div class="item">
<div class="verticalCenter horizaCenter box">3</div>
</div>
<div class="item">
<div class="verticalCenter horizaCenter box">4</div>
</div>
<div class="item">
<div class="verticalCenter horizaCenter box">5</div>
</div>
<div class="item">
<div class="verticalCenter horizaCenter box">6</div>
</div>
<div class="item">
<div class="verticalCenter horizaCenter box">7</div>
</div>
<div class="item">
<div class="verticalCenter horizaCenter box">8</div>
</div>
<div class="item">
<div class="verticalCenter horizaCenter box">9</div>
</div>
<div class="item">
<div class="verticalCenter horizaCenter box">10</div>
</div>
<div class="item">
<div class="verticalCenter horizaCenter box">11</div>
</div>
</div>
</body>
</html>
<style>
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
}
.contain {
width: 50vw;/*屏幕宽度的一半*/
height: 70vw;/*屏幕宽度的70%*/
background: red;
}
.item {
float: left;
position: relative;
background-color: darkslategrey;
margin: 10px;
/*这里显示的就是20:15=4:3,以后div就会保持这个比例*/
width: 20%;
padding-bottom: 15%;
}
/*垂直居中*/
.verticalCenter{
display: flex;
align-items:center;
height: 100%;
}
/*水平居中*/
.horizaCenter{
display: flex;
justify-content:center;
text-align: center;
width: 100%;
}
.item .box{
font-size: 1.5rem; width: 100%;height: 100%;background: blue;position: absolute;left: 0;top: 0;border: 1px solid yellow
}
</style>

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

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

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

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

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

纯css实现长宽等比例的div的更多相关文章

  1. 纯CSS实现点击事件展现隐藏div菜单列表/元素切换

    在写移动端导航的时候经常用到点击按钮出现/隐藏导航条的情况,最常见的方法当然还是前端框架直接调用,省心省力,不易出错:当然还有使用纯JS实现的小代码段.我这里整理了纯CSS实现方式,给需要的人和给自己 ...

  2. 追求极致--纯css制作三角、圆形按钮,兼容ie6

    参考了天猫.微博等网站的做法,用纯html和css实现,效果还是不错的.以下是成果,兼容主流浏览器,包括ie6. <!DOCTYPE html PUBLIC "-//W3C//DTD ...

  3. 超简单:纯CSS实现的进度条

    ——————纯CSS实现的进度条—————— HTML: <div class="wrapper"> <div class="bar"> ...

  4. [刘阳Java]_纯CSS代码实现内容过滤效果

    继续我们技术专题课,我们今天给大家带来的是一个比较酷炫的"纯CSS代码实现内容过滤效果",没有加入任何JS的效果.全部都是应用CSS3的新增选择器来实现的.先看效果截图 实现思路 ...

  5. css样式: 宽高按一定比例进行自适应

    纯 CSS 实现高度与宽度成比例的效果 最近在做一个产品列表页面,布局如右图所示.页面中有若干个 item,其中每个 item 都向左浮动,并包含在自适应浏览器窗口宽度的父元素中. item 元素的 ...

  6. div等比例缩放-------纯CSS实现自适应浏览器宽度的正方形

    摘自:https://blog.csdn.net/u010513603/article/details/78200207 1.方案一:CSS3 vw 单位 CSS3 中新增了一组相对于可视区域百分比的 ...

  7. 纯css竟可以做出边框这样长宽度的过渡效果

    边框效果如下:鼠标移到下面方形,就有效果   要是没有效果,点这个:https://murenziwei.github.io/testGit/Untitled1.html 正如你所看到的,这边框颜色只 ...

  8. 使用纯 CSS 实现 Google Photos 照片列表布局

    文章太长,因为介绍了如何一步一步进化到最后接近完美的效果的,不想读的同学可以直接跳到最后一个大标题之后看代码.demo及原理就好,或者也可以直接看下面这个链接的源代码. 不过还是建议顺序读下去,因为后 ...

  9. 纯CSS打造银色MacBook Air(完整版)

    上一篇:<selection伪元素小解> ::selection{ background:blue; color:red; }p{font-size:14px;} 作者主页:myvin 博 ...

随机推荐

  1. OpenGL学习笔记(2) 画一个正方形

    画一个正方形 其实,画正方形就是画两个三角形,用四个顶点以及使用索引来实现 完整代码在Square项目的Application.cpp里 先贴上窗口初始化代码 void BaseInit() { gl ...

  2. 2.3 Oracle之DDL 语句(约束、伪列、视图、序列、同义词) 精简版

    DDL Data Definition(重点) (n. 定义:[物] 清晰度:解说)用于定义数据的结构,创建,修改,删除数据库对象 一.表的增删改查 1.创建表:CREATE TABLE temp A ...

  3. 【转】phpcms v9的ckeditor加入给内容调整行高

    今天公司一客户要求一同事给ckeditor加入可以设置行高的功能(他后台是用织梦做的,他是织梦的FANS),我一时闲得慌,也想给咱家的v9加入这个功能,功夫不负有心啊,终于成功了,来给大家分享一下! ...

  4. Paxos共识算法

    Paxos共识算法 paxos是一族用来解决分布式系统共识的基础算法,共识过程就是在一组节点上达成一个一致的结果.由于节点可能会错误,通讯消息也可能会丢失,所以建立共识是一个比较复杂的过程. paxo ...

  5. Python之并发编程-多进程

    目录 一.multiprocessiong模块介绍 二.Process类的介绍 三.进一步介绍(守护进程.锁.队列.管道.事件等) 1.守护进程 2.锁(同步锁.互斥锁) 3.信号量(了解) 4.队列 ...

  6. MVC 漫长之路(一)

    1.新建项目 mvc  视图引擎选中 Razor   2.允许我们设置这个项目关于 MVC 的一些设置,确认选中了“空”项目模板   3.   4.打开 Global.asax 文件 配置路由名称等 ...

  7. 软工大作业DB天气项目风险评估

    风险 发生概率 损失 风险度 解决方案 项目延期 80% 浪费时间,项目完成进度降低,考试得分低 79% 提前做好详细的准备工作,各方面做好沟通. 工作效率低下 30% 影响进度,使项目延期. 85% ...

  8. Task 6.2冲刺会议十 /2015-5-23

    今天是第一个冲刺阶段的最后一天,主要把做出来的程序进行了初步的测试,在一台笔记本上运行程序,摄像头可以工作也能听到声音和麦克多的运转也还可以,两台计算机同时在一个局域网中通信的时候也可以实现.不过后续 ...

  9. Java script 的dom编程

    实例1: </head> <body> <div id="div1"> <p id="p1">这是一个段落< ...

  10. mvc拦截请求IHttpModule

    代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syste ...