最常用的9种CSS BUG解决方法与技巧 – 各大浏览器兼容

CSS bug是佈局中最头疼的问题。我们需要兼顾各种浏览器,以期待获得一致的效果。非常遗憾的是各厂商之间的竞争导致很多问题的存在。而IE6与IE7在很多问题上也存在著很大的差别。轻鬆的解决CSS bug是我们必须掌握的技能。现在整理出最常用的12种CSS BUG解决方法以及CSS BUG类的小技巧。

希望对您的学习、工作有所帮助,如果您依然有疑问,

 

一、针对浏览器的选择器

 

这些选择器在你需要针对某款浏览器进行css设计时将非常有用.

 

IE6及其更低版本

* html {}

IE7及其更低版本

*:first-child+html {} * html {}

仅针对IE7

*:first-child+html {}

IE7和当代浏览器

html>body{}

仅当代浏览器(IE7不适用)

html>/**/body{}

Opera9及其更低版本

html:first-child {}

Safari

html[xmlns*=""] body:last-child{}

要使用这些选择器,请将它们放在样式之前. 例如:

 

#content-box {
width: 300px;
height: 150px;
}
* html #content-box {
width: 250px;
}

二、让IE6支持PNG透明

一个IE6的Bug引起了大麻烦, 他不支持透明的PNG图片。

你需要使用一个css滤镜

*html #image-style {
background-image: none;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="/fil
ename.png", sizingMethod="scale");
}

三、移除超链接的虚线

 FireFox下,当你点击一个超链接时会在外围出现一个虚线轮廓. 这很容易解决, 只需要在标籤样式中加入:outline:none.

a{
outline: none;
}

四、给行内元素定义宽度

如果你给一个行内元素定义宽度,那麼它只是在IE6下有效. 所有的HTML元素要麼是行内元素要麼就好是块元素. 行内元素包括:<span>, <a>, <strong> 和 <em>. 块元素包括<div>, <p>, <h1>, <form>和<li> . 你不能定义行内元素的宽度, 為瞭解决这个问题你可以将行内元素转变為块元素.

span { width: 150px; display: block }

五、让固定宽度的页面居中

 

為了让页面在浏览器居中显示,需要相对定位外层div, 然后把margin设置為auto.

#wrapper {
margin: auto;
position: relative;
}

六、IE6双倍边距的bug

 

给此对象加上display:inline即可解决问题。

 

 

七、图片替换技术

 

用文字总比用图片做标题好一些.文字对屏幕阅读机和SEO都是非常友好的.

HTML:

<h1><span>Main headingone</span></h1>

CSS:

h1 { background: url(heading-image.gif)no-repeat; }
h1 span {
position:absolute;
text-indent: -5000px;
}
 

你可以看到我们对标题使用了标準的<h1>作為标籤并且用css来将文本替换為图片.text-indent属性将文字推到了浏览器左边5000px处, 这样对於浏览者来说就看不见了.

关掉css,然后看看头部会是什麼样子的.

 

八、最小宽度

 

IE6另外一个bug就是它不支持min-width 属性. min-width又是相当有用的, 特别是对於弹性模板来说, 它们有一个100%的宽度,min-width 可以告诉浏览器何时就不要再压缩宽度了.

除IE6以外所有的浏览器你只需要一个 min-width: Xpx; 例如:

.container {
min-width:300px;
}

 

為了让他在IE6下工作, 我们需要一些额外的工作. 开始的时候我们需要创建两个div,一个包含另一个:

 

<div class="container">
<divclass="holder">Content</div>
</div>

 

然后你需要定义外层div的min-width属性,

.container {
min-width:300px;
}

 

这时该是IE hack大显身手的时候了. 你需要包含如下的代码:

 

* html .container {
border-right: 300px solid #FFF;
}
* html .holder {
display: inline-block;
position: relative;
margin-right: -300px;
}

原文:

As the browser window is resized the outerdiv width reduces to suit until it shrinks to the border width, at which pointit will not shrink any further. The holder div follows suit and also stopsshrinking. The outer div border width becomes the minimum width of the innerdiv.

译文:

随着浏览器窗口大小,直到它缩小边框宽度,在pointit不会缩水的任何进一步降低,以适应outerdiv宽度。持有股利如下西装,也stopsshrinking。外层div边框宽度变成的最小宽度innerdiv

 

九、隐藏水平滚动条

 

為了避免出现水平滚动条, 在body裡加入 overflow-x:hidden .

body { overflow-x: hidden; }

当你决定使用一个比浏览器窗口大的图片或者flash时, 这个技巧将非常有用.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值