css - hasLayout block 与 hasLayout 缩放

标签 css compass-sass haslayout

当我遇到这个页面时,我一直在浏览 compass 的在线引用:http://compass-style.org/reference/compass/utilities/general/hacks/

在这个页面上,似乎有两种方法可以为 IE 实现 has-layout hack。其中一个设置zoom: 1; 另一个设置display: inline-block;,然后再次设置回display: block; .

手册没有说明的是这两者有什么区别。

有区别吗?在某些特定情况下,您更愿意使用其中一种吗?

最佳答案

第一种方法:

@mixin has-layout-block {
  @if $legacy-support-for-ie {
    // This makes ie6 get layout
    display: inline-block;
    // and this puts it back to block
    & {
      display: block; } } }

将编译成类似的东西:

selector {
    display: inline-block;
}
selector {
    display: block;
}

第二种方法:

@mixin has-layout-zoom {
  @if $legacy-support-for-ie6 or $legacy-support-for-ie7 {
    *zoom: 1; } }

将编译成类似的东西:

selector {
    *zoom: 1;
}

这两种方法都会成功地为元素提供 hasLayout,因此纯粹从这个 Angular 来看,您使用哪种并不重要。

第一个方法会通过 validation ,而第二种方法不会。但是,第二种方法验证失败完全不是问题;使用的 hack 是 "safe" .

我到处都使用第二种方法,因为它更短并且不涉及两个规则。

这真的不值得担心(IE6/7 正在消亡),但如果您想了解更多信息,请阅读 thisthis .

关于css - hasLayout block 与 hasLayout 缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13955021/

相关文章:

html - 使用 CSS 的跨浏览器友好的响应式 Logo

javascript - 使用 Onclick 或 Hover 属性更改元素内部的元素

compilation - 如何在一个不在 RoR 上运行的小项目中将我的 HAML 文件自动编译为 HTML 文件?

css - 为什么 IE(和 Firefox 4)没有正确包装它? (有布局??)

javascript - 无滚动条的移动设备全屏广告图片

html - Bootstrap 表的选项卡导航面板已随机停止工作

sass - 如何在 compass 中将 !important 添加到 @include opacity(1)

ruby - 尝试访问 compass-core-1.0.0.alpha.16/stylesheets/.listen_test 时,compass watch 命令出错

css - 可以用zoom :1 in my css classes?吗