diff --git a/src/components/NsfwSwitch.vue b/src/components/NsfwSwitch.vue index a333d76..94643c5 100644 --- a/src/components/NsfwSwitch.vue +++ b/src/components/NsfwSwitch.vue @@ -1,7 +1,7 @@ @@ -34,23 +34,36 @@ export default { padding: 0.5em; - display: inline-flex; + display: flex; justify-content: center; align-items: center; align-content: center; - > div { + &__label, + &__toggle { flex: 0 1 auto; align-self: center; line-height: 1; text-align: center; } - .toggle-wrap { + &__toggle { margin: 0 0.5em; + + & input:checked + &-inner { + background-color: $bg-color-light; + + &:before { + transform: translate3d(0.9em, 0.1em, 0) scale3d(0, 0, 0); + } + + &:after { + transform: translate3d(1.1em, 0.1em, 0); + } + } } - .toggle { + &__toggle-inner { position: relative; display: inline-block; width: 2.3em; @@ -60,61 +73,43 @@ export default { vertical-align: text-bottom; transition: all 0.3s linear; - &::before { + &:before, + &:after { content: ""; position: absolute; left: 0; - width: 2.1em; height: 1.1em; background-color: #fff; border-radius: 0.55em; + } + + &:before { + width: 2.1em; transform: translate3d(0.1em, 0.1em, 0) scale3d(1, 1, 1); transition: all 0.25s linear; } - &::after { - content: ""; - position: absolute; - left: 0; + &:after { width: 1.1em; - height: 1.1em; - background-color: #fff; - border-radius: 0.55em; box-shadow: 0 0.1em 0.1em rgba(0, 0, 0, 0.24); transform: translate3d(0.1em, 0.1em, 0); transition: all 0.2s ease-in-out; } } - &:active { - .toggle::after { - width: 1.4em; - transform: translate3d(0.1em, 0.1em, 0); - } - - input { - &:checked + .toggle::after { - transform: translate3d(0.8em, 0.1em, 0); - } - } - } - input { position: absolute; opacity: 0; pointer-events: none; + } - &:checked + .toggle { - background-color: $bg-color-light; + &:active &__toggle-inner:after { + width: 1.4em; + transform: translate3d(0.1em, 0.1em, 0); + } - &::before { - transform: translate3d(0.9em, 0.1em, 0) scale3d(0, 0, 0); - } - - &::after { - transform: translate3d(1.1em, 0.1em, 0); - } - } + &:active input:checked + &__toggle-inner:after { + transform: translate3d(0.8em, 0.1em, 0); } }