不多说了了,直接上代码;有不了解的加扣扣群 88322534
1.引入的js文件
2.css样式
3.HTML元素
4.下面就是js了
<script type="text/babel">
//创建轮播盒子
var SliderBox = React.createClass({
getInitialState: function() {
var data=[
"https://img.alicdn.com/imgextra/i3/113/TB2o18uzUhnpuFjSZFpXXcpuXXa_!!113-0-luban.jpg_q100.jpg",
"https://aecpm.alicdn.com/simba/img/TB1W4nPJFXXXXbSXpXXSutbFXXX.jpg",
"https://img.alicdn.com/tps/i4/TB1vHgyRVXXXXbJaXXXSutbFXXX.jpg",
"https://img.alicdn.com/tfs/TB17RX4SXXXXXakXFXXXXXXXXXX-1130-500.jpg_q100.jpg",
"https://img.alicdn.com/imgextra/i2/133/TB2N_0XzHJmpuFjSZFwXXaE4VXa_!!133-0-luban.jpg_q100.jpg",
"https://aecpm.alicdn.com/simba/img/TB1_JXrLVXXXXbZXVXXSutbFXXX.jpg"];
return {data: data, dataLength: data.length, nowIndex:0,nowZ:2};
},
componentWillMount: function() {
this.interval = setInterval(this.autoSlider, 2000);
},
autoSlider:function(){
var nowIndex=this.state.nowIndex;
if(nowIndex<this.state.dataLength-1)
nowIndex+=1;
else
nowIndex=0;
this.setState({nowIndex:nowIndex,nowZ:this.state.nowZ+1});
},
componentDidMount: function() {
/*$.ajax({
url: this.props.url,
dataType: 'json',
cache: false,
success: function(data) {
this.setState({data: data});
}.bind(this),
error: function(xhr, status, err) {
console.error(this.props.url, status, err.toString());
}.bind(this)
});*/
},
silderBoxEnter:function(e){
ReactDOM.findDOMNode(this.refs.left).style.display="block";
ReactDOM.findDOMNode(this.refs.right).style.display="block";
clearInterval(this.interval);
},
silderBoxLeave:function(e){
ReactDOM.findDOMNode(this.refs.left).style.display="none";
ReactDOM.findDOMNode(this.refs.right).style.display="none";
this.interval = setInterval(this.autoSlider, 2000);
},
leftClick:function(e){
var nowIndex=0;
if(0==this.state.nowIndex)
nowIndex=this.state.dataLength-1;
else
nowIndex=this.state.nowIndex-1;
this.setState({nowIndex:nowIndex,nowZ:this.state.nowZ+1});
},
rightClick:function(e){
var nowIndex=0;
if((this.state.dataLength-1)==this.state.nowIndex)
nowIndex=0;
else
nowIndex=this.state.nowIndex+1;
this.setState({nowIndex:nowIndex,nowZ:this.state.nowZ+1});
},
//这个鼠标移上事件会传到轮播Menu里使用
navsOver:function(e){
var id=e.target.getAttribute("data-id");
this.setState({nowIndex:parseInt(id),nowZ:this.state.nowZ+1});
},
render: function() {
return (
<div className="slider-box" onMouseEnter={this.silderBoxEnter} onMouseLeave={this.silderBoxLeave}>
<SliderList data={this.state.data} nowZ={this.state.nowZ} nowIndex={this.state.nowIndex}/>
<div className="left" ref="left" onClick={this.leftClick} style={{zIndex:this.state.nowZ+10}}></div>
<div className="right" ref="right" onClick={this.rightClick} style={{zIndex:this.state.nowZ+10}}></div>
<SliderMenu dataLength={this.state.dataLength} nowZ={this.state.nowZ} nowIndex={this.state.nowIndex} navsOver={this.navsOver}/>
</div>
);
}
});
//创建轮播内容
var SliderList = React.createClass({
render: function() {
var sliderNodes=[];
var nowIndex=this.props.nowIndex;
var nowZ=this.props.nowZ;
this.props.data.forEach(function(e,i){
sliderNodes.push(<li className={i==nowIndex?'select slider-'+i:'slider-'+i} style={{zIndex:i==nowIndex?nowZ:1}} key={i}><img src={e}/></li>);
});
return (
<ul className="slider-list">
{sliderNodes}
</ul>
);
}
});
//创建轮播图底部导航
var SliderMenu = React.createClass({
render: function() {
var sliderNavs=[];
var nowIndex=this.props.nowIndex;
for(var i=0;i<this.props.dataLength;i++){
sliderNavs.push(<li onMouseOver={this.props.navsOver} className={i==nowIndex?'slider-active':''} data-id={i} key={i}></li>);
}
return (
<div className="slider-nav" style={{zIndex:this.props.nowZ+10}}>
<ol>
{sliderNavs}
</ol>
</div>
);
}
});
ReactDOM.render(
<SliderBox url="./banner.json" />,
document.getElementById('banner')
);
</script>