css实现高度height随宽度width变化保持比例不变

如何通过CSS实现高度 height 随宽度 width 变化而变化,保持长宽比例不变,宽度是根据父元素宽度变化的?
使用 :before 伪元素,能获取到实际高度,推荐

html:

<div>
    <span>1</span>
</div>

css:

body {
  width: 100%;
  font-size: 0;
  text-align: center;
}

div {
  display: inline-block;
  width: 20%;
  background: green;
  font-size: 12px;
  position: relative;
  vertical-align: middle;
}
div:nth-child(2n) {
  background: orange;
}
div:before {
  content: "";
  display: inline-block;
  padding-bottom: 100%;
  width: .1px;
  vertical-align: middle;
}
div span {
  display: inline-block;
  vertical-align: middle;
  font-size: 4em;
  color: #fff;
}
奇淫技巧

html:

<div class = "father">
   <div class = "daughter"></div>    // 父女情深
</div>

css:

.father {
    width: 100%;
}
.daughter {
    width: 20%; height: 0;
    padding-top: 20%;
    background: black;
}

主要知识:上下边距的百分比数值是以父元素宽度作为参照的。

在开发移动端页面时,需要供应的手机屏幕大小不一,此时经常会使用百分比来界定元素的大小,那么如何让元素按宽高比例布局呢?

在保持元素宽高比恒定的情况下,要使得元素可以和父元素同比缩放。此时会用到 padding

需要知道的是:一个元素的 padding,如果值是一个百分比,那这个百分比是相对于其父元素的宽度而言的,padding-bottom 也是如此。

使用 padding-bottom 来代替 height 来实现高度与宽度成比例的效果,将 padding-bottom 设置为想要实现的 height 的值。同时将其 height 设置为 0 以使元素的“高度”等于 padding-bottom 的值,从而实现需要的效果。

此时CSS代码如下:

div {
float: left;
margin: 10px 5%;
padding-bottom: 20%;
width: 20%;
height: 0;
}

这里宽高比是1比1,实现的是正方形,并且实现同比缩放。

####### 用vh单位

html:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
<div class="ui-square-nerd">  
</div>

<div class="ui-square">  
</div>
</body>
</html>

css:

.ui-square-nerd {
  width: 20%;
  height: 0;
  padding-bottom: 20%;
  background: blue;
}

.ui-square {
  margin-top: 30px;
  width: 20vh;
  height: 20vh;
  background: green;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,692评论 1 92
  • 使用纯 CSS 实现 500px 照片列表布局 文章很长,因为介绍了如何一步一步进化到最后接近完美的效果的,不想读...
    HZ充电大喵阅读 7,541评论 0 4
  • CSS格式化排版 1、字体 我们可以使用css样式为网页中的文字设置字体、字号、颜色等样式属性。下面我们来看一个例...
    张文靖同学阅读 5,081评论 0 3
  • 本课来自http://www.imooc.com/learn/9请不要用作商业用途。 HTML5 HTML介绍 H...
    PYLON阅读 8,605评论 0 5
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 5,893评论 0 2

友情链接更多精彩内容