大猫の意淫网志
  • 29
  • Jun

今天遇到一挺郁闷的bug
IE8 标准模式
要实现如图的效果,图片宽度最大100px,小于100就自适应,
右边文字围绕左边的图

症状:
图片外容器宽度还是取决于图片原始大小而非max-width定义的大小

测试可跑如下代码
<!DOCTYPE html><html><body><div style="background:#2CA0B7;float:left;"><img src="http://ooxx.me/me.jpg" style="max-width:50px;" /></div></body></html>

也可以看DEMO
http://code.sh/lab/demo/bug_ie8_max-width.html

哪位大湿有无解决方案?

假装异步加载ing

» You can leave a comment, or trackback from your own site.

大战 43 回合 to “IE8 标准模式 max-width bug 求解”

  1. maoz says:

    :( :( :( 不会,我打酱油的 :twisted: :twisted: :twisted:

    Reply

  2. whatUwant says:

    用JS吧。。。jQuery处理起来还是比较简单的

    Reply

    bigCat:

    @whatUwant, :) JS会增加客户端损耗,我宁愿IE8下写个hack定宽
    只是寻找更好的解决方案

    Reply

    whatUwant:

    @bigCat, 对于IE用户,我觉得加点损耗也无所谓,反正已经很慢了 :lol:

    Reply

    bigCat:

    @whatUwant, 我虽然讨厌IE,但不会拒绝IE,而且要做好IE,因为客户用的都是IE6,客户爽了才会掏钱

    Reply

  3. tomie says:

    ;) 送上参考资料一枚 http://stackoverflow.com/questions/1771176/ie8-non-compatibility-mode-image-with-max-width-and-heightauto

    Reply

    bigCat:

    @tomie, :oops: 早搜过了... 不搜也不好意思拿出来问啊
    你试过有效么?我试过无效

    Reply

    bigCat:

    @tomie, 而且还不是一个bug

    Reply

  4. tomie says:

    js 解决方式一枚 http://nfine.net/bugs/ie8bug.html

    Reply

    bigCat:

    @tomie, 这个不是解决方案,而是展示bug用的.... JS我会啊,不过不希望用js去增加损耗

    Reply

  5. ytzong says:

    这个就是 http://jhop.me/ie8-bugs 第45个
    IE8的bug也不少,推荐做法是不鸟它,带入IE7模式

    Reply

    bigCat:

    @ytzong, 老湿,偶不要多那一句....昨天给jhop写了个邮件了已经

    Reply

  6. 星点 says:

    :lol: 大猫也有不会的吧

    Reply

    bigCat:

    @星点, 所以拉出来求助,哈哈

    Reply

  7. N1 says:

    不知道可以在这里直接开问否,先占了再说:

    在IE8中打开http://www.newone.org/左下角提示‘网页上有错误“

    网页错误详细信息
    消息: 'document.getElementById(...)' 为空或不是对象
    行: 20
    字符: 279
    代码: 0
    URI: http://www.newone.org/wp-content/themes/newon/js/easytabs.js

    Reply

    bigCat:

    @N1, document.getElementById(tablink_idname[menunr] + i) is null
    [Break on this error] function easytabs(menunr, active) {if ...ge(){clearTimeout(timer);counter=0;}
    easytabs.js (第 20 行)
    找你们开发去

    Reply

  8. says:

    http://byzuo.com/demo/auto_width_height/
    就这个意思吗?

    Reply

    bigCat:

    @佐, 我想让图片父容器宽度自适应...

    Reply

  9. atrl says:

    想不出解决方法,前排占位

    Reply

  10. Yang says:

    既然不想增加损耗又要取悦该死的IE
    那你还是多写点代码吧~~
    PS:demo里的哥哥... 真正吖 ;)

    Reply

    bigCat:

    @Yang, 没办法,经常因为帅而被驻足
    对于这个问题,替代方案是有几个,只是想追求完美点嘛,放blog也是为了请教潜水的大湿们

    Reply

  11. Firm says:

    俺也来折腾看看,为了IE6的问题,搞了一下午 :x

    Reply

  12. 飞鱼 says:

    啊~~~ 猫猫现在已经不鸟IE6啦~~ oh yah ~~~ :!:

    Reply

    bigCat:

    @飞鱼, IE6下的问题基本都有替代的解决方案或整整hasLayout就好了 :) 死IE8

    Reply

  13. asins says:

    猫啊,你想在img标签上使用max-width属性本身就是个不好的想法,这种标签上对这样的设置很不敏感的.外面加一层DIV吧!

    Reply

    bigCat:

    @asins, = = 话说外面就是个div,bug发生的时候那个div被里头img的真实宽度撑开。。。

    Reply

  14. 来围观。。。。。。。。。

    Reply

    电脑知识收藏夹:

    @我吃西红柿, 8O 来围观你顺便学日语……ブログ是主页?网址?雅蠛蝶?

    Reply

    Yang:

    @电脑知识收藏夹,
    博客
    我机翻 我自豪~

    Reply

  15. 任鸟飞 says:

    呵呵 加个overflow 属性啊, overflow:hidden.
    宽度超过50px,自动将其隐藏掉. :lol:

    Reply

    bigCat:

    @任鸟飞, 我要的效果是小于50的时候容器也要自适应宽度变得小于50……

    Reply

  16. 河北 says:

    饿~~~~~~~~~~IE竟出新花样

    Reply

  17. derek says:

    將原本的
    img{max-width:100px;}
    改為
    img{
    max-width:100px;
    width: expression(this.width > 100 ? '100px' : true);
    }

    即可解決

    有其他問題歡迎來小站問我喔!感謝支持!

    Reply

    大猫:

    @derek, :oops: CSS expression 这么写有严重的性能问题,不停的reflow.... JS能轻松搞定的,就是想找个CSS的替代方案

    Reply

    derek:

    @大猫,

    不用JS看來是沒辦法,因為IE8以下不支援CSS3,除非你自己將IE重寫,置入CSS3解析引擎,然後拿到微軟官網發布,不然就是等待IE9吧!哈哈!!

    Reply

    derek:

    @大猫,
    這個問題就跟純CSS不用圖片跟JS來實現圓角的問題一樣
    完全就是IE支援度的問題
    沒有改變IE及使用者的能力就只能接受了

    Reply

    大猫:

    @derek, :( 看来只能这样子了,还好做的站点IE优先级是最低的,排下来是iphone android blackberry safari/chrome firefox opera ie 8 7 6 渐进增强嘿嘿,谢谢~

    Reply

  18. 爱美 says:

    记住这些错综复杂的,真的好难啊

    Reply

Leave a Reply

:!: :roll: :o :lol: :P :( 8O :x :oops: :) :?: :idea: :evil: ;) :twisted: XHTML<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>