Skip to content

Commit 248f22c

Browse files
committed
[selectors] Finish up :has()
1 parent 84d5ed9 commit 248f22c

2 files changed

Lines changed: 41 additions & 11 deletions

File tree

selectors/Overview.bs

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,14 @@ Selectors Overview</h2>
124124
and/or <a>compound selector</a> <var>s2</var>
125125
<td><a href="#matches">Matches-any pseudo-class</a>
126126
<td>4
127+
<tr>
128+
<td><code>E:has(<var>rs1</var>, <var>rs2</var>)</code>
129+
<td>an E element,
130+
if either of the <a>relative selectors</a> <var>rs1</var> or <var>rs2</var>,
131+
when evaluated with E as the <a>:scope elements</a>,
132+
match an element
133+
<td><a section href="#relational"></a>
134+
<td>4
127135
<tbody>
128136
<tr>
129137
<td><code>E.warning</code>
@@ -1266,13 +1274,14 @@ The Negation Pseudo-class: '':not()''</h3>
12661274
which is equivalent to ''foo'' but with a higher
12671275
specificity.
12681276

1269-
<h3 id='has-pseudo'>
1277+
<h3 id='relational'>
12701278
The Relational Pseudo-class: '':has()''</h3>
12711279

12721280
The relational pseudo-class, <dfn id='has-pseudo'>:has()</dfn>,
1273-
is a functional pseudo-class taking a <a>relative selector</a> as an argument.
1274-
It represents an element if the <a>relative selector</a>,
1275-
scoped to the element,
1281+
is a functional pseudo-class taking a <a>relative selector</a> <a title="selector list">list</a> as an argument.
1282+
It represents an element if any of the <a>relative selectors</a>,
1283+
when <a href="#absolutize">absolutized</a>
1284+
and evaluated with the element as the <a>:scope elements</a>,
12761285
would match at least one element.
12771286

12781287
<div class='example'>
@@ -1285,8 +1294,14 @@ The Relational Pseudo-class: '':has()''</h3>
12851294
that don't contain any heading elements:
12861295

12871296
<pre>section:not(:has(h1, h2, h3, h4, h5, h6))</pre>
1297+
1298+
The following selector matches a <code>&lt;dt></code> element
1299+
immediately followed by another <code>&lt;dt></code> element:
1300+
1301+
<pre>dt:has(+ dt)</pre>
12881302
</div>
12891303

1304+
12901305
<h2 id="elemental-selectors">
12911306
Elemental selectors</h2>
12921307

selectors/Overview.html

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ <h2 class="no-num no-toc no-ref heading settled heading" id=contents><span class
142142
<li><a href=#grouping><span class=secno>4.1</span> Selector Lists</a>
143143
<li><a href=#matches><span class=secno>4.2</span> The Matches-Any Pseudo-class: <span class=css data-link-type=maybe title=:matches()>:matches()</span></a>
144144
<li><a href=#negation><span class=secno>4.3</span> The Negation Pseudo-class: <span class=css data-link-type=maybe title=:not()>:not()</span></a>
145-
<li><a href=#has-pseudo0><span class=secno>4.4</span> The Relational Pseudo-class: <span class=css data-link-type=maybe title=:has()>:has()</span></a></ul>
145+
<li><a href=#relational><span class=secno>4.4</span> The Relational Pseudo-class: <span class=css data-link-type=maybe title=:has()>:has()</span></a></ul>
146146
<li><a href=#elemental-selectors><span class=secno>5</span> Elemental selectors</a>
147147
<ul class=toc>
148148
<li><a href=#type-selectors><span class=secno>5.1</span> Type (tag name) selector</a>
@@ -353,6 +353,15 @@ <h2 class="heading settled heading" data-level=2 id=overview><span class=secno>2
353353
and/or <a data-link-type=dfn href=#compound title="compound selector">compound selector</a> <var>s2</var>
354354
<td><a href=#matches>Matches-any pseudo-class</a>
355355
<td>4
356+
<tr>
357+
<td><code>E:has(<var>rs1</var>, <var>rs2</var>)</code>
358+
<td>an E element,
359+
if either of the <a data-link-type=dfn href=#relative-selector- title="relative selectors">relative selectors</a> <var>rs1</var> or <var>rs2</var>,
360+
when evaluated with E as the <a data-link-type=dfn href=#scope-element title=":scope elements">:scope elements</a>,
361+
match an element
362+
<td><a data-section="" href=#relational>section 4.4
363+
The Relational Pseudo-class: :has()</a>
364+
<td>4
356365
<tbody>
357366
<tr>
358367
<td><code>E.warning</code>
@@ -1480,13 +1489,14 @@ <h3 class="heading settled heading" data-level=4.3 id=negation><span class=secno
14801489
which is equivalent to <span class=css data-link-type=maybe title=foo>foo</span> but with a higher
14811490
specificity.
14821491

1483-
<h3 class="heading settled heading" data-level=4.4 id=has-pseudo0><span class=secno>4.4 </span><span class=content>
1484-
The Relational Pseudo-class: <a class=css data-link-type=maybe href=#has-pseudo title=:has()>:has()</a></span><a class=self-link href=#has-pseudo0></a></h3>
1492+
<h3 class="heading settled heading" data-level=4.4 id=relational><span class=secno>4.4 </span><span class=content>
1493+
The Relational Pseudo-class: <a class=css data-link-type=maybe href=#has-pseudo title=:has()>:has()</a></span><a class=self-link href=#relational></a></h3>
14851494

14861495
<p> The relational pseudo-class, <dfn class=css-code data-dfn-type=selector data-export="" id=has-pseudo>:has()<a class=self-link href=#has-pseudo></a></dfn>,
1487-
is a functional pseudo-class taking a <a data-link-type=dfn href=#relative-selector- title="relative selector">relative selector</a> as an argument.
1488-
It represents an element if the <a data-link-type=dfn href=#relative-selector- title="relative selector">relative selector</a>,
1489-
scoped to the element,
1496+
is a functional pseudo-class taking a <a data-link-type=dfn href=#relative-selector- title="relative selector">relative selector</a> <a data-link-type=dfn href=#selector-list title="selector list">list</a> as an argument.
1497+
It represents an element if any of the <a data-link-type=dfn href=#relative-selector- title="relative selectors">relative selectors</a>,
1498+
when <a href=#absolutize>absolutized</a>
1499+
and evaluated with the element as the <a data-link-type=dfn href=#scope-element title=":scope elements">:scope elements</a>,
14901500
would match at least one element.
14911501

14921502
<div class=example>
@@ -1497,7 +1507,12 @@ <h3 class="heading settled heading" data-level=4.4 id=has-pseudo0><span class=se
14971507
<p> The following selector matches <code>&lt;section&gt;</code> elements
14981508
that don’t contain any heading elements:
14991509

1500-
<pre>section:not(:has(h1, h2, h3, h4, h5, h6))</pre> </div>
1510+
<pre>section:not(:has(h1, h2, h3, h4, h5, h6))</pre>
1511+
<p> The following selector matches a <code>&lt;dt&gt;</code> element
1512+
immediately followed by another <code>&lt;dt&gt;</code> element:
1513+
1514+
<pre>dt:has(+ dt)</pre> </div>
1515+
15011516

15021517
<h2 class="heading settled heading" data-level=5 id=elemental-selectors><span class=secno>5 </span><span class=content>
15031518
Elemental selectors</span><a class=self-link href=#elemental-selectors></a></h2>

0 commit comments

Comments
 (0)