javascript - 获取 100% 宽度图像的高度

标签 javascript jquery

我试图从浏览器的宽度中获取其宽度为 100% 的图像高度。

$(document).ready(function(){
    var heightImage = $('ul.images img').height();
    $('ul.images').css("height", heightImage + "px");
});

上面代码的问题是,当我调整浏览器大小时,100% 宽度的图像高度发生变化,heightImage 没有变化。

所以我决定使用:

$(window).resize(function(){
    var heightImage = $('ul.images img').height();
    $('ul.images').css("height", heightImage + "px");
});

上面的代码有两个问题:

图像处于绝对位置。有时显示 block ,有时不显示。它在图像淡入之前捕获图像高度以从幻灯片放映中显示。当浏览器大小改变时,它会改变图像的高度。但是如果我们在图像褪色时调整浏览器的大小,而所有图像都没有显示,它会捕获图像的高度为 0px。

该代码的第二个问题是它仅在浏览器尺寸发生变化时检测图像的高度。

谁能给我一个替代方案,如何在宽度为 100% + 浏览器调整大小时捕获幻灯片上图像的高度?

提前致谢。

我的 HTML 代码

<ul class="images">
   <li><img src="1.jpg" /></li>
   <li><img src="2.png" /></li>
   <li><img src="3.jpg" /></li>
   <li><img src="4.jpg" /></li>
</ul>

我只是从附近的某个地方复制粘贴了这段代码:

var triggers = $('ul.triggers li');
var images = $('ul.images li');
var lastElem = triggers.length-1;
var target;

triggers.first().addClass('active');
images.hide().first().show();

function sliderResponse(target) {
    images.fadeOut(500).eq(target).fadeIn(500);
    triggers.removeClass('active').eq(target).addClass('active');
}

triggers.click(function() {
    if ( !$(this).hasClass('active') ) {
        target = $(this).index();
        sliderResponse(target);
        resetTiming();
    }
});

$('.next').click(function() {
    target = $('ul.triggers li.active').index();
    target === lastElem ? target = 0 : target = target+1;
    sliderResponse(target);
    resetTiming();
});
$('.prev').click(function() {
    target = $('ul.triggers li.active').index();
    lastElem = triggers.length-1;
    target === 0 ? target = lastElem : target = target-1;
    sliderResponse(target);
    resetTiming();
});

function sliderTiming() {
    target = $('ul.triggers li.active').index();
    target === lastElem ? target = 0 : target = target+1;
    sliderResponse(target);
}

var timingRun = setInterval(function() { sliderTiming(); },5000);
function resetTiming() {
    clearInterval(timingRun);
    timingRun = setInterval(function() { sliderTiming(); },5000);
}

最佳答案

这样做:

var heightImage = $('ul.images img').height();
$(window).resize(function(){
    heightImage = $('ul.images img').height();
    $('ul.images').css("height", heightImage + "px");
}).resize();

关于javascript - 获取 100% 宽度图像的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31274730/

相关文章:

jquery - jQuery 中如何知道 body 中的哪个元素触发了 AJAX 请求

javascript - 多个 $(document).ready 和 $(window).load 在 $(document).ready

jquery - 如何使用jquery更改类名?

javascript - Oracle Jet 不显示来自 Web 服务的数据

javascript - 将巨大的 if else 语句转换为 Javascript 中的循环

javascript - 简单的三元运算符不起作用

javascript - Vue js 过滤替换违禁词

javascript - D3 鼠标悬停转换获取 "stuck"

c# - 从 jquery 渲染局部 View 不工作

javascript - 如何使用map获取所有子菜单数据或属性?