blob: 937066f7f73181c7ebbf7b43bd15c3699b709d01 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<style>
/*
* The list of selectors that are to be tested. The javascript code will
* fill and clear the style declaration on each rule to demonstrate the
* result.
*/
div {}
span {}
.foo {}
#title {}
:empty {}
:focus {}
div:not(.foo) {}
q:before { content: '\"';}
q:after { content: '\"';}
span.bar {}
.foo.bar {}
.foo .foo {}
.bar > .bar {}
.foo + .bar {}
.foo ~ .bar {}
.bar > .foo + .bar {}
div, .foo {}
div, span {}
</style>
<style>
body {
background-color: rgb(255, 255, 255);
color: #0047ab;
font-family: Roboto;
font-size: 30px;
margin-top:50px;
}
markup {
color: #666;
font-size: 20px;
}
.selected {
background: #00a882;
}
</style>
<script>
var SELECTED_COLOR = '#00a882';
var SELECTED_CLASS = 'selected';
var SELECTOR_LIST_ID = 'selector-list';
var FOCUS_ID = 'focus';
var currentRule = 0;
var numberOfRules = 0;
var selectors;
var cssRules;
// Calculates the next rule, removes the style on the current rule and
// sets it on the next rule.
function moveRuleHighlightBy(delta) {
if (numberOfRules == 0) {
return;
}
nextRule = (currentRule + delta + numberOfRules) % numberOfRules;
selectors[currentRule].className = '';
selectors[nextRule].className = SELECTED_CLASS;
cssRules[currentRule].style.backgroundColor = '';
cssRules[nextRule].style.backgroundColor = SELECTED_COLOR;
currentRule = nextRule;
}
window.addEventListener('load', function() {
document.getElementById(FOCUS_ID).focus();
selectors = document.getElementById(SELECTOR_LIST_ID).children;
cssRules = document.styleSheets[0].cssRules;
numberOfRules = cssRules.length;
moveRuleHighlightBy(0);
});
document.addEventListener('keydown', function(event) {
if (event.keyCode == 38) { // Arrow up
moveRuleHighlightBy(-1);
} else if (event.keyCode == 40) { // Arrow down
moveRuleHighlightBy(1);
}
});
</script>
</head>
<body>
<my-div style="position:absolute; left: 5%; width: 40%;" id="selector-list">
<p>div</p>
<p>span</p>
<p>.foo</p>
<p>#title</p>
<p>:empty</p>
<p>:focus</p>
<p>div:not(.foo)</p>
<p>q:before</p>
<p>q:after</p>
<p>span.bar</p>
<p>.foo.bar</p>
<p>.foo .foo</p>
<p>.bar > .bar</p>
<p>.foo + .bar</p>
<p>.foo ~ .bar</p>
<p>.bar > .foo + .bar</p>
<p>div, .foo</p>
<p>div, span</p>
</my-div>
<my-div style="position:absolute; left: 50%; width: 40%;">
<div id="title">
<markup>&lt;div id="titile"&gt;</markup>
Hello, Cobalt!
<markup>&lt;/div&gt;</markup>
</div>
<div>
<markup>&lt;div&gt;</markup>
div
<markup>&lt;/div&gt;</markup>
</div>
<div tabIndex="-1" id="focus">
<markup>&lt;div tabIndex="-1" id="focus"&gt;</markup>
div that has focus
<markup>&lt;/div&gt;</markup>
</div>
<span>
<markup>&lt;span&gt;</markup>
span
<markup>&lt;/span&gt;</markup>
</span>
<div class="foo">
<markup>&lt;div class="foo"&gt;</markup>
foo div
<markup>&lt;/div&gt;</markup>
</div>
<span class="foo">
<markup>&lt;span class="foo"&gt;</markup>
foo span
<markup>&lt;/span&gt;</markup>
</span>
<div class="bar">
<markup>&lt;div class="bar"&gt;</markup>
bar div
<markup>&lt;/div&gt;</markup>
</div>
<span class="bar">
<markup>&lt;span class="bar"&gt;</markup>
bar span
<markup>&lt;/span&gt;</markup>
</span>
<div class="foo bar">
<markup>&lt;div class="foo bar"&gt;</markup>
foo bar div
<markup>&lt;/div&gt;</markup>
</div>
<q>
<markup>&lt;q&gt;</markup>
q
<markup>&lt;/q&gt;</markup>
</q>
<div class="foo">
<markup>&lt;div class="foo"&gt;</markup>
outer foo div
<div class="bar" style="padding-left: 30px;">
<markup>&lt;div class="bar"&gt;</markup>
middle bar div
<div class="foo" style="padding-left: 30px;">
<markup>&lt;div class="foo"&gt;</markup>
inner foo div
<markup>&lt;/div&gt;</markup>
</div>
<div class="bar" style="padding-left: 30px;">
<markup>&lt;div class="bar"&gt;</markup>
inner bar div
<markup>&lt;/div&gt;</markup>
</div>
<span class="bar" style="padding-left: 30px;">
<markup>&lt;span class="bar"&gt;</markup>
inner bar span
<markup>&lt;/span&gt;</markup>
</span>
<p/>
<markup>&lt;/div&gt;</markup>
</div>
<markup>&lt;/div&gt;</markup>
</div>
<div style="height: 20px; width: 20px;"><!--comment--></div>
<markup>&lt;div&gt;&lt;!--The empty div above--&gt;&lt;/div&gt;</markup>
</my-div>
</body>
</html>