1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
<!DOCTYPE html>
<html>
<head>
<title>CSS Shadow Parts - Interaction with pseudo-elements</title>
<meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
<link href="http://www.google.com/" rel="author" title="Google">
<link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/shadow-helper.js"></script>
</head>
<body>
<style>
#c-e::part(before-p)::before { color: green; }
#c-e::part(after-p)::after { color: green; }
#c-e::part(placeholder-p)::placeholder { color: green; }
#c-e::part(selection-p)::selection { color: green; }
#c-e::part(first-line-p)::first-line { color: green; }
#c-e::part(first-letter-p)::first-letter { color: green; }
</style>
<script>installCustomElement("custom-element", "custom-element-template");</script>
<template id="custom-element-template">
<style>
#before-i::before { content: "this text"; color: red; }
#after-i::after { content: "this text"; color: red; }
#placeholder-i::placeholder { color: red; }
#selection-i::selection { color: red; }
#first-line-i::first-line { color: red; }
#first-letter-i::first-letter { color: red; }
</style>
<div>
The following text should be green:
<span id="before-i" part="before-p"></span>
</div>
<div>
The following text should be green:
<span id="after-i" part="after-p"></span>
</div>
<div>
The following text should be green:
<input id="placeholder-i" part="placeholder-p" placeholder="this text"></input>
</div>
<div>
The selected text should be green:
<div id="selection-i" part="selection-p">select some text</div>
</div>
<div>
The following text should be green:
<div id="first-line-i" part="first-line-p">this text<br>Not this</div>
</div>
<div>
The first letter should be green:
<div id="first-letter-i" part="first-letter-p"><p>this text</p></div>
</div>
</template>
<custom-element id="c-e"></custom-element>
<script>
"use strict";
const colorGreen = "rgb(0, 128, 0)";
test(function() {
const el = getElementByShadowIds(document, ["c-e", "before-i"]);
assert_equals(window.getComputedStyle(el, '::before').color, colorGreen);
}, "::before in selected host is styled");
test(function() {
const el = getElementByShadowIds(document, ["c-e", "after-i"]);
assert_equals(window.getComputedStyle(el, '::after').color, colorGreen);
}, "::after in selected host is styled");
test(function() {
const el = getElementByShadowIds(document, ["c-e", "placeholder-i"]);
assert_equals(window.getComputedStyle(el, '::placeholder').color, colorGreen);
}, "::placeholder in selected host is styled");
test(function() {
const el = getElementByShadowIds(document, ["c-e", "selection-i"]);
assert_equals(window.getComputedStyle(el, '::selection').color, colorGreen);
}, "::selection in selected host is styled");
test(function() {
const el = getElementByShadowIds(document, ["c-e", "first-line-i"]);
assert_equals(window.getComputedStyle(el, '::first-line').color, colorGreen);
}, "::first-line in selected host is styled");
test(function() {
const el = getElementByShadowIds(document, ["c-e", "first-letter-i"]);
assert_equals(window.getComputedStyle(el, '::first-letter').color, colorGreen);
}, "::first-letter in selected host is styled");
</script>
</body>
</html>
|