javascript - 响应式地将绝对 img 置于绝对 div 中,感觉就像我尝试了一切

标签 javascript jquery html css

在您将其标记为重复之前,我已经浏览了几个小时寻找解决方案,但它们都不适合我。

我有一个绝对定位的div(#hero-img)作为背景容器,其中有一个img(使用真正的背景不是一个选项,因为我正在使用带有淡入淡出的jQuery循环)。

这是我最终确定的几乎有效的方法:

html:

<div id="hero-img">
    <img src="img/heros/hero-img.jpg" />
</div>

CSS:

#hero-img {
    position: absolute;
    margin: 0 auto;
    top: 0; 
    left: 0; 
    bottom: 0; 
    right: 0;
    height: 100%;
    width: 100%;
    overflow: hidden;
}
#hero-img img {
    width: 100%;
    height: auto;
    position: absolute;
    margin: 0 auto;
    top: 0; 
    left: 0; 
    bottom: 0; 
    right: 0;
}

JS:

var w = window.innerWidth;
var h = window.innerHeight;

if( w / h < 1650 / 1050 ) {
    $('#hero-img img').css("height", "100%");
    $('#hero-img img').css("width", "auto");
}
else {
    $('#hero-img img').css("width", "100%");
    $('#hero-img img').css("height", "auto");
}

这似乎在窗口较宽时有效,但在移动设备大小时则无效。

您可以访问 kylebashour.com/carlex 查看我的意思。

我尝试过 左:50%; margin-left: (图像宽度的一半); 但在某些尺寸下它会将其向左推得太远(我认为因为宽度可能是自动的..)

任何帮助将不胜感激!

最佳答案

对于水平居中,请在您的 img CSS 代码中尝试此操作:

#hero-img img{
    position: absolute;
    left: 50%;
    transform: translate(-50%,0);
    -ms-transform: translate(-50%,0);
    -webkit-transform: translate(-50%,0);
}

此外,如果您想要垂直和水平居中,请尝试以下操作:

#hero-img img{
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%,-50%);
    -ms-transform: translate(-50%,-50%);
    -webkit-transform: translate(-50%,-50%);
}

希望这对你有帮助..

关于javascript - 响应式地将绝对 img 置于绝对 div 中,感觉就像我尝试了一切,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25063949/

相关文章:

javascript - jQuery toggle() 函数。我想要一些批评或建议以更好地实践

javascript - 幻灯片溢出?

javascript - 模拟点击javascript Button

javascript - Google Chart 折线图小时和分钟

php - 使用 $_FILES php 发送其他输入

jquery - 如何查找包含多个字符串的 href

javascript - 如果 div 为空则移除类

javascript - 免费 jqGrid - 搜索过滤器并选择全部

javascript - 为什么 jQuery 的更改事件会多次触发?

javascript - href =“tel:” # 数字中的符号未显示