You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用原生JavaScript和CSS选择后接<ul>的<div>并设置内边距?

嘿,这个需求其实有两种靠谱的实现方式,先给你说最省心的CSS方案,再补JS的兼容方案~

方案一:CSS实现(推荐)

如果你不需要兼容特别老旧的浏览器,用CSS的:has()伪类就能一步到位,这是目前最简洁的方案:

div:has(+ ul) {
  padding-bottom: 16px;
}

这里的+是相邻兄弟选择器,:has(+ ul)表示当前div元素的下一个直接相邻元素是ul,完美匹配你的需求。

兼容性说明::has()是CSS Selectors Level 4的特性,Chrome 105+、Firefox 121+、Safari 15.4+都支持,如果你要兼容IE这类旧浏览器,就需要用下面的JS方案了。

方案二:原生JavaScript实现

如果需要兼容不支持:has()的环境,可以用原生JS遍历判断:

// 获取页面中所有div元素
const allDivs = document.querySelectorAll('div');

// 遍历每个div,检查下一个兄弟元素
allDivs.forEach(div => {
  // 拿到下一个直接元素节点(跳过文本/注释节点)
  const nextElement = div.nextElementSibling;
  // 判断是否是ul元素
  if (nextElement && nextElement.tagName === 'UL') {
    div.style.paddingBottom = '16px';
  }
});

或者用更简洁的链式写法:

Array.from(document.querySelectorAll('div'))
  .filter(div => {
    const next = div.nextElementSibling;
    return next && next.tagName === 'UL';
  })
  .forEach(div => div.style.paddingBottom = '16px');

注意这里用nextElementSibling而不是nextSibling,因为nextSibling会把换行、空格这类文本节点也算进去,nextElementSibling只返回元素节点,判断更准确。

内容的提问来源于stack exchange,提问作者Eunicorn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:08:14