gpt4 book ai didi

html - 下载图像时显示加载背景颜色响应

转载 作者:行者123 更新时间:2023-11-27 23:14:52 27 4
gpt4 key购买 nike

在我的应用程序中,我通过从 JSON 获取图像和尺寸。我想在加载时填充图像留下的空白。

问题是,如果我制作一个 div 用固定的 widthheight 填充空隙,填充的 div 没有响应(在图像的情况下,样式为 height: auto; max-height: XXXpx;)如何在不丢失宽度的情况下使其响应/高度比例?

重要提示:我的目标是使其适用于任何宽度和高度组合,而不会丢失比例/比例。


编辑:

这是我的问题的一个例子。您将检查 div 是否具有固定大小,当窗口的宽度或高度小于 256px 但图像是响应式时,该大小会溢出。 我怎样才能使 div 也具有响应性,同时又不失去比例?

<html>
<head></head>
<body>

<!--
This div contains the image. By default, the div uses the `container`
class (detailed below) that has a fixed width and height that is
the same size of the image. The class will be removed in other to make the
image "responsive" when the image download finished.
-->
<div
id="container"
class="container"
>
<!--
This image uses the `image` class which has the needed styles to make it responsive.
In addition, it will fire "removeDummyClass()" when is loaded.
-->
<img
class="image"
src="https://sftextures.com/texture/2574/0/2578/dog-foot-pad-on-white-snow-frozen-ground-dark-footprint-sign-icy-cold-winter-pattern-seamless-texture-256x256.jpg"
onload="removeDummyClass()"
/>
</div>


<script type="text/javascript">
// With this function, we will remove class that has a dummy image
// (in this case, a div with a background-color)
const removeDummyClass = () => {
document
.getElementById('container')
.classList
.remove('container')
}
</script>

<style>
.container {
background-color: red;
width: 256px;
height: 256px;
}

.image {
height: auto;
max-width: 100%;
}
</style>

</body>
</html>


编辑 2:

我正在添加一些屏幕截图,不是为了调试,只是为了让问题更清楚

第一次加载,由于手动设置了宽高,div溢出。

div overflows

然后,当加载图像时,图像将调整大小,而不会失去宽度和高度之间的比例。

image responsive

最佳答案

我使用了一点 javascript 来做到这一点:
隐藏页面内容并显示您的背景元素。
当正文未准备好时,每 1 秒运行一次脚本间隔(您可以以适当的方式处理),当页面正文准备好显示时,将页面属性 display:none 更改为 显示: block

function onReady(callback) {
var intervalID = window.setInterval(checkReady, 1000);

function checkReady() {
if (document.getElementsByTagName('body')[0] !== undefined)
{
window.clearInterval(intervalID);
callback.call(this);
}
}
}

function show(id, value) {
document.getElementById(id).style.display = value ? 'block' : 'none';
}

onReady(function () {
show('page', true);
show('loading', false);
});
#page {
display: none;
}

#loading {
display: block;
position: absolute;
top: 0;
left: 0;
z-index: 100;
width: 100vw;
height: 100vh;
background-image: url("URL_TO_YOUR_IMAGE");
background-repeat: no-repeat;
background-position: center;
}

.loading-page {
background: #72c3c9; /*The background color*/
width: 100vw;
height: 100vh;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="page" style="display:none">
<!-- YOUR PAGE CONTENT GOES HERE -->
</div>
<div id="loading" class="loading-page">
</div>
</body>
</html>

关于html - 下载图像时显示加载背景颜色响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58310729/

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