gpt4 book ai didi

javascript - 将 div 的背景图像缩放到固定宽度;自动缩放高度

转载 作者:行者123 更新时间:2023-11-28 15:44:27 25 4
gpt4 key购买 nike

类似于CSS background image to fit width, height should auto-scale in proportion ,我想将图像缩放到固定宽度,高度不受限制。

不过,与那个问题不同的是,这是针对 <div> 的, 而不是 <body> ,这似乎引入了问题。

我试过使用 CSS3 属性 background-size: cover , 但它显示了 2 个像这样的图像(正确的宽度但不够高):

我也试过使用 background-size: contain , 但显示如下(不够宽,因此不够高):

我试图让图像看起来像这样:

这是 a JSFiddle我已经设置好了。

我怎样才能得到 <div>171px宽,还能自动缩放高度?

图像的尺寸未知。图片必须采用<div style="background-image: url('base64')"> 格式, (不是 <img src="base64"> - 由于它被转发到的 CLI 程序的限制)但我可以修改任何其他 HTML 或 CSS。


我也尝试过使用 JavaScript 来计算高度。这很好用,但是 <div>的最后实际上并没有调整大小:

var divs = document.getElementsByTagName('div');
for(var i = 0; i < divs.length; i++)
{
var img = new Image();
img.src = divs[i].style.backgroundImage.replace(/url\((['"])?(.*?)\1\)/gi, '$2');
var ratio = img.width / 171;
var height = Math.floor(img.height / ratio);
alert(height);
divs[i].height = height;
}

这是 an updated JSFiddle使用 JavaScript。

最佳答案

我已将其与 JS 选项一起使用。我只需要使用 divs[i].style.height = height + 'px' 而不是 divs[i].height = height:

window.onload = function()
{
var divs = document.getElementsByTagName('div');
for(var i = 0; i < divs.length; i++)
{
var img = new Image();
img.src = divs[i].style.backgroundImage.replace(/url\((['"])?(.*?)\1\)/gi, '$2');
var ratio = img.width / 171;
var height = Math.floor(img.height / ratio);
divs[i].style.height = height + 'px';
}
}

这是 a working JSFiddle .

不过,我仍然很想知道使用纯 CSS3 是否可行。你会这么想的!


我进一步改进了代码。现在,宽度小于 171px 的图像不会拉伸(stretch):

window.onload = function()
{
var divs = document.getElementsByTagName('div');
for(var i = 0; i < divs.length; i++)
{
var img = new Image();
img.src = divs[i].style.backgroundImage.replace(/url\((['"])?(.*?)\1\)/gi, '$2');

if(img.width > 170)
{
var ratio = img.width / 171;
var height = Math.floor(img.height / ratio);
}

else
{
var height = img.height;
divs[i].style.backgroundSize = 'auto';
divs[i].style.backgroundPosition = 'center';
}

divs[i].style.height = height + 'px';
}
}

这是 final Fiddle .

关于javascript - 将 div 的背景图像缩放到固定宽度;自动缩放高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17715201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com