css高度随宽度改变的效果如何实现?
发布时间:2023-07-29 14:32:15 所属栏目:语言 来源:
导读:在实际的项目中,有时候我们可能会遇到实现css高度随宽度变化的需求,那么这个效果怎么样做呢?这篇文章就给大家分享几个方法,下文有方法的实现原理及示例,需要的朋友可以参考。
【方案一:padding实现】
【方案一:padding实现】
在实际的项目中,有时候我们可能会遇到实现css高度随宽度变化的需求,那么这个效果怎么样做呢?这篇文章就给大家分享几个方法,下文有方法的实现原理及示例,需要的朋友可以参考。 【方案一:padding实现】 原理: 一个元素的 padding,如果值是一个百分比,那这个百分比是相对于其父元素的宽度而言的,padding-bottom 也是如此。 使用 padding-bottom 来代替 height 来实现高度与宽度成比例的效果,将 padding-bottom设置为想要实现的 height 的值。同时将其 height 设置为 0 以使元素的“高度”等于 padding-bottom 的值,从而实现需要的效果。 <div class="father"> <div class="childbox"></div> </div> <style type="text/css"> .childbox{ padding-bottom: 20%; width: 20%; height: 0; background: #888888; } </style> 上例宽高比是1比1,实现的是正方形,并且根据父级盒子宽度实现等比缩放 【方案二:一个隐藏的图片来实现】 原理: div容器如果不给定高度,它的高度会随着容器内部的元素变化而撑大,这个时候,我们在容器内部添加一张符合我们宽高比例的图片,给图片设置宽度100%;高度auto,我们知道图片只设置宽度的话,高度会随宽度来进行比例变化,自动缩放,这样我们内部的子容器的高度也就会按照比例缩放了。当然这个img你可以占位隐藏,也可以用别的盒子覆盖上。 #container { width: 100%; } .attr { background-color: #008b57; } .attr img{ width: 100%; height: auto; } </style> <div id='container'> <div class='attr'> <img src="1.png" alt=""> </div> </div> 这个方法不需要考虑任何兼容性,PC移动完美运行。除了增加了一个dom结构,但是一个页面成百上千的代码来说,不值一提。 如果你觉得增加img标签多发了http请求,那么base64图片编码可以解决这个问题,由于我们的的图片只需要一个形状而已,所以可以大胆的压缩,然后编码,连http请求都省了。 【方案三:vw,vh】 css3的新单位(css3大法好~),我们将父容器的宽度和高度定义为相同的vw,这样父容器的高度和宽度就是相同值,这个时候,子容器的宽高值设为百分比,不管父容器大小如何变,子容器的高度和宽度比都是不会变的 单位 说明 vw 相对于视窗的宽度 vh 相对于视窗的高度 vmin 相对于视口的宽度或高度中较小的那个被均分为100单位的vmin vmax 相对于视口的宽度或高度中较大的那个被均分为100单位的vmax <div class="father"> <div class="childbox"></div> </div> .childbox{ width: 20%; height: 20vw; background: #888888; } (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐