Switch pure css
A Pen by Thiago Lagden on CodePen.
.switchSlide | |
input.switchSlide__radio-0#concessionaria_0(name='concessionaria' type='radio' value='0' required) | |
input.switchSlide__radio-1#concessionaria_1(name='concessionaria' type='radio' value='1' required) | |
ul.switchSlide__widget | |
li.switchSlide__opt.switchSlide__opt-0 | |
label(for='concessionaria_0') Não | |
li.switchSlide__opt.switchSlide__opt-1 | |
label(for='concessionaria_1') Sim | |
.switchSlide | |
input.switchSlide__radio-0#porta_0(name='porta' type='radio' value='2' required) | |
input.switchSlide__radio-1#porta_1(name='porta' type='radio' value='3' required) | |
input.switchSlide__radio-2#porta_2(name='porta' type='radio' value='4' required) | |
ul.switchSlide__widget | |
li.switchSlide__opt.switchSlide__opt-0 | |
label(for='porta_0') 2 | |
li.switchSlide__opt.switchSlide__opt-1 | |
label(for='porta_1') 3 | |
li.switchSlide__opt.switchSlide__opt-2 | |
label(for='porta_2') 4 |
body | |
background #FC0 | |
totalRadio = 3 - 1 | |
switchSlideBgColor = rgba(51, 51, 51, 0.5) | |
switchSlideTxtColor = rgba(white, 0.7) | |
switchSlideSelectedColor = rgba(gray, 0.7) | |
switchSlideBgKnob = white | |
marginKnob = 2px | |
scaleSize = 0.9 | |
active-bar(v, num) | |
&:first-child:before | |
per = (v)% | |
mar = marginKnob * num * 2 | |
calcMargin = "calc(%s + %s)" % (per mar) | |
transform: translate3d(calcMargin, 0, 0) scale(scaleSize, scaleSize) | |
visibility: visible | |
opacity: 1 | |
.switchSlide | |
display: inline-block | |
vertical-align: middle | |
font-size: 1.1em | |
margin-bottom 20px | |
> input[type=radio] | |
display: none | |
.switchSlide__widget | |
list-style: none | |
margin: 0 | |
padding: 0 | |
background-color: switchSlideBgColor | |
display: flex | |
flex-flow: row wrap | |
justify-content: center | |
align-items: center | |
position: relative | |
box-shadow: rgba(0, 0, 0, 0.5) 0px 1px 1px inset, rgba(255, 255, 255, 0.2) 0px 1px 0px | |
border-radius: 5px | |
font-family: Consolas, 'Liberation Mono', Courier, monospace | |
.switchSlide__opt | |
position: relative | |
display: block | |
margin: 0 | |
padding 0 | |
text-align: center | |
flex: 1 | |
color switchSlideTxtColor | |
&:first-child:before | |
calcMargin = marginKnob * 2 | |
position: absolute | |
top: 0 | |
left: 0 | |
width: "calc(100% - %s)" % calcMargin | |
height: "calc(100% - %s)" % calcMargin | |
margin: marginKnob | |
box-sizing: border-box | |
background-color: switchSlideBgKnob | |
content: '' | |
border-radius: 5px | |
visibility: hidden | |
opacity: 0 | |
z-index 1 | |
will-change: transform, opacity | |
transform: translate3d(0, 0, 0) scale(scaleSize, scaleSize) | |
transition: transform 0.3s, opacity 0.3s | |
pointer-events: none | |
> label | |
display block | |
padding 1em 1em | |
position relative | |
z-index 2 | |
for num in (0..totalRadio) | |
.switchSlide__radio-{num}:checked ~ .switchSlide__widget > .switchSlide__opt | |
active-bar(num * 100, num) | |
&-{num} | |
color switchSlideSelectedColor |
Switch pure css
A Pen by Thiago Lagden on CodePen.