在 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,将背景颜色设置为蓝色。
“星号属性”是过去使用的一种技术,用于使用 CSS 样式来定位特定版本的 Internet Explorer。虽然它有效地实现了这一目标,但它也有一些优点和缺点。
它使 Web 开发人员能够将各种特定的 CSS 样式应用于旧版本的 Internet Explorer,而不会影响所有其他浏览器中的结果。这有助于为跨多个浏览器的用户创建一致且统一的体验。
它易于使用并减少了代码数量,使其成为对 Web 开发人员有吸引力的替代方案。它阻止他们为特定浏览器编写条件注释或特定样式表。
它在 Web 开发社区中被广泛使用和流行,这使得找到示例和支持变得很容易。而且,它也很用户友好。
“星号先于财产”是一种黑客行为。这不是编写 CSS 代码的标准且兼容的方式。它依赖于 Internet Explorer 中的一个错误来工作。此外,不保证它可以在浏览器的未来修改版本或其他浏览器中工作。
这使得代码更难以阅读和维护。由于它涉及编写非标准代码,因此如果没有额外的注释或文档,很难理解代码的用途。
这可能会导致意想不到的后果,例如影响页面上的其他元素或导致浏览器出现意外行为。
此技术是一种针对具有不同样式的特定浏览器的方法,为 Internet Explorer 6 等旧版浏览器提供后备。总体而言,虽然“星属性黑客”在当时很有用,但不再建议将其作为最佳选择网络开发实践。现代 Web 开发技术侧重于使用可在多个浏览器上运行的标准且兼容的代码,而不是依赖于特定于浏览器的黑客攻击。
以上是CSS 中星号前面的属性有什么用?的详细内容。更多信息请关注PHP中文网其他相关文章!