react 文字跑马灯从左往右滚动鼠标移入移出控制

本人React用的时间较短,有代码上的不规范或者不简洁的地方请见谅~
附上代码~~

import React from “react”;
import * as styles from ‘./notice.less’;
import {Icon} from “antd”;
import $ from “jquery”;

state = {
Notice: ‘我是一条公告!!!’,
}

componentDidMount() {
this.marquee(this.state.Notice);
}

componentWillUnmount() {
if(this.state.timer!= null) {
clearInterval(this.state.timer);
}
}

marquee = message =>{
if(message!=’’ ){
let {addiche, text} = this;
let scrollWidth = $(addiche).width();
let textWidth = $(text).width();
let i = scrollWidth;
this.state.timer = setInterval(function() {
i–;
if(i < -textWidth ) {
i = scrollWidth;
}
// $(text).animate({‘left’: i+‘px’}, 10);
$(text).css(‘left’, i+‘px’);
}, 20);
}
}

onMouseOverText(){
if(this.state.timer!= null) {
clearInterval(this.state.timer);
}
};

onMouseLeaveText(){
let {addiche, text} = this;
let scrollWidth = $(text).offset().left;
let textWidth = $(text).width();
let i = scrollWidth;
this.state.timer = setInterval(function() {
i–;
if(i < -textWidth ) {
i = $(addiche).width();
}
$(text).css(‘left’, i+‘px’);
}, 20);

}

render() {
const { Notice } = this.state
return (
<React.Fragment>
<div ref={(ref)=>{this.addiche = ref;}} className={styles.affiche} >




<div onMouseOver={() => this.onMouseOverText()} onMouseLeave={() => this.onMouseLeaveText()} ref={(ref)=>{this.text = ref;}} className={styles.afficheText}>
{Notice}


</React.Fragment>
);
}

//css(Less)部分
.affiche{
color: #fff;
display: block;
width: 100%;
height: 30px;
margin: 0 auto;
position: relative;
overflow: hidden;
text-align:left;
line-height: 30px;
background-color: #EB6100;

.afficheText{
position: absolute;
top: 0;
left: 100%;
line-height: 30px;
display: inline-block;
word-break: keep-all;
text-overflow: ellipsis;
white-space: nowrap;
cursor: pointer;
}

.afficheIcon{
position: absolute;
top: 0;
left: 0;
line-height: 30px;
color: #2e4799;
width: 20px;
height: 100%;
//background: #f7f7f7;
background-color: #EB6100;
z-index: 20;
}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值