mdui
Version:
a CSS Framework based on material design
196 lines (165 loc) • 3.88 kB
text/less
/**
* =============================================================================
* ************ Tab ************
* =============================================================================
*
* 在手机上选项卡始终平分或可滚动,在平板以上的设备上默认左对齐,可以选择居中对齐,或全宽等分
*/
/* 选项卡,默认的选项卡为全宽 */
.mdui-tab {
position: relative;
display: flex;
min-height: 48px;
max-height: 72px;
margin: 0 auto;
padding: 0;
overflow-x: auto;
overflow-y: hidden;
white-space: nowrap;
-webkit-overflow-scrolling: touch;
a {
display: flex;
// 手机上始终等分选项卡
flex: 1;
// 使图标和文本垂直排列
flex-direction: column;
align-items: center;
justify-content: center;
box-sizing: border-box;
min-width: 72px;
min-height: 48px;
max-height: 72px;
padding: 12px;
overflow: hidden;
color: inherit;
font-size: 14px;
text-align: center;
text-transform: uppercase;
text-decoration: none;
text-overflow: ellipsis;
outline: none;
cursor: pointer;
opacity: 0.7;
user-select: none;
.mdui-icon {
opacity: 0.7;
}
// 平板或以上设备
@media (min-width: @screen-sm-min) {
// 平板/pc上选项卡左对齐
flex: none;
min-width: 99px;
max-width: 264px;
// 手机上 padding 12px,平板/pc上 padding 24px
padding: 12px 24px;
}
@media (min-width: @screen-md-min) {
min-width: 112px;
}
@media (min-width: @screen-lg-min) {
min-width: 136px;
}
@media (min-width: @screen-xl-min) {
min-width: 160px;
}
label {
display: block;
width: 100%;
cursor: pointer;
}
.mdui-icon + label {
margin-top: 8px;
}
&[disabled] {
cursor: default;
opacity: 0.38;
label {
cursor: default;
}
}
}
// 激活状态的选项
.mdui-tab-active {
color: @color-default-500;
opacity: 1;
.mdui-icon {
opacity: 1;
}
}
}
/* 选项卡居中 */
.mdui-tab-centered {
@media (min-width: @screen-sm-min) {
&::before {
flex-grow: 1;
content: ' ';
}
&::after {
flex-grow: 1;
content: ' ';
}
a {
flex: none;
}
}
}
/* 选项卡始终全宽等分 */
.mdui-tab-full-width {
a {
flex: 1;
max-width: none;
}
}
/* 可横向滚动的选项卡 */
.mdui-tab-scrollable {
padding-left: 56px;
a {
flex: none;
}
@media (max-width: @screen-xs-max) {
padding-left: 60px;
}
}
/* 下划线指示器 */
.mdui-tab-indicator {
position: absolute;
bottom: 0;
height: 2px;
background-color: @color-default-500;
transition: all .35s @animation-curve-default;
will-change: left, width;
}
/**
* =============================================================================
* ************ Tab 主色 ************
* =============================================================================
*/
& {
.loop-primary-theme(@counter-color) when (@counter-color > 0) {
.loop-primary-theme((@counter-color - 1));
@colorName: extract(@globalPrimaryColors, @counter-color);
@color: 'color-@{colorName}-500';
.mdui-theme-primary-@{colorName} when not (@colorName = null) {
.mdui-tab .mdui-tab-active {
color: @@color;
}
.mdui-tab-indicator {
background-color: @@color;
}
}
}
.loop-primary-theme(length(@globalPrimaryColors));
}
/* 带背景色的选项卡 */
.mdui-tab[class*="mdui-color-"]:not(.mdui-color-white) {
.mdui-tab-active {
color: inherit;
}
.mdui-tab-indicator {
background-color: @color-white-500;
}
// 带背景色的选项卡中使用浅色滚动条
& {
.mdui-scrollbar-beautify(dark);
}
}