Diffdown is a real-time collaborative Markdown editor/previewer built on the AT Protocol diffdown.com
at 9a6ba7fadf312bda2dc714899aa76bcb8f00d5aa 150 lines 3.4 kB view raw
1# Universal selectors 2 3* {} 4div * {} 5 6==> 7 8StyleSheet( 9 RuleSet(UniversalSelector,Block), 10 RuleSet(DescendantSelector(TagSelector(TagName),UniversalSelector),Block)) 11 12# Type selectors 13 14div, span {} 15h1, h2, h3, h4 {} 16 17==> 18 19StyleSheet( 20 RuleSet(TagSelector(TagName),TagSelector(TagName),Block), 21 RuleSet(TagSelector(TagName),TagSelector(TagName),TagSelector(TagName),TagSelector(TagName),Block)) 22 23# Class selectors 24 25.class-a {} 26div.class-b, .class-c.class-d {} 27 28==> 29 30StyleSheet( 31 RuleSet(ClassSelector(ClassName),Block), 32 RuleSet(ClassSelector(TagSelector(TagName),ClassName),ClassSelector(ClassSelector(ClassName),ClassName),Block)) 33 34# Id selectors 35 36#some-id, a#another-id {} 37 38==> 39 40StyleSheet(RuleSet(IdSelector(IdName),IdSelector(TagSelector(TagName),IdName),Block)) 41 42# Attribute selectors 43 44[a] {} 45[b=c] {} 46[d~=e] {} 47a[b] {} 48 49==> 50 51StyleSheet( 52 RuleSet(AttributeSelector(AttributeName),Block), 53 RuleSet(AttributeSelector(AttributeName,MatchOp,ValueName),Block), 54 RuleSet(AttributeSelector(AttributeName,MatchOp,ValueName),Block), 55 RuleSet(AttributeSelector(TagSelector(TagName),AttributeName),Block)) 56 57# Pseudo-class selectors 58 59a:hover {} 60:nth-child(2) {} 61 62==> 63 64StyleSheet( 65 RuleSet(PseudoClassSelector(TagSelector(TagName),":",PseudoClassName),Block), 66 RuleSet(PseudoClassSelector(":",PseudoClassName,ArgList(NumberLiteral)),Block)) 67 68# Pseudo-element selectors 69 70a::first-line {} 71 72==> 73 74StyleSheet(RuleSet(PseudoClassSelector(TagSelector(TagName),"::",PseudoClassName),Block)) 75 76# Child selectors 77 78a > b {} 79c > d > e {} 80 81==> 82 83StyleSheet( 84 RuleSet(ChildSelector(TagSelector(TagName),ChildOp,TagSelector(TagName)),Block), 85 RuleSet(ChildSelector(ChildSelector(TagSelector(TagName),ChildOp,TagSelector(TagName)),ChildOp,TagSelector(TagName)),Block)) 86 87# Descendant selectors 88 89a b {} 90c d e {} 91 92==> 93 94StyleSheet( 95 RuleSet(DescendantSelector(TagSelector(TagName),TagSelector(TagName)),Block), 96 RuleSet(DescendantSelector(DescendantSelector(TagSelector(TagName),TagSelector(TagName)),TagSelector(TagName)),Block)) 97 98# Nesting selectors 99 100a { 101 &.b {} 102 & c {} 103 c & {} 104 & > d {} 105} 106 107==> 108 109StyleSheet(RuleSet(TagSelector(TagName),Block( 110 RuleSet(ClassSelector(NestingSelector,ClassName),Block), 111 RuleSet(DescendantSelector(NestingSelector,TagSelector(TagName)),Block), 112 RuleSet(DescendantSelector(TagSelector(TagName), NestingSelector),Block), 113 RuleSet(ChildSelector(NestingSelector,ChildOp,TagSelector(TagName)),Block)))) 114 115# Relative selectors 116 117a { 118 p {} 119 > f {} 120 + g {} 121} 122 123==> 124 125StyleSheet(RuleSet(TagSelector(TagName),Block( 126 RuleSet(TagSelector(TagName),Block), 127 RuleSet(ChildSelector(ChildOp,TagSelector(TagName)),Block), 128 RuleSet(SiblingSelector(SiblingOp,TagSelector(TagName)),Block)))) 129 130# Sibling selectors 131 132a.b ~ c.d {} 133.e.f + .g.h {} 134 135==> 136 137StyleSheet( 138 RuleSet(SiblingSelector(ClassSelector(TagSelector(TagName),ClassName),SiblingOp,ClassSelector(TagSelector(TagName),ClassName)),Block), 139 RuleSet(SiblingSelector(ClassSelector(ClassSelector(ClassName),ClassName),SiblingOp,ClassSelector(ClassSelector(ClassName),ClassName)),Block)) 140 141# The :not selector 142 143a:not(:hover) {} 144.b:not(c > .d) {} 145 146==> 147 148StyleSheet( 149 RuleSet(PseudoClassSelector(TagSelector(TagName),":",PseudoClassName,ArgList(PseudoClassSelector(":",PseudoClassName))),Block), 150 RuleSet(PseudoClassSelector(ClassSelector(ClassName),":",PseudoClassName,ArgList(ChildSelector(TagSelector(TagName),ChildOp,ClassSelector(ClassName)))),Block))