css 父级中仅存在一个子级时的选择器

ovfsdjhp  于 2023-02-10  发布在  其他
关注(0)|答案(5)|浏览(146)

我在玩CSS选择器,我想知道我能不能建立一个自定义的CSS选择器,只在只有一个类.widget-button的时候工作,示例代码;

<div class='container a'>
  <div class='widget-a' />
  <div class='widget-b' />
  <div class='widget-button' /> 
  <div class='widget-b' />
</div>

所以你会假设有一个伪选择器的组合(:only-child ?)到这个作业,将工作以上?然而,下面的例子应该没有选择/样式应用,因为有一个以上的类。

<div class='container b'>
  <div class='widget-a' />
  <div class='widget-b' />
  <div class='widget-button' />
  <div class='widget-z' />
  <div class='widget-x' />
  <div class='widget-button' />
  <div class='widget-z' />
</div>

这里是一个JSF iddle https://jsfiddle.net/2L593m3x/

qybjjes1

qybjjes11#

如果您可以创建自定义标记(或者Web Components得到广泛支持),则可以使用:only-of-type

div>* {
  display: inline-block;
  width: 16px;
  height: 16px;
  background-color: red;
}

widget-button:only-of-type {
  background-color: blue;
}
<div>
  <widget-a></widget-a>
  <widget-b></widget-b>
  <widget-button></widget-button>
  <widget-b></widget-b>
</div>
<div>
  <widget-a></widget-a>
  <widget-b></widget-b>
  <widget-button></widget-button>
  <widget-z></widget-z>
  <widget-x></widget-x>
  <widget-button></widget-button>
  <widget-z></widget-z>
</div>
f5emj3cl

f5emj3cl2#

我可以建立一个自定义的css选择器只工作时,只有一个类

    • 长话短说:**不

我们不断收到关于如何选择nth-of-class的问题。
您 * 不能 * 选择nth-of-class
您可以按子项选择。
您可以按元素类型选择。

  • 您不能按要素分类选择。*

在 * 某 * 点,nth-match(和互补选择器)* 可能 * 到达:

    • 例如**
.widget-button:nth-match(2n+1)
.widget-button:first-match
.widget-button:last-match
.widget-button:only-match
vvppvyoh

vvppvyoh3#

当然可以,您可以通过链接两个不同的选择器来实现:

  • 是第一个直接子级。
  • 是其类型的最后一个子级。

.container > .widget-button:nth-child(1):last-child

  • 编辑:*显然我误解了这个问题,但这在其他一些情况下可能会有帮助。
aor9mmx1

aor9mmx14#

.wrapper {
  margin: 50px 0;
  padding: 0 10px;
  border: 1px solid #555;
}

.wrapper div {
  border: 1px solid #555;
  padding: 0px 5px 10px 5px;
  margin: 10px 0;
}

.wrapper div:not(:first-child:last-child) {
  background-color: gold;
}
<div class="wrapper">
  <div class="container">Container #1</div>
  <div class="container">Container #2</div>
  <div class="container">Container #3</div>
  <div class="container">Container #4</div>
  <div class="container">Container #5</div>
</div>

<div class="wrapper">
  <div class="container">Container #1</div>
</div>
mznpcxlj

mznpcxlj5#

父级中只有一个子级:

p:has(br:first-child:last-child)

奖金
x一个一个一个一个x一个一个二个x

相关问题