javascript - 获取元素的尺寸,其中包含延迟加载的图像
问题描述
我目前正在努力通过使用来获取元素“幻灯片”的宽度offsetWidth
。
var slide = $('.slides');
console.log(slide[0].offsetWidth);
console.log(slide[1].offsetWidth);
幻灯片中的所有元素都有不同的宽度。但是,它为所有元素返回相同的值,并且仅对第一个元素为真。
元素有一个width: min-content
属性。
.slides{
width: min-content;
}
“幻灯片”元素内部是一个<img>
元素,每个元素都有一个单独的纵横比,但高度相同。
.slides img{
max-width: inherit;
height: 35vw;
}
解决方案
问题解决了。
如果您有同样的问题,请检查孩子内部的内容是否没有延迟加载。就像我的情况一样,里面的图像在视口中后被加载。这意味着在此之前它还没有宽度。
我是这样解决的:
此代码剪断等待图像加载以获取宽度
var counter = 0;
$(document).ready(function(){
images_length = $('.gallery-image').length;
//i needed to wait until all images have loaded so i picked the last image that fires the last event.
$('.gallery-image').on("load", function() {
if(counter == images_length -1){
var slides = $('.gallery-slide', this);
for (let i = 0; i < slides.length; i++) {
console.log(slides[i].offsetWidth);
}
}
counter++;
});
});
推荐阅读
- quicktype - quicktype json schema to typescript just-type in custom function
- kiwi-tcms - 遇到未捕获的 ReferenceError:未定义 renderFromCache
- c++ - c++ 程序无法从外部代码::blocks 正常运行
- java - 随机飞镖程序
- spring - 为什么在 Spring Security 中出现未知 [Error Creating bean with name 'delegatingApplicationListener']?重要的
- vue.js - v-model 在 Vue 2.x 中有哪些限制?
- ruby-on-rails - 在厨师中使用数组时,我遇到了问题
- python - 将数据保存到模型的问题。错误:禁止保存()以防止由于未保存的相关对象而导致数据丢失
- azure - 在域中使用 VisualStudio 2019 pro
- plotly.js - 在我的 html 网页中绘制的图表根本没有呈现