亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > HTML5 > 正文

HTML5實現直播間評論滾動效果的代碼

2024-09-05 07:23:31
字體:
來源:轉載
供稿:網友

直播間評論滾動效果,下劃查看歷史消息并停止滾動,如有新消息會出現新消息提醒,點擊滾動到底部。

2.具體代碼

<template>    <div class="comment">    	<div class="comment-wrap" ref="wrapper">	    <ul class="list" ref="list">    	        <li v-for="item in list" :key="item.id">    		    <span class="name">{{item.name}}:</span>    		    <span class="content">{{item.content}}</span>    	        </li>            </ul>    	</div>    	<div class="rest-nums" v-show="restComment" @click="scrollBottom">{{restComment}}條新消息</div>    </div></template>
<script>import smoothscroll from 'smoothscroll-polyfill';import { debounce, isScrollBottom } from '../utils/utils';smoothscroll.polyfill(); // 移動端scrollTo behavior: "smooth"動畫失效的polyfillexport default {  data() {    return {        list: [],        restComment: 0,        restNums: 0,        wrapperDom: null,        listDom: null,        wrapperHeight: 0    };  },  mounted() {     this.initDom();     // ajax...     const data = new Array(20).fill('');     this.queue(data);     setTimeout(() => {         const list = new Array(10).fill('');	 this.queue(list);      }, 30000);  },  methods: {      initDom() {          this.wrapperDom = this.$refs.wrapper;          this.listDom = this.$refs.list;          this.wrapperHeight = this.wrapperDom.offsetHeight;      },      addTimeOut(opt) {    	   return new Promise((resolve, reject) => {    		setTimeout(() => {    			this.addComment(opt);    			resolve()    		}, 500);    	   });       },	// 隊列添加消息	async queue(data) {    	    for (let i = 0; i < data.length; i++) {    		const opt = {    			name: i + "-用戶名",    			content: i + "-評論內容",    			id: Date.now()    		}    		await this.addTimeOut(opt);    	    }	},        addScroll() {            debounce(this.listScroll, 200);            this.isBindScrolled = true;        },        listScroll() {            const ele = this.wrapperDom;            const isBottom = isScrollBottom(ele, ele.clientHeight);            if (isBottom) {		this.restNums = 0;		this.restComment = 0;            }        },	// 添加評論 如果超過150條就將前50條刪除        addComment(data) {            if (this.list.length >= 150) {                this.list.splice(0, 50);            }	    this.list.push(data);	    this.$nextTick(() => {		this.renderComment();	    });	},	// 渲染評論        renderComment() {            const listHight = this.listDom.offsetHeight;            const diff = listHight - this.wrapperHeight; // 列表高度與容器高度差值	    const top = this.wrapperDom.scrollTop; // 列表滾動高度            if (diff - top < 50) {                 if (diff > 0) {                    if (this.isBindScrolled) {                        this.isBindScrolled = false;                        this.wrapperDom.removeEventListener("scroll", this.addScroll);                    }                    this.wrapperDom.scrollTo({                        top: diff + 10,                        left: 0,                        behavior: "smooth"        	    });                    this.restNums = 0;                }            } else {                ++this.restNums;                if (!this.isBindScrolled) {                    this.isBindScrolled = true;                    this.wrapperDom.addEventListener("scroll", this.addScroll);                }            }	    this.restComment = this.restNums >= 99 ? "99+" : this.restNums;    	},	// 滾動到底部        scrollBottom() {	    this.restNums = 0; // 清除剩余消息	    this.restComment = this.restNums;            this.wrapperDom.scrollTo({                top: this.listDom.offsetHeight,                left: 0,                behavior: "smooth"            });        }    }};</script>
<style scoped>    *{    	padding: 0;    	margin: 0;    }    .comment{    	width: 70%;    	height: 350px;    	position: relative;    	margin: 100px 0 0 20px;    }    .comment-wrap{    	height: 350px;    	overflow-y: scroll;    	-webkit-overflow-scrolling:touch;    }    .comment-wrap li{    	text-align: left;    	line-height: 30px;    	padding-left: 10px;    	background: rgba(0, 0, 0, 0.3);    	margin-top: 5px;    	border-radius: 15px;    	color: #fff;    }    .rest-nums{    	position: absolute;    	height: 24px;    	line-height: 24px;    	color: #f00;    	border-radius: 15px;    	padding: 0 15px;    	bottom: 10px;    	background: #fff;    	font-size: 14px;    	left: 10px;    }</style>

用的的兩個工具函數

/** * @desc 函數防抖 * @param {需要防抖的函數} func * @param {延遲時間} wait */export function debounce(func, wait = 500) {    // 緩存一個定時器id    let timer = 0;    // 這里返回的函數是每次用戶實際調用的防抖函數    // 如果已經設定過定時器了就清空上一次的定時器    // 開始一個新的定時器,延遲執行用戶傳入的方法    return function (...args) {    	if (timer) clearTimeout(timer)    	timer = setTimeout(() => {    		func.apply(this, args)    	}, wait)    }}/** * @desc 是否滾到到容器底部 * @param {滾動容器} ele  * @param {容器高度} wrapHeight  */export function isScrollBottom(ele, wrapHeight, threshold = 30) {    const h1 = ele.scrollHeight - ele.scrollTop;    const h2 = wrapHeight + threshold;    const isBottom = h1 <= h2;    return isBottom;}

總結

到此這篇關于HTML5實現直播間評論滾動效果的代碼的文章就介紹到這了,更多相關H5直播間評論滾動內容請搜索武林網以前的文章或繼續瀏覽下面的相關文章,希望大家以后多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲久久久久久久久久| 国产精品老牛影院在线观看| 成人免费淫片aa视频免费| 精品久久久久久中文字幕大豆网| 亚洲香蕉成人av网站在线观看| 久久伊人91精品综合网站| 欧美大学生性色视频| 国产欧美精品一区二区三区-老狼| 国产一区二区三区在线免费观看| 97**国产露脸精品国产| 国产视频精品久久久| 国产精品入口免费视频一| 日韩在线中文视频| 国产精品久久电影观看| 97久久精品人人澡人人爽缅北| 人人爽久久涩噜噜噜网站| 欧美丝袜第一区| 亚洲精品福利在线观看| 狠狠躁夜夜躁人人躁婷婷91| 久久精品成人欧美大片| 亚洲成人精品久久久| 91免费精品视频| 91av免费观看91av精品在线| 亚洲韩国欧洲国产日产av| 久久久久久亚洲精品| 国产乱人伦真实精品视频| 国产视频丨精品|在线观看| 一个人看的www久久| 国产精品视频yy9099| 97在线视频免费| 最近2019年中文视频免费在线观看| 57pao国产成人免费| 欧美激情一区二区三级高清视频| 国产精品第8页| 91av免费观看91av精品在线| 国产精品自产拍高潮在线观看| 国产国语videosex另类| 欧美理论片在线观看| 日韩中文在线不卡| 欧美午夜精品久久久久久久| 亚洲一区第一页| 亚洲黄色片网站| 97久久精品国产| 98精品国产高清在线xxxx天堂| 成人写真福利网| 国产91精品最新在线播放| 理论片在线不卡免费观看| 日本久久久久久久久久久| 亚洲激情电影中文字幕| 亚洲天堂色网站| 91av视频在线| 在线播放日韩专区| 欧美高清在线播放| 国产精品观看在线亚洲人成网| 国产日本欧美在线观看| 国产精品久久久久不卡| 国产精品18久久久久久麻辣| 欧美大片va欧美在线播放| 日韩少妇与小伙激情| 91亚洲一区精品| 91国语精品自产拍在线观看性色| 91av在线播放| 日韩精品欧美国产精品忘忧草| 久久成人人人人精品欧| 亚洲自拍偷拍网址| 亚洲日韩中文字幕| 日韩视频免费看| 国产精品久久久久久久久久小说| 日本精品久久久| 亚洲欧美一区二区三区在线| 欧美日韩成人精品| 国产精品欧美日韩久久| 久久久久久久久网站| 欧美国产日韩在线| 一区二区中文字幕| 97av在线视频免费播放| 久久精品国产综合| 精品国内自产拍在线观看| 欧美成人亚洲成人| 亚洲国产成人爱av在线播放| y97精品国产97久久久久久| 日韩亚洲一区二区| 成人av在线亚洲| 亚洲精品欧美日韩专区| 久久国产精品久久久久久| 亚洲а∨天堂久久精品9966| 日韩av综合网站| 福利二区91精品bt7086| 精品日本高清在线播放| 91精品视频播放| 精品久久久av| 日韩在线视频观看正片免费网站| 成人精品一区二区三区电影黑人| 欧美xxxx14xxxxx性爽| 欧美一级黄色网| 热99精品只有里视频精品| 午夜精品久久久99热福利| 日本高清不卡的在线| 精品亚洲一区二区| 日韩在线免费av| 91综合免费在线| 主播福利视频一区| 精品国产福利视频| 国产精品成av人在线视午夜片| 成人国产在线激情| 国产精品盗摄久久久| 久久香蕉国产线看观看av| 成人久久久久爱| 欧美性生交xxxxxdddd| 日韩经典中文字幕在线观看| 2018日韩中文字幕| 欧美最猛性xxxxx亚洲精品| 欧美日韩成人在线观看| 国产精品精品久久久久久| 国产精品jizz在线观看麻豆| 九九热这里只有精品免费看| 成人av在线网址| 亚洲国产成人爱av在线播放| 亚洲精品国产品国语在线| 国产精品69久久久久| 日韩一区二区欧美| 欧美性一区二区三区| 日本一区二区三区在线播放| 国产精品海角社区在线观看| 亚洲国产日韩精品在线| 久久精品在线视频| 久久久久久久久久久人体| 国产网站欧美日韩免费精品在线观看| 中文字幕在线精品| 在线观看中文字幕亚洲| 欧美精品在线免费观看| 国产999精品久久久影片官网| 亚洲精品电影在线| 中文日韩在线视频| 日韩国产欧美精品一区二区三区| 日韩av观看网址| 欧美大片在线影院| 中文字幕在线看视频国产欧美在线看完整| 欧美日韩另类字幕中文| 日韩av综合中文字幕| 欧美在线视频免费播放| 亚洲白虎美女被爆操| 久久精品国产亚洲一区二区| 欧美大片在线看| www.xxxx精品| 久久久av电影| 在线日韩av观看| 国产精品三级美女白浆呻吟| 久久99视频免费| 久久男人av资源网站| 久久人91精品久久久久久不卡| 亚洲第一视频网站| 欧美在线免费看| 97在线看福利| 91麻豆桃色免费看| 91精品久久久久久久久久久| 热久久99这里有精品| 国产日韩在线亚洲字幕中文| 高清日韩电视剧大全免费播放在线观看| 久久精品成人一区二区三区| 久久精视频免费在线久久完整在线看| 最近2019好看的中文字幕免费| 国产精品久久久久久久久久尿| 欧美一级bbbbb性bbbb喷潮片|