Skip to content

Commit b37a057

Browse files
committed
fix(Button): 修复 bg-color 在 disable=true 的情况下不生效的问题
BREAKING CHANGE: hover 和 disable 样式变动 close #817
1 parent d72ae9b commit b37a057

8 files changed

Lines changed: 63 additions & 47 deletions

File tree

config/styles/_base.less

Lines changed: 40 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,38 @@
11
@import "_theme";
22

33
// Color
4-
@default-color : @theme-color;
5-
@success-color : #34BFA3;
6-
@warning-color : #FFE57F;
7-
@error-color : #F4516C;
8-
@disabled-color : #DEE2E6;
9-
@selected-color : fade(@default-color, 90%);
10-
@tooltip-color : #fff;
11-
@subsidiary-color : #80848f;
12-
@rate-star-color : #f5a623;
4+
@default-color : @theme-color;
5+
@success-color : #34BFA3;
6+
@warning-color : #FFE57F;
7+
@error-color : #F4516C;
8+
@disabled-color : #DEE2E6;
9+
@selected-color : fade(@default-color, 90%);
10+
@tooltip-color : #fff;
11+
@subsidiary-color : #80848f;
12+
@rate-star-color : #f5a623;
13+
@active-color : #333;
1314

1415
// steps
1516

16-
@step-color : #C4C9D2;
17-
@step-active-color : @theme-color;
17+
@step-color : #C4C9D2;
18+
@step-active-color : @theme-color;
1819

1920
// Text
20-
@title-color : #333;
21-
@text-color : #888;
21+
@title-color : #333;
22+
@text-color : #888;
2223

2324
// Background Color
24-
@background-color-base : #f8f8f8; // base
25+
@background-color-base : #f8f8f8; // base
2526

2627
// Border color
27-
@border-color-base : #dddee1; // outside
28-
@border-color-split : #e9eaec; // inside
28+
@border-color-base : #dddee1; // outside
29+
@border-color-split : #e9eaec; // inside
2930

3031
// Size
31-
@size-grid-icon : 28rpx;
32-
@size-font-base : 28rpx;
33-
@size-font-mini : 24rpx;
34-
@size-font-large : 32rpx;
32+
@size-grid-icon : 28rpx;
33+
@size-font-base : 28rpx;
34+
@size-font-mini : 24rpx;
35+
@size-font-large : 32rpx;
3536

3637
// Button
3738
@btn-font-weight : normal;
@@ -57,37 +58,37 @@
5758
@btn-width : 180rpx;
5859
@btn-height-large : 88rpx;
5960
@btn-width-large : 710rpx;
60-
@btn-height-mini : 60rpx;
61-
@btn-width-mini : 140rpx;
61+
@btn-height-mini : 60rpx;
62+
@btn-width-mini : 140rpx;
6263
@btn-loading-color : #fff;
6364
@btn-circle-size : 40rpx;
6465
@btn-circle-size-mini : 30rpx;
6566
@btn-circle-size-large : 48rpx;
6667

6768

6869
// icon
69-
@icon-font-size : 32px; // 图标字体大小 默认
70-
@icon-font-size-large : 42px; // 图标字体大小 大号
71-
@icon-font-size-small : 22px; // 图标字体大小 小号
72-
@icon-font-color : #80848f;
70+
@icon-font-size : 32px; // 图标字体大小 默认
71+
@icon-font-size-large : 42px; // 图标字体大小 大号
72+
@icon-font-size-small : 22px; // 图标字体大小 小号
73+
@icon-font-color : #80848f;
7374

7475

7576
// Avatar
76-
@avatar-bg : #ccc;
77-
@avatar-color : #fff;
78-
@avatar-size-base : 32px;
79-
@avatar-size-lg : 40px;
80-
@avatar-size-sm : 24px;
81-
@avatar-font-size-base : 18px;
82-
@avatar-font-size-lg : 24px;
83-
@avatar-font-size-sm : 14px;
84-
@avatar-border-radius : @border-radius-small;
85-
@border-radius-small : 4px;
77+
@avatar-bg : #ccc;
78+
@avatar-color : #fff;
79+
@avatar-size-base : 32px;
80+
@avatar-size-lg : 40px;
81+
@avatar-size-sm : 24px;
82+
@avatar-font-size-base : 18px;
83+
@avatar-font-size-lg : 24px;
84+
@avatar-font-size-sm : 14px;
85+
@avatar-border-radius : @border-radius-small;
86+
@border-radius-small : 4px;
8687

8788
// Animation
88-
@animation-time : .3s;
89-
@transition-time : .2s;
90-
@ease-in-out : ease-in-out;
89+
@animation-time : .3s;
90+
@transition-time : .2s;
91+
@ease-in-out : ease-in-out;
9192

9293
// Progress
9394
@progress-active-color : @theme-color;

config/styles/_mixins.less

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,19 @@
1212
pointer-events: none;
1313
box-sizing: border-box;
1414
border: 0 solid @border-color-split;
15+
}
16+
17+
.active() {
18+
opacity: 0.15;
19+
position: absolute;
20+
top: 50%;
21+
left: 50%;
22+
width: 100%;
23+
height: 100%;
24+
border: inherit;
25+
border-radius: inherit; /* inherit parent's border radius */
26+
transform: translate(-50%, -50%);
27+
content: ' ';
28+
background-color: @active-color;
29+
border-color: @active-color;
1530
}

dist/button/index.wxml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
</view>
66
</block>
77
<block wx:else>
8-
<view class="l-btn {{ 'l-btn-' + size }} {{ 'l-btn-' + type }} {{ 'l-btn-' + shape }} {{plain?'l-btn-plain':''}} {{ disabled ? 'l-btn-disabled' : ''}} l-class" hover-class="btn-hover l-hover-class" hover-stop-propagation="{{hoverStopPropagation}}" hover-start-time="{{hoverStartTime}}" hover-stay-time="{{hoverStayTime}}" style="{{width?'min-width:'+width+'rpx;':''}} {{height?'height:'+height+'rpx;'+'line-height:'+height+'rpx;':''}} {{size=='long'?'border-radius:0;':''}} {{'background-color:'+bgColor}}">
8+
<view class="l-btn {{ 'l-btn-' + size }} {{ 'l-btn-' + type }} {{ 'l-btn-' + shape }} {{plain?'l-btn-plain':''}} {{ disabled ? 'l-btn-disabled' : ''}} l-class" hover-class="{{disabled?'':'btn-hover l-hover-class'}}" hover-stop-propagation="{{hoverStopPropagation}}" hover-start-time="{{hoverStartTime}}" hover-stay-time="{{hoverStayTime}}" style="{{width?'min-width:'+width+'rpx;':''}} {{height?'height:'+height+'rpx;'+'line-height:'+height+'rpx;':''}} {{size=='long'?'border-radius:0;':''}} {{'background-color:'+bgColor}}">
99
<view wx:if="{{loading}}" class="l-btn-loading {{'margin-' + size}} {{ plain ?'l-btn-loading-' + type : '' }}"></view>
1010
<l-icon l-class="l-icon-class" class="{{'margin-' + size}}" wx:if="{{icon}}" name="{{icon}}" color="{{iconColor}}" size="{{iconSize}}"/>
1111
<slot/>

dist/button/index.wxss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
.btn-hover{opacity:.8}.special-container{display:flex}.l-btn{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;font-size:28rpx;position:relative;color:#fff;padding:0 12rpx;box-sizing:border-box}.l-btn-img-mini{width:30rpx;height:30rpx}.l-btn-img-medium{width:36rpx;height:36rpx}.l-btn-img-large{height:44rpx;width:44rpx}.l-btn-long{border-radius:0;margin:0;height:88rpx;width:100%}.l-btn-medium{height:72rpx;min-width:180rpx}.l-btn-large{height:88rpx;min-width:710rpx}.l-btn-mini{height:60rpx;min-width:140rpx;font-size:24rpx}.l-btn-default{background-color:#3963bc}.l-btn-success{background-color:#34bfa3}.l-btn-warning{background-color:#ffe57f;color:#333}.l-btn-error{background-color:#f4516c}.l-btn-square{border-radius:0}.l-btn-semicircle{border-radius:40rpx}.l-btn-large.l-btn-semicircle{border-radius:48rpx}.l-btn-mini.l-btn-semicircle{border-radius:30rpx}.l-btn-circle{border-radius:8rpx}.l-btn-large.l-btn-circle{border-radius:9.6rpx}.l-btn-mini.l-btn-circle{border-radius:6rpx}.l-btn-plain{background-color:#fff;color:#3963bc;border:2rpx solid #3963bc}.l-btn-success.l-btn-plain{background-color:#fff;color:#34bfa3;border:2rpx solid #34bfa3}.l-btn-error.l-btn-plain{background-color:#fff;color:#f4516c;border:2rpx solid #f4516c}.l-btn-warning.l-btn-plain{background-color:#fff;color:#ffe57f;border:2rpx solid #ffe57f}.l-btn-loading{opacity:.6;display:inline-block;vertical-align:middle;width:24rpx;height:24rpx;background:0 0;border-radius:50%;border:4rpx solid #fff;border-color:#fff #fff #fff transparent;animation:btn-spin .6s linear;animation-iteration-count:infinite}.l-btn-loading-default{border:4rpx solid #3963bc;border-color:#3963bc #3963bc #3963bc transparent}.l-btn-loading-success{border:4rpx solid #34bfa3;border-color:#34bfa3 #34bfa3 #34bfa3 transparent}.l-btn-loading-error{border:4rpx solid #f4516c;border-color:#f4516c #f4516c #f4516c transparent}.l-btn-loading-warning{border:4rpx solid #ffe57f;border-color:#ffe57f #ffe57f #ffe57f transparent}.l-btn-disabled{opacity:.8;background-color:#dee2e6}.icon{display:flex!important}.margin-mini{margin-right:10rpx}.margin-medium{margin-right:18rpx}.margin-large{margin-right:24rpx}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
1+
.btn-hover::before{opacity:.15;position:absolute;top:50%;left:50%;width:100%;height:100%;border:inherit;border-radius:inherit;transform:translate(-50%,-50%);content:' ';background-color:#333;border-color:#333}.special-container{display:flex}.l-btn{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;font-size:28rpx;position:relative;color:#fff;padding:0 12rpx;box-sizing:border-box}.l-btn-img-mini{width:30rpx;height:30rpx}.l-btn-img-medium{width:36rpx;height:36rpx}.l-btn-img-large{height:44rpx;width:44rpx}.l-btn-long{border-radius:0;margin:0;height:88rpx;width:100%}.l-btn-medium{height:72rpx;min-width:180rpx}.l-btn-large{height:88rpx;min-width:710rpx}.l-btn-mini{height:60rpx;min-width:140rpx;font-size:24rpx}.l-btn-default{background-color:#3963bc}.l-btn-success{background-color:#34bfa3}.l-btn-warning{background-color:#ffe57f;color:#333}.l-btn-error{background-color:#f4516c}.l-btn-square{border-radius:0}.l-btn-semicircle{border-radius:40rpx}.l-btn-large.l-btn-semicircle{border-radius:48rpx}.l-btn-mini.l-btn-semicircle{border-radius:30rpx}.l-btn-circle{border-radius:8rpx}.l-btn-large.l-btn-circle{border-radius:9.6rpx}.l-btn-mini.l-btn-circle{border-radius:6rpx}.l-btn-plain{background-color:#fff;color:#3963bc;border:2rpx solid #3963bc}.l-btn-success.l-btn-plain{background-color:#fff;color:#34bfa3;border:2rpx solid #34bfa3}.l-btn-error.l-btn-plain{background-color:#fff;color:#f4516c;border:2rpx solid #f4516c}.l-btn-warning.l-btn-plain{background-color:#fff;color:#ffe57f;border:2rpx solid #ffe57f}.l-btn-loading{opacity:.6;display:inline-block;vertical-align:middle;width:24rpx;height:24rpx;background:0 0;border-radius:50%;border:4rpx solid #fff;border-color:#fff #fff #fff transparent;animation:btn-spin .6s linear;animation-iteration-count:infinite}.l-btn-loading-default{border:4rpx solid #3963bc;border-color:#3963bc #3963bc #3963bc transparent}.l-btn-loading-success{border:4rpx solid #34bfa3;border-color:#34bfa3 #34bfa3 #34bfa3 transparent}.l-btn-loading-error{border:4rpx solid #f4516c;border-color:#f4516c #f4516c #f4516c transparent}.l-btn-loading-warning{border:4rpx solid #ffe57f;border-color:#ffe57f #ffe57f #ffe57f transparent}.l-btn-disabled{opacity:.8}.icon{display:flex!important}.margin-mini{margin-right:10rpx}.margin-medium{margin-right:18rpx}.margin-large{margin-right:24rpx}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}

examples/dist/button/index.wxml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
</block>
77
<block wx:else>
88
<view class="l-btn {{ 'l-btn-' + size }} {{ 'l-btn-' + type }} {{ 'l-btn-' + shape }} {{plain?'l-btn-plain':''}} {{ disabled ? 'l-btn-disabled' : ''}} l-class "
9-
hover-class="btn-hover l-hover-class"
9+
hover-class="{{disabled?'':'btn-hover l-hover-class'}}"
1010
hover-stop-propagation="{{hoverStopPropagation}}"
1111
hover-start-time="{{hoverStartTime}}"
1212
hover-stay-time="{{hoverStayTime}}"

examples/dist/button/index.wxss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
.btn-hover{opacity:.8}.special-container{display:flex}.l-btn{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;font-size:28rpx;position:relative;color:#fff;padding:0 12rpx;box-sizing:border-box}.l-btn-img-mini{width:30rpx;height:30rpx}.l-btn-img-medium{width:36rpx;height:36rpx}.l-btn-img-large{height:44rpx;width:44rpx}.l-btn-long{border-radius:0;margin:0;height:88rpx;width:100%}.l-btn-medium{height:72rpx;min-width:180rpx}.l-btn-large{height:88rpx;min-width:710rpx}.l-btn-mini{height:60rpx;min-width:140rpx;font-size:24rpx}.l-btn-default{background-color:#3963bc}.l-btn-success{background-color:#34bfa3}.l-btn-warning{background-color:#ffe57f;color:#333}.l-btn-error{background-color:#f4516c}.l-btn-square{border-radius:0}.l-btn-semicircle{border-radius:40rpx}.l-btn-large.l-btn-semicircle{border-radius:48rpx}.l-btn-mini.l-btn-semicircle{border-radius:30rpx}.l-btn-circle{border-radius:8rpx}.l-btn-large.l-btn-circle{border-radius:9.6rpx}.l-btn-mini.l-btn-circle{border-radius:6rpx}.l-btn-plain{background-color:#fff;color:#3963bc;border:2rpx solid #3963bc}.l-btn-success.l-btn-plain{background-color:#fff;color:#34bfa3;border:2rpx solid #34bfa3}.l-btn-error.l-btn-plain{background-color:#fff;color:#f4516c;border:2rpx solid #f4516c}.l-btn-warning.l-btn-plain{background-color:#fff;color:#ffe57f;border:2rpx solid #ffe57f}.l-btn-loading{opacity:.6;display:inline-block;vertical-align:middle;width:24rpx;height:24rpx;background:0 0;border-radius:50%;border:4rpx solid #fff;border-color:#fff #fff #fff transparent;animation:btn-spin .6s linear;animation-iteration-count:infinite}.l-btn-loading-default{border:4rpx solid #3963bc;border-color:#3963bc #3963bc #3963bc transparent}.l-btn-loading-success{border:4rpx solid #34bfa3;border-color:#34bfa3 #34bfa3 #34bfa3 transparent}.l-btn-loading-error{border:4rpx solid #f4516c;border-color:#f4516c #f4516c #f4516c transparent}.l-btn-loading-warning{border:4rpx solid #ffe57f;border-color:#ffe57f #ffe57f #ffe57f transparent}.l-btn-disabled{opacity:.8;background-color:#dee2e6}.icon{display:flex!important}.margin-mini{margin-right:10rpx}.margin-medium{margin-right:18rpx}.margin-large{margin-right:24rpx}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
1+
.btn-hover::before{opacity:.15;position:absolute;top:50%;left:50%;width:100%;height:100%;border:inherit;border-radius:inherit;transform:translate(-50%,-50%);content:' ';background-color:#333;border-color:#333}.special-container{display:flex}.l-btn{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;font-size:28rpx;position:relative;color:#fff;padding:0 12rpx;box-sizing:border-box}.l-btn-img-mini{width:30rpx;height:30rpx}.l-btn-img-medium{width:36rpx;height:36rpx}.l-btn-img-large{height:44rpx;width:44rpx}.l-btn-long{border-radius:0;margin:0;height:88rpx;width:100%}.l-btn-medium{height:72rpx;min-width:180rpx}.l-btn-large{height:88rpx;min-width:710rpx}.l-btn-mini{height:60rpx;min-width:140rpx;font-size:24rpx}.l-btn-default{background-color:#3963bc}.l-btn-success{background-color:#34bfa3}.l-btn-warning{background-color:#ffe57f;color:#333}.l-btn-error{background-color:#f4516c}.l-btn-square{border-radius:0}.l-btn-semicircle{border-radius:40rpx}.l-btn-large.l-btn-semicircle{border-radius:48rpx}.l-btn-mini.l-btn-semicircle{border-radius:30rpx}.l-btn-circle{border-radius:8rpx}.l-btn-large.l-btn-circle{border-radius:9.6rpx}.l-btn-mini.l-btn-circle{border-radius:6rpx}.l-btn-plain{background-color:#fff;color:#3963bc;border:2rpx solid #3963bc}.l-btn-success.l-btn-plain{background-color:#fff;color:#34bfa3;border:2rpx solid #34bfa3}.l-btn-error.l-btn-plain{background-color:#fff;color:#f4516c;border:2rpx solid #f4516c}.l-btn-warning.l-btn-plain{background-color:#fff;color:#ffe57f;border:2rpx solid #ffe57f}.l-btn-loading{opacity:.6;display:inline-block;vertical-align:middle;width:24rpx;height:24rpx;background:0 0;border-radius:50%;border:4rpx solid #fff;border-color:#fff #fff #fff transparent;animation:btn-spin .6s linear;animation-iteration-count:infinite}.l-btn-loading-default{border:4rpx solid #3963bc;border-color:#3963bc #3963bc #3963bc transparent}.l-btn-loading-success{border:4rpx solid #34bfa3;border-color:#34bfa3 #34bfa3 #34bfa3 transparent}.l-btn-loading-error{border:4rpx solid #f4516c;border-color:#f4516c #f4516c #f4516c transparent}.l-btn-loading-warning{border:4rpx solid #ffe57f;border-color:#ffe57f #ffe57f #ffe57f transparent}.l-btn-disabled{opacity:.8}.icon{display:flex!important}.margin-mini{margin-right:10rpx}.margin-medium{margin-right:18rpx}.margin-large{margin-right:24rpx}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}

src/button/index.less

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
@import "../../config/styles/_base.less";
2+
@import "../../config/styles/_mixins.less";
23

3-
.btn-hover{
4-
opacity: 0.8;
4+
.btn-hover::before{
5+
.active();
56
}
67

78
.special-container{
@@ -154,7 +155,6 @@
154155
// Disabled
155156
&-disabled{
156157
opacity: 0.8;
157-
background-color: @disabled-color;
158158
}
159159
}
160160

src/button/index.wxml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
</block>
77
<block wx:else>
88
<view class="l-btn {{ 'l-btn-' + size }} {{ 'l-btn-' + type }} {{ 'l-btn-' + shape }} {{plain?'l-btn-plain':''}} {{ disabled ? 'l-btn-disabled' : ''}} l-class "
9-
hover-class="btn-hover l-hover-class"
9+
hover-class="{{disabled?'':'btn-hover l-hover-class'}}"
1010
hover-stop-propagation="{{hoverStopPropagation}}"
1111
hover-start-time="{{hoverStartTime}}"
1212
hover-stay-time="{{hoverStayTime}}"

0 commit comments

Comments
 (0)