.select__box
%input#option-01.select__flag{ 'type': 'checkbox', 'checked': 'checked' }
%label.select__trigger{ 'for': 'option-01' }
option 1
%input#option-02.select__flag{ 'type': 'checkbox' }
%label.select__trigger{ 'for': 'option-02' }
option 2
%input#option-03.select__flag{ 'type': 'checkbox' }
%label.select__trigger{ 'for': 'option-03' }
option 3
.select__field
%span.select__option.option-01
option 1
%span.select__option.option-02
option 2
%span.select__option.option-03
option 3
View Compiled
.select {
&__box {
display: flex;
justify-content: flex-start;
flex-direction: column;
position: relative;
overflow: hidden;
width: 20rem;
height: 2rem;
background-color: #fafafa;
&:hover {
height: auto;
.select__field::after {
transform: rotate( 135deg );
}
}
.loop( @i ) when ( @i > 0 ) {
.loop( (@i - 1) );
#option-0@{i}:checked ~ .select__field {
.option-0@{i} {
display: inline;
}
}
}
.loop( 3 );
}
&__field {
display: block;
position: absolute;
top: 0;
width: 100%;
height: 2rem;
padding: .35rem;
border: 1px solid #ddd;
background-color: #fff;
&::after {
content: '';
display: block;
position: absolute;
right: .5rem;
bottom: .6rem;
width: .5rem;
height: .5rem;
border: 0 solid #ccc;
border-width: 0 2px 2px 0;
transform: rotate( 45deg );
}
}
&__option {
display: none;
margin-right: .3rem;
padding: .1em .2em;
font-size: .8em;
line-height: 1;
color: #fff;
border-radius: 3px;
background-color: hsl( 190deg, 60%, 60% );
}
&__flag {
display: none;
&:checked + * {
&::after {
content: '';
display: block;
position: absolute;
right: .5rem;
bottom: .6rem;
width: .5rem;
height: .7em;
border: 0 solid hsl( 170deg, 60%, 60% );;
border-width: 0 2px 2px 0;
transform: rotate( 45deg );
}
}
}
&__trigger {
display: block;
position: relative;
width: 100%;
padding: .5rem;
text-transform: uppercase;
letter-spacing: .05rem;
color: #555;
border: 0 solid #ddd;
border-width: 0 1px 1px 1px;
&:first-of-type {
margin-top: 2rem;
}
}
}
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
padding: 0;
font-family: sans-serif;
}
* {
box-sizing: border-box;
}
View Compiled
/*
* there's no need
*/
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.