UNPKG

formir

Version:

Pure CSS / HTML Framework

320 lines (305 loc) 6.42 kB
.accordion-active() { animation: accordion-down @accordion-animated-time; overflow-y: hidden; max-height: @accordion-animated-max-height; display: block; } .accordion-not-active() { transition: max-height @accordion-animated-time; overflow-y: hidden; max-height: 0; } .accordion-horizontal-active() { animation: accordion-horizontal-down @accordion-animated-time; overflow: hidden; max-width: 100%; display: block; } .accordion-horizontal-not-active() { transition: max-width @accordion-animated-time; overflow: hidden; max-width: 0; } .@{accordions} { position: relative; } .@{accordion-collapsible} { position: absolute; top: 0; bottom: 0; right: 0; left: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; pointer-events: auto; z-index: 0; &:checked { pointer-events: none; } ~ .@{accordion} { > input { ~ label, ~ .@{accordion-label} { z-index: 1; position: relative; } ~ .@{accordion-content} { z-index: 1; position: relative; } } > input:checked { ~ label, ~ .@{accordion-label} { pointer-events: none; } } } } .@{accordion} { &.@{accordion-horizontal} { align-items: stretch; display: flex; flex-flow: nowrap; } &.@{accordion-hoverable} { &:hover { > .@{accordion-content} { display: block; } > label, .@{accordion-label} { .accordion-label-active; } &.@{accordion-label-hide} { > label, .@{accordion-label} { display: none; } } } &.@{accordion-animated}:not(.horizontal) { > .@{accordion-content} { .accordion-not-active; } &:hover { > .@{accordion-content} { .accordion-active; } } } &.@{accordion-animated}.@{accordion-horizontal} { > .@{accordion-content} { .accordion-horizontal-not-active; } &:hover { > .@{accordion-content} { .accordion-horizontal-active; } } } } &.@{accordion-focusable} { > label, .@{accordion-label} { &:focus { .accordion-label-active; ~ .@{accordion-content} { display: block; } } } > input { &:focus { ~ label, ~ .@{accordion-label} { .accordion-label-active; } ~ .@{accordion-content} { display: block; } &.@{accordion-label-hide} { ~ label, ~ .@{accordion-label} { display: none; } } } } &:focus { > .@{accordion-content} { display: block; } > label, .@{accordion-label} { .accordion-label-active; } &.@{accordion-label-hide} { > label, .@{accordion-label} { display: none; } } } &.@{accordion-animated}:not(.@{accordion-horizontal}) { &:focus { .@{accordion-content} { .accordion-active; } } > label, .@{accordion-label} { &:focus { ~ .@{accordion-content} { .accordion-active; } } } > input { &:focus { ~ .@{accordion-content} { .accordion-active; } } } .@{accordion-content} { .accordion-not-active; } } &.@{accordion-animated}.@{accordion-horizontal} { &:focus { .@{accordion-content} { .accordion-horizontal-active; } } > label, .@{accordion-label} { &:focus { ~ .@{accordion-content} { .accordion-horizontal-active; } } } > input { &:focus { ~ .@{accordion-content} { .accordion-horizontal-active; } } } .@{accordion-content} { .accordion-horizontal-not-active; } } } &.@{accordion-animated}:not(.@{accordion-horizontal}) { > input { &:not(:checked) { ~ .@{accordion-content} { .accordion-not-active; } } } .@{accordion-content} { display: block; } > input { &:checked { ~ .@{accordion-content} { .accordion-active; } } } } &.@{accordion-animated}.@{accordion-horizontal} { > input { &:not(:checked) { ~ .@{accordion-content} { .accordion-horizontal-not-active; } } } .@{accordion-content} { display: block; } > input { &:checked { ~ .@{accordion-content} { .accordion-horizontal-active; } } } } &.@{accordion-label-hide} { > input { &:checked { ~ label, ~ .@{accordion-label} { display: none; } } } } > input { left: -10000px; position: fixed; &:checked { ~ .@{accordion-content} { display: block; } ~ label, ~ .@{accordion-label} { .accordion-label-active; } } } .@{accordion-content} { display: none; } > label, .@{accordion-label} { .@{accordion-arrow} { .accordion-arrow-down; } } &.active { > label, .@{accordion-label} { .accordion-label-active; } .@{accordion-content} { .accordion-active; } } } @keyframes accordion-down { 0% { max-height: 0; } 80% { max-height: @accordion-animated-max-height/4; } 99% { max-height: @accordion-animated-max-height/2; } 100% { max-height: @accordion-animated-max-height; } } @keyframes accordion-up { 0% { max-height: @accordion-animated-max-height; } 1% { max-height: @accordion-animated-max-height/2; } 20% { max-height: @accordion-animated-max-height/4; } 100% { max-height: 0; } } @keyframes accordion-horizontal-down { 0% { max-width: 0; } 100% { max-width: 100%; } } @keyframes accordion-horizontal-up { 0% { max-width: 100%; } 100% { max-width: 0; } }