mirror of
https://github.com/wassname/slider.git
synced 2026-09-09 11:35:22 +08:00
add slider animation
This commit is contained in:
@@ -8,6 +8,8 @@
|
||||
@tooltip-arrow-width: 4px;
|
||||
@tooltip-distance: @tooltip-arrow-width+4;
|
||||
@tooltip-arrow-color: @tooltip-bg;
|
||||
@ease-out-quint : cubic-bezier(0.23, 1, 0.32, 1);
|
||||
@ease-in-quint : cubic-bezier(0.755, 0.05, 0.855, 0.06);
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
@@ -174,4 +176,64 @@
|
||||
border-top-color: @tooltip-arrow-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.motion-common() {
|
||||
animation-duration: .3s;
|
||||
animation-fill-mode: both;
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
.make-motion(@className, @keyframeName) {
|
||||
.@{className}-enter, .@{className}-appear {
|
||||
.motion-common();
|
||||
animation-play-state: paused;
|
||||
}
|
||||
.@{className}-leave {
|
||||
.motion-common();
|
||||
animation-play-state: paused;
|
||||
}
|
||||
.@{className}-enter.@{className}-enter-active, .@{className}-appear.@{className}-appear-active {
|
||||
animation-name: ~"@{keyframeName}In";
|
||||
animation-play-state: running;
|
||||
}
|
||||
.@{className}-leave.@{className}-leave-active {
|
||||
animation-name: ~"@{keyframeName}Out";
|
||||
animation-play-state: running;
|
||||
}
|
||||
}
|
||||
.zoom-motion(@className, @keyframeName) {
|
||||
.make-motion(@className, @keyframeName);
|
||||
.@{className}-enter, .@{className}-appear {
|
||||
transform: scale(0, 0); // need this by yiminghe
|
||||
animation-timing-function: @ease-out-quint;
|
||||
}
|
||||
.@{className}-leave {
|
||||
animation-timing-function: @ease-in-quint;
|
||||
}
|
||||
}
|
||||
.zoom-motion(zoom-down, zoomDown);
|
||||
|
||||
@keyframes zoomDownIn {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform-origin: 50% 100%;
|
||||
transform: scale(0, 0);
|
||||
}
|
||||
100% {
|
||||
transform-origin: 50% 100%;
|
||||
transform: scale(1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes zoomDownOut {
|
||||
0% {
|
||||
transform-origin: 50% 100%;
|
||||
transform: scale(1, 1);
|
||||
}
|
||||
100% {
|
||||
opacity: 0;
|
||||
transform-origin: 50% 100%;
|
||||
transform: scale(0, 0);
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "rc-slider",
|
||||
"version": "1.4.3",
|
||||
"version": "1.4.4",
|
||||
"description": "slider ui component for react",
|
||||
"keywords": [
|
||||
"react",
|
||||
@@ -24,7 +24,7 @@
|
||||
"licenses": "MIT",
|
||||
"main": "./lib/index.js",
|
||||
"config": {
|
||||
"port": 8000
|
||||
"port": 8005
|
||||
},
|
||||
"scripts": {
|
||||
"build": "rc-tools run build",
|
||||
|
||||
+17
-8
@@ -56,6 +56,7 @@ const Slider = React.createClass({
|
||||
onBeforeChange: React.PropTypes.func,
|
||||
onChange: React.PropTypes.func,
|
||||
onAfterChange: React.PropTypes.func,
|
||||
transitionName: React.PropTypes.string,
|
||||
},
|
||||
|
||||
getDefaultProps() {
|
||||
@@ -70,6 +71,7 @@ const Slider = React.createClass({
|
||||
prefixCls: 'rc-slider',
|
||||
disabled: false,
|
||||
defaultIndex: 0,
|
||||
transitionName: 'zoom-down',
|
||||
};
|
||||
},
|
||||
|
||||
@@ -103,8 +105,14 @@ const Slider = React.createClass({
|
||||
}
|
||||
},
|
||||
|
||||
onMouseUp() {
|
||||
this._end('mouse');
|
||||
onMouseUp(e) {
|
||||
const m = e.target;
|
||||
const handleDom = React.findDOMNode(this.refs.handle);
|
||||
let showToolTip = false;
|
||||
if (m === handleDom) {
|
||||
showToolTip = true;
|
||||
}
|
||||
this._end('mouse', showToolTip);
|
||||
},
|
||||
|
||||
onTouchUp() {
|
||||
@@ -308,8 +316,8 @@ const Slider = React.createClass({
|
||||
|
||||
const handle = (<div className={className}
|
||||
{...events}
|
||||
ref="handle"
|
||||
style={onStyle}></div>);
|
||||
ref="handle"
|
||||
style={onStyle}></div>);
|
||||
|
||||
if (this.props.marks.length > 0) {
|
||||
return handle;
|
||||
@@ -320,6 +328,7 @@ const Slider = React.createClass({
|
||||
visible={tooltipVisible}
|
||||
overlay={<span>{this.state.value}</span>}
|
||||
delay={0}
|
||||
transitionName={this.props.transitionName}
|
||||
prefixCls={prefixClsFn(prefixCls, 'tooltip')}>
|
||||
{handle}
|
||||
</Tooltip>
|
||||
@@ -358,8 +367,8 @@ const Slider = React.createClass({
|
||||
|
||||
return (
|
||||
<div className={rcUtil.classSet(sliderClassName)} ref="slider"
|
||||
onTouchStart={disabled ? noop : this.onTouchStart}
|
||||
onMouseDown={disabled ? noop : this.onSliderMouseDown}>
|
||||
onTouchStart={disabled ? noop : this.onTouchStart}
|
||||
onMouseDown={disabled ? noop : this.onSliderMouseDown}>
|
||||
{track}
|
||||
{ons}
|
||||
{steps}
|
||||
@@ -468,12 +477,12 @@ const Slider = React.createClass({
|
||||
});
|
||||
},
|
||||
|
||||
_end(type) {
|
||||
_end(type, showToolTip) {
|
||||
this._removeEventons(type);
|
||||
this._triggerEvents('onAfterChange');
|
||||
this.setState({
|
||||
dragging: false,
|
||||
showTooltip: false,
|
||||
showTooltip: !!showToolTip,
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user