diff --git a/docs/zh-CN/components/tabs.md b/docs/zh-CN/components/tabs.md index 662c4ebe0..75ac70125 100755 --- a/docs/zh-CN/components/tabs.md +++ b/docs/zh-CN/components/tabs.md @@ -430,4 +430,4 @@ order: 68 | tabs[x].className | `string` | `"bg-white b-l b-r b-b wrapper-md"` | Tab 区域样式 | | mountOnEnter | `boolean` | false | 只有在点中 tab 的时候才渲染 | | unmountOnExit | `boolean` | false | 切换 tab 的时候销毁 | -| scrollable | `boolean` | false | 是否导航支持内容溢出滚动 | +| scrollable | `boolean` | false | 是否导航支持内容溢出滚动,`vertical`和`chrome`模式下不支持该属性;`chrome`模式默认压缩标签 | diff --git a/scss/_properties.scss b/scss/_properties.scss index 4af616101..7b0b3a4f6 100644 --- a/scss/_properties.scss +++ b/scss/_properties.scss @@ -1194,6 +1194,8 @@ --Tabs--vertical-onActive-container-bg: var(--Tabs--vertical-bg); --Tabs--chrome-onHover-bg: #f6f7f8; --Tabs--chrome-bg: #e7eaed; + --Tabs--chrome-radius-size: #{px2rem(8px)}; + --Tabs--chrome-right-boder-color: var(--borderColorDarken); --TagControl-sugBtn-bg: var(--Button--default-bg); --TagControl-sugBtn-border: var(--Button--default-border); diff --git a/scss/components/_tabs.scss b/scss/components/_tabs.scss index 7f001da14..dcbcb158c 100644 --- a/scss/components/_tabs.scss +++ b/scss/components/_tabs.scss @@ -376,24 +376,29 @@ } &--chrome { - > .#{$ns}Tabs-linksContainer { - background: var(--Tabs--chrome-bg); - } - > .#{$ns}Tabs-links, > .#{$ns}Tabs-linksContainer > .#{$ns}Tabs-linksContainer-main > .#{$ns}Tabs-links { + > .#{$ns}Tabs-links { background: var(--Tabs--chrome-bg); border-bottom: 0; + padding: 0 px2rem(10px); padding-top: px2rem(8px); + display: flex; > li { position: relative; margin-bottom: 0; - margin-right: px2rem(-18px); + white-space: nowrap; + min-width: 0; + max-width: px2rem(250px); + padding: px2rem(7px) px2rem(20px) px2rem(6px); + cursor: pointer; + flex: 1; > a:first-child { background: none; border: none; position: relative; z-index: 5; - padding: px2rem(7px) px2rem(20px) px2rem(6px); + overflow: hidden; + padding: 0; } &.is-active { @@ -403,29 +408,46 @@ background: none; border: none; } + &:after { + display: none; + } + } + + &:after { + content: ''; + width: 1px; + height: calc(100% - var(--Tabs--chrome-radius-size) * 2); + position: absolute; + right: -2px; + background: var(--Tabs--chrome-right-boder-color); + top: var(--Tabs--chrome-radius-size) } &:hover { .chrome-tab-background { z-index: 3; display: block; + background-color: var(--Tabs--chrome-onHover-bg); } - .chrome-tab-background > svg .chrome-tab-geometry { + .chrome-tab-background > svg { fill: var(--Tabs--chrome-onHover-bg); } + &:after { + display: none; + } } &.is-active { .chrome-tab-background { display: block; + background-color: var(--Tabs-onActive-bg); } - .chrome-tab-background > svg .chrome-tab-geometry { + .chrome-tab-background > svg { fill: var(--Tabs-onActive-bg); } } } } - .chrome-tab-background { display: none; position: absolute; @@ -434,12 +456,20 @@ left: 0; width: 100%; height: 100%; - overflow: hidden; pointer-events: none; - } - .chrome-tab-background > svg { - width: 100%; - height: 100%; + border-radius: var(--Tabs--chrome-radius-size) var(--Tabs--chrome-radius-size) 0 0; + > svg { + width: var(--Tabs--chrome-radius-size); + height: var(--Tabs--chrome-radius-size); + bottom: 0; + position: absolute; + } + > .chrome-tab-background--right { + right: calc(var(--Tabs--chrome-radius-size) * -1); + } + > .chrome-tab-background--left { + left: calc(var(--Tabs--chrome-radius-size) * -1); + } } } diff --git a/src/components/Tabs.tsx b/src/components/Tabs.tsx index 0f79cff9d..1fb8ac6d4 100644 --- a/src/components/Tabs.tsx +++ b/src/components/Tabs.tsx @@ -22,7 +22,7 @@ const transitionStyles: { }; export interface TabProps extends ThemeProps { - title?: string; // 标题 + title?: string | React.ReactNode; // 标题 icon?: string; iconPosition?: 'left' | 'right'; disabled?: boolean | string; @@ -336,39 +336,13 @@ export class Tabs extends React.Component { )} {React.isValidElement(toolbar) ? toolbar : null} - {/* svg 来自 https://github.com/adamschwartz/chrome-tabs */} {mode === 'chrome' ? (
- - - - - - - - - - - - - - - - - - - - + + + + +
) : null} @@ -448,7 +422,7 @@ export class Tabs extends React.Component { )} > { - scrollable && mode !== 'vertical' ? + scrollable && !['vertical', 'chrome'].includes(mode) ? (
{this.renderArrow('left')}