CSS开发 之 响应式宽高等比缩放

目录

需求

最近 需要实现这样的效果

https://www.zhgcloud.com/source

其中 图片是响应式宽高等比缩放的

  • 图片宽度和屏幕宽度成比例

  • 图片高度和图片宽度成比例

思路

虽然 设置图片宽度和屏幕宽度成比例是有效的

width: w%; /* 有效 */

但是 设置图片高度和图片宽度成比例却是无效的

height: h%; /* 无效 */

因为

宽高百分比是相对于其父元素的

虽然 父元素宽度是已知的 但是

父元素高度默认是根据内容自适应的

所以 高度百分比是无效的

最终 我们实现的思路如下

  • 自适应宽高等比缩放的块元素

  • 添加占满该元素的图片子元素

自适应宽高等比缩放的块元素

这里 我们用到了Box Model

内边距的百分比是相对于盒子的宽度

<div>
  
</div>
div {
  width: 100%;
  padding-top: 40%;
  background-color: red;
}

此时 自适应且宽高比是10:4 效果详见JSFiddle aspect-radio-01

添加占满该元素的图片子元素

这里 我们利用了position

<div>
  ![](http://upload-images.jianshu.io/upload_images/2180450-3d151d1d201650e1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
</div>
div {
  width: 100%;
  padding-top: 40%;
  position: relative;
}

img {
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  position: absolute;
}

此时 图片宽高比完全随父元素等比缩放 效果详见JSFiddle aspect-radio-02

挑战

最后 我们扩展该问题 实现这样的效果

aspect-radio-01.png
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
.item {
    float: left;
    width: 46%;
    height: 0;
    margin: 10px 2%;
    padding-bottom: 30%;
    background-color: #dbe0e4;
}

效果详见JSFiddle aspect-radio-03

参考

更多文章, 请支持我的个人博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,815评论 1 92
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,340评论 0 11
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 二圣:真是日了狗了 歪歪:汪汪! 二圣:..............
    漫天都是孙大圣阅读 102评论 0 0
  • 我好似一个花园, 里面有娇艳欲滴的花儿,饱满肥硕的果儿, 自然也有杂草,虫蚁。 对付它们,我或不理,或杀绝。 总是...
    草莓果阅读 120评论 0 1