javascript - 具有动态高度和绝对位置的子 DIV - 将高度赋予父 DIV

标签 javascript jquery html css css-position

(请记住我不懂代码)

http://sebcastilho.com/

我希望图像 slider 拉伸(stretch)到浏览器的整个宽度。该网站的主题使用了一些响应式代码,因此无法将 slider 的父 DIV 宽度设置为 100%。

所以解决方案是'position: absolute'让 slider 适应浏览器的 100% 宽度。但是,当我这样做时,浏览器不知道 slider 的内容有多高,因此网站的下一部分最终会向上移动并被 slider 覆盖。

如何让 Royal Slider 的父 DIV 根据 slider 的高度动态改变高度( slider 本身是动态的,取决于它的像素宽度)?

编辑(在 ncardeli 的回答之后) 我得到了这段我发现有效的代码。它获取 slider div(具有 position: absolute 的那个)的高度,并将高度赋予包含的 div。

$(document).ready(function(){
    var x = $('#new-royalslider-1').height();
    $('.photographySlider').css('height', x);
})

我的问题是,如果浏览器改变大小,它不会刷新。我怎样才能做到这一点?

最佳答案

纯 CSS 的解决方案可能是可行的,使用 vw unitcalc .

您应该将 slider 的宽度设置为 100vw,并将其相对定位。

#new-royalslider-1 {
    background-color: black;
    margin: 0 auto;
    overflow: visible;
    padding: 0;
    position: relative;
    width: 100vw !important;
}

然后您应该为每个断点设置一个规则,将 left 设置为一个计算值。计算值是容器宽度减去视口(viewport)宽度和左内边距的值:

@media (min-width: 768px) {
    #new-royalslider-1 {
        left: calc((750px - 100vw) / 2 - 15px);
    }
}

@media (min-width: 992px) {
    #new-royalslider-1 {
        left: calc((970px - 100vw) / 2 - 15px);
    }
}

@media (min-width: 1200px) {
    #new-royalslider-1 {
        left: calc((1170px - 100vw) / 2 - 15px);
    }
}

在此处查看浏览器支持情况:

如果您更喜欢 Javascript 解决方案,此脚本将执行以下操作:

$(window).on('resize', function (){
    $('.photographySlider').height($('#new-royalslider-1').height());
})

关于javascript - 具有动态高度和绝对位置的子 DIV - 将高度赋予父 DIV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26080755/

相关文章:

javascript - 在 JS 中使用修改后的正则表达式匹配并替换正则表达式

javascript - jQuery - 获取包含 HTML 标签的文本区域的值

javascript - 如何使用 jquery 将两个元素关联/链接在一起?

javascript - 在 iframe 中使用 document.write 作为脚本时 Chrome 中的奇怪行为

javascript - PHP 函数不适用于 Ajax

javascript - JS/jQuery 延迟循环以获得期望的结果(延迟()不工作)

javascript - 如何处理中止的同步 AJAX

jQuery FullCalendar JSON 日期问题

javascript - 指定一个div区域不做js/jquery的功能

javascript - 如何检查挖空渲染时间?