当optgroup元素没有任何无法 Select 的选项元素时,我想隐藏它.在下面的示例中,应显示第一个optgroup元素,并隐藏第二个元素.

optgroup {
    display: none;
}
optgroup:has(option:not(:disabled)) {
    display: unset;
}
<select id="location" name="location">
    <option value="" selected="">Standort wählen</option>
    <optgroup label="Kanton Luzern">
        <option value="buttisholz">Buttisholz</option>
        <option value="littau" disabled="">Littau</option>
        <option value="luzern">Luzern</option>
        <option value="malters" disabled="">Malters</option>
        <option value="schuepfheim">Schüpfheim</option>
    </optgroup>
    <optgroup label="Kanton Schaffhausen">
        <option value="schaffhausen" disabled="">Schaffhausen</option>
    </optgroup>
</select>

我想出了这个解决方案,它似乎有效(仅在Chrome中测试),但我正在寻找一个只有一个声明而不是两个声明的解决方案,如果可能的话:

optgroup {
  display: none;
  }
optgroup:has(option:not(:disabled)) {
  display: unset;
  }

我try 了这个版本,但不起作用,因为:enabled伪 Select 器似乎只能用于input, select and textarea fields:

optgroup:not(option:enabled) {
  display: none;
  }

推荐答案

保持simple并且可读!

使用css :enabled

optgroup:not(:has(option:enabled)) {
  display: none;
}
<select id="location" name="location">
  <option value="" selected   disabled > Standort wählen </option>
  <optgroup label="Kanton Luzern">
      <option value="buttisholz"       > Buttisholz </option>
      <option value="littau"  disabled > Littau     </option>
      <option value="luzern"           > Luzern     </option>
      <option value="malters" disabled > Malters    </option>
      <option value="schuepfheim"      > Schüpfheim </option>
  </optgroup>
  <optgroup label="Kanton Schaffhausen">
      <option value="schaffhausen" disabled > Schaffhausen </option>
  </optgroup>
</select>

Css相关问答推荐

如何改变图标的 colored颜色 时悬停在

显示Reaction组件上的问题.使用FlexBox时的意外大小

如何在不重叠侧边栏的情况下尽可能使元素居中?

使用间距时奇怪的MUI网格行为

CSS Grid我不想要的东西

Prettier/VS Code 在 CSS 中的 !important 之前添加一个空格,导致它在 WordPress 中崩溃

使用文本溢出约束内部 div:没有最大宽度的省略号(或类似的)

React MUI 从 CSS 伪元素中删除内容

如何使用 :has() 父 Select 器 Select 父元素的子元素,在父元素和子元素之间没有中间层的情况下?

禁用MUI DataGrid上的悬停效果

如何使用来自单独模块的代码将自定义标头插入到使用 DT Shiny 呈现的表中?

在 React Native 中创建背景

父母是内联块,子元素有%填充=奇怪的行为

CSS - 等高列?

禁用输入的 CSS Select 器 type="submit"

css3 nth 类型限制为类

Flexbox 代码适用于除 Safari 之外的所有浏览器.为什么?

修复 Mobile Safari (iPhone) 上文本呈现不一致且某些字体比其他字体大的字体大小问题?

如何仅在一侧设置 CSS 边框?

你如何在 SASS 中定义属性 Select 器?