1 | .md-switch { |
2 | -webkit-appearance: none; |
3 | appearance: none; |
4 | position: relative; |
5 | display: inline-block; |
6 | vertical-align: middle; |
7 | box-sizing: content-box; |
8 | padding: 0; |
9 | padding-block: 0; |
10 | padding-inline: 0; |
11 | } |
12 | |
13 | .md-switch:focus { |
14 | outline: none; |
15 | } |
16 | |
17 | |
18 | body.material .md-switch { |
19 | width: 3rem; |
20 | height: 1.75rem; |
21 | border-radius: 1rem; |
22 | border: 0.125rem solid var(--md-sys-color-outline); |
23 | background-color: var(--md-sys-color-surface-container-highest); |
24 | } |
25 | |
26 | body.material .md-switch:checked { |
27 | background-color: var(--md-sys-color-primary); |
28 | } |
29 | |
30 | |
31 | body.material .md-switch::before { |
32 | content: ""; |
33 | display: none; |
34 | position: absolute; |
35 | height: 2.5rem; |
36 | width: 2.5rem; |
37 | border-radius: 1.25rem; |
38 | top: -0.375rem; |
39 | left: -0.375rem; |
40 | } |
41 | |
42 | body.material .md-switch:checked:before { |
43 | left: auto; |
44 | right: -0.375rem; |
45 | } |
46 | |
47 | |
48 | body.material .md-switch::after { |
49 | content: ""; |
50 | display: inline-block; |
51 | position: absolute; |
52 | transition-property: all; |
53 | transition-duration: var(--md-sys-motion-duration-700); |
54 | height: 1rem; |
55 | width: 1rem; |
56 | border-radius: 0.5rem; |
57 | top: 0.375rem; |
58 | left: 0.375rem; |
59 | background-color: var(--md-sys-color-outline); |
60 | box-shadow: var(--md-box_shadow_level1); |
61 | } |
62 | |
63 | body.material .md-switch:checked:after { |
64 | height: 1.5rem; |
65 | width: 1.5rem; |
66 | border-radius: 0.75rem; |
67 | top: 0.125rem; |
68 | left: auto; |
69 | right: 0.125rem; |
70 | background-color: var(--md-sys-color-on-primary); |
71 | } |
72 | |
73 | body.material .md-switch:hover::before { |
74 | display: inline-block; |
75 | background-color: var(--md-sys-color-on-surface); |
76 | opacity: var(--md-sys-state-hover-state-layer-opacity); |
77 | } |
78 | |
79 | body.material .md-switch:checked:hover::before { |
80 | background-color: var(--md-sys-color-primary); |
81 | } |
82 | |
83 | body.material .md-switch:hover::after { |
84 | background-color: var(--md-sys-color-on-surface-variant); |
85 | } |
86 | |
87 | body.material .md-switch:checked:hover::after { |
88 | background-color: var(--md-sys-color-primary-container); |
89 | } |
90 | |
91 | body.material .md-switch:focus::before { |
92 | display: inline-block; |
93 | background-color: var(--md-sys-color-on-surface); |
94 | opacity: var(--md-sys-state-focus-state-layer-opacity); |
95 | } |
96 | |
97 | body.material .md-switch:checked:focus::before { |
98 | background-color: var(--md-sys-color-primary); |
99 | } |
100 | |
101 | body.material .md-switch:focus::after { |
102 | background-color: var(--md-sys-color-on-surface-variant); |
103 | } |
104 | |
105 | body.material .md-switch:checked:focus::after { |
106 | background-color: var(--md-sys-color-primary-container); |
107 | } |
108 | |
109 | body.material .md-switch:active::before { |
110 | display: inline-block; |
111 | background-color: var(--md-sys-color-on-surface); |
112 | opacity: var(--md-sys-state-focus-state-layer-opacity); |
113 | } |
114 | |
115 | |
116 | body.material .md-switch:checked:active::before { |
117 | background-color: var(--md-sys-color-primary); |
118 | } |
119 | |
120 | body.material .md-switch:active::after { |
121 | width: 1.75rem; |
122 | height: 1.75rem; |
123 | top: 0; |
124 | left: 0; |
125 | border-radius: 0.875rem; |
126 | background-position: center; |
127 | animation-name: md-ripple; |
128 | animation-duration: var(--md-sys-motion-duration-500); |
129 | background-size: 100%; |
130 | background-color: var(--md-sys-color-on-surface-variant); |
131 | background-image: |
132 | radial-gradient(circle, var(--md-sys-color-primary-container) 1%, transparent 1%); |
133 | box-shadow: var(--md-box_shadow_level1), 0 0 0 0.375rem color-mix(in srgb, var(--md-sys-color-on-surface), transparent var(--state-pressed-transparency-percentage)) !important; |
134 | } |
135 | |
136 | body.material .md-switch:checked:active::after { |
137 | left: auto; |
138 | right: 0; |
139 | background-color: var(--md-sys-color-primary-container); |
140 | background-image: |
141 | radial-gradient(circle, var(--md-riple-color) 1%, transparent 1%); |
142 | box-shadow: var(--md-box_shadow_level1), 0 0 0 0.375rem color-mix(in srgb, var(--md-sys-color-primary), transparent var(--state-pressed-transparency-percentage)) !important; |
143 | } |
144 | |
145 | body.apple .md-switch { |
146 | width: 3rem; |
147 | border-radius: 0.875rem; |
148 | height: 1.75rem; |
149 | background-color: var(--colIntIosOffBk); |
150 | } |
151 | |
152 | body.apple .md-switch:checked { |
153 | background-color: var(--colIntIosOnBk); |
154 | } |
155 | |
156 | body.apple .md-switch:focus { |
157 | background-color: var(--colIntIosOffBkFc); |
158 | } |
159 | |
160 | body.apple .md-switch:checked:focus { |
161 | background-color: var(--colIntIosOnBkFc); |
162 | } |
163 | |
164 | body.apple .md-switch::after { |
165 | content: ""; |
166 | display: inline-block; |
167 | position: absolute; |
168 | width: 1.5rem; |
169 | height: 1.5rem; |
170 | border-radius: 0.75rem; |
171 | top: 0.125rem; |
172 | left: 0.125rem; |
173 | background-color: var(--colIntIos); |
174 | } |
175 | |
176 | body.apple .md-switch:checked::after { |
177 | left: auto; |
178 | right: 0.125rem; |
179 | border-color: var(--colIntIosOnBk); |
180 | } |
181 | |
182 | body.apple .md-switch:focus::after { |
183 | border-color: var(--colIntIosOffBkFc); |
184 | } |
185 | |
186 | body.apple .md-switch:checked:focus::after { |
187 | border-color: var(--colIntIosOnBkFc); |
188 | } |