ie6下多个a标签折行bug
来源:互联网 发布:glpi windows 编辑:程序博客网 时间:2024/05/17 22:48
今天遇到一个问题,是ie6下面的bug,有几个a标签设定block浮动后,最后一个没有包含在div内,
先看我的html结构:
<div class="lsjs_rightstu"> <a class="lsjs_rightstua" href="#"><imgsrc="style/images/q1.jpg" /></a> <a class="lsjs_rightstua" href="#"><imgsrc="style/images/q2.jpg" /></a> <a class="lsjs_rightstua" href="#"><imgsrc="style/images/q3.jpg" /></a> <a class="lsjs_rightstua" href="#"><imgsrc="style/images/q4.jpg" /></a> </div>
css代码:
.lsjs_rightstu{ height:109px; width:896px;background:#000; overflow:hidden;}.lsjs_rightstua{ display:block; float:left;width:224px; height:109px; overflow:hidden;}.lsjs_rightstu img{ width:224px;height:109px;}
具体如下图:
最后一张会掉出外面,被隐藏掉
明明div宽度就是四个a标签的总和,测试了好久,突然想起来来以前处理的a标签和span标签写在html里头,连续几个标签采用折行写法的时候ie6会有空白bug,这又去百度找了好久,使用inline-block啊,font-size:0啊等等,都没办法解决,想了好久都想不通。尝试了很多办法都没解决,最后把ie6浮动的去掉变成inline竟然可以了,总结了下,共有以下几种办法可行
方案1:标签头尾相接,如下:
<div class="lsjs_rightstu">
<a class="lsjs_rightstua" href="#"><imgsrc="style/images/q1.jpg" /></a><aclass="lsjs_rightstua" href="#"><imgsrc="style/images/q2.jpg" /></a><aclass="lsjs_rightstua" href="#"><imgsrc="style/images/q3.jpg" /></a><aclass="lsjs_rightstua" href="#"><imgsrc="style/images/q4.jpg" /></a>
</div>
完美解决,但是html代码不美观,维护性不好,当然如果这里是固定的后期不会在有拓展,那这种还是比较简单明了的办法
方案2:在ie6下a标签inline化,不要float,然后img又block,左float化,神奇的竟然可以了,这是我在测试好久发现可以的,但是不知道是不是符合w3c的写法标准,所以这个只能pass掉了
.lsjs_rightstu{ height:109px; width:896px;background:#000; overflow:hidden;}
.lsjs_rightstua{ display:block; float:left;_display:inline; _float:none; width:224px; height:109px; overflow:hidden;}
.lsjs_rightstua img{ display:block;float:left; width:224px; height:109px;}
方案3:将a标签包含在div块内,div左float化,a标签block化就好了
<div class="lsjs_rightstu">
<divclass="aa"><a class="lsjs_rightstua"href="#"><img src="style/images/q1.jpg"/></a></div>
<divclass="aa"><a class="lsjs_rightstua"href="#"><img src="style/images/q2.jpg"/></a></div>
<divclass="aa"><a class="lsjs_rightstua"href="#"><img src="style/images/q3.jpg"/></a></div>
<divclass="aa"><a class="lsjs_rightstua"href="#"><img src="style/images/q4.jpg"/></a></div>
</div>
.aa{ float:left; width:224px;height:109px;}
.aa a{ display:block; width:224px;height:109px;}
我个人觉得这种方法比较好,虽然html比较累赘,但是看着也舒服,后期拓展加上文字描述之类的方便,我比较想不透的是为什么a标签block化,没办法达到效果。
方案4:针对ie6使用负margin写hack解决,但是这种一个不好就是最后一张图片背景色必须是有规律的,然后把父元素的背景色调整为最后一张图的颜色,或者渐变背景,如下:
.lsjs_rightstu{ height:109px; width:896px; background:#f2f2f2;}
.lsjs_rightstua{ display:block;float:left; width:224px; height:109px;overflow:hidden;_margin-left:-1px;}
.lsjs_rightstua img{ width:224px; height:109px;}
最终表现完美,如下图:
目前就知道这几种方案,不知道还有没有其他可以又符合标准写法的,如果你也知道请留言告知下哦~
ps:对于inline和inline-block的测试,网上说的inline-block的兼容我又测试了下,发现确实是可行,就是只有包裹img标签的不可行,包裹span标签都能成功,很有可能img还有其他的bug也说不定。。
如下html和css代码:
<ul class="t1"> <li>11111</li><li>333lili33</li> <li>22222</li> </ul> <ul class="t2"> <li>44444</li><li>555lili55</li> <li>66666</li> </ul> <div class="ta"> <a href="a">11111</a><a href="a">22aaaa222</a> <a href="a">33333</a> </div> <div class="tspan"> <span>11111</span><span>22span222</span> <span>33333</span> </div><div class="lsjs_rightstu"> <a class="lsjs_rightstua" href="#"><img src="style/images/q1.jpg" /></a> <a class="lsjs_rightstua" href="#"><img src="style/images/q2.jpg" /></a> <a class="lsjs_rightstua" href="#"><img src="style/images/q3.jpg" /></a> <a class="lsjs_rightstua" href="#"><img src="style/images/q4.jpg" /></a></div><ul class="t3"> <li><span>3232</span></li><li><span>2222</span></li> <li>2<span>1111</span></li></ul>
css:
/*YUI 3.18.1 (build f7e7bcb)Copyright 2014 Yahoo! Inc. All rights reserved.Licensed under the BSD License.http://yuilibrary.com/license/*/html{color:#000;background:#FFF}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;*font-size:100%}legend{color:#000}#yui3-css-stamp.cssreset{display:none}ul{ font-size: 0;}/*使用font-size:0解决了inline-block和inline的空白*/ul.t1 li{ display: inline-block; border: solid 1px red; margin: 50px 0 0; font-size: 12px;}/*不做兼容处理*/ul.t2 li{ display: inline; border: solid 1px red; margin: 50px 0 0; font-size: 12px; }ul.t3{ width: 186px; height: 30px; background: #ccc; }ul.t3 li{ display: inline-block; width: 60px; font-size: 12px; border: solid 1px black;}ul.t3 li{ *display: inline;}/*处理ie7/6的inline-block的兼容*/div.ta a{ border: solid 1px red;}/*不使用font-size:0折行排列的html代码会有大约一个空格的空白*/div.tspan span{ border: solid 1px red;}.lsjs_rightstu{ height:109px; width:896px; background:#000; overflow: hidden; font-size: 0;}.lsjs_rightstua{ display: inline-block; font-size: 12px; width:224px; height:109px; overflow:hidden;}.lsjs_rightstua{ *display: inline;}.lsjs_rightstua img{ width:224px; height:109px;}
各浏览器表现如下图:
ie7
firefox
opera
ie6,不过好像加了边框总和是186但是也没和ul的宽度一致,很奇怪,
到这里才发现确实是只有当a标签包裹img的时候使用网络上提供的那些办法是不起效果的,这个原因到现在都还没整明白,我在用ul li包裹img也都能完美兼容各个浏览器的
<ul class="t3">
<li><img src="style/images/q1.jpg" /></li>
<li><img src="style/images/q1.jpg" /></li>
<li><img src="style/images/q1.jpg" /></li>
<li><img src="style/images/q1.jpg" /></li>
</ul>
ul.t3{ height:109px; width:896px; background:#000; overflow: hidden; font-size: 0;}
ul.t3 li{ display: inline-block; font-size: 12px; width:224px; height:109px; overflow:hidden;}
ul.t3 li{ *display: inline;}
主体是ie7/6的表现,都很完美,
- ie6下多个a标签折行bug
- IE6下a标签无法点击bug 以及扩展
- a标签包裹button在IE6,IE7下的bug
- IE6 Peek-a-boo Bug
- IE6下a标签无法点击bug----position和定义的宽度和高度
- a:hover在IE6中的BUG
- IE6 中 a:hover 的bug
- a标签 AJAX调用BUG
- IE6下a标签#号问题解决方法
- ie6下 a标签 无法提交
- ie6,ie7下a标签无法点击
- IE6、IE7的a标签下划线问题
- ie6 bug
- ie6---bug
- IE6 Bug
- IE6 BUG
- IE6 中 a:hover 的bug (转)
- 关于Swiper3.x的a标签bug
- proftpd配置ftp over TLS实录
- Gpgraph的使用与配置--第二篇
- Android数据库高手秘籍(三)——使用LitePal升级表
- 21、Merge Two Sorted Lists
- Spring MVC学习之二:注解介绍
- ie6下多个a标签折行bug
- java.lang.OutOfMemoryError: unable to create new native thread
- Jwchat 的安装和配置、Service unavailable、Authorization failed问题汇总
- android 软键盘弹出,界面上移
- mysql 获取所有表和字段
- android开发之移动端屏幕适配随谈
- javaFX8初探(构建3D简单应用)
- MVC4.0异步加载文件
- Android数据库高手秘籍(四)——使用LitePal建立表关联