我正在尝试构建一个jQuery插件,它实现了我网站中已有的一些功能(但是以一种易于重用的方式):根据浏览器的宽度更改图像的“src”属性。
问题是,在加载新图像时,img元素会暂时折叠到0高度和宽度,然后跳转到新高度。即使预加载图像也是不够的(我认为这是因为巨大的尺寸使得即使在预先下载后也需要加载时间。)
我决定这样做:
我不想弄乱用户(用户指的是程序员使用我的库)CSS规则和HTML属性。
问题在于尺寸可以用不同的方式定义,例如:
<img width="xx" height="yy">
img { width: xx, height: yy }
所以,我正在寻找的行为是:
问题是:如何以恢复先前规则的方式取消设置强制尺寸,即使它只是图像文件中的规则?
答案 0 :(得分:1)
只需使用内联样式。它会覆盖所有其他样式属性。
您可以使用!important
作为衡量标准。
答案 1 :(得分:1)
使用!important
内联样式覆盖其他所有内容的事实。所以,你的算法应该:
element.style.cssText
; element.style.cssText
)。=== (编辑所以我可以在代码中添加解决方案并接受答案)
好的,我做了你说的,它工作得很好:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<div>
<img id="myimg" src="http://i.imgur.com/8eos7vW.jpg" height="200" style="height:300px;"/>
<img id="myimg2" src="http://i.imgur.com/8eos7vW.jpg" height="200"/>
<img id="myimg3" src="http://i.imgur.com/8eos7vW.jpg"/>
</div>
<script>
$('div').append("<BR>element height: " + document.getElementById('myimg').height + "px");
top.backupcss = document.getElementById('myimg').style.cssText;
top.backupcss2 = document.getElementById('myimg2').style.cssText;
top.backupcss3 = document.getElementById('myimg3').style.cssText;
$('div').append("<BR>element.style.cssText: " + top.backupcss);
$('div').append("<BR>element.style.cssText (2): " + top.backupcss2);
$('div').append("<BR>element.style.cssText (3): " + top.backupcss3);
$("#myimg").css({"width": "10px", "height": "10px"});
$("#myimg2").css({"width": "10px", "height": "10px"});
$("#myimg3").css({"width": "10px", "height": "10px"});
setTimeout(function(){
document.getElementById('myimg').style.cssText = top.backupcss;
document.getElementById('myimg2').style.cssText = top.backupcss2;
document.getElementById('myimg3').style.cssText = top.backupcss3;
},10000);
</script>
!important位不起作用:如果我将!important
添加到.css()
来电,则会完全停止工作。