react表格无缝滚动_table表格无缝向上滚动

本文介绍了如何使用React实现一个表格的无缝向上滚动效果。通过CSS设置定位和隐藏溢出内容,JavaScript动态更新表格内容并设置定时器实现平滑滚动。示例中展示了销售收入、同比增长和环比增长等数据。
摘要由CSDN通过智能技术生成

Html

Css

Js

排名

地市

销售收入(万元)

同比(%)

环比(%)

销售计划(万元)

计划完成率(%)

排名

地市

销售收入(万元)

同比(%)

环比(%)

销售计划(万元)

计划完成率(%)

.tablebox {

height: 500px;

overflow: hidden;

position: relative;

width: 1000px;

margin: 100px auto;

background-color: rgba(6,26,103,1);

}

.tbl-header {

width: 100%;

position: absolute;

top: 0;

left: 0;

z-index: 999;

}

.tbl-body {

width: 100%;

position: absolute;

top: 0;

left: 0;

}

.tablebox table {

width: 100%;

}

.tablebox table th,

.tablebox table td {

font-size: 24px;

color: #7ca6f4;

line-height: 45px;

text-align: center;

}

.tablebox table tr th {

background-color: #1f1f9c;

cursor: pointer;

}

.tablebox table tr td {

background-color: transparent;

}

.tbl-body tr:nth-child(even) td,.tbl-body1 tr:nth-child(even) td {

background-color: rgba(31, 31, 156, .5);

}

.tablebox table tr td span,

.tablebox table tr td span {

font-size: 24px;

}

var MyMarhq = '';

clearInterval(MyMarhq);

$('.tbl-body tbody').empty();

$('.tbl-header tbody').empty();

var str = '';

var Items = [{"Ranking":"1","City":"保定","SaleIncome":"2506734.43","SaleRough":"296071.96","SalePlan":"7200000","PlanFinish":"34.82","TonOilincome":"264.15","OilTransform":"29.62","An":"53.00","Mom":"-13.00"},

{"Ranking":"2","City":"沧州","SaleIncome":"1425935.58","SaleRough":"93717.83","SalePlan":"3200000","PlanFinish":"44.56","TonOilincome":"366.59","OilTransform":"11.23","An":"65.00","Mom":"43.00"},

{"Ranking":"3","City":"秦皇岛","SaleIncome":"1372207.38","SaleRough":"241071.82","SalePlan":"3000000","PlanFinish":"45.74","TonOilincome":"342.32","OilTransform":"6.61","An":"34.00","Mom":"7.00"},

{"Ranking":"4","City":"衡水","SaleIncome":"972451.15","SaleRough":"87638.60","SalePlan":"2700000","PlanFinish":"36.02","TonOilincome":"246.03","OilTransform":"11.56","An":"15.00","Mom":"-18.00"},

{"Ranking":"5","City":"石家庄","SaleIncome":"939010.52","SaleRough":"140217.37","SalePlan":"7200000","PlanFinish":"13.04","TonOilincome":"139.44","OilTransform":"19.23","An":"-57.00","Mom":"-48.00"},

{"Ranking":"6","City":"邢台","SaleIncome":"774274.70","SaleRough":"124693.90","SalePlan":"3700000","PlanFinish":"20.93","TonOilincome":"138.87","OilTransform":"9.44","An":"-20.00","Mom":"-44.00"},

{"Ranking":"7","City":"唐山","SaleIncome":"680456.79","SaleRough":"50542.14","SalePlan":"3600000","PlanFinish":"18.90","TonOilincome":"243.60","OilTransform":"16.95","An":"-29.00","Mom":"-49.00"},

{"Ranking":"8","City":"张家口","SaleIncome":"613319.87","SaleRough":"176075.96","SalePlan":"3000000","PlanFinish":"20.44","TonOilincome":"87.09","OilTransform":"7.97","An":"2.00","Mom":"-24.00"},

{"Ranking":"9","City":"中油华奥","SaleIncome":"596575.25","SaleRough":"387024.26","SalePlan":"11000000","PlanFinish":"5.42","TonOilincome":"93.58","OilTransform":"19.06","An":"35.00","Mom":"6.00"},

{"Ranking":"10","City":"承德","SaleIncome":"589048.12","SaleRough":"68966.73","SalePlan":"2200000","PlanFinish":"26.77","TonOilincome":"193.24","OilTransform":"11.29","An":"30.00","Mom":"-28.00"},

{"Ranking":"11","City":"廊坊","SaleIncome":"515448.14","SaleRough":"137934.72","SalePlan":"3500000","PlanFinish":"14.73","TonOilincome":"95.47","OilTransform":"8.80","An":"-48.00","Mom":"-3.00"},

{"Ranking":"12","City":"瑞州","SaleIncome":"399875.26","SaleRough":"85371.46","SalePlan":"2000000","PlanFinish":"19.99","TonOilincome":"114.42","OilTransform":"11.42","An":"128.00","Mom":"-30.00"},

{"Ranking":"13","City":"石家庄中油","SaleIncome":"90543.62","SaleRough":"20065.14","SalePlan":"430000","PlanFinish":"21.06","TonOilincome":"213.44","OilTransform":"20.45","An":"-24.00","Mom":"-17.00"},

{"Ranking":"14","City":"辛集中油","SaleIncome":"49255.52","SaleRough":"8743.12","SalePlan":"250000","PlanFinish":"19.70","TonOilincome":"202.67","OilTransform":"29.95","An":"19.00","Mom":"-6.00"},

{"Ranking":"15","City":"井陉中油","SaleIncome":"29682.60","SaleRough":"2175.66","SalePlan":"140000","PlanFinish":"21.20","TonOilincome":"730.20","OilTransform":"25.55","An":"-74.00","Mom":"-52.00"},

{"Ranking":"16","City":"保定中油","SaleIncome":"11887.73","SaleRough":"2944.97","SalePlan":"100000","PlanFinish":"11.89","TonOilincome":"118.12","OilTransform":"34.16","An":"-64.00","Mom":"-72.00"}]

$.each(Items,function (i, item) {

str = '

'+

''+item.Ranking+''+

''+item.City+''+

''+(+item.SaleIncome/10000).toFixed(2)+''+

''+(+item.An).toFixed(2)+''+

''+(+item.Mom).toFixed(2)+''+

''+(item.SalePlan/10000).toFixed(2)+''+

''+(+item.PlanFinish).toFixed(2)+''+

''

$('.tbl-body tbody').append(str);

$('.tbl-header tbody').append(str);

});

if(Items.length > 10){

$('.tbl-body tbody').html($('.tbl-body tbody').html()+$('.tbl-body tbody').html());

$('.tbl-body').css('top', '0');

var tblTop = 0;

var speedhq = 50; // 数值越大越慢

var outerHeight = $('.tbl-body tbody').find("tr").outerHeight();

function Marqueehq(){

if(tblTop <= -outerHeight*Items.length){

tblTop = 0;

} else {

tblTop -= 1;

}

$('.tbl-body').css('top', tblTop+'px');

}

MyMarhq = setInterval(Marqueehq,speedhq);

// 鼠标移上去取消事件

$(".tbl-header tbody").hover(function (){

clearInterval(MyMarhq);

},function (){

clearInterval(MyMarhq);

MyMarhq = setInterval(Marqueehq,speedhq);

})

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,实现一个无限循环的轮播器,不使用任何hook和轮播UI库,可以按照以下步骤进行: 1. 创建一个React组件,命名为Carousel。 2. 在组件的constructor中初始化state,包括图片数据、当前图片的索引、轮播定时器等。 ``` constructor(props) { super(props); this.state = { images: [ { id: 1, src: 'image1.jpg' }, { id: 2, src: 'image2.jpg' }, { id: 3, src: 'image3.jpg' }, { id: 4, src: 'image4.jpg' }, { id: 5, src: 'image5.jpg' }, ], currentIndex: 0, timer: null, }; } ``` 3. 在组件的componentDidMount生命周期方法中,启动轮播定时器。 ``` componentDidMount() { const timer = setInterval(() => { this.handleNext(); }, 3000); this.setState({ timer }); } ``` 4. 在组件的componentWillUnmount生命周期方法中,清除轮播定时器。 ``` componentWillUnmount() { clearInterval(this.state.timer); } ``` 5. 实现handleNext和handlePrev方法,分别用于切换到下一张和上一张图片。 ``` handleNext = () => { const { images, currentIndex } = this.state; const nextIndex = currentIndex === images.length - 1 ? 0 : currentIndex + 1; this.setState({ currentIndex: nextIndex }); } handlePrev = () => { const { images, currentIndex } = this.state; const prevIndex = currentIndex === 0 ? images.length - 1 : currentIndex - 1; this.setState({ currentIndex: prevIndex }); } ``` 6. 在render方法中,渲染轮播图片和切换按钮。 ``` render() { const { images, currentIndex } = this.state; const prevIndex = currentIndex === 0 ? images.length - 1 : currentIndex - 1; const nextIndex = currentIndex === images.length - 1 ? 0 : currentIndex + 1; return ( <div className="carousel"> <div className="carousel-images"> <img src={images[prevIndex].src} alt="prev" /> <img src={images[currentIndex].src} alt="current" /> <img src={images[nextIndex].src} alt="next" /> </div> <div className="carousel-buttons"> <button onClick={this.handlePrev}>Prev</button> <button onClick={this.handleNext}>Next</button> </div> </div> ); } ``` 7. 在CSS中设置轮播图片的样式,包括绝对定位、宽度、高度等。 ``` .carousel-images { position: relative; width: 100%; height: 400px; } .carousel-images img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; } .carousel-images img:nth-child(2) { z-index: 1; } .carousel-images img:first-child { z-index: 2; transform: translateX(-100%); } .carousel-images img:last-child { transform: translateX(100%); } ``` 这样就完成了一个简单的React无缝滚动轮播器的实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值