一个 div 有五个边,这个只有 IE 6 干得出来!

一个 div 有五个边框,信吗?还真不能不信。

CSS 代码

body{padding:20px;}
*{margin:0px;line-height:20px;}
.block{margin-top:20px;padding:10px;border:1px solid #ccc;}
li{float:left;}

HTML 代码

<div class="block">
    <ul>
        <li>cftea</li>
    </ul>
</div>

IE 6 中效果

看横着的,不是有三条线么?加上左右两边的,就五个边框了。

解决

方法有很多,稍微打乱一下代码,就不存在五个边框了,比如指定 block 的宽度,比如指定 block 的 zoom:1。

结论

快抛弃 IE 6 吧,为了我们这些整天为兼容性烦恼的人。

<think>我们需要获取一个元素中的多个div中的最后一个div。在CSS中,我们可以使用伪类选择器来实现。 常见的伪类选择器有:first-child、:last-child、:nth-child(n)等。 这里我们要选择最后一个div,可以使用:last-child或者:nth-last-child(1)。 但是注意:如果父元素下的子元素不仅仅是div,还有其他元素,那么我们需要确保我们选择的是最后一个div,而不一定是最后一个子元素(因为最后一个子元素可能不是div)。 因此,我们可以使用:last-of-type,它选择的是父元素下同类型元素中的最后一个。 所以,我们可以这样写: 父元素 > div:last-of-type 例如,如果我们的HTML结构如下: <div class="container"> <div>第一个div</div> <div>第二个div</div> <p>一个段落</p> <div>第三个div</div> <!-- 我们想要这个 --> </div> 使用.container > div:last-of-type 将会选择到第三个div,因为它是.container中所有div的最后一个。 但是,如果我们的结构是: <div class="container"> <div>第一个div</div> <div>第二个div</div> <p>一个段落</p> </div> 那么.container > div:last-of-type 将会选择第二个div,因为它是最后一个div。 所以,根据需求,我们使用:last-of-type可以满足选择最后一个div。 另外,如果父元素下的子元素只有div,没有其他元素,那么:last-child也可以,因为最后一个子元素就是div。但是为了通用性(即在一组兄弟元素中,不管最后是不是有其他标签,我们都要最后一个div),使用:last-of-type更合适。 下面是一个CSS选择器的示例: 假设HTML结构为: <div id="parent"> <div>div1</div> <div>div2</div> <span>span</span> <div>div3</div> <!-- 目标 --> </div> 我们可以这样写: #parent div:last-of-type { /* 样式 */ } 这样就会选中div3。 但是,如果目标元素不是直接子元素,而是可能嵌套在其他元素内,那么我们需要使用其他方法,比如使用后代选择器,但这样可能会选中多个。所以这里我们假设都是直接子元素。 如果我们需要在JavaScript中获取,可以使用querySelector: let lastDiv = document.querySelector('#parent div:last-of-type'); 总结:使用CSS选择器 `div:last-of-type` 可以选中父元素下同类型元素中的最后一个div。 代码示例(HTMLCSS): ```html <!DOCTYPE html> <html> <head> <style> .container div:last-of-type { background-color: yellow; } </style> </head> <body> <div class="container"> <div>第一个div,没有背景色</div> <div>第二个div,没有背景色</div> <p>一个段落</p> <div>第三个div,有黄色背景(被选中)</div> </div> </body> </html> ``` 在上述示例中,第三个div会显示黄色背景。 另外,如果容器中只有div,没有其他元素,那么:last-child也可以,但:last-of-type更通用。 注意::last-of-type是CSS3的选择器,兼容性较好,但在一些非常旧的浏览器(如IE8及以下)可能不支持。如果需要支持旧浏览器,可能需要使用JavaScript。 使用JavaScript的解决方案(当需要兼容旧浏览器时): 我们可以获取父元素的所有div子元素,然后取最后一个。 例如: ```javascript var parent = document.getElementById('parent'); var divs = parent.getElementsByTagName('div'); var lastDiv = divs[divs.length - 1]; ``` 然后可以给lastDiv添加样式,或者进行操作。 但是,如果父元素内还有嵌套的div(即不是直接子元素),那么getElementsByTagName会获取所有后代div,这样就不准确了。所以我们可以通过判断父元素和子元素的关系来获取直接子元素。 我们可以这样: ```javascript var parent = document.getElementById('parent'); var children = parent.children; var lastDiv = null; // 从后往前遍历,找到最后一个div for (var i = children.length - 1; i >= 0; i--) { if (children[i].tagName === 'DIV') { lastDiv = children[i]; break; } } if (lastDiv) { lastDiv.style.backgroundColor = 'yellow'; } ``` 或者使用querySelector(现代浏览器): var lastDiv = parent.querySelector('div:last-of-type'); 因为querySelector在父元素上使用是限定在该父元素的后代中。 所以,如果不需要考虑兼容性,使用CSS选择器是最简单的。 总结: CSS方案:使用 `:last-of-type` JavaScript方案(现代浏览器):`document.querySelector('父元素选择器 div:last-of-type')` JavaScript方案(兼容旧浏览器):遍历父元素的子节点,找到最后一个div。 根据需求选择合适的方法。 现在,按照要求,在最后提出相关问题。</think>要获取一个元素中的多个 div 中的最后一个 div,可以使用 CSS 伪类选择器 `:last-of-type`。以下是详细解决方案: ### 解决方案 ```css /* 选择父元素内所有 div 中的最后一个 div */ .container div:last-of-type { background-color: yellow; /* 示例样式 */ } ``` ### 示例代码 ```html <!DOCTYPE html> <html> <head> <style> /* 关键选择器 */ .container div:last-of-type { background-color: yellow; padding: 10px; border: 2px solid red; } </style> </head> <body> <div class="container"> <div>第一个div(无样式)</div> <div>第二个div(无样式)</div> <div>第三个div(被选中)</div> </div> </body> </html> ``` ### 选择器说明 1. **`:last-of-type` 伪类**: - 选择同级元素中**最后一个指定类型**的元素(本例中是 `<div>`) - 即使元素之间有其他类型的元素(如 `<p>`、`<span>`),也能正确识别最后一个 div 2. **选择器组合**: - `.container div`:选择 `.container` 内所有后代 div - `:last-of-type`:过滤出最后一个 div ### 其他场景解决方案 1. **当 div 是直接子元素时**: ```css .container > div:last-of-type { ... } ``` 2. **使用通用选择器(包含非 div 元素)**: ```html <div class="container"> <p>段落</p> <div>Div 1</div> <span>Span</span> <div>最后一个div(被选中)</div> </div> ``` ```css .container div:last-of-type { /* 仍然有效 */ } ``` 3. **JavaScript 替代方案**: ```javascript // 获取最后一个 div const lastDiv = document.querySelector('.container div:last-of-type'); // 或使用节点遍历 const container = document.querySelector('.container'); const divs = container.getElementsByTagName('div'); const lastDiv = divs[divs.length - 1]; ``` ### 注意事项 - 与 `:last-child` 的区别:`:last-child` 要求元素必须是父级的**最后一个子元素**,而 `:last-of-type` 只关心同类型元素中的最后一个 - 浏览器兼容性:所有现代浏览器均支持(IE9+)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值