谨慎使用CSS中的星号(*)通配符

所属分类: 网页制作 / CSS 阅读数: 1682
收藏 0 赞 0 分享
里面讲到了CSS3中多种通过符的使用方法,如星号(*)、脱字符(^)和美元符号($)等。而由于星号(*)在CSS2.x中已经得到多数浏览器的支持,所以其使用范围最广。

我们最常见的星号(*)使用方法就是:


复制代码
代码如下:

* {padding:0;margin:0;font-family:…}

这种方法很实用,由于不同浏览器对于同样的页面元素有不同的默认样式,所以使用通配符星号(*)先将所有可能影响布局的默认样式统一一下是下十分必要的。而星号(*)匹配所有元素,省去了一个一个去写元素名称的麻烦。

我相信应该有不少人在使用这种方法吧。dudo博客主题之前存在在不是浏览器下字体不统一的情况,于是我就使用星号(*)通配符来实现这样的效果。

但是……这个方法真的就可以让我们一劳永逸了吗?我们来看一个例子。下面是一段多层嵌套的XHTML代码(我想这比实际应用中的嵌套次数少得多了):

复制代码
代码如下:

<div id="d1">
<div id="d2">
<div id="d3">
<div id="d4">
<div id="d5">
<div>jb51.net</div>
</div>
</div>
</div>
</div>
</div>

我使用的CSS代码很简单:

复制代码
代码如下:

* {color:red;}

在浏览器中的效果就是把dudo.org这个字符串显示为红色。那么我们使用Chrome浏览器中自带的开发者工具看看浏览器是怎么来渲染的:

CSS星号通配符在浏览器的渲染过程
在右图我们看到从HTML标签到div#d1最后到div#d5都被赋予了一个color:red的属性。也就是说空白元素也有了属性。可能有人会说,这很正常啊,因为你使用的是通配符星号(*)嘛,星号(*)自然通配所有的标签了。但是你应该仔细看前面的“Inherited frome”,它不仅仅是通过星号(*)来指定,他还会一层一层地继承下去。而且星号(*)的优先级是很高的,他的作用域很大。所以,你的页面层次越复杂,重复继承和渲染的次数就越多。

这会有什么样的后果呢?影响性能!不过,这不是296、386的时代,现在的计算机对于点东西来说是简直是小菜,如果你不是那么在乎完全可以忽略。不过对于要求苛刻的设计来着,这样的东西也是绝对不允许出现的。

那么星号(*)通配符是不是就不能用,或者越少用越好呢?当然不是!不过要坚持这样的原则:不要在在深层次的页面结构中使用它;不要在页面的根节点使用它;不要在距离目标节点较远的节点上使用它。最好在父级元素中使用。这样效果和性能可以兼得。

可能以前有过类似的讨论,但是我没有找到相关的详细介绍文章,欢迎大家指点。

通配符在CSS2中就得到支持了,如果只有两三层的话使用星号(*)很方便,嵌套多了就有上面的问题了

更多精彩内容其他人还在看

CSS入门教程:计算CSS盒模型宽和高

 出处:当我们布局一个网页的时候,经常会遇到这样的一种情况,那就是最终网页成型的宽度或是高度会超出我们预先的计算,其实就就是所谓的CSS的盒模型造成的。 #test{margin:10px;padding:10px;width:100px;height:100px;}
收藏 0 赞 0 分享

在IE流览器中正确显示PNG透明图片

  png图片有很好的品质。阴影效果也不会有杂边,很流畅。如果插入网页的话可以给网站内容增色不少!更重要的是在不增加图片容量大小的情况下提高了页面的图片的质量。对于有复杂背景,如:在有颜色过度背景上插入不规则边框的图片带来极大很便利!   但目前IE中对于插入
收藏 0 赞 0 分享

CSS教程:DIV底部放置文字

  css对文字的布局上没有靠容器底部对齐的参数,目前使用的一个不错的方法也比较好.就是用position属性来解决,看下面的代码,用position的相对和绝对定位功能也轻松的实现了,文字靠近div低部对齐,并且靠近的距离还可以精确到像素,自己可以调节,是不是很不错呢?
收藏 0 赞 0 分享

如何用CSS让文字居于div的底部

  这个问题是别人提出的,因为css对文字的布局上没有靠容器底部对齐的参数,(或许有但是我没有发现)不过目前我使用的一个不错的方法也比较好.就是用position属性来解决,看下面的代码,我用position的相对和绝对定位功能也轻松的实现了,文字靠近div低部对齐,并且靠近
收藏 0 赞 0 分享

从A页面连接到B页面后并直接把B页面的隐藏层显示

  这个效果实现的是,在B页面里有两个层,一个显示层,我们暂定名c层,一个是隐藏层,我们暂定名d层,单独进B页面的时候,c层显示,d层隐藏,然而从A页面连接到B页面的时候,则是让d层显示,c层隐藏,我觉得这个效果对网页设计者以后会有很大帮助,现在把代码发出来,
收藏 0 赞 0 分享

CSS样式表定义标签li前面样式

定义LI前面的小点样式 view plaincopy to clipboardprint? 语法: list-style-type : disc | circle | square | decimal | lower-roman | upper-roman | lowe
收藏 0 赞 0 分享

符合标准的div css制作的弹出菜单

本文介绍了五款符合标准的div css制作的弹出菜单,而且不含有js的. NO.1最基本的:二级dropdown弹出菜单 <!DOCTYPE html PUB
收藏 0 赞 0 分享

CSS实现在文章每段后面加入带连接的隐藏文字

代码主要理解3个参数:createElement、createTextNode、appendChild。这3个js参数分别是创建元素、创建字符、追加节点。代码原理:循环页面段落标签<p>,创建连接元素<a>,创建要显示的连接字符,用SetAttribute
收藏 0 赞 0 分享

CSS:浏览器特定选择器介绍

当你想在一个浏览器里改变样式而不像在其他浏览器中改变时,这些选择器很有用。 IE6以下 *html{} IE 7 以下 *:first-child html {} * html {} 只对IE 7 *:first-child html {} 只对IE 7
收藏 0 赞 0 分享

WEB标准学习,认识两种网页声明的含义

即网页标准推出来以后,我们时常会看到两种不同的网页的声明,一个是Dhtml,一个是Xhtml。如下所示: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "ht
收藏 0 赞 0 分享
查看更多