element-ui
Version:
A Component Library for Vue.js.
276 lines (248 loc) • 5.92 kB
CSS
@charset "UTF-8";
@import "./common/var.css";
@define-extend menu-item {
height: 56px;
line-height: 56px;
font-size: 14px;
color: var(--menu-item-color);
padding: 0 20px;
cursor: pointer;
position: relative;
transition: border-color .3s, background-color .3s, color .3s;
box-sizing: border-box;
white-space: nowrap;
}
@component-namespace el {
@b menu {
border-radius: 2px;
list-style: none;
position: relative;
margin: 0;
padding-left: 0;
background-color: var(--menu-item-fill);
@utils-clearfix;
& li {
list-style: none;
}
@m dark {
background-color: var(--dark-menu-item-fill);
& .el-menu-item,
& .el-submenu__title {
color: var(--color-extra-light-silver);
&:hover {
background-color: var(--color-extra-light-black);
}
}
& .el-submenu .el-menu {
background-color: var(--color-base-black);
& .el-menu-item:hover {
background-color: var(--color-extra-light-black);
}
}
}
@m horizontal {
& .el-menu-item {
float: left;
height: 60px;
line-height: 60px;
margin: 0;
cursor: pointer;
position: relative;
box-sizing: border-box;
border-bottom: 5px solid transparent;
a,
a:hover {
color: inherit;
}
&:hover {
background-color: var(--menu-item-hover-fill);
}
}
& .el-submenu {
float: left;
position: relative;
> .el-menu {
position: absolute;
top: 65px;
left: 0;
border:1px solid var(--color-base-gray);
padding: 5px 0;
background-color: var(--color-white);
z-index: 100;
min-width: 100%;
box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.12), 0px 0px 6px 0px rgba(0,0,0,0.04);
}
& .el-submenu__title {
height: 60px;
line-height: 60px;
border-bottom: 5px solid transparent;
}
& .el-menu-item {
background-color: var(--color-white);
float: none;
height: 36px;
line-height: 36px;
padding: 0 10px;
}
& .el-submenu__icon-arrow {
position: static;
vertical-align: middle;
margin-left: 5px;
color: var(--color-light-silver);
margin-top: -3px;
}
}
& .el-menu-item:hover,
& .el-submenu__title:hover {
background-color: var(--menu-item-fill);
}
& > .el-menu-item:hover,
& > .el-submenu:hover .el-submenu__title,
& > .el-submenu.is-active .el-submenu__title {
border-bottom: 5px solid var(--color-primary);
}
&.el-menu--dark {
& .el-menu-item:hover,
& .el-submenu__title:hover {
background-color: var(--dark-menu-item-fill);
}
& .el-submenu {
.el-menu-item,
.el-submenu-title {
color: var(--color-extra-light-black);
&:hover {
background-color: var(--color-base-gray);
}
}
.el-menu-item.is-active {
color: var(--color-primary);
}
}
}
}
@m collapse {
width: 64px;
> .el-menu-item,
> .el-submenu > .el-submenu__title {
[class^="el-icon-"] {
margin: 0;
vertical-align: middle;
width: 24px;
text-align: center;
}
.el-submenu__icon-arrow {
display: none;
}
span {
height: 0;
width: 0;
overflow: hidden;
visibility: hidden;
display: inline-block;
}
}
.el-submenu {
position: relative;
& .el-menu {
position: absolute;
margin-left: 5px;
top: 0;
left: 100%;
z-index: 10;
}
&.is-opened {
> .el-submenu__title .el-submenu__icon-arrow {
transform: none;
}
}
}
}
}
@b menu-item {
@extend menu-item;
& [class^="el-icon-"] {
margin-right: 5px;
width: 24px;
text-align: center;
}
& * {
vertical-align: middle;
}
&:first-child {
margin-left: 0;
}
&:last-child {
margin-right: 0;
}
&:hover {
background-color: var(--color-base-gray);
}
@when active {
color: var(--color-primary);
}
}
@b submenu {
@e title {
position: relative;
@extend menu-item;
&:hover {
background-color: var(--color-base-gray);
}
& * {
vertical-align: middle;
}
}
& .el-menu {
background-color: var(--color-light-gray);
}
& .el-menu-item {
height: 50px;
line-height: 50px;
padding: 0 45px;
min-width: 200px;
&:hover {
background-color: var(--color-base-gray);
}
}
@e icon-arrow {
position: absolute;
top: 50%;
right: 20px;
margin-top: -7px;
transition: transform .3s;
font-size: 12px;
}
@when active {
.el-submenu__title {
border-bottom-color: var(--color-primary);
}
}
@when opened {
> .el-submenu__title .el-submenu__icon-arrow {
transform: rotateZ(180deg);
}
}
[class^="el-icon-"] {
vertical-align: middle;
margin-right: 5px;
width: 24px;
text-align: center;
}
}
@b menu-item-group {
> ul {
padding: 0;
}
@e title {
padding-top: 15px;
line-height: normal;
font-size: 14px;
padding-left: 20px;
color: var(--color-light-silver);
}
}
}
.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow {
transition: .2s;
opacity: 0;
}