只要有不同的浏览器存在,或多不少的浏览器渲染方式就会有所差异,这是在所难免,很多人在写页面的时候,发现在FF下看的完全没问题,但是在IE6下一看全乱的没样了,此时就会说IE6真垃圾真坑爹,当年我也有这种想法,我也曾很气愤。
但是随着东西做的越来越多,我发现其实IE6是过时了,但是真正来自于浏览器自身的bug其实不多,更多是来自于开发者 我们自身书写的不规范,我经常对身边的人说,IE6就像一个严厉的老师,你代码稍微有一点不合适,不恰当,一点点的偷工减料,她都不允许你通过!,而那些标准浏览器,更像是一个博爱的老师,你页面中出现的不规范,她不提醒你,而是通通为你包容,按照你希望的方式帮你展示出来。扯的有点远了~
很多人在遇到“所谓”的bug,先是苦找一番,然后找不出真正地解决办法,找到了这边一改,IE6没问题了,标准的又不合适,这时候多数人就想到了hack 条件注释 等一堆东西,其实我不是很提倡大家用hack,毕竟虽然他解决了当前问题,但是他为日后埋下了隐患,因为你不清楚,哪天你写的这种代码在IE10 IE11下是不是更合适,而且hack都是无法通过Wc3认证的,其实如果我们平时善于去总结,我们会发现很多问题都是可以通过合理的代码编写解决的!
我的目标就是希望我们写出的代码基本不用调BUG,那么就是要总结出来一套会在IE下出问题,同时避开这些问题的代码书写格式,我也在慢慢总结中,简单的我已经不愿意再去写了,写的都是不实际中遇到的-.-
1、<input type="text"/>格式的输入框 和label对齐的写法
为这种格式:<span class="box"><label>姓名:</label></span><input type="text" name="" class="name"/>
css如下:
.name{
height: 26px;
line-height:26px;
vertical-align:middle;
}
.box{
float:left;
80px;
line-height:30px;
text-align:right;
font-size:14px;
height:30px;
}
其中为input左右padding任意添加 ,上下padding不要添加 ,直接用高度来写,然后用line-height使其居中。
左侧的span取和右侧input相同的高度,然后设置line-height就可以保证在IE6-8和火狐标准浏览器下效果一致
ps:值得注意的是 默认情况下
firefox的input会自带2px的边框,所以在计算时我们要注意上下加上,当然也可以为input添加如下样式{border:1px solid #000},那么这样就上下左右均为1px了
2、IE6、7下input 的按钮左右padding值会随着里面value的字符数被撑的很大,如果你设置过一个padding值 这个值会远远大于所设置的值,解决方法:
给input添加overflow:visible; 原因不明!
3、如果文字被遮住一些,很大程度是外层没有设置行高,所以文字被顶上去了,目前在IE7下发现过这个问题