制作符合web标准的网页,经常需要定义某个父元素下的第一个子(child)元素或最后一个元素,以便将其与其他元素区分开来,有利于实现某些特殊需求。最浅显的例子是,导航项目间的竖线,我们往往通过border或者background来实现。特殊需求是,第一项左边无竖线或最后一项右边无竖线。
那么区分第一项好呢,还是最后一项好?答案是明显的,逼不得已,不要用区别最后一项。按照一般的编程方法,控制第一项要比控制最后一项容易得多。
区分第一项的还有一个好处是,CSS有一个:first-child的伪元素(pseudo element)可以让我们轻而易举的选择第一个子元素。
遗憾的是,当前全球占有率最高的浏览器,IE6,并不支持这个伪元素。我们可以手工给第一个元素加上class然后再定义它。但这不是一个万无一失的办法,尤其对于页面规模达到一定数量大型网站,很容易挂一漏万。那么,让JavaScript来帮我们完成这件工作如何?
给未支持:first-child的浏览器添加first-child的class
代码如下 | 复制代码 |
function addClassName(tag, classname) { if (!tag.className) { tag.className = classname; } else { tag.className += " " + classname; } } function addFirstChild() { var olitems = document.getElementsByTagName("ol"); var ulitems = document.getElementsByTagName("ul"); for ( var i = 0 ; i < olitems.length ; i++ ) { addClassName(olitems[i].getElementsByTagName("li")["0"], "first-child"); } for ( var i = 0 ; i < ulitems.length ; i++ ) { addClassName(ulitems[i].getElementsByTagName("li")["0"], "first-child"); } } if (document.all && !window.opera) { window.onload = addFirstChild; } body {font: 81.25%/1.7 Sans-Serif;} li:first-child, li.first-child {color: red;} |
给未支持:first-child的浏览器添加first-child的class
请使用IE浏览器,如果您能看到每个列表项的第一个li的颜色是红色,那么证明我们成功地选择了first-child。
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔