.#{$ns}Tabs { &-links { margin: 0; padding: 0; border-bottom: var(--Tabs-borderWidth) solid var(--Tabs-borderColor); list-style: none; user-select: none; @include clearfix(); > .#{$ns}Tabs-link { margin-bottom: calc(var(--Tabs-borderWidth) * -1); display: inline-block; position: relative; > a:first-child { font-size: var(--Tabs-linkFontSize); outline: none; border: var(--Tabs-borderWidth) solid transparent; border-top-left-radius: var(--Tabs-borderRadius); border-top-right-radius: var(--Tabs-borderRadius); color: var(--Tabs-color); margin: var(--Tabs-linkMargin); padding: var(--Tabs-linkPadding); text-decoration: none; cursor: pointer; display: block; } > .#{$ns}Combo-toolbarBtn { position: absolute; right: -10px; top: -10px; z-index: 10; display: none; } &:hover > .#{$ns}Combo-toolbarBtn { display: block; } &:hover > a:first-child, > a:first-child:focus { border-color: var(--Tabs-onHover-borderColor); text-decoration: none; } &.disabled, &.is-disabled { cursor: not-allowed; > a:first-child { color: var(--Tabs-onDisabled-color); background: transparent; border-color: transparent; pointer-events: none; } } &.active > a:first-child, &.is-active > a:first-child { color: var(--Tabs-onActive-color); background: var(--Tabs-onActive-bg); border-color: var(--Tabs-onActive-borderColor); border-bottom-color: transparent; } } } &-content { background: var(--Tabs-content-bg); border-style: solid; border-width: 0 var(--Tabs-borderWidth) var(--Tabs-borderWidth); border-color: var(--Tabs-borderColor); } &-pane { display: none; padding: var(--gap-base); opacity: 0; transition: opacity var(--animation-duration) linear; &.is-active { display: block; } &.in { opacity: 1; } } &--line { > .#{$ns}Tabs-links { border-bottom-color: var(--Tabs--line-borderColor); > li { > a:first-child { border-width: 0 0 var(--Tabs--line-borderWidth) 0; padding: var(--Tabs--line-linkPadding); margin: var(--Tabs--line-linkMargin); &:hover, &:focus { color: var(--primary); background: transparent; border-color: transparent; } } &:last-child { > a { margin: 0; } } &.is-active { > a:first-child, > a:first-child:hover, > a:first-child:focus { border-color: var(--Tabs--line-onHover-borderColor); color: var(--Tabs--line-onHover-color); background: transparent; } } } } > .#{$ns}Tabs-content { border-width: 0; padding: var(--Tabs--line-content-padding); background: var(--Tabs--line-content-bg); } } &--card { > .#{$ns}Tabs-links { padding: var(--Tabs--card-padding); background: var(--Tabs--card-bg); border-top: px2rem(1px) solid var(--Tabs--card-borderTopColor); > li { &.is-active { > a:first-child, > a:first-child:hover, > a:first-child:focus { border-color: var(--Tabs--card-onActive-borderColor); color: var(--primary); border-bottom-color: var(--Tabs--card-onActive-bg); background: var(--Tabs--card-onActive-bg); } } > a:first-child { padding: var(--Tabs--card-linkPadding); margin: var(--Tabs--card-linkMargin); &:hover, &:focus { color: #666; background: var(--Tabs--card-onActive-bg); border-bottom-color: transparent; } } } } > .#{$ns}Tabs-content { border-width: 0; } } &--radio { > .#{$ns}Tabs-links { border: 0; margin-bottom: px2rem(10px); > li { margin: 0; > a:first-child { border-width: px2rem(1px); border-color: var(--Tabs-borderColor); font-size: var(--fontSizeSm); text-align: center; margin: 0; padding: 0 px2rem(10px); min-width: 68px; height: px2rem(30px); line-height: px2rem(30px); border-radius: 0; background: var(--Tabs--radio-bg); &:hover, &:focus { color: var(--primary); } } &.is-active { > a:first-child, > a:first-child:hover, > a:first-child:focus { color: var(--Tabs--radio-bg); background: var(--primary); border-color: var(--primary); position: relative; z-index: 1; } } } > li + li { margin-left: -1px; } } > .#{$ns}Tabs-content { border-top: var(--Tabs-borderWidth) solid var(--Tabs-borderColor); } } // todo 第一个选中,有一像素的空隙待修复。 // 不带眼镜应该看不出来。 &--tiled { > .#{$ns}Tabs-links { width: 100%; display: flex; flex-direction: row; padding-left: var(--Tabs-borderWidth); border-bottom: 0; > li { flex-grow: 1; text-align: center; margin: 0 0 0 calc(var(--Tabs-borderWidth) * -1); > a:first-child { margin: 0; border-radius: 0; border-style: solid; border-color: var(--Tabs-borderColor); border-width: var(--Tabs-borderWidth); &:hover, &:focus { position: relative; z-index: 1; border-color: var(--Tabs-onActive-borderColor); color: var(--primary); } } &.is-active { > a:first-child, > a:first-child:hover, > a:first-child:focus { cursor: default; color: var(--primary); border-color: var(--Tabs-borderColor); border-top-color: var(--primary); border-bottom-color: transparent; } } } } } &--vertical { display: flex; min-height: px2rem(200px); border: var(--Tabs-borderWidth) solid var(--Tabs-borderColor); border-radius: 0; > .#{$ns}Tabs-links { width: var(--Tabs--vertical-width); background: var(--Tabs--vertical-onActive-container-bg); border: none; border-right: var(--Tabs--vertical-onActive-container-borderRight); padding-bottom: px2rem(60px); > li { margin: 0 0 0 -1px; display: block; > a:first-child { border-color: transparent; border-radius: 0; border-width: var(--Tabs--vertical-onActive-borderWidth); margin: 0; &:hover, &:focus { color: var(--primary); border-color: transparent; } } &.is-active { > a:first-child, > a:first-child:hover, > a:first-child:focus { color: var(--Tabs--vertical-onActive-color); background: var(--Tabs--vertical-onActive-bg); border-color: var(--Tabs--vertical-onActive-border); } } } } > .#{$ns}Tabs-content { border: none; flex-grow: 1; > .#{$ns}Tabs-pane { height: 100%; } } } &--chrome { > .#{$ns}Tabs-links { background: var(--Tabs--chrome-bg); border-bottom: 0; padding-top: px2rem(8px); > li { position: relative; margin-bottom: 0; margin-right: px2rem(-18px); > a:first-child { background: none; border: none; position: relative; z-index: 5; padding: px2rem(7px) px2rem(20px) px2rem(6px); } &.is-active { > a:first-child, > a:first-child:hover, > a:first-child:focus { background: none; border: none; } } &:hover { .chrome-tab-background { z-index: 3; display: block; } .chrome-tab-background > svg .chrome-tab-geometry { fill: var(--Tabs--chrome-onHover-bg); } } &.is-active { .chrome-tab-background { display: block; } .chrome-tab-background > svg .chrome-tab-geometry { fill: var(--Tabs-onActive-bg); } } } } .chrome-tab-background { display: none; position: absolute; z-index: 4; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; pointer-events: none; } .chrome-tab-background > svg { width: 100%; height: 100%; } } &-toolbar { display: inline-block; float: right; padding-top: var(--gap-xs); } }