现代网站页面基本都需要响应式,一个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. Minor GC&Full GC&Major GC区别及触发条件

    Minor GC:从年轻代回收内存 触发条件 1.Eden区域满 ​ 2.新创建的对象大小 > Eden所剩空间 Full GC:清理整个堆空间,包括年轻代和老年代 触发条件 ​ 1.每次晋升到 ...

  2. 统计学习方法c++实现之二 k近邻法

    统计学习方法c++实现之二 k近邻算法 前言 k近邻算法可以说概念上很简单,即:"给定一个训练数据集,对新的输入实例,在训练数据集中找到与这个实例最邻近的k个实例,这k个实例的多数属于某个类 ...

  3. Http protocal

        https://tools.ietf.org/html/rfc2616   1. 状态码:status code 1xxx:信息--请求被接收,继续下一步处理   2xxx:成功--请求行为被 ...

  4. 学习python,第二篇

    注释 #  单行注释 '''   多行注释 '''      或者    """ 多行注释 """ # Author: Itxpl mag ...

  5. "api-ms-win-crt-runtime-l1-1-0.dll 丢失"怎么办?详细解决步骤

    api-ms-win-crt-runtime-l1-1-0.dll 丢失 电脑找不到api-ms-win-crt-runtime-l1-1-0.dll文件解决方法: 问题描述: 1.开机提示" ...

  6. Vue+webpack项目中,运行报错Cannot find module 'chalk'的处理

    刚开始用vue + webpack新建项目,在github上下载了一个示例,输入npm init >>>npm run dev 后报错 Cannot find module 'cha ...

  7. Dingo Api 1.0在laravel5.2中的简单应用

    Dingo Api是为基于laravel的开发提供了一系列工具集,这些工具集可以帮助开发者快速构建API.Dingo Api最新的版本是2.0.0-alpha1,这个版本需要php7.0以上的php版 ...

  8. python基础_字符编码

    字符编码的历史 阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII 阶段二:为了满足中文,中国人定制了GBK 阶段三:各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的 ...

  9. 最新的CocoaPods 安装及使用

    当在开发iOS应用时,会经常使用到很多的第三方开源类库,一般的方法是直接从GitHub下载,然后拖到项目中使用,如果该开源类库不依赖其他的类库,就可以直接使用:如果该开源类库还依赖一些其他的类库,则需 ...

  10. hive的udf创建永久函数

    上传jar包到hdfs目录中, hdfs dfs -put /home/user/hive-functions.jar /user/hive/jars/hive-functions.jar   cre ...