• 跨浏览器的 inlineblock 实现[CSS]


    最近项目做多浏览器测试遇到一些兼容性问题,比如这个 inline block。所幸大多数问题都解决了,所以写出来分享一下。

    我们在制作网页时,有时会希望一个元素既能像 block 一样定义宽度和高度,又可以像普通的 inline 一样不断行,在 Opera 和 Webkit 中支持一个 CSS2 的属性 display: inline-block。利用这个属性,在 Opera 下即可完全实现我们所需的效果,但在其它浏览器下就不行了。

    display 属性另外还有一个不太常用的值 display: inline-table。利用这个值也可以完全实现我们所需的效果。这个属性被除了 IE 以外的所有浏览器正确支持,但是…… 呃,又是 IE。虽然在面对 CSS 的时候所有 Web Developer 都会恨之入骨,但放弃 IE 就等于放弃 70% 的用户,所以我们还是得找出其它的解决方案。

    没辙了,只好 Google,结果还真给我找到了。在这篇文章中指出,如果你首先触发 IE 的 hasLayout,然后再设置它的 display: inline,这个元素将变为 inline-block! 这样一来,我们就可以利用 IE 这个不可理喻的特点,结合一些 CSS Hacks,给出兼容各种浏览器的 CSS 代码:

    .element-class {
        display: -moz-inline-stack;  //Firefox only code
        display: inline-block;       //some standard browsers
        zoom: 1;                     //IE only
        *display: inline;            //Only IE know this code (CSS Hack)
    }

    通过这样的代码就可以实现在各种浏览器中表现一致的 inline-block 了。不过这种方式有个小缺憾,就是无法通过 W3C CSS 验证。当然,要想通过验证也很简单,可以对除了 IE 之外的浏览器发出 inline-table 属性的样式表,对于 IE 单独发出一份 IE Only 的 CSS。

  • 相关阅读:
    使用命令行创建制作 MACOS HIGH SIERRA 正式版 USB 安装盘
    IONIC2/3解决文本框获取焦点的问题
    一步一步实现IONIC2/3 热更新
    IONIC打包安卓遇到COM.ANDROID.SUPPORT:SUPPORT-V4错误的解决办法
    js hoisting
    js立即执行函数
    关于js sort排序方法
    js基础--substr()和substring()的区别
    关于align-items和align-content的区别和使用场景
    关于ionic开发中遇到的坑与总结
  • 原文地址:https://www.cnblogs.com/focus_dada/p/2982309.html
Copyright © 2020-2023  润新知