This repository has been archived by the owner on Jan 25, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 17
/
_radio-checkbox.scss
113 lines (107 loc) · 2.98 KB
/
_radio-checkbox.scss
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
// Radios & checkboxes
//
// Part of any good form.
$radio-check-size: 12px;
// Some shared styling for checkboxes & radios
//input[type=radio], input[type=checkbox] {
.radio, .checkbox {
-moz-user-select: none;
-webkit-user-select: none;
-webkit-appearance: none;
-moz-appearance: none;
vertical-align: -1px;
padding: 0;
margin: 0; // reset
font-size: 100%;
outline: none;
//background-image: linear-gradient(transparent, var(--color-shadow-2));
border: 1px solid var(--color, var(--color-prime-3));
//box-shadow: 0 0 0 var(--space-px) var(--color, var(--color-prime-2));
//background-color: transparent; // iOS reset
background-color: var(--color, var(--color-prime-1));
outline: none;
width: $radio-check-size;
height: $radio-check-size;
position: relative;
display: inline-block;
cursor: pointer;
transition: box-shadow .4s;
border-radius: 0;// ios7 reset
align-self: center; // opinionated smart default for checkboxed within flex rows
&:focus {
background-color: var(--color, var(--color-accent-2));
border-color: var(--color, var(--color-accent-4));
}
&:disabled {
border: 1px solid var(--color, var(--color-main-4));
background-color: var(--color, var(--color-main-1));
cursor: not-allowed;
}
&:disabled:hover {
background-color: var(--color, var(--color-main-1)) !important;
}
&:disabled::after, &:disabled::before {
background-color: var(--color, var(--color-main-4));
border-color: var(--color, var(--color-main-4));
}
&:after, &:before {
content: '';
position: absolute;
background-color: var(--color, var(--color-main-7));
}
}
//input[type=radio] {
.radio {
border-radius: 50%;
&:after {
//border: 1px solid var(--color, var(--color-main-7));
border-radius: 50%;
width: 6px;
height: 6px;
top: 50%;
left: 50%;
transform: scale(0) translateX(-50%) translateY(-50%);
transform-origin: 0% 0%;
}
&:checked:after {
transform: scale(1) translateX(-50%) translateY(-50%);
}
}
// pseudo real checkboxes with a checkmark
//input[type=checkbox] {
.checkbox {
position: relative;
border-radius: var(--space-px);
&:before, &:after {
width: 3px;
height: 6px;
top: 0;
left: 0;
}
// left part
&:after {
transform: scale(0) translateX(2px) translateY(2px) rotate(-45deg);
}
// right part
&:before {
transform: scale(0) translateX(7px) translateY(-5px) rotate(45deg);
transform-origin: 2px 7px;
height: 14px;
}
&:checked {
&:after { transform: scale(1) translateX(2px) translateY(2px) rotate(-45deg); }
&:before { transform: scale(1) translateX(7px) translateY(-5px) rotate(45deg); }
}
}
.active {
.radio, .checkbox {
background-image: linear-gradient(var(--color-highlight-3), var(--color-highlight-1));
border-color: var(--color-main-1);
&:after, &:before {
background-color: var(--color-main-1);
}
&:focus {
box-shadow: 0 0 0 var(--space-px) var(--color-main-1);
}
}
}