【问题标题】:An image with width larger than the window size initially loads as the same width as the window宽度大于窗口大小的图像最初加载为与窗口相同的宽度
【发布时间】:2016-09-05 21:02:47
【问题描述】:

我想要做的是使用这个 jQuery 使图像居中。我的图片的选择器是“.section-header img”。

var image_center = function(){

    var imageWidth = $('.section-header img').width();
    var windowWidth = $(window).width();
    var centerFix = -(imageWidth-windowWidth)/2 ;

    console.log(imageWidth, windowWidth, centerFix);

    $('.section-header img').css({'left': centerFix});


}

我在文档准备好和调整窗口大小时调用该函数:

$(document).ready(function(){

    image_center();

    $(window)resize(function(){
        image_center();
    }

我的问题是当窗口最初加载时我无法使该功能工作。查看我的控制台,浏览器将图像读取为与浏览器具有相同的宽度。一旦我调整浏览器的大小,就会读取图像的实际宽度。 Chrome 中是否有一些内置的东西让我在这里绊倒?有没有更简单的方法(不使用背景图片)?

谢谢,

心肺复苏术

【问题讨论】:

标签: javascript jquery html css image


【解决方案1】:

在这项工作中使用 css 可能会更容易。

.section-header {
     background-image: url("/path/to/image.jpg");
     background-position: center;
     background-size: contain;
     background-repeat: no-repeat;
}

【讨论】:

  • 这绝对是最简单的方法,但我使用 wordpress 插入图像,所以这不是一个选项。还是谢谢
【解决方案2】:

不确定是否还希望调整 img 大小。

这是一个调整大小和你的 img 标签 + section-header div 或任何它的例子:

.section-header{
  width: 50%;
  left: 25%;
  margin-left: auto;
  position: absolute; 
}

img{
  width: 100%;
  height: 100%;
}

<div class="section-header">
  <img src="http://placehold.it/350x150" alt="">
</div>

https://jsfiddle.net/Lj4mfqLa/

更新:

您也可以尝试将您的 jquery 代码包装在:

$(window).load(function(){  
    //initialize after images are loaded  
});

而不是

$(document).ready(function(){})

【讨论】:

  • 感谢您的回复。这不起作用,因为我要填充的 div 是 100% 宽度,而且图像更宽。我正在使用溢出:隐藏;只显示适合 div 的图像部分,并且我编写的 jQuery 函数将该图像移到 div 中居中。主要问题是浏览器最初不会识别图像的整个宽度,只能识别窗口的宽度......它令人困惑,所以如果我没有很好地解释它,我很抱歉
  • @CandyPaintedRIMS 您可以尝试更新 - 很抱歉简短的回答必须让我的火车站女朋友;P
  • @CandyPaintedRIMS window.load 是否为您完成了这项工作,还是您需要进一步的想法? (:
  • 不,它最终没有工作。我还没有想通。感谢您的帮助p
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-07
  • 1970-01-01
  • 2012-10-22
  • 2014-01-12
  • 2012-12-15
  • 1970-01-01
  • 2018-12-11
相关资源
最近更新 更多