Skip to content

Commit 22c051c

Browse files
committed
Fix radio button styling when input is inside label
1 parent c780330 commit 22c051c

File tree

3 files changed

+32
-67
lines changed

3 files changed

+32
-67
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Changelog
22

33
## WIP
4+
- Fix radio button styling when input is inside label
45
- Fix PHP 8.1+ deprecation notices
56

67
## 1.4.1

src/css/elements/forms/radio-buttons.css

Lines changed: 26 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,41 @@
11
/* radio buttons */
22

33
.radio {
4-
position: relative;
4+
display: block;
5+
min-height: 1.5rem;
6+
padding-inline-start: var(--hiq-radio-label-padding-horizontal);
7+
margin-bottom: var(--hiq-radio-margin-bottom);
58

69
& label {
7-
position: relative;
8-
margin-bottom: var(--hiq-radio-margin-bottom);
9-
padding: 0 var(--hiq-radio-label-padding-horizontal);
10-
font-weight: var(--hiq-radio-label-font-weight) !important;
11-
line-height: 1;
12-
cursor: pointer;
13-
user-select: none;
10+
display: inline-block;
11+
margin-bottom: 0;
12+
font-weight: var(--hiq-radio-label-font-weight);
13+
}
1414

15-
/* style `::before` to look like radio button */
16-
&::before {
17-
display: block;
18-
position: absolute;
19-
top: 0;
20-
left: 0;
21-
width: var(--hiq-radio-width);
22-
height: var(--hiq-radio-height);
23-
border: var(--hiq-radio-border-width) solid var(--hiq-radio-border-color);
24-
border-radius: var(--hiq-radio-border-radius);
25-
background-color: var(--hiq-radio-background-color);
26-
transition: background-color var(--hiq-speed) var(--hiq-easing);
27-
content: '';
28-
}
15+
input {
16+
width: var(--hiq-radio-width);
17+
height: var(--hiq-radio-height);
18+
margin-top: .25em;
19+
margin-inline-start: -1.5em;
20+
vertical-align: top;
21+
background-color: var(--hiq-radio-background-color);
22+
background-repeat: no-repeat;
23+
background-position: center;
24+
background-size: contain;
25+
appearance: none;
2926
}
3027

31-
/* visually hide input */
3228
& input[type='radio'] {
33-
position: absolute;
34-
top: 0;
35-
left: 0;
36-
width: 0;
37-
height: 0;
38-
opacity: 0;
39-
pointer-events: none;
40-
41-
&:hover + label::before {
42-
background-color: var(--hiq-radio-hover-background-color);
43-
}
44-
45-
&:focus + label::before {
46-
background-color: var(--hiq-radio-focus-background-color);
47-
outline: var(--hiq-outline-color) solid var(--hiq-outline-width);
48-
}
29+
border-radius: var(--hiq-radio-border-radius);
4930

50-
&:checked + label::before,
51-
&[aria-checked] + label::before {
52-
border-color: var(--hiq-radio-checked-border-color);
31+
&:checked {
32+
background-image: var(--hiq-radio-background-image);
5333
background-color: var(--hiq-radio-checked-background-color);
34+
border-color: var(--hiq-radio-checked-border-color);
5435
}
5536

56-
/* style `::after` to look like radio button fill */
57-
&:checked + label::after,
58-
&[aria-checked] + label::after {
59-
display: block;
60-
position: absolute;
61-
top: 50%;
62-
left: calc(var(--hiq-radio-width) / 2);
63-
width: var(--hiq-radio-check-width);
64-
height: var(--hiq-radio-check-height);
65-
border-radius: var(--hiq-radio-check-border-radius);
66-
background-color: var(--hiq-radio-check-background-color);
67-
transform: translate(-50%, -50%);
68-
content: '';
37+
&:focus {
38+
outline: var(--hiq-outline-color) solid var(--hiq-outline-width);
6939
}
7040

7141
:--not-writable + label {
@@ -77,7 +47,7 @@
7747
cursor: not-allowed;
7848
}
7949

80-
:--not-writable + label::before {
50+
:--not-writable {
8151
background-color: var(--hiq-disabled-background-color);
8252
}
8353
}

src/css/variables.css

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -275,23 +275,17 @@
275275
--hiq-checkbox-indeterminate-width: .5rem;
276276

277277
/* radio buttons */
278-
--hiq-radio-margin-bottom: .5rem;
279-
--hiq-radio-label-padding-horizontal: 2rem;
278+
--hiq-radio-margin-bottom: .125rem;
279+
--hiq-radio-label-padding-horizontal: 1.5em;
280280
--hiq-radio-label-font-weight: var(--hiq-font-weight-normal);
281-
--hiq-radio-width: 1rem;
282-
--hiq-radio-height: 1rem;
283-
--hiq-radio-border-width: 1px;
284-
--hiq-radio-border-color: transparent;
281+
--hiq-radio-width: 1.2rem;
282+
--hiq-radio-height: 1.2rem;
285283
--hiq-radio-border-radius: 50%;
286284
--hiq-radio-background-color: var(--hiq-color-gray-6);
287-
--hiq-radio-hover-background-color: var(--hiq-color-gray-5);
288-
--hiq-radio-focus-background-color: var(--hiq-color-gray-5);
289285
--hiq-radio-checked-border-color: var(--hiq-color-primary);
290286
--hiq-radio-checked-background-color: var(--hiq-color-primary);
291-
--hiq-radio-check-width: .5rem;
292-
--hiq-radio-check-height: .5rem;
293-
--hiq-radio-check-border-radius: 50%;
294287
--hiq-radio-check-background-color: hsl(0, 0%, 100%);
288+
--hiq-radio-background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='%23fff'/></svg>");
295289

296290
/* range inputs */
297291
--hiq-range-input-thumb-width: 1.5rem;

0 commit comments

Comments
 (0)