diff --git a/examples/sites/demos/pc/app/nav-menu/slot-toolbar-composition-api.vue b/examples/sites/demos/pc/app/nav-menu/slot-toolbar-composition-api.vue index 876f7412f7..39bd3ce10b 100644 --- a/examples/sites/demos/pc/app/nav-menu/slot-toolbar-composition-api.vue +++ b/examples/sites/demos/pc/app/nav-menu/slot-toolbar-composition-api.vue @@ -322,9 +322,10 @@ const TinyIconAdministrator = iconAdministrator() vertical-align: middle; } -.preview-nav .icon-setting, .preview-nav .icon-administrator{ - margin-right:20px; - fill: white; +.preview-nav .icon-setting, +.preview-nav .icon-administrator { + margin-right: 20px; + fill: #808080; font-size: 24px; } diff --git a/examples/sites/demos/pc/app/nav-menu/slot-toolbar.vue b/examples/sites/demos/pc/app/nav-menu/slot-toolbar.vue index 341ebf7c33..bd1a3de4f2 100644 --- a/examples/sites/demos/pc/app/nav-menu/slot-toolbar.vue +++ b/examples/sites/demos/pc/app/nav-menu/slot-toolbar.vue @@ -329,10 +329,10 @@ export default { vertical-align: middle; } - -.preview-nav .icon-setting, .preview-nav .icon-administrator{ - margin-right:20px; - fill: white; +.preview-nav .icon-setting, +.preview-nav .icon-administrator { + margin-right: 20px; + fill: #808080; font-size: 24px; } diff --git a/packages/theme/src/nav-menu/index.less b/packages/theme/src/nav-menu/index.less index 4c5e3faf27..7255bc3e3f 100644 --- a/packages/theme/src/nav-menu/index.less +++ b/packages/theme/src/nav-menu/index.less @@ -17,74 +17,29 @@ @nav-menu-prefix-cls: ~'@{css-prefix}nav-menu'; .@{nav-menu-prefix-cls} { - .component-css-vars-nav-menu(); + .inject-NavMenu-vars(); - background: var(--ti-nav-menu-bg-color); - height: var(--ti-nav-menu-height); + background: var(--tv-NavMenu-bg-color); + height: var(--tv-NavMenu-height); position: relative; - padding: 0 var(--ti-nav-menu-padding); - box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.10); + padding: 0 var(--tv-NavMenu-padding); + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.1); > .slot-logo { float: left; overflow: hidden; - margin: 0 var(--ti-nav-menu-slot-logo-margin-right) 0 var(--ti-nav-menu-slot-logo-margin-left); - line-height: var(--ti-nav-menu-height); - } - - .preview .slot-logo .icon-logo { - fill: red; + margin: 0 48px 0 16px; + line-height: var(--tv-NavMenu-height); } > .slot-toolbar { float: right; - - > .setting { - position: relative; - float: right; - margin: 0 0 0 24px; - - > .@{css-prefix}icon { - font-size: var(--ti-nav-menu-setting-font-size); - line-height: var(--ti-nav-menu-height); - cursor: pointer; - color: #fff; - } - - > .more-setting { - position: absolute; - right: 0; - min-width: 120px; - background-color: var(--ti-nav-menu-item-text-color); - border: 1px solid #d9d9d9; - box-shadow: 0px 0 4px rgba(0, 0, 0, 0.15); - - > .setting-item { - padding: 6px 10px; - color: #333; - - &:hover { - background: var(--ti-nav-menu-popmenu-more-item-hover-bg-color); - } - - &:active { - background: var(--ti-nav-menu-popmenu-more-item-active-bg-color); - } - } - } - } - - > .template-toolbar { - .@{css-prefix}selector { - margin-top: 0; - } - } } .menu { float: left; - height: var(--ti-nav-menu-height); - line-height: var(--ti-nav-menu-height); + height: var(--tv-NavMenu-height); + line-height: var(--tv-NavMenu-height); overflow: hidden; > li { @@ -92,38 +47,37 @@ > span, > a { - margin: 0 var(--ti-nav-menu-item-li-margin); - font-size: var(--ti-nav-menu-item-font-size); + margin: 0 var(--tv-NavMenu-item-li-margin); + font-size: var(--tv-NavMenu-item-font-size); text-align: center; - color: var(--ti-nav-menu-item-text-color); + color: var(--tv-NavMenu-item-text-color); cursor: pointer; display: block; - height: var(--ti-nav-menu-height); - line-height: var(--ti-nav-menu-height); + height: var(--tv-NavMenu-height); + line-height: var(--tv-NavMenu-height); box-sizing: border-box; &.active, &:hover { // 规范选中后,背景色修改 - color: var(--ti-nav-menu-item-text-color); - background: var(--ti-nav-menu-item-hover-bg-color); + color: var(--tv-NavMenu-item-text-color); text-decoration: none; - font-weight: var(--ti-nav-menu-item-text-font-weight); + font-weight: var(--tv-NavMenu-item-text-font-weight); } &.selected { position: relative; - font-weight: var(--ti-nav-menu-item-text-font-weight); + font-weight: var(--tv-NavMenu-item-text-font-weight); &:after { content: ' '; width: 100%; - height: var(--ti-nav-menu-item-selected-underline-height); - background: var(--ti-nav-menu-item-selected-underline-bg-color); - border: 1px solid var(--ti-nav-menu-item-selected-underline-bg-color); - border-radius: var(--ti-nav-menu-item-selected-border-radius); + height: 2px; + background: var(--tv-NavMenu-item-selected-underline-bg-color); + border: 1px solid var(--tv-NavMenu-item-selected-underline-bg-color); + border-radius: 0; position: absolute; - bottom: var(--ti-nav-menu-item-selected-position-bottom); + bottom: 0; left: 50%; transform: translateX(-50%); } @@ -134,31 +88,31 @@ > .more { padding: 0 12px; - font-size: var(--ti-nav-menu-item-font-size); + font-size: var(--tv-NavMenu-item-font-size); text-align: center; - color: var(--ti-nav-menu-item-text-color); + color: var(--tv-NavMenu-item-text-color); cursor: pointer; display: inline-block; - height: var(--ti-nav-menu-height); - line-height: var(--ti-nav-menu-height); + height: var(--tv-NavMenu-height); + line-height: var(--tv-NavMenu-height); &.active, &:hover, &.selected { - color: var(--ti-nav-menu-item-text-color); - background: var(--ti-nav-menu-item-hover-bg-color); + color: var(--tv-NavMenu-item-text-color); + background: var(--tv-NavMenu-item-hover-bg-color); } &.selected { position: relative; - color: var(--ti-nav-menu-item-text-color); - background: var(--ti-nav-menu-item-hover-bg-color); + color: var(--tv-NavMenu-item-text-color); + background: var(--tv-NavMenu-item-hover-bg-color); &:after { content: ' '; - width: var(--ti-nav-menu-item-selected-underline-width); - height: var(--ti-nav-menu-item-selected-underline-height); - background: var(--ti-nav-menu-item-selected-underline-bg-color); + width: var(--tv-NavMenu-item-selected-underline-width); + height: 2px; + background: var(--tv-NavMenu-item-selected-underline-bg-color); position: absolute; bottom: 0; left: 50%; @@ -171,9 +125,8 @@ position: absolute; background: #fff; width: 100%; - border: 1px solid var(--ti-nav-menu-popmenu-border-color); - box-shadow: var(--ti-nav-menu-popmenu-box-shadow); - max-height: calc(100vh - var(--ti-nav-menu-height)); + box-shadow: var(--tv-NavMenu-popmenu-box-shadow); + max-height: calc(100vh - var(--tv-NavMenu-height)); overflow-y: auto; left: 0; @@ -181,48 +134,46 @@ float: left; width: 160px; height: 100%; - border-right: 1px solid var(--ti-nav-menu-popmenu-more-menu-border-color-right); + border-right: 1px solid var(--tv-NavMenu-popmenu-more-menu-border-color-right); box-sizing: border-box; > ul { list-style: none; > li { - height: var(--ti-nav-menu-popmenu-more-item-height); - line-height: var(--ti-nav-menu-popmenu-more-item-height); + height: var(--tv-NavMenu-popmenu-more-item-height); + line-height: var(--tv-NavMenu-popmenu-more-item-height); padding: 0 12px 0 24px; display: flex; justify-content: space-between; align-items: center; - color: var(--ti-nav-menu-popmenu-more-item-text-color); + color: var(--tv-NavMenu-popmenu-more-item-text-color); cursor: pointer; .more-icon { - fill: var(--ti-nav-menu-popmenu-more-item-icon-color); + fill: var(--tv-NavMenu-popmenu-more-item-icon-color); } &.active, &:hover { - color: var(--ti-nav-menu-popmenu-more-item-hover-text-color); - background: var(--ti-nav-menu-popmenu-more-item-hover-bg-color); + color: var(--tv-NavMenu-popmenu-more-item-hover-text-color); font-weight: 700; > a { - color: var(--ti-nav-menu-popmenu-more-item-hover-text-color); - background: var(--ti-nav-menu-popmenu-more-item-selected-bg-color); + color: var(--tv-NavMenu-popmenu-more-item-hover-text-color); } .more-icon { - fill: var(--ti-nav-menu-popmenu-more-item-hover-icon-color); + fill: var(--tv-NavMenu-popmenu-more-item-hover-icon-color); } } &.selected { position: relative; - &::before { + &:before { content: ''; - width: var(--ti-nav-menu-popmenu-more-item-before-width); + width: var(--tv-NavMenu-popmenu-more-item-before-width); height: 12px; background: #5167f1; position: absolute; @@ -233,14 +184,14 @@ } > a { - color: var(--ti-nav-menu-popmenu-more-item-text-color); + color: var(--tv-NavMenu-popmenu-more-item-text-color); } > span, > a { display: block; - height: var(--ti-nav-menu-popmenu-more-item-height); - line-height: var(--ti-nav-menu-popmenu-more-item-height); + height: var(--tv-NavMenu-popmenu-more-item-height); + line-height: var(--tv-NavMenu-popmenu-more-item-height); font-size: var(--ti-common-font-size-base); width: 100%; white-space: nowrap; @@ -248,7 +199,7 @@ text-overflow: ellipsis; &.showicon { - width: calc(~'100% - 12px'); + width: calc(100% - 12px); } } @@ -261,13 +212,13 @@ > .sub-menu { float: left; - width: ~'calc(100% - 160px)'; + width: calc(100% - 160px); padding-left: 14px; box-sizing: border-box; &.full-width { width: 100%; - padding: var(--ti-nav-menu-submenu-padding-vertical) var(--ti-nav-menu-submenu-padding-horizontal); + padding: 0 82px; } > ul { @@ -278,18 +229,15 @@ list-style: none; &:first-child { - margin-top: var(--ti-nav-menu-submenu-group-margin-top); + margin-top: 36px; } > .@{nav-menu-prefix-cls}__sub-menu-title { - padding-bottom: var(--ti-nav-menu-popmenu-node-title-padding-bottom); - color: var(--ti-nav-menu-popmenu-text-color); - font-size: var(--ti-nav-menu-popmenu-node-title-font-size); + padding-bottom: 0; + color: var(--tv-NavMenu-popmenu-text-color); + font-size: var(--tv-NavMenu-popmenu-node-title-font-size); font-weight: bold; - margin: var(--ti-nav-menu-popmenu-node-title-margin-top) var(--ti-nav-menu-popmenu-node-title-margin-right) - var(--ti-nav-menu-popmenu-node-title-margin-bottom) var(--ti-nav-menu-popmenu-node-title-margin-left); - border-bottom: var(--ti-nav-menu-popmenu-title-border-weight-bottom) solid - var(--ti-nav-menu-popmenu-title-border-color-bottom); + margin: 0 32px 18px 0; word-break: break-all; display: flex; @@ -303,7 +251,7 @@ > span.selected, > a.selected { - color: var(--ti-nav-menu-popmenu-selected-text-color); + color: var(--tv-NavMenu-popmenu-selected-text-color); } &:only-child { @@ -312,13 +260,13 @@ } .sub-item { - font-size: var(--ti-nav-menu-popmenu-node-item-font-size); - padding: var(--ti-nav-menu-popmenu-node-item-padding-top) 0 var(--ti-nav-menu-popmenu-node-item-padding-button); + font-size: var(--tv-NavMenu-popmenu-node-item-font-size); + padding: 0 0 14px; &.third-title { > a, > span { - color: var(--ti-nav-menu-popmenu-text-color); + color: var(--tv-NavMenu-popmenu-text-color); font-weight: 700; } @@ -328,26 +276,26 @@ } &:hover { - background: var(--ti-nav-menu-popmenu-more-item-hover-bg-color); + text-decoration: underline; } &.active, &:active { - background: var(--ti-nav-menu-popmenu-more-item-active-bg-color); + background: var(--tv-NavMenu-popmenu-more-item-active-bg-color); } > span, > a { - color: var(--ti-nav-menu-popmenu-text-color); + color: var(--tv-NavMenu-popmenu-text-color); white-space: normal; word-break: break-all; text-decoration: none; - font-size: var(--ti-nav-menu-popmenu-text-font-size); + font-size: var(--tv-NavMenu-popmenu-text-font-size); cursor: pointer; &.selected { - color: var(--ti-nav-menu-popmenu-selected-text-color); - font-weight: var(--ti-nav-menu-popmenu-selected-font-weight); + color: var(--tv-NavMenu-popmenu-selected-text-color); + font-weight: var(--tv-NavMenu-popmenu-selected-font-weight); position: relative; &:after { @@ -357,7 +305,7 @@ bottom: 0; width: 100%; height: 1px; - background: var(--ti-nav-menu-item-selected-underline-bg-color); + background: var(--tv-NavMenu-item-selected-underline-bg-color); z-index: 1; } } @@ -366,8 +314,8 @@ &.only-secondary-title { > span, > a { - color: var(--ti-nav-menu-popmenu-text-color); - font-size: var(--ti-nav-menu-popmenu-node-title-font-size); + color: var(--tv-NavMenu-popmenu-text-color); + font-size: var(--tv-NavMenu-popmenu-node-title-font-size); font-weight: bold; } } @@ -421,15 +369,15 @@ > .more-button { float: left; text-align: center; - margin: 0 var(--ti-nav-menu-item-li-margin); - height: var(--ti-nav-menu-height); - line-height: var(--ti-nav-menu-height); + margin: 0 var(--tv-NavMenu-item-li-margin); + height: var(--tv-NavMenu-height); + line-height: var(--tv-NavMenu-height); overflow: hidden; - fill: var(--ti-nav-menu-item-more-button-fill); - font-size: var(--ti-nav-menu-item-font-size); + fill: var(--tv-NavMenu-item-more-button-fill); + font-size: var(--tv-NavMenu-item-font-size); &:hover { - background: var(--ti-nav-menu-item-hover-bg-color); + background: var(--tv-NavMenu-item-hover-bg-color); } &.float-right { diff --git a/packages/theme/src/nav-menu/vars.less b/packages/theme/src/nav-menu/vars.less index 88e1419335..14cd0cbc1d 100644 --- a/packages/theme/src/nav-menu/vars.less +++ b/packages/theme/src/nav-menu/vars.less @@ -10,97 +10,57 @@ * */ -.component-css-vars-nav-menu() { +.inject-NavMenu-vars() { // 导航菜单栏高度 - --ti-nav-menu-height: var(--ti-common-size-height-large, 48px); + --tv-NavMenu-height: 48px; // 导航菜单栏背景色 - --ti-nav-menu-bg-color: var(--ti-common-color-bg-navigation, #ffffff); + --tv-NavMenu-bg-color: var(--tv-color-bg-secondary); // 导航菜单栏字号 - --ti-nav-menu-item-font-size: var(--ti-common-font-size-base, 14px); + --tv-NavMenu-item-font-size: var(--tv-font-size-md); // 单个导航菜单外边距 - --ti-nav-menu-item-li-margin: var(--ti-common-size-4x, 16px); - // 自定义图标外左边距 - --ti-nav-menu-slot-logo-margin-left: var(--ti-common-size-4x, 16px); - // 自定义图标外右边距 - --ti-nav-menu-slot-logo-margin-right: var(--ti-common-size-12x, 48px); + --tv-NavMenu-item-li-margin: var(--tv-space-xl); // 导航菜单栏内边距 - --ti-nav-menu-padding: var(--ti-common-size-4x, 16px); + --tv-NavMenu-padding: var(--tv-space-xl); // 导航菜单栏文本色 - --ti-nav-menu-item-text-color: var(--ti-common-color-text-primary, #191919); + --tv-NavMenu-item-text-color: var(--tv-color-text); // 导航菜单栏更多图标 - --ti-nav-menu-item-more-button-fill: var(--ti-common-color-text-primary, #191919); + --tv-NavMenu-item-more-button-fill: var(--tv-color-icon-active); // 导航菜单栏选中后字体大小 - --ti-nav-menu-item-text-font-weight: var(--ti-common-font-weight-bold, 600); + --tv-NavMenu-item-text-font-weight: var(--tv-font-weight-bold); // 导航菜单栏项悬浮背景色 - --ti-nav-menu-item-hover-bg-color: var(--ti-common-color-bg-navigation, #ffffff); - // 导航菜单栏项选中下划线高度 - --ti-nav-menu-item-selected-underline-height: var(--ti-common-border-weight-1, 2px); - // 导航菜单栏项选中下划线圆角 - --ti-nav-menu-item-selected-border-radius: var(--ti-common-border-radius-0, 0); - // 导航菜单栏项选中下划线固定定位底部距离(hide) - --ti-nav-menu-item-selected-position-bottom: var(--ti-common-space-0, 0px); + --tv-NavMenu-item-hover-bg-color: var(--tv-color-bg-hover-secondary); // 导航菜单栏项选中下划线背景色 - --ti-nav-menu-item-selected-underline-bg-color: var(--ti-common-color-text-primary, #191919); - // 导航菜单设置图标大小 - --ti-nav-menu-setting-font-size: calc(var(--ti-common-size-base, 4px) * 5.5); + --tv-NavMenu-item-selected-underline-bg-color: var(--tv-color-bg-primary); // 导航菜单菜单栏下拉框阴影 - --ti-nav-menu-popmenu-box-shadow: var(--ti-common-shadow-2-down, 0 2px 12px 0 rgba(0, 0, 0, 0.16)); + --tv-NavMenu-popmenu-box-shadow: var(--tv-shadow-2-down); // 导航菜单菜单栏下拉框选中文本色 - --ti-nav-menu-popmenu-selected-text-color: var(--ti-common-color-info-normal, #191919); + --tv-NavMenu-popmenu-selected-text-color: var(--tv-color-text); // 导航菜单菜单栏下拉框选中字重 - --ti-nav-menu-popmenu-selected-font-weight: var(--ti-common-font-weight-bold, 600); + --tv-NavMenu-popmenu-selected-font-weight: var(--tv-font-weight-bold); // 导航菜单菜单栏下拉框文本色 - --ti-nav-menu-popmenu-text-color: var(--ti-common-color-text-secondary, #595959); - // 导航菜单下拉框边框色 - --ti-nav-menu-popmenu-border-color: var(--ti-common-color-bg-navigation, #ffffff); + --tv-NavMenu-popmenu-text-color: var(--tv-color-text-secondary); // 导航菜单更多按钮展示的下拉框右边框色 - --ti-nav-menu-popmenu-more-menu-border-color-right: var(--ti-common-color-border, #999999); + --tv-NavMenu-popmenu-more-menu-border-color-right: var(--tv-color-border); // 导航菜单更多按钮展示的下拉框高度 - --ti-nav-menu-popmenu-more-item-height: var(--ti-common-space-10x, 40px); + --tv-NavMenu-popmenu-more-item-height: 40px; // 导航菜单更多按钮展示的下拉框列表项图标文本色 - --ti-nav-menu-popmenu-more-item-icon-color: var(--ti-common-color-icon-normal, #808080); + --tv-NavMenu-popmenu-more-item-icon-color: var(--tv-color-icon); // 导航菜单更多按钮展示的下拉框列表项文本色 - --ti-nav-menu-popmenu-more-item-text-color: var(--ti-common-color-info-normal, #191919); + --tv-NavMenu-popmenu-more-item-text-color: var(--tv-color-text); // 导航菜单更多按钮展示的下拉框列表项图标悬浮文本色 - --ti-nav-menu-popmenu-more-item-hover-icon-color: var(--ti-common-color-primary-normal, #191919); + --tv-NavMenu-popmenu-more-item-hover-icon-color: var(--tv-color-icon-hover); // 导航菜单更多按钮展示的下拉框列表项 悬浮 文本色 - --ti-nav-menu-popmenu-more-item-hover-text-color: var(--ti-common-color-primary-normal, #191919); + --tv-NavMenu-popmenu-more-item-hover-text-color: var(--tv-color-text); // 导航菜单更多按钮展示的下拉框列表项选中背景色 - --ti-nav-menu-popmenu-more-item-selected-bg-color: var(--ti-common-color-bg-navigation, #ffffff); - // 导航菜单更多按钮展示的下拉框列表项选中分割线粗细 - --ti-nav-menu-popmenu-more-item-before-width: 0; + --tv-NavMenu-popmenu-more-item-selected-bg-color: var(--tv-color-bg-secondary); // 导航菜单下拉框可点选项的 悬浮 背景色 - --ti-nav-menu-popmenu-more-item-hover-bg-color: #F5F5F5; + --tv-NavMenu-popmenu-more-item-hover-bg-color: var(--tv-color-bg-hover); // 导航菜单下拉框非标题选项点击瞬间背景色 - --ti-nav-menu-popmenu-more-item-active-bg-color: var(--ti-common-color-bg-navigation, #ffffff); - // 导航菜单下拉框副菜单区域垂直内边距 - --ti-nav-menu-submenu-padding-vertical: var(--ti-common-space-0, 0px); - // 导航菜单下拉框副菜单区域水平内边距 - --ti-nav-menu-submenu-padding-horizontal: calc(var(--ti-common-space-base, 4px) * 20.5); - // 导航菜单下拉框标题底部内边距 - --ti-nav-menu-popmenu-node-title-padding-bottom: var(--ti-common-space-0, 0px); - // 导航菜单下拉框标题顶部外边距 - --ti-nav-menu-popmenu-node-title-margin-top: var(--ti-common-space-0, 0px); - // 导航菜单下拉框标题右边外边距 - --ti-nav-menu-popmenu-node-title-margin-right: var(--ti-common-space-8x, 32px); - // 导航菜单下拉框标题底部外边距 - --ti-nav-menu-popmenu-node-title-margin-bottom: calc(var(--ti-common-space-4x, 16px) + 2px); - // 导航菜单下拉框标题左边外边距 - --ti-nav-menu-popmenu-node-title-margin-left: var(--ti-common-space-0, 0px); - // 导航菜单下拉框标题底部边框宽度 - --ti-nav-menu-popmenu-title-border-weight-bottom: 0; - // 导航菜单下拉框标题底部边框色 - --ti-nav-menu-popmenu-title-border-color-bottom: transparent; + --tv-NavMenu-popmenu-more-item-active-bg-color: var(--tv-color-bg-hover-secondary); // 导航菜单下拉框标题字号 - --ti-nav-menu-popmenu-node-title-font-size: var(--ti-common-font-size-1, 14px); + --tv-NavMenu-popmenu-node-title-font-size: var(--tv-font-size-md); // 导航菜单下拉框标题字号 - --ti-nav-menu-popmenu-text-font-size: var(--ti-common-font-size-0, 12px); + --tv-NavMenu-popmenu-text-font-size: var(--tv-font-size-sm); // 导航菜单下拉框非标题项字号 - --ti-nav-menu-popmenu-node-item-font-size: var(--ti-common-font-size-base, 14px); - // 导航菜单下拉框外边距 - --ti-nav-menu-submenu-group-margin-top: var(--ti-common-size-9x, 36px); - // 导航菜单下拉框外上边距 - --ti-nav-menu-popmenu-node-item-padding-top: var(--ti-common-space-0, 0px); - // 导航菜单下拉框外下边距 - --ti-nav-menu-popmenu-node-item-padding-button: calc(var(--ti-common-space-3x, 12px) + 2px); + --tv-NavMenu-popmenu-node-item-font-size: var(--tv-font-size-md); }