在 JS 中创建 img 时,如何在 JS 中设置它的容器大小?
While creating img in JS, how can I set it's container size in JS?
我在我的 JavaScript 文件中设置了一个 img
标签附加到它的包装标签,.wrapper
,我想要 .wrapper
的宽高要设置为img
里面的宽高,在JS中创建的,但是这并没有发生我不知道为什么,我知道我可以在 CSS 中给出这些尺寸,但我的目标是使用 JS 并通过读取创建的 img
的尺寸来动态地做到这一点。
有人可以帮我吗?
function main() {
let imgWrapper = document.getElementsByClassName("wrapper").item(0) ;
let image = document.createElement("img") ;
image.src = "https://i.stack.imgur.com/XFRNl.png" ;
imgWrapper.appendChild(image) ;
imgWrapper.style.width = image.style.width ;
imgWrapper.style.height = image.style.height ;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
* {
margin: 0;
padding: 0;
}
.container{
height: auto;
/*background-color: #121212;*/
display: flex;
justify-content: center;
align-items: center;
}
.wrapper{
background-color: blueviolet;
position: relative;
}
.wrapper img{
position: absolute;
left: 0;
top: 0;
}
</style>
</head>
<body onload="main()">
<div class="container">
<div class="wrapper">
</div>
</div>
</body>
</html>
你不能像那样提取图像的宽度和高度。您可以使用 naturalWidth
和 naturalHeight
属性 来获取照片的宽度和高度,而不是 css 样式。您也可能认为这些值是整数,因此您必须添加一个 px 或您需要的任何大小。
试试 运行 这个代码,它对我有用:
function main() {
let imgWrapper = document.getElementsByClassName("wrapper")[0];
let image = document.createElement("img") ;
image.src = "https://i.stack.imgur.com/XFRNl.png" ;
imgWrapper.style.width = image.naturalWidth + "px";
imgWrapper.style.height = image.naturalHeight + "px";
imgWrapper.appendChild(image) ;
}
需要等待图片加载完成后才能给父级设置宽高div。
此外,image.width
& image.height
是数字,但 div 样式需要 <value>px
格式,所以我们不能直接分配它。
function main() {
let imgWrapper = document.getElementsByClassName("wrapper").item(0) ;
let image = document.createElement("img") ;
image.src = "https://i.stack.imgur.com/XFRNl.png" ;
image.addEventListener('load', function() {
imgWrapper.style.width = image.width + 'px';
imgWrapper.style.height = image.height + 'px';
}, false);
imgWrapper.appendChild(image);
}
* {
margin: 0;
padding: 0;
}
.container{
height: auto;
/*background-color: #121212;*/
display: flex;
justify-content: center;
align-items: center;
}
.wrapper{
background-color: blueviolet;
position: relative;
}
.wrapper img{
position: absolute;
left: 0;
top: 0;
}
<body onload="main()">
<div class="container">
<div class="wrapper">
</div>
</div>
</body>
我在我的 JavaScript 文件中设置了一个 img
标签附加到它的包装标签,.wrapper
,我想要 .wrapper
的宽高要设置为img
里面的宽高,在JS中创建的,但是这并没有发生我不知道为什么,我知道我可以在 CSS 中给出这些尺寸,但我的目标是使用 JS 并通过读取创建的 img
的尺寸来动态地做到这一点。
有人可以帮我吗?
function main() {
let imgWrapper = document.getElementsByClassName("wrapper").item(0) ;
let image = document.createElement("img") ;
image.src = "https://i.stack.imgur.com/XFRNl.png" ;
imgWrapper.appendChild(image) ;
imgWrapper.style.width = image.style.width ;
imgWrapper.style.height = image.style.height ;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
* {
margin: 0;
padding: 0;
}
.container{
height: auto;
/*background-color: #121212;*/
display: flex;
justify-content: center;
align-items: center;
}
.wrapper{
background-color: blueviolet;
position: relative;
}
.wrapper img{
position: absolute;
left: 0;
top: 0;
}
</style>
</head>
<body onload="main()">
<div class="container">
<div class="wrapper">
</div>
</div>
</body>
</html>
你不能像那样提取图像的宽度和高度。您可以使用 naturalWidth
和 naturalHeight
属性 来获取照片的宽度和高度,而不是 css 样式。您也可能认为这些值是整数,因此您必须添加一个 px 或您需要的任何大小。
试试 运行 这个代码,它对我有用:
function main() {
let imgWrapper = document.getElementsByClassName("wrapper")[0];
let image = document.createElement("img") ;
image.src = "https://i.stack.imgur.com/XFRNl.png" ;
imgWrapper.style.width = image.naturalWidth + "px";
imgWrapper.style.height = image.naturalHeight + "px";
imgWrapper.appendChild(image) ;
}
需要等待图片加载完成后才能给父级设置宽高div。
此外,image.width
& image.height
是数字,但 div 样式需要 <value>px
格式,所以我们不能直接分配它。
function main() {
let imgWrapper = document.getElementsByClassName("wrapper").item(0) ;
let image = document.createElement("img") ;
image.src = "https://i.stack.imgur.com/XFRNl.png" ;
image.addEventListener('load', function() {
imgWrapper.style.width = image.width + 'px';
imgWrapper.style.height = image.height + 'px';
}, false);
imgWrapper.appendChild(image);
}
* {
margin: 0;
padding: 0;
}
.container{
height: auto;
/*background-color: #121212;*/
display: flex;
justify-content: center;
align-items: center;
}
.wrapper{
background-color: blueviolet;
position: relative;
}
.wrapper img{
position: absolute;
left: 0;
top: 0;
}
<body onload="main()">
<div class="container">
<div class="wrapper">
</div>
</div>
</body>