Sub-Pixel Problems in CSS(3)

http://www.itjxue.com  2015-08-06 23:08  来源:未知  点击次数: 

 

通过连续的点击+1/-1按钮可以看出,当#pg宽度>#pg背景图片宽度(400px)且为奇数时,右侧才会出现这1px的空隙

当我们纠结于奇偶数的时候,神奇的

body{margin-left:1px} 

出现了,详见《CSS IE one pixel image offset hack》。当设置了body的左外边距为1px时,不管奇偶数都不会出现这个1px的空隙了。不过,当body宽度小于背景大图宽度(这里是400px)且为偶数时,左侧交界处却出现了1px的空隙

看来只有用JS解决了,是当body宽度≥背景大图宽度(这里是400px)时,令body margin-left:1px,<时则去除margin-left:1px 全部代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
<title>Sub-Pixel</title> 
<style type="text/css"> 
body, div, p{margin:0;padding:0;}  
body{text-align:center;}  
button{margin:1em;padding:0 1em;}  
#pg, body{background-position:center 0;background-repeat:no-repeat;}  
body{background-image:url('http://webteam.tencent.com/wp-content/uploads/2010/3/1749_003.jpg');}  
#pg{margin:0 auto;width:200px;height:200px;background-image:url('http://webteam.tencent.com/wp-content/uploads/2010/3/1749_004.jpg');}  
.fix-bg{margin-left:1px;}  
</style> 
</head> 
 
<body> 
 
    <div id="pg"></div> 
 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/
jquery.min.js"></script> 
<script> 
$(document).ready(function(){  
    var body = $('body');  
 
    function fixBg() {  
        (body.width() >= 400) ? body.addClass('fix-bg') : body.removeClass('fix-bg');  
    }  
 
    fixBg();  
    $(window).resize(fixBg);  
})  
</script> 
 
</body> 
 
</html> 

后记

眼看就要圆满了,转念一想:“如果大图宽度是奇数,会出现这个问题吗?如果出现了,那怎么搞捏?” 额…介个,介个…

(责任编辑:IT教学网)

更多

推荐Javascript/Ajax文章