html图片高度和宽度成比例,css高度随宽度比例变化的几种实现方法

【方案一:padding实现】

原理:

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

使用 padding-bottom 来代替 height 来实现高度与宽度成比例的效果,将 padding-bottom设置为想要实现的 height 的值。同时将

其 height 设置为 0 以使元素的“高度”等于 padding-bottom 的值,从而实现需要的效果。

.childbox{

padding-bottom: 20%;

width: 20%;

height: 0;

background: #888888;

}

上例宽高比是1比1,实现的是正方形,并且根据父级盒子宽度实现等比缩放

【方案二:一个隐藏的图片来实现】

原理:

div容器如果不给定高度,它的高度会随着容器内部的元素变化而撑大,这个时候,我们在容器内部添加一张符合我们宽高比例的图片,给图片设置宽度100%;高度auto,我们知道图片只设置宽度的话,高度会随宽度来进行比例变化,自动缩放,这样我们内部的子容器的高度也就会按照比例缩放了。当然这个img你可以占位隐藏,也可以用别的盒子覆盖上。

#container {

width: 100%;

}

.attr {

background-color: #008b57;

}

.attr img{

width: 100%;

height: auto;

}

这个方法不需要考虑任何兼容性,PC移动完美运行。除了增加了一个dom结构,但是一个页面成百上千的代码来说,不值一提。

如果你觉得增加img标签多发了http请求,那么base64图片编码可以解决这个问题,由于我们的的图片只需要一个形状而已,所

以可以大胆的压缩,然后编码,连http请求都省了。

【方案三:vw,vh】

css3的新单位(css3大法好~),我们将父容器的宽度和高度定义为相同的vw,这样父容器的高度和宽度就是相同值,这个时候,子容器的宽高值设为百分比,不管父容器大小如何变,子容器的高度和宽度比都是不会变的

单位 说明

vw 相对于视窗的宽度

vh 相对于视窗的高度

vmin 相对于视口的宽度或高度中较小的那个被均分为100单位的vmin

vmax 相对于视口的宽度或高度中较大的那个被均分为100单位的vmax

.childbox{

width: 20%;

height: 20vw;

background: #888888;

}

到此这篇关于css高度随宽度比例变化的几种实现方法的文章就介绍到这了,更多相关css高度随宽度变化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

在JavaScript中,获取HTML元素的实际内容宽度高度有多种方法。以下是几种常见的方式: 1. **innerText 和 innerHTML**: - `textContent` 或 `innerText` 获取纯文本内容的宽度,适用于文字,不包括标签: ```javascript const element = document.getElementById('yourElement'); const contentWidth = element.textContent.length * element.measureText(' ').width; ``` - `innerHTML` 获取整个元素及其所有子节点的HTML内容,包括宽度高度,但处理起来复杂一些,通常需要额外解析: ```javascript const element = document.getElementById('yourElement'); const boundingRect = element.getBoundingClientRect(); const contentWidth = boundingRect.width; ``` 2. **getBoundingClientRect()**: 这个方法返回一个对象,包含了元素的边框、内边距、外边距以及滚动位置等信息。可以获取元素相对于视口的位置: ```javascript const element = document.getElementById('yourElement'); const contentWidth = element.offsetWidth; const contentHeight = element.offsetHeight; ``` 3. **CSS测量** (仅限特定场景): 使用`window.getComputedStyle()`结合`clientWidth`和`clientHeight`属性,可以获取包含内边距和边框的宽度高度: ```javascript const element = document.getElementById('yourElement'); const computedStyle = window.getComputedStyle(element); const contentWidth = parseInt(computedStyle.getPropertyValue('width')) - parseFloat(computedStyle.getPropertyValue('padding-left')) - parseFloat(computedStyle.getPropertyValue('padding-right')); const contentHeight = parseInt(computedStyle.getPropertyValue('height')) - parseFloat(computedStyle.getPropertyValue('padding-top')) - parseFloat(computedStyle.getPropertyValue('padding-bottom')); ``` 请注意,以上方法可能会受到浏览器渲染差异、用户交互影响(如滚动)以及CSS样式的影响,所以在实际应用中,可能需要进一步调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值