jQuery css3背景大小

jQuery css3背景大小,jquery,Jquery,我在使用jQuery.css('background-size','contain')时遇到问题 在谷歌Chrome上,有时有效,有时无效。。(90%的情况下不起作用) 以下是我正在使用的代码: function scaleImg(){ var img = $('#img_src_div img'); if(img.height() >= 600 || img.width() >= 570){ $('#img_src_div').css('b

我在使用jQuery
.css('background-size','contain')时遇到问题

在谷歌Chrome上,有时有效,有时无效。。(90%的情况下不起作用)

以下是我正在使用的代码:

function scaleImg(){    

    var img = $('#img_src_div img');
    if(img.height() >= 600 || img.width() >= 570){
        $('#img_src_div').css('background-size','contain');
    }

}
这是一个,它正在工作。但在我的页面中,它不是。 这几乎是一样的,有一些php生成的内容,比如URL和一些文本。代码在父div中

我尝试删除所有可能干扰它的Javascript,但都是一样的。在firefox中,一切正常

编辑:

images.php-它包含在另一个php页面中

//Removed - Was not usefull.
2nd EDIT:通过调用
scaleImg()加载页面后,手动缩放背景。因此,页面加载上存在一个问题

这正是我现在使用的代码

    <script type="text/javascript">
    function scaleImg() {
    var container = document.getElementById(\'img_src_div\');
    var img = container.children[0]; // assuming image is first child
    // var img = container.getElementsByTagName(\'img\')[0]; // use this one if not
    if( img.width >= 570 || img.height >= 600) container.style.backgroundSize = "contain";
}
    $(document).ready(function(){
    scaleImg();
    });
    </script>
尝试纯JavaScript:

function scaleImg() {
    var container = document.getElementById('img_src_div');
    var img = container.children[0]; // assuming image is first child
    // var img = container.getElementsByTagName('img')[0]; // use this one if not
    if( img.width >= 570 || img.height >= 600) container.style.backgroundSize = "contain";
}

jQuery可能正在对CSS调用进行验证,但由于某种原因失败了。普通JS更可靠;)

这将确保在获取图像宽度和高度之前实际加载图像

function scaleImg(){

    var actualImg = $('#img_src_div img'),
        imgH=0,
        imgW=0,
        img = new Image();

    img.src = actualImg[0].src;
    img.onload = function(){
         imgW = img.width;
         imgH = img.height;
        alert(imgW+' x '+imgH);
    }
    if(imgH >= 600 || imgW >= 570){
        $('#img_src_div').css('background-size','contain');
    }
}

scaleImg();

除非这是Chrome中已知的错误,否则我们需要从中断的场景中看到一些帮助。缩放不起作用,背景图像加载到了全尺寸。@isherwood奇怪的是,在JSFIDLE示例中,它起作用了,所以我认为不可能是Chrome错误。我将编辑我的帖子并添加主页。@doniyor当然有了。在firefox中,它正在工作!只有chrome有问题。@DjRikyx,看,检查是否有打字错误。e、 g.
。在ff中,这不会给出错误,但在chrome中。。看看这里:我试过你的代码。图像高度/宽度已正确加载,我可以看到警报。但它仍然保持完整尺寸。在firefox中也不起作用。请尝试您的代码,在firefox上按预期工作,但在Google Chrome中不起作用。同样的问题,很奇怪。尝试在元素上使用检查器(单击鼠标右键,检查),并检查其内联样式。你应该看到
背景尺寸:contain
在上面。如果它被划掉了,可能会有一个警告图标,你可以把鼠标移到上面,看看它不工作的原因。根本没有那条线。我在这里询问之前已经检查过了。我可以在计算样式上看到,背景大小设置为自动,因此根本不应用。有趣。你能试着添加
console.log(img.width,img.height)
看看结果如何吗?我不熟悉chrome控制台,因为我总是使用firefox进行调试,但控制台是空的。我确实在Js函数中添加了这一行,对吗?不管怎样,该函数是正确的,通过手动调用该函数,可以调整背景大小。
function scaleImg(){

    var actualImg = $('#img_src_div img'),
        imgH=0,
        imgW=0,
        img = new Image();

    img.src = actualImg[0].src;
    img.onload = function(){
         imgW = img.width;
         imgH = img.height;
        alert(imgW+' x '+imgH);
    }
    if(imgH >= 600 || imgW >= 570){
        $('#img_src_div').css('background-size','contain');
    }
}

scaleImg();