PHP前端开发

CSS 中星号前面的属性有什么用?

百变鹏仔 4周前 (09-19) #CSS
文章标签 星号

在 Web 开发中,CSS(层叠样式表)使开发人员能够确定网站的视觉外观和布局。然而,由于不同的浏览器对CSS的支持机制不同,因此编译器渲染网页时可能会出现不一致的情况。

为了克服这个兼容性问题,开发人员通常选择使用 CSS hacks 来确保他们的网页在不同的浏览器和设备上显示一致。其中一种黑客行为是星号属性(也称为星号属性黑客),它用于针对对 CSS 的支持有限的特定版本的 Internet Explorer (IE)。

在本文中,我们将探讨 CSS 中的星号属性 hack,并讨论其用途和局限性。我们还将提供如何有效使用此技巧的示例以及在 CSS 代码中实现它的最佳实践。

明星先行财产

这是一个 CSS hack,用于声明 HTML 元素的不同属性。前面带有星号 (*) 或下划线 (_) 的属性,在 IE 7 及以下版本的 IE 中仅呈现,而对于 IE 8 及更高版本,它会被编译器视为垃圾。

立即学习“前端免费学习笔记(深入)”;

语法

element{   background-color: red;  // for other browsers   _background-color: red;   // for IE 6 and below   *background-color: red;   // for IE 7 and below}

现在,让我们通过示例更好地理解这一点。我们将使用此 hack 在 IE 6、IE 7 和其他浏览器中渲染属性。

注意 - 此 hack 用于不同的浏览器,因此在指定的浏览器中运行该程序以观察正确的输出。

示例

下面说明了如何让编译器将 CSS 属性渲染到 Internet Explorer 7 及更低版本中的元素。

<!DOCTYPE html><html><head>   <title>Internet Explorer 7 and Below Versions</title>   <style>      .my-div {         background-color: red;         width: 30%;         height: 80%;         padding: 3px;         letter-spacing: 1px;         margin-top: 40px;         /* default margin applied in all other browsers */         *margin-top: 0;         /* IE6 margin */      }   </style></head><body>   <h1>Star Preceded Property</h1>   <h3>Given below is a div element whose margin-top will be 0 in IE 6 while it will be 20px in all other browsers.</h3>   <div class="my-div"> This is my div element. </div></body></html>

对于 IE7 及以下版本,div 元素的 margin-top 为零。

如果您在任何其他浏览器中运行代码,则 div 元素的 margin-top 为 40px。

在上面的示例中,CSS 选择器 .my-div 应用 40 像素的上边距。但是,*margin-top: 0; 规则仅适用于 Internet Explorer 6,将边距设置为 0 像素。属性名称 (margin-top) 之前的星号 (*) 是“星号属性 hack”中的“星号”。这是其他浏览器中的语法错误,因此它们会忽略这一行。

示例

下面说明了使编译器将 CSS 属性呈现给 Internet Explorer 6 及更低版本中的元素的另一种方法。它不适用于 IE 7。

<!DOCTYPE html><html><head>   <style>      .my-div {         background-color: blue;         /* default background color */         width: 30%;         height: 80%;         padding: 3px;         letter-spacing: 1px;         _background-color: red;         /* background color in IE 6 and below versions */      }   </style></head><body>   <h1>Star Preceded Property </h1>   <h3>Given below is a div element whose background color will be red in IE 6 and below while it will be blue in all other browsers.</h3>   <div class="my-div"> This is my div element. </div></body></html>

对于IE6及以下版本,div元素的背景颜色将为蓝色。

如果您在任何其他浏览器中运行代码,背景颜色将为红色。

在上面的示例中,CSS 选择器 .my-div 应用红色背景颜色。但是,_background-color: blue; 规则仅适用于 Internet Explorer 6,将背景颜色设置为蓝色。

Star Property Hack 的用途和限制

“星号属性”是过去使用的一种技术,用于使用 CSS 样式来定位特定版本的 Internet Explorer。虽然它有效地实现了这一目标,但它也有一些优点和缺点。

用途

  • 它使 Web 开发人员能够将各种特定的 CSS 样式应用于旧版本的 Internet Explorer,而不会影响所有其他浏览器中的结果。这有助于为跨多个浏览器的用户创建一致且统一的体验。

  • 它易于使用并减少了代码数量,使其成为对 Web 开发人员有吸引力的替代方案。它阻止他们为特定浏览器编写条件注释或特定样式表。

  • 它在 Web 开发社区中被广泛使用和流行,这使得找到示例和支持变得很容易。而且,它也很用户友好。

限制

  • “星号先于财产”是一种黑客行为。这不是编写 CSS 代码的标准且兼容的方式。它依赖于 Internet Explorer 中的一个错误来工作。此外,不保证它可以在浏览器的未来修改版本或其他浏览器中工作。

  • 这使得代码更难以阅读和维护。由于它涉及编写非标准代码,因此如果没有额外的注释或文档,很难理解代码的用途。

  • 这可能会导致意想不到的后果,例如影响页面上的其他元素或导致浏览器出现意外行为。

结论

此技术是一种针对具有不同样式的特定浏览器的方法,为 Internet Explorer 6 等旧版浏览器提供后备。总体而言,虽然“星属性黑客”在当时很有用,但不再建议将其作为最佳选择网络开发实践。现代 Web 开发技术侧重于使用可在多个浏览器上运行的标准且兼容的代码,而不是依赖于特定于浏览器的黑客攻击。