什么*显示在CSS中意味着什么?

时间:2011-04-13 19:28:45

标签: cross-browser css

  

可能重复:
  What does a star-preceded property mean in CSS?

我在浏览跨浏览器支持display:inline-block ...

时遇到了这个问题
selector {
  display: -moz-inline-box;
  display: inline-block;
  zoom: 1;
  *display: inline;
}

*显示有什么作用?

链接自: http://www.aarongloege.com/blog/web-development/css/cross-browser-inline-block/

5 个答案:

答案 0 :(得分:8)

*property: value;

这是一个黑客,所以我不建议你使用它。这样表示的样式仅由IE 7及以下版本解释,因此其他浏览器完全忽略这些样式。

这是非标准(或有效)的CSS,但它有时会被用来击败IE。

答案 1 :(得分:6)

正如其他人所说,这是IE7及以下的黑客攻击

但是这个,你给出的例子是一个特定的黑客,所以不像你收到的评论我不建议删除它..你可以移动它或删除后你读过这本书并不需要它;)

btw我同意-moz-inline-box可能不再需要了,它适用于旧版本的Firefox

selector {
  display: -moz-inline-box;
  display: inline-block;
  zoom: 1;
  *display: inline;
}

是一个特定的黑客攻击,让IE6 / 7显示块级元素作为内联块。尽管自v5.5起IE已支持inline-block,但它本身并未在块级元素上执行此操作

因此,在这种情况下,您需要做的是提供元素“布局”(zoom: 1;)并在此之后将其提供给display: inline

现在display:inline-block也提供了元素布局,因此如果您将display-inline规则移除到单独的规则集(在条件规则或黑客规则中),则不再需要使用zoom: 1;

我首选的黑客(出于演示目的)&因为内联块是如此虚线有用,&因为它更短是

selector {
  display: inline-block;
}


selector {
  display: inline !ie7;
}

!ie7与显示属性之前的*做的相同,它将该规则提供给IE7及以下 - 您也可以在第二个规则中使用*版本,然而!ie7清楚地告诉我,无论如何它是一个黑客,它是谁。

如果你有IE7及以下的特定条件样式表,你可以简单地将第二条规则放入其中 - 没有任何*ie7;)

selector {
  display: inline;
}

因为IE仍会读取第一个规则集,并且其中的true已将其hasLayout触发到inline-block,因此您不需要zoom

您提到的引用黑客很受欢迎,因为它将所有部分保留在一个规则集中,但在这种情况下需要zoom:1,因为inline-block无法设置hasLayout,如果它在同一个规则集作为另一个display属性

答案 2 :(得分:0)

前面的*是IE浏览器的黑客攻击,特别是版本和7及以下版本。您也可能会看到_display,其中前面的_是IE版本6及更低版本的黑客攻击。 CSS规则只适用于那些版本,并被其他浏览器忽略。

答案 3 :(得分:0)

这是IE 7的黑客攻击。该属性仅适用于IE 7.

我总是提到Comprehensive List of Browser-Specific CSS Hacks by Paul Irish

答案 4 :(得分:0)

补充其他问题:

CSS规范说任何未被识别的属性都应该被丢弃。这是由于未来的兼容性。

因此,对于大多数浏览器而言,*property不是有效的属性,它们只会跳过。

IE7,由于我不知道的原因,将*property识别为property,然后他们会处理它,而其他人则不会。{/ p>