react-hartan
Version:
A simple components library for React
192 lines (160 loc) • 3.57 kB
CSS
/* Sidemenu Styling */
/* css to open and close the menu based on state of checkbox */
.navToggle:checked~.navHeader {
width: calc(8rem - 1.6rem);
}
.navToggle:checked~.navContent {
width: 8rem;
}
.navToggle:checked~.navHeader .navTitle {
opacity: 0;
pointer-events: none;
transition: opacity 0.1s;
}
.navToggle:checked~.navHeader .lableTag {
left: calc(50% - .8rem);
font-size: x-large;
transform: rotate(180deg);
}
.navToggle:checked~.navContent .navButton span {
opacity: 0;
transition: opacity 0.1s;
}
/* css for sidemenu and everything inside it. */
.navBar {
position: absolute;
left: 1vw;
top: 1vw;
height: calc(100% - 2vw);
background: #1e90ff;
border-radius: 16px;
display: flex;
flex-direction: column;
color: #ffffff;
overflow: hidden;
user-select: none;
}
.navBar a {
color: inherit;
text-decoration: inherit;
}
.navBar input[type=checkbox] {
display: none;
}
.navHeader {
position: relative;
width: 25.6rem;
left: 1.5rem;
width: calc(25.6rem - 16px);
min-height: 80px;
border-radius: 1.5rem;
z-index: 2;
display: flex;
align-items: center;
transition: width 0.2s;
}
.navTitle {
font-size: 2rem;
transition: opacity 1s;
font-weight: 500;
}
.lableTag {
position: absolute;
right: 0;
width: 3rem;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
font-size: x-large;
}
.navContent {
margin: -1.6rem 0;
padding: 1.5rem 0;
position: relative;
flex: 1;
width: 25.6rem;
direction: rtl;
overflow-x: hidden;
transition: width 0.2s;
}
.navContent::-webkit-scrollbar {
width: .75rem;
height: .75rem;
}
.navContent::-webkit-scrollbar-thumb {
border-radius: 10rem;
background-color: rgb(88, 87, 87);
}
.navContent::-webkit-scrollbar-button {
height: 1.5rem;
}
.navButton {
position: relative;
margin-left: 2rem;
height: 5.5rem;
display: flex;
align-items: center;
font-size: 1.5rem;
font-weight: 500;
color: rgb(194, 187, 187);
direction: ltr;
cursor: pointer;
z-index: 1;
transition: color 0.2s;
}
.navButton img {
margin-right: 1.25rem;
height: 4rem;
object-fit: contain;
}
.navButton span {
transition: opacity 1s;
display: flex;
align-items: center;
justify-content: center;
}
.navButton:hover span {
color: #ffffff;
font-weight: 500;
}
/* responsive design */
@media (width < 1024px) {
.navToggle:not(:checked)~.navHeader {
width: calc(8rem - 1.6rem);
}
.navToggle:not(:checked)~.navContent {
width: 8rem;
}
.navToggle:not(:checked)~.navHeader .navTitle {
opacity: 0;
pointer-events: none;
transition: opacity 0.1s;
}
.navToggle:not(:checked)~.navHeader .lableTag {
left: calc(50% - .8rem);
font-size: x-large;
transform: rotate(-180deg);
}
.navToggle:not(:checked)~.navContent .navButton span {
opacity: 0;
transition: opacity 0.1s;
}
.navToggle:checked~.navHeader {
width: calc(25.6rem - 16px);
}
.navToggle:checked~.navContent {
width: 25.6rem;
}
.navToggle:checked~.navHeader .navTitle {
opacity: 1;
}
.navToggle:checked~.navHeader .lableTag {
left: calc(50% + 8rem);
transform: rotate(0deg);
}
.navToggle:checked~.navContent .navButton span {
opacity: 1;
}
}