jQuery css3背景大小
我在使用jQueryjQuery 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
.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();