diff --git a/src-next/style/README.md b/src-next/style/README.md new file mode 100644 index 000000000..6bb0ca1b4 --- /dev/null +++ b/src-next/style/README.md @@ -0,0 +1,79 @@ +# Built-in Style + +### Intro + +Vant contains some common styles that can be used directly by the className. + +### Text ellipsis + +When the text content length exceeds the maximum container width, the excess text is automatically omitted. + +```html +
+ This is a paragraph that displays up to one line of text, and the rest of the + text will be omitted. +
+ +
+ This is a paragraph that displays up to two lines of text, and the rest of the + text will be omitted. +
+ +
+ This is a paragraph that displays up to three lines of text, and the rest of + the text will be omitted. +
+``` + +### Hairline + +Add 1px border under the Retina screen for the element, based on a pseudo element. + +```html + +
+ + +
+ + +
+ + +
+ + +
+ + +
+``` + +### Animation + +```html + + +
Fade
+
+ + + +
Slide Up
+
+ + + +
Slide Down
+
+ + + +
Slide Left
+
+ + + +
Slide Right
+
+``` diff --git a/src-next/style/README.zh-CN.md b/src-next/style/README.zh-CN.md new file mode 100644 index 000000000..cc42831cd --- /dev/null +++ b/src-next/style/README.zh-CN.md @@ -0,0 +1,79 @@ +# 内置样式 + +### 介绍 + +Vant 中默认包含了一些常用样式,可以直接通过 className 的方式使用。 + +### 文字省略 + +当文本内容长度超过容器最大宽度时,自动省略多余的文本。 + +```html + +
这是一段最多显示一行的文字,多余的内容会被省略
+ + +
+ 这是一段最多显示两行的文字,多余的内容会被省略 +
+ + +
+ 这是一段最多显示三行的文字,多余的内容会被省略 +
+``` + +### 1px 边框 + +为元素添加 Retina 屏幕下的 1px 边框(即 hairline),基于伪类 transform 实现。 + +```html + +
+ + +
+ + +
+ + +
+ + +
+ + +
+``` + +### 动画 + +可以通过 `transition` 组件使用内置的动画 + +```html + + +
Fade
+
+ + + +
Slide Up
+
+ + + +
Slide Down
+
+ + + +
Slide Left
+
+ + + +
Slide Right
+
+``` diff --git a/src-next/style/animation.less b/src-next/style/animation.less new file mode 100644 index 000000000..db2485f8c --- /dev/null +++ b/src-next/style/animation.less @@ -0,0 +1,139 @@ +@import './var'; + +@keyframes van-slide-up-enter { + from { + transform: translate3d(0, 100%, 0); + } +} + +@keyframes van-slide-up-leave { + to { + transform: translate3d(0, 100%, 0); + } +} + +@keyframes van-slide-down-enter { + from { + transform: translate3d(0, -100%, 0); + } +} + +@keyframes van-slide-down-leave { + to { + transform: translate3d(0, -100%, 0); + } +} + +@keyframes van-slide-left-enter { + from { + transform: translate3d(-100%, 0, 0); + } +} + +@keyframes van-slide-left-leave { + to { + transform: translate3d(-100%, 0, 0); + } +} + +@keyframes van-slide-right-enter { + from { + transform: translate3d(100%, 0, 0); + } +} + +@keyframes van-slide-right-leave { + to { + transform: translate3d(100%, 0, 0); + } +} + +@keyframes van-fade-in { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} + +@keyframes van-fade-out { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} + +@keyframes van-rotate { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(360deg); + } +} + +.van-fade { + &-enter-active { + animation: @animation-duration-base van-fade-in both + @animation-timing-function-enter; + } + + &-leave-active { + animation: @animation-duration-base van-fade-out both + @animation-timing-function-leave; + } +} + +.van-slide-up { + &-enter-active { + animation: van-slide-up-enter @animation-duration-base both + @animation-timing-function-enter; + } + + &-leave-active { + animation: van-slide-up-leave @animation-duration-base both + @animation-timing-function-leave; + } +} + +.van-slide-down { + &-enter-active { + animation: van-slide-down-enter @animation-duration-base both + @animation-timing-function-enter; + } + + &-leave-active { + animation: van-slide-down-leave @animation-duration-base both + @animation-timing-function-leave; + } +} + +.van-slide-left { + &-enter-active { + animation: van-slide-left-enter @animation-duration-base both + @animation-timing-function-enter; + } + + &-leave-active { + animation: van-slide-left-leave @animation-duration-base both + @animation-timing-function-leave; + } +} + +.van-slide-right { + &-enter-active { + animation: van-slide-right-enter @animation-duration-base both + @animation-timing-function-enter; + } + + &-leave-active { + animation: van-slide-right-leave @animation-duration-base both + @animation-timing-function-leave; + } +} diff --git a/src-next/style/base.less b/src-next/style/base.less new file mode 100644 index 000000000..086daec7f --- /dev/null +++ b/src-next/style/base.less @@ -0,0 +1,10 @@ +/** + * Entry of basic styles + */ + +@import './var'; +@import './normalize'; +@import './ellipsis'; +@import './clearfix'; +@import './hairline'; +@import './animation'; diff --git a/src-next/style/clearfix.less b/src-next/style/clearfix.less new file mode 100644 index 000000000..3780b50d2 --- /dev/null +++ b/src-next/style/clearfix.less @@ -0,0 +1,5 @@ +@import './mixins/clearfix'; + +.van-clearfix { + .clearfix(); +} diff --git a/src-next/style/demo/index.vue b/src-next/style/demo/index.vue new file mode 100644 index 000000000..df01ad4a7 --- /dev/null +++ b/src-next/style/demo/index.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/src-next/style/ellipsis.less b/src-next/style/ellipsis.less new file mode 100644 index 000000000..0f3f282ac --- /dev/null +++ b/src-next/style/ellipsis.less @@ -0,0 +1,13 @@ +@import './mixins/ellipsis'; + +.van-ellipsis { + .ellipsis(); +} + +.van-multi-ellipsis--l2 { + .multi-ellipsis(2); +} + +.van-multi-ellipsis--l3 { + .multi-ellipsis(3); +} diff --git a/src-next/style/hairline.less b/src-next/style/hairline.less new file mode 100644 index 000000000..31d35d57f --- /dev/null +++ b/src-next/style/hairline.less @@ -0,0 +1,47 @@ +@import './var'; +@import './mixins/hairline'; + +[class*='van-hairline'] { + &::after { + .hairline(); + } +} + +.van-hairline { + &, + &--top, + &--left, + &--right, + &--bottom, + &--surround, + &--top-bottom { + position: relative; + } + + &--top::after { + border-top-width: @border-width-base; + } + + &--left::after { + border-left-width: @border-width-base; + } + + &--right::after { + border-right-width: @border-width-base; + } + + &--bottom::after { + border-bottom-width: @border-width-base; + } + + &, + &-unset { + &--top-bottom::after { + border-width: @border-width-base 0; + } + } + + &--surround::after { + border-width: @border-width-base; + } +} diff --git a/src-next/style/mixins/clearfix.less b/src-next/style/mixins/clearfix.less new file mode 100644 index 000000000..c9f0cb19c --- /dev/null +++ b/src-next/style/mixins/clearfix.less @@ -0,0 +1,7 @@ +.clearfix() { + &::after { + display: table; + clear: both; + content: ''; + } +} diff --git a/src-next/style/mixins/ellipsis.less b/src-next/style/mixins/ellipsis.less new file mode 100644 index 000000000..44b97b728 --- /dev/null +++ b/src-next/style/mixins/ellipsis.less @@ -0,0 +1,15 @@ +.multi-ellipsis(@lines) { + display: -webkit-box; + overflow: hidden; + text-overflow: ellipsis; + -webkit-line-clamp: @lines; + + /* autoprefixer: ignore next */ + -webkit-box-orient: vertical; +} + +.ellipsis() { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} diff --git a/src-next/style/mixins/hairline.less b/src-next/style/mixins/hairline.less new file mode 100644 index 000000000..ead093b03 --- /dev/null +++ b/src-next/style/mixins/hairline.less @@ -0,0 +1,39 @@ +@import '../var'; + +.hairline-common() { + position: absolute; + box-sizing: border-box; + content: ' '; + pointer-events: none; +} + +.hairline(@color: @border-color) { + .hairline-common(); + + top: -50%; + right: -50%; + bottom: -50%; + left: -50%; + border: 0 solid @color; + transform: scale(0.5); +} + +.hairline-top(@color: @border-color, @left: 0, @right: 0) { + .hairline-common(); + + top: 0; + right: @right; + left: @left; + border-top: 1px solid @color; + transform: scaleY(0.5); +} + +.hairline-bottom(@color: @border-color, @left: 0, @right: 0) { + .hairline-common(); + + right: @right; + bottom: 0; + left: @left; + border-bottom: 1px solid @color; + transform: scaleY(0.5); +} diff --git a/src-next/style/normalize.less b/src-next/style/normalize.less new file mode 100644 index 000000000..baf31f706 --- /dev/null +++ b/src-next/style/normalize.less @@ -0,0 +1,38 @@ +@import './var'; + +html { + -webkit-tap-highlight-color: transparent; +} + +body { + margin: 0; + font-family: @base-font-family; +} + +a { + text-decoration: none; +} + +input, +button, +textarea { + color: inherit; + font: inherit; +} + +a, +input, +button, +textarea, +[class*='van-'] { + &:focus { + outline: none; + } +} + +ol, +ul { + margin: 0; + padding: 0; + list-style: none; +} diff --git a/src-next/style/reset.less b/src-next/style/reset.less new file mode 100644 index 000000000..c8256b58c --- /dev/null +++ b/src-next/style/reset.less @@ -0,0 +1,171 @@ +@import './var'; + +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +big, +cite, +code, +del, +dfn, +em, +img, +ins, +kbd, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +article, +aside, +canvas, +details, +embed, +figure, +figcaption, +footer, +header, +hgroup, +menu, +nav, +output, +ruby, +section, +summary, +time, +mark, +audio, +video { + margin: 0; + padding: 0; + font: inherit; + font-size: 100%; + vertical-align: baseline; + border: 0; +} + +html { + line-height: 1; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +ol, +ul { + list-style: none; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +caption, +th, +td { + font-weight: normal; + vertical-align: middle; +} + +q, +blockquote { + quotes: none; +} + +q::before, +q::after, +blockquote::before, +blockquote::after { + content: ''; + content: none; +} + +a img { + border: none; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section, +summary { + display: block; +} + +* { + box-sizing: content-box; +} + +body { + color: @text-color; + background-color: @background-color; +} + +a { + text-decoration: none; + background: transparent; +} + +button, +input[type='number'], +input[type='text'], +input[type='password'], +input[type='email'], +input[type='search'], +select, +textarea { + margin: 0; + font-family: inherit; + -webkit-appearance: none; +} diff --git a/src-next/style/var.less b/src-next/style/var.less new file mode 100644 index 000000000..4ddc2770a --- /dev/null +++ b/src-next/style/var.less @@ -0,0 +1,839 @@ +// Color Palette +@black: #000; +@white: #fff; +@gray-1: #f7f8fa; +@gray-2: #f2f3f5; +@gray-3: #ebedf0; +@gray-4: #dcdee0; +@gray-5: #c8c9cc; +@gray-6: #969799; +@gray-7: #646566; +@gray-8: #323233; +@red: #ee0a24; +@blue: #1989fa; +@orange: #ff976a; +@orange-dark: #ed6a0c; +@orange-light: #fffbe8; +@green: #07c160; + +// Gradient Colors +@gradient-red: linear-gradient(to right, #ff6034, #ee0a24); +@gradient-orange: linear-gradient(to right, #ffd01e, #ff8917); + +// Component Colors +@text-color: @gray-8; +@active-color: @gray-2; +@active-opacity: 0.7; +@disabled-opacity: 0.5; +@background-color: @gray-1; +@background-color-light: #fafafa; +@text-link-color: #576b95; + +// Padding +@padding-base: 4px; +@padding-xs: @padding-base * 2; +@padding-sm: @padding-base * 3; +@padding-md: @padding-base * 4; +@padding-lg: @padding-base * 6; +@padding-xl: @padding-base * 8; + +// Font +@font-size-xs: 10px; +@font-size-sm: 12px; +@font-size-md: 14px; +@font-size-lg: 16px; +@font-weight-bold: 500; +@base-font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', + Helvetica, Segoe UI, Arial, Roboto, 'PingFang SC', 'Hiragino Sans GB', + 'Microsoft Yahei', sans-serif; +@price-integer-font-family: Avenir-Heavy, PingFang SC, Helvetica Neue, Arial, + sans-serif; + +// Animation +@animation-duration-base: 0.3s; +@animation-duration-fast: 0.2s; +@animation-timing-function-enter: ease-out; +@animation-timing-function-leave: ease-in; + +// Border +@border-color: @gray-3; +@border-width-base: 1px; +@border-radius-sm: 2px; +@border-radius-md: 4px; +@border-radius-lg: 8px; +@border-radius-max: 999px; + +// ActionSheet +@action-sheet-max-height: 80%; +@action-sheet-header-height: 44px; +@action-sheet-header-font-size: @font-size-lg; +@action-sheet-description-color: @gray-6; +@action-sheet-description-font-size: @font-size-md; +@action-sheet-description-line-height: 20px; +@action-sheet-item-height: 50px; +@action-sheet-item-background: @white; +@action-sheet-item-font-size: @font-size-lg; +@action-sheet-item-text-color: @text-color; +@action-sheet-item-disabled-text-color: @gray-5; +@action-sheet-subname-color: @gray-6; +@action-sheet-subname-font-size: @font-size-sm; +@action-sheet-close-icon-size: 22px; +@action-sheet-close-icon-color: @gray-5; +@action-sheet-close-icon-active-color: @gray-6; +@action-sheet-close-icon-padding: 0 @padding-md; +@action-sheet-cancel-padding-top: @padding-xs; +@action-sheet-cancel-padding-color: @background-color; + +// AddressEdit +@address-edit-padding: @padding-sm; +@address-edit-buttons-padding: @padding-xl @padding-base; +@address-edit-button-margin-bottom: @padding-sm; +@address-edit-detail-finish-color: @blue; +@address-edit-detail-finish-font-size: @font-size-sm; + +// AddressList +@address-list-padding: 12px 12px 100px; +@address-list-disabled-text-color: @gray-6; +@address-list-disabled-text-padding: @padding-base * 5 0 @padding-md; +@address-list-disabled-text-font-size: @font-size-md; +@address-list-disabled-text-line-height: 20px; +@address-list-add-button-z-index: 999; +@address-list-item-padding: @padding-sm; +@address-list-item-text-color: @text-color; +@address-list-item-disabled-text-color: @gray-5; +@address-list-item-font-size: 13px; +@address-list-item-line-height: 18px; +@address-list-item-radio-icon-color: @red; +@address-list-edit-icon-size: 20px; + +// Button +@button-mini-height: 24px; +@button-mini-font-size: @font-size-xs; +@button-small-height: 32px; +@button-small-font-size: @font-size-sm; +@button-normal-font-size: @font-size-md; +@button-large-height: 50px; +@button-default-height: 44px; +@button-default-line-height: 1.2; +@button-default-font-size: @font-size-lg; +@button-default-color: @text-color; +@button-default-background-color: @white; +@button-default-border-color: @border-color; +@button-primary-color: @white; +@button-primary-background-color: @green; +@button-primary-border-color: @green; +@button-info-color: @white; +@button-info-background-color: @blue; +@button-info-border-color: @blue; +@button-danger-color: @white; +@button-danger-background-color: @red; +@button-danger-border-color: @red; +@button-warning-color: @white; +@button-warning-background-color: @orange; +@button-warning-border-color: @orange; +@button-border-width: @border-width-base; +@button-border-radius: @border-radius-sm; +@button-round-border-radius: @border-radius-max; +@button-plain-background-color: @white; +@button-disabled-opacity: @disabled-opacity; + +// Calendar +@calendar-background-color: @white; +@calendar-popup-height: 80%; +@calendar-header-box-shadow: 0 2px 10px rgba(125, 126, 128, 0.16); +@calendar-header-title-height: 44px; +@calendar-header-title-font-size: @font-size-lg; +@calendar-header-subtitle-font-size: @font-size-md; +@calendar-weekdays-height: 30px; +@calendar-weekdays-font-size: @font-size-sm; +@calendar-month-title-font-size: @font-size-md; +@calendar-month-mark-color: fade(@gray-2, 80%); +@calendar-month-mark-font-size: 160px; +@calendar-day-height: 64px; +@calendar-day-font-size: @font-size-lg; +@calendar-range-edge-color: @white; +@calendar-range-edge-background-color: @red; +@calendar-range-middle-color: @red; +@calendar-range-middle-background-opacity: 0.1; +@calendar-selected-day-size: 54px; +@calendar-selected-day-color: @white; +@calendar-info-font-size: @font-size-xs; +@calendar-info-line-height: 14px; +@calendar-selected-day-background-color: @red; +@calendar-day-disabled-color: @gray-5; +@calendar-confirm-button-height: 36px; +@calendar-confirm-button-margin: 7px 0; + +// Card +@card-padding: @padding-xs @padding-md; +@card-font-size: @font-size-sm; +@card-text-color: @text-color; +@card-background-color: @background-color-light; +@card-thumb-size: 88px; +@card-thumb-border-radius: @border-radius-lg; +@card-title-line-height: 16px; +@card-desc-color: @gray-7; +@card-desc-line-height: 20px; +@card-price-color: @gray-8; +@card-origin-price-color: @gray-6; +@card-num-color: @gray-6; +@card-origin-price-font-size: @font-size-xs; +@card-price-font-size: @font-size-sm; +@card-price-integer-font-size: @font-size-lg; +@card-price-font-family: @price-integer-font-family; + +// Cell +@cell-font-size: @font-size-md; +@cell-line-height: 24px; +@cell-vertical-padding: 10px; +@cell-horizontal-padding: @padding-md; +@cell-text-color: @text-color; +@cell-background-color: @white; +@cell-border-color: @border-color; +@cell-active-color: @active-color; +@cell-required-color: @red; +@cell-label-color: @gray-6; +@cell-label-font-size: @font-size-sm; +@cell-label-line-height: 18px; +@cell-label-margin-top: @padding-base; +@cell-value-color: @gray-6; +@cell-icon-size: 16px; +@cell-right-icon-color: @gray-6; +@cell-large-vertical-padding: @padding-sm; +@cell-large-title-font-size: @font-size-lg; +@cell-large-label-font-size: @font-size-md; + +// CellGroup +@cell-group-background-color: @white; +@cell-group-title-color: @gray-6; +@cell-group-title-padding: @padding-md @padding-md @padding-xs; +@cell-group-title-font-size: @font-size-md; +@cell-group-title-line-height: 16px; + +// Checkbox +@checkbox-size: 20px; +@checkbox-border-color: @gray-5; +@checkbox-transition-duration: @animation-duration-fast; +@checkbox-label-margin: @padding-xs; +@checkbox-label-color: @text-color; +@checkbox-checked-icon-color: @blue; +@checkbox-disabled-icon-color: @gray-5; +@checkbox-disabled-label-color: @gray-5; +@checkbox-disabled-background-color: @border-color; + +// Circle +@circle-text-color: @text-color; +@circle-text-font-weight: @font-weight-bold; +@circle-text-font-size: @font-size-md; +@circle-text-line-height: 18px; + +// Collapse +@collapse-item-transition-duration: @animation-duration-base; +@collapse-item-content-padding: @padding-sm @padding-md; +@collapse-item-content-font-size: 14px; +@collapse-item-content-line-height: 1.5; +@collapse-item-content-text-color: @gray-6; +@collapse-item-content-background-color: @white; +@collapse-item-title-disabled-color: @gray-5; + +// ContactCard +@contact-card-padding: @padding-md; +@contact-card-add-icon-size: 40px; +@contact-card-add-icon-color: @blue; +@contact-card-value-line-height: 20px; + +// ContactEdit +@contact-edit-padding: @padding-md; +@contact-edit-fields-radius: @border-radius-md; +@contact-edit-buttons-padding: @padding-xl 0; +@contact-edit-button-margin-bottom: @padding-sm; +@contact-edit-button-font-size: 16px; +@contact-edit-field-label-width: 4em; + +// ContactList +@contact-list-edit-icon-size: 16px; +@contact-list-add-button-z-index: 999; +@contact-list-item-padding: @padding-md; + +// CountDown +@count-down-text-color: @text-color; +@count-down-font-size: @font-size-md; +@count-down-line-height: 20px; + +// Coupon +@coupon-margin: 0 @padding-sm @padding-sm; +@coupon-content-height: 84px; +@coupon-content-padding: 14px 0; +@coupon-background-color: @white; +@coupon-active-background-color: @active-color; +@coupon-border-radius: @border-radius-lg; +@coupon-box-shadow: 0 0 4px rgba(0, 0, 0, 0.1); +@coupon-head-width: 96px; +@coupon-amount-color: @red; +@coupon-amount-font-size: 30px; +@coupon-currency-font-size: 40%; +@coupon-name-font-size: @font-size-md; +@coupon-disabled-text-color: @gray-6; +@coupon-description-padding: @padding-xs @padding-md; +@coupon-description-border-color: @border-color; + +// CouponCell +@coupon-cell-selected-text-color: @text-color; + +// CouponList +@coupon-list-background-color: @background-color; +@coupon-list-field-padding: 5px 0 5px @padding-md; +@coupon-list-exchange-button-height: 32px; +@coupon-list-close-button-height: 40px; +@coupon-list-empty-image-size: 200px; +@coupon-list-empty-tip-color: @gray-6; +@coupon-list-empty-tip-font-size: @font-size-md; +@coupon-list-empty-tip-line-height: 20px; + +// Dialog +@dialog-width: 320px; +@dialog-small-screen-width: 90%; +@dialog-font-size: @font-size-lg; +@dialog-transition: @animation-duration-base; +@dialog-border-radius: 16px; +@dialog-background-color: @white; +@dialog-header-font-weight: @font-weight-bold; +@dialog-header-line-height: 24px; +@dialog-header-padding-top: @padding-lg; +@dialog-header-isolated-padding: @padding-lg 0; +@dialog-message-padding: @padding-lg; +@dialog-message-font-size: @font-size-md; +@dialog-message-line-height: 20px; +@dialog-message-max-height: 60vh; +@dialog-has-title-message-text-color: @gray-7; +@dialog-has-title-message-padding-top: @padding-sm; +@dialog-confirm-button-text-color: @blue; + +// Divider +@divider-margin: @padding-md 0; +@divider-text-color: @gray-6; +@divider-font-size: @font-size-md; +@divider-line-height: 24px; +@divider-border-color: @border-color; +@divider-content-padding: @padding-md; +@divider-content-left-width: 10%; +@divider-content-right-width: 10%; + +// DropdownMenu +@dropdown-menu-height: 48px; +@dropdown-menu-background-color: @white; +@dropdown-menu-title-font-size: 15px; +@dropdown-menu-title-text-color: @text-color; +@dropdown-menu-title-active-text-color: @blue; +@dropdown-menu-title-disabled-text-color: @gray-6; +@dropdown-menu-title-padding: 0 @padding-xs; +@dropdown-menu-title-line-height: 22px; +@dropdown-menu-option-active-color: @blue; +@dropdown-menu-content-max-height: 80%; +@dropdown-item-z-index: 10; + +// Empty +@empty-padding: @padding-xl 0; +@empty-image-size: 160px; +@empty-description-margin-top: @padding-md; +@empty-description-padding: 0 60px; +@empty-description-color: @gray-6; +@empty-description-font-size: 14px; +@empty-description-line-height: 20px; +@empty-bottom-margin-top: 24px; + +// Field +@field-label-width: 6em; +@field-label-color: @gray-7; +@field-label-margin-right: @padding-sm; +@field-input-text-color: @text-color; +@field-input-error-text-color: @red; +@field-input-disabled-text-color: @gray-5; +@field-placeholder-text-color: @gray-5; +@field-icon-size: 16px; +@field-clear-icon-size: 16px; +@field-clear-icon-color: @gray-5; +@field-right-icon-color: @gray-6; +@field-error-message-color: @red; +@field-error-message-text-color: 12px; +@field-text-area-min-height: 60px; +@field-word-limit-color: @gray-7; +@field-word-limit-font-size: @font-size-sm; +@field-word-limit-line-height: 16px; +@field-disabled-text-color: @gray-5; + +// GridItem +@grid-item-content-padding: @padding-md @padding-xs; +@grid-item-content-background-color: @white; +@grid-item-content-active-color: @active-color; +@grid-item-icon-size: 28px; +@grid-item-text-color: @gray-7; +@grid-item-text-font-size: @font-size-sm; + +// GoodsAction +@goods-action-background-color: @white; +@goods-action-height: 50px; +@goods-action-icon-width: 48px; +@goods-action-icon-height: 100%; +@goods-action-icon-color: @text-color; +@goods-action-icon-size: 18px; +@goods-action-icon-font-size: @font-size-xs; +@goods-action-icon-active-color: @active-color; +@goods-action-icon-text-color: @gray-7; +@goods-action-button-height: 40px; +@goods-action-button-warning-color: @gradient-orange; +@goods-action-button-danger-color: @gradient-red; + +// IndexAnchor +@index-anchor-z-index: 1; +@index-anchor-padding: 0 @padding-md; +@index-anchor-text-color: @text-color; +@index-anchor-font-weight: @font-weight-bold; +@index-anchor-font-size: @font-size-md; +@index-anchor-line-height: 32px; +@index-anchor-background-color: transparent; +@index-anchor-sticky-text-color: @green; +@index-anchor-sticky-background-color: @white; + +// IndexBar +@index-bar-sidebar-z-index: 2; +@index-bar-index-font-size: @font-size-xs; +@index-bar-index-line-height: 14px; +@index-bar-index-active-color: @green; + +// Info +@info-size: 16px; +@info-color: @white; +@info-padding: 0 3px; +@info-font-size: @font-size-sm; +@info-font-weight: @font-weight-bold; +@info-border-width: @border-width-base; +@info-background-color: @red; +@info-dot-color: @red; +@info-dot-size: 8px; +@info-font-family: @price-integer-font-family; + +// Image +@image-placeholder-text-color: @gray-6; +@image-placeholder-font-size: @font-size-md; +@image-placeholder-background-color: @background-color; +@image-loading-icon-size: 22px; +@image-error-icon-size: 22px; + +// ImagePreview +@image-preview-index-text-color: @white; +@image-preview-index-font-size: @font-size-md; +@image-preview-index-line-height: 22px; +@image-preview-index-text-shadow: 0 1px 1px @gray-8; +@image-preview-overlay-background-color: rgba(0, 0, 0, 0.9); +@image-preview-close-icon-size: 22px; +@image-preview-close-icon-color: @gray-5; +@image-preview-close-icon-active-color: @gray-6; +@image-preview-close-icon-margin: @padding-md; +@image-preview-close-icon-z-index: 1; + +// List +@list-icon-margin-right: 5px; +@list-text-color: @gray-6; +@list-text-font-size: @font-size-md; +@list-text-line-height: 50px; + +// Loading +@loading-text-color: @gray-6; +@loading-text-font-size: @font-size-md; +@loading-spinner-color: @gray-5; +@loading-spinner-size: 30px; +@loading-spinner-animation-duration: 0.8s; + +// NavBar +@nav-bar-height: 46px; +@nav-bar-background-color: @white; +@nav-bar-arrow-size: 16px; +@nav-bar-icon-color: @blue; +@nav-bar-text-color: @blue; +@nav-bar-title-font-size: @font-size-lg; +@nav-bar-title-text-color: @text-color; +@nav-bar-z-index: 1; + +// NoticeBar +@notice-bar-height: 40px; +@notice-bar-padding: 0 @padding-md; +@notice-bar-wrapable-padding: @padding-xs @padding-md; +@notice-bar-text-color: @orange-dark; +@notice-bar-font-size: @font-size-md; +@notice-bar-line-height: 24px; +@notice-bar-background-color: @orange-light; +@notice-bar-icon-size: 16px; +@notice-bar-icon-min-width: 24px; + +// Notify +@notify-text-color: @white; +@notify-padding: @padding-xs @padding-md; +@notify-font-size: @font-size-md; +@notify-line-height: 20px; +@notify-primary-background-color: @blue; +@notify-success-background-color: @green; +@notify-danger-background-color: @red; +@notify-warning-background-color: @orange; + +// NumberKeyboard +@number-keyboard-background-color: @gray-2; +@number-keyboard-key-height: 56px; +@number-keyboard-key-font-size: 28px; +@number-keyboard-key-active-color: @gray-3; +@number-keyboard-delete-font-size: @font-size-lg; +@number-keyboard-title-color: @gray-7; +@number-keyboard-title-height: 30px; +@number-keyboard-title-font-size: @font-size-md; +@number-keyboard-close-padding: 0 @padding-md; +@number-keyboard-close-color: @text-link-color; +@number-keyboard-close-font-size: @font-size-md; +@number-keyboard-button-text-color: @white; +@number-keyboard-button-background-color: @blue; +@number-keyboard-cursor-color: @text-color; +@number-keyboard-cursor-width: 1px; +@number-keyboard-cursor-height: 40%; +@number-keyboard-cursor-animation-duration: 1s; +@number-keyboard-z-index: 100; + +// Overlay +@overlay-z-index: 1; +@overlay-background-color: rgba(0, 0, 0, 0.7); + +// Pagination +@pagination-height: 40px; +@pagination-font-size: @font-size-md; +@pagination-item-width: 36px; +@pagination-item-default-color: @blue; +@pagination-item-disabled-color: @gray-7; +@pagination-item-disabled-background-color: @background-color; +@pagination-background-color: @white; +@pagination-desc-color: @gray-7; +@pagination-disabled-opacity: @disabled-opacity; + +// Panel +@panel-background-color: @white; +@panel-header-value-color: @red; +@panel-footer-padding: @padding-xs @padding-md; + +// PasswordInput +@password-input-height: 50px; +@password-input-margin: 0 @padding-md; +@password-input-font-size: 20px; +@password-input-border-radius: 6px; +@password-input-background-color: @white; +@password-input-info-color: @gray-6; +@password-input-info-font-size: @font-size-md; +@password-input-error-info-color: @red; +@password-input-dot-size: 10px; +@password-input-dot-color: @black; + +// Picker +@picker-background-color: @white; +@picker-toolbar-height: 44px; +@picker-title-font-size: @font-size-lg; +@picker-title-line-height: 20px; +@picker-action-padding: 0 @padding-md; +@picker-action-font-size: @font-size-md; +@picker-confirm-action-color: @text-link-color; +@picker-cancel-action-color: @gray-6; +@picker-option-font-size: @font-size-lg; +@picker-option-text-color: @black; +@picker-option-disabled-opacity: 0.3; +@picker-loading-icon-color: @blue; +@picker-loading-mask-color: rgba(255, 255, 255, 0.9); + +// Popup +@popup-background-color: @white; +@popup-transition: transform @animation-duration-base; +@popup-round-border-radius: 20px; +@popup-close-icon-size: 22px; +@popup-close-icon-color: @gray-5; +@popup-close-icon-active-color: @gray-6; +@popup-close-icon-margin: 16px; +@popup-close-icon-z-index: 1; + +// Progress +@progress-height: 4px; +@progress-color: @blue; +@progress-background-color: @gray-3; +@progress-pivot-padding: 0 5px; +@progress-pivot-text-color: @white; +@progress-pivot-font-size: @font-size-xs; +@progress-pivot-line-height: 1.6; +@progress-pivot-background-color: @blue; + +// PullRefresh +@pull-refresh-head-height: 50px; +@pull-refresh-head-font-size: @font-size-md; +@pull-refresh-head-text-color: @gray-6; + +// Radio +@radio-size: 20px; +@radio-border-color: @gray-5; +@radio-transition-duration: @animation-duration-fast; +@radio-label-margin: @padding-xs; +@radio-label-color: @text-color; +@radio-checked-icon-color: @blue; +@radio-disabled-icon-color: @gray-5; +@radio-disabled-label-color: @gray-5; +@radio-disabled-background-color: @border-color; + +// Rate +@rate-icon-size: 20px; +@rate-icon-gutter: @padding-base; +@rate-icon-void-color: @gray-5; +@rate-icon-full-color: @red; +@rate-icon-disabled-color: @gray-5; + +// ShareSheet +@share-sheet-header-padding: @padding-sm @padding-md @padding-base; +@share-sheet-title-color: @text-color; +@share-sheet-title-font-size: @font-size-md; +@share-sheet-title-line-height: 20px; +@share-sheet-description-color: @gray-6; +@share-sheet-description-font-size: @font-size-sm; +@share-sheet-description-line-height: 16px; +@share-sheet-icon-size: 48px; +@share-sheet-option-name-color: @gray-7; +@share-sheet-option-name-font-size: @font-size-sm; +@share-sheet-option-description-color: @gray-5; +@share-sheet-option-description-font-size: @font-size-sm; +@share-sheet-cancel-button-font-size: @font-size-lg; +@share-sheet-cancel-button-height: 48px; +@share-sheet-cancel-button-background: @white; + +// Search +@search-padding: 10px @padding-sm; +@search-background-color: @white; +@search-content-background-color: @gray-1; +@search-input-height: 34px; +@search-label-padding: 0 5px; +@search-label-color: @text-color; +@search-label-font-size: @font-size-md; +@search-left-icon-color: @gray-6; +@search-action-padding: 0 @padding-xs; +@search-action-text-color: @text-color; +@search-action-font-size: @font-size-md; + +// Sidebar +@sidebar-width: 85px; + +// SidebarItem +@sidebar-font-size: @font-size-md; +@sidebar-line-height: 20px; +@sidebar-text-color: @text-color; +@sidebar-disabled-text-color: @gray-5; +@sidebar-padding: 20px @padding-sm; +@sidebar-active-color: @active-color; +@sidebar-background-color: @background-color; +@sidebar-selected-font-weight: @font-weight-bold; +@sidebar-selected-text-color: @text-color; +@sidebar-selected-border-width: 4px; +@sidebar-selected-border-height: 16px; +@sidebar-selected-border-color: @red; +@sidebar-selected-background-color: @white; + +// Skeleton +@skeleton-row-height: 16px; +@skeleton-row-background-color: @active-color; +@skeleton-row-margin-top: @padding-sm; +@skeleton-avatar-background-color: @active-color; +@skeleton-animation-duration: 1.2s; + +// Slider +@slider-active-background-color: @blue; +@slider-inactive-background-color: @gray-3; +@slider-disabled-opacity: @disabled-opacity; +@slider-bar-height: 2px; +@slider-button-width: 24px; +@slider-button-height: 24px; +@slider-button-border-radius: 50%; +@slider-button-background-color: @white; +@slider-button-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); + +// Step +@step-text-color: @gray-6; +@step-active-color: @green; +@step-process-text-color: @text-color; +@step-font-size: @font-size-md; +@step-line-color: @border-color; +@step-finish-line-color: @green; +@step-finish-text-color: @text-color; +@step-icon-size: 12px; +@step-circle-size: 5px; +@step-circle-color: @gray-6; +@step-horizontal-title-font-size: @font-size-sm; + +// Steps +@steps-background-color: @white; + +// Sticky +@sticky-z-index: 99; + +// Stepper +@stepper-active-color: #e8e8e8; +@stepper-background-color: @active-color; +@stepper-button-icon-color: @text-color; +@stepper-button-disabled-color: @background-color; +@stepper-button-disabled-icon-color: @gray-5; +@stepper-button-round-theme-color: @red; +@stepper-input-width: 32px; +@stepper-input-height: 28px; +@stepper-input-font-size: @font-size-md; +@stepper-input-line-height: normal; +@stepper-input-text-color: @text-color; +@stepper-input-disabled-text-color: @gray-5; +@stepper-input-disabled-background-color: @active-color; +@stepper-border-radius: @border-radius-md; + +// SubmitBar +@submit-bar-height: 50px; +@submit-bar-z-index: 100; +@submit-bar-background-color: @white; +@submit-bar-button-width: 110px; +@submit-bar-price-color: @red; +@submit-bar-price-font-size: @font-size-md; +@submit-bar-currency-font-size: @font-size-md; +@submit-bar-text-color: @text-color; +@submit-bar-text-font-size: @font-size-md; +@submit-bar-tip-padding: @padding-xs @padding-sm; +@submit-bar-tip-font-size: @font-size-sm; +@submit-bar-tip-line-height: 1.5; +@submit-bar-tip-color: #f56723; +@submit-bar-tip-background-color: #fff7cc; +@submit-bar-tip-icon-size: 12px; +@submit-bar-button-height: 40px; +@submit-bar-padding: 0 @padding-md; +@submit-bar-price-integer-font-size: 20px; +@submit-bar-price-font-family: @price-integer-font-family; + +// Swipe +@swipe-indicator-size: 6px; +@swipe-indicator-margin: @padding-sm; +@swipe-indicator-active-opacity: 1; +@swipe-indicator-inactive-opacity: 0.3; +@swipe-indicator-active-background-color: @blue; +@swipe-indicator-inactive-background-color: @border-color; + +// Switch +@switch-size: 30px; +@switch-width: 2em; +@switch-height: 1em; +@switch-node-size: 1em; +@switch-node-z-index: 1; +@switch-node-background-color: @white; +@switch-node-box-shadow: 0 3px 1px 0 rgba(0, 0, 0, 0.05), + 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 3px 3px 0 rgba(0, 0, 0, 0.05); +@switch-background-color: @white; +@switch-on-background-color: @blue; +@switch-transition-duration: @animation-duration-base; +@switch-disabled-opacity: @disabled-opacity; +@switch-border: @border-width-base solid rgba(0, 0, 0, 0.1); + +// SwitchCell +@switch-cell-padding-top: @cell-vertical-padding - 1px; +@switch-cell-padding-bottom: @cell-vertical-padding - 1px; +@switch-cell-large-padding-top: @cell-large-vertical-padding - 1px; +@switch-cell-large-padding-bottom: @cell-large-vertical-padding - 1px; + +// Tabbar +@tabbar-height: 50px; +@tabbar-z-index: 1; +@tabbar-background-color: @white; + +// TabbarItem +@tabbar-item-font-size: @font-size-sm; +@tabbar-item-text-color: @gray-7; +@tabbar-item-active-color: @blue; +@tabbar-item-line-height: 1; +@tabbar-item-icon-size: 18px; +@tabbar-item-margin-bottom: 5px; + +// Tab +@tab-text-color: @gray-7; +@tab-active-text-color: @text-color; +@tab-disabled-text-color: @gray-5; +@tab-font-size: @font-size-md; + +// Tabs +@tabs-default-color: @red; +@tabs-line-height: 44px; +@tabs-card-height: 30px; +@tabs-nav-background-color: @white; +@tabs-bottom-bar-height: 3px; +@tabs-bottom-bar-color: @tabs-default-color; + +// Tag +@tag-padding: 0.2em 0.5em; +@tag-font-size: @font-size-xs; +@tag-medium-font-size: @font-size-sm; +@tag-large-font-size: @font-size-md; +@tag-text-color: @white; +@tag-border-radius: 0.2em; +@tag-round-border-radius: @border-radius-max; +@tag-danger-color: @red; +@tag-primary-color: @blue; +@tag-success-color: @green; +@tag-warning-color: @orange; +@tag-default-color: @gray-6; +@tag-plain-background-color: @white; + +// Toast +@toast-max-width: 70%; +@toast-font-size: @font-size-md; +@toast-text-color: @white; +@toast-loading-icon-color: @white; +@toast-line-height: 20px; +@toast-border-radius: @border-radius-lg; +@toast-background-color: fade(@text-color, 88%); +@toast-icon-size: 40px; +@toast-text-min-width: 96px; +@toast-text-padding: @padding-xs @padding-sm; +@toast-default-padding: @padding-md; +@toast-default-width: 88px; +@toast-default-min-height: 88px; +@toast-position-top-distance: 50px; +@toast-position-bottom-distance: 50px; + +// TreeSelect +@tree-select-font-size: @font-size-md; +@tree-select-nav-background-color: @background-color; +@tree-select-content-background-color: @white; +@tree-select-nav-item-padding: 14px @padding-sm; +@tree-select-item-height: 48px; +@tree-select-item-active-color: @red; +@tree-select-item-disabled-color: @gray-5; +@tree-select-item-selected-size: 16px; + +// Uploader +@uploader-size: 80px; +@uploader-icon-size: 24px; +@uploader-icon-color: @gray-4; +@uploader-text-color: @gray-6; +@uploader-text-font-size: @font-size-sm; +@uploader-upload-border-radius: 8px; +@uploader-upload-background-color: @gray-1; +@uploader-upload-active-color: @active-color; +@uploader-delete-color: @gray-6; +@uploader-delete-icon-size: 18px; +@uploader-delete-background-color: @white; +@uploader-file-background-color: @background-color; +@uploader-file-icon-size: 20px; +@uploader-file-icon-color: @gray-7; +@uploader-file-name-padding: 0 @padding-base; +@uploader-file-name-margin-top: @padding-xs; +@uploader-file-name-font-size: @font-size-sm; +@uploader-file-name-text-color: @gray-7; +@uploader-mask-background-color: fade(@gray-8, 88%); +@uploader-mask-icon-size: 22px; +@uploader-mask-message-font-size: @font-size-sm; +@uploader-mask-message-line-height: 14px; +@uploader-loading-icon-size: 22px; +@uploader-loading-icon-color: @white; +@uploader-disabled-opacity: @disabled-opacity; + +// Sku +@sku-item-background-color: @background-color; +@sku-icon-gray-color: @gray-4; +@sku-upload-mask-color: rgba(50, 50, 51, 0.8);