使用JavaScript的实际图像宽度
时间:2020-03-05 18:47:12 来源:igfitidea点击:
我有下一个功能:
function setImagesWidth(id,width) { var images = document.getElementById(id).getElementsByTagName("img"); for(var i = 0; i < images.length;i++) { // If the real width is bigger than width parameter images[i].style.width=width; //} } }
我仅在图像实际宽度大于属性值时才将所有img标签的css width属性设置为特定值。如果可能的话,我想要一个不使用任何特定框架的解决方案。
images [i] .offsetWidth`对于109px宽度的图像返回111. 这是因为每个边框1px?
解决方案
回答
希望这里有足够的示例代码可以为我们提供所需的内容:
var myImage = document.getElementById("myImagesId"); var imageWidth = myImage.offsetWidth; var imageHeight = myImage.offsetHeight;
这应该为我们提供导出所需解决方案所需的数量。我认为我们可以自己编写其余代码。 :)
编辑:在这里,我无奈自己就是你所追求的吗?
function setImagesWidth(id,width) { var images = document.getElementById(id).getElementsByTagName("img"); for(var i = 0; i < images.length;i++) { if(images[i].offsetWidth > width) { images[i].style.width= (width + "px"); } } }
回答
小心点,看来我们可能更想要clientWidth
:
http://developer.mozilla.org/en/Determining_the_dimensions_of_elements
回答
编辑:我可以以某种方式接受这个答案作为最后一个吗?
由于offsetWidth不返回任何单位,因此必须将css属性的.px结尾连接起来。
// width in pixels function setImagesWidth(id,width) { var images = document.getElementById(id).getElementsByTagName("img"); for(var i = 0; i < images.length;i++) { if(images[i].offsetWidth > width) { images[i].style.width= (width+".px"); } } }
回答
@Sergio del Amo:确实,如果我们查看我的链接,将会看到我们想要的是" clientWidth"。
@Sergio del Amo:很遗憾,我们不能接受自己的回答。但是我们在" px"后缀中确实有多余的句号,因此让我们开始吧,包括clientWidth
的更改:
// width in pixels function setImagesWidth(id, width) { var images = document.getElementById(id).getElementsByTagName("img"); var newWidth = width + "px"; for (var i = 0; i < images.length; ++i) { if (images[i].clientWidth > width) { images[i].style.width = newWidth; } } }