vue及原生html实现列表无缝上下滚动,以及单行滚动
2023-06-13 09:14:09 时间
代码已上传至github github代码地址:https://github.com/Miofly/mio.git
vue版本
npm i vue-seamless-scroll -S
<template>
<vue-seamless-scroll :data="listData" :class-option="optionHover" class="seamless-warp ">
<ul class="item">
<li v-for="item in listData">
<span class="title" v-text="item.title"></span>
<span class="date" v-text="item.date"></span>
</li>
</ul>
</vue-seamless-scroll>
</template>
<script>
import vueSeamlessScroll from 'vue-seamless-scroll'
export default {
components: {
vueSeamlessScroll
},
computed: {
optionHover () {
return {
hoverStop: true, // 鼠标悬停停止滚动
direction: [0, 1][0], // 向下/上滚动
step: 0.5, // 滚动速度
// singleHeight: 20, // 滚动单行
// waitTime:2500 单行停顿时间
}
}
},
data() {
return {
listData: [{
'title': '无缝滚动第一行无缝滚动第一行',
'date': '2017-12-16'
}, {
'title': '无缝滚动第二行无缝滚动第二行',
'date': '2017-12-16'
}, {
'title': '无缝滚动第三行无缝滚动第三行',
'date': '2017-12-16'
}, {
'title': '无缝滚动第四行无缝滚动第四行',
'date': '2017-12-16'
}, {
'title': '无缝滚动第五行无缝滚动第五行',
'date': '2017-12-16'
}, {
'title': '无缝滚动第六行无缝滚动第六行',
'date': '2017-12-16'
}, {
'title': '无缝滚动第七行无缝滚动第七行',
'date': '2017-12-16'
}, {
'title': '无缝滚动第八行无缝滚动第八行',
'date': '2017-12-16'
}, {
'title': '无缝滚动第九行无缝滚动第九行',
'date': '2017-12-16'
}]
}
}
}
</script>
<style lang="scss" scoped>
.seamless-warp {
height: 229rpx;
overflow: hidden;
}
</style>
html版本
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">
<meta http-equiv=X-UA-Compatible content="ie=edge">
<meta name=apple-mobile-web-app-capable content=yes>
<meta name=apple-touch-fullscreen content=yes>
<meta name=apple-mobile-web-app-status-bar-style content=black-translucent>
<meta name=format-detection content="telephone=no">
<meta name=format-detection content="email=no">
<meta name=renderer content=webkit>
<meta name=screen-orientation content=portrait>
<meta name=x5-orientation content=portrait>
<meta name=x5-fullscreen content=true>
<meta name=full-screen content=yes>
<meta name=keywords content="">
<meta name=description content="">
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<title>Title</title>
<link rel="stylesheet" type="text/css" href="http://192.168.3.193:8888/mio/src/html/index.css"/>
<script type="text/javascript" src="http://192.168.3.193:8888/mio/src/html/js/common/vue.js"></script>
<script type="text/javascript" src="http://192.168.3.193:8888/mio/src/html/js/common/axios.js"></script>
<script type="text/javascript" src="http://192.168.3.193:8888/mio/src/html/js/common/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="http://192.168.3.193:8888/mio/src/html/js/common/htmlToolUtils.js"></script>
<script>
(function (doc, win) {
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function () {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
if (clientWidth >= 375) {
docEl.style.fontSize = '100px';
} else {
docEl.style.fontSize = 100 * (clientWidth / 375) + 'px';
}
var html = document.getElementsByTagName('html')[0];
var settedFs = settingFs = parseInt(100 * (clientWidth / 375));
var whileCount = 0;
while (true) {
var realFs = parseInt(window.getComputedStyle(html).fontSize);
var delta = realFs - settedFs;
//不相等
if (Math.abs(delta) >= 1) {
if (delta > 0)
settingFs--;
else
settingFs++;
html.setAttribute('style', 'font-size:' + settingFs + 'px!important');
} else
break;
if (whileCount++ > 100)
break
}
};
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);
</script>
<script type="text/javascript" src="http://192.168.3.193:8888/mio/src/html/js/common/vue-scroll.js"></script>
</head>
<body style="font-size: 0.05rem">
<div id="app">
<vue-seamless-scroll :data="listData" :class-option="optionHover" class="notClick of-hide margin-top" style="height: 1rem">
<ul>
<li v-for="item in listData" style="font-size: 0.1rem">
<span style="font-size: 0.15rem" v-text="item.title"></span>
<span style="font-size: 0.15rem" v-text="item.date"></span>
</li>
</ul>
</vue-seamless-scroll>
</div>
<script>
var app = new Vue({
el: '#app',
components: {
vueSeamlessScroll
},
computed: {
optionHover () {
return {
hoverStop: true, // 鼠标悬停停止滚动
direction: [0, 1][0], // 向下/上滚动
step: 0.4, // 滚动速度
// singleHeight: 20, // 滚动单行
// waitTime:2500 单行停顿时间
}
}
},
data() {
return {
listData: [{
'title': '无缝滚动第一行无缝滚动第一行',
'date': '2017-12-16'
}, {
'title': '无缝滚动第二行无缝滚动第二行',
'date': '2017-12-16'
}, {
'title': '无缝滚动第三行无缝滚动第三行',
'date': '2017-12-16'
}, {
'title': '无缝滚动第四行无缝滚动第四行',
'date': '2017-12-16'
}, {
'title': '无缝滚动第五行无缝滚动第五行',
'date': '2017-12-16'
}, {
'title': '无缝滚动第六行无缝滚动第六行',
'date': '2017-12-16'
}, {
'title': '无缝滚动第七行无缝滚动第七行',
'date': '2017-12-16'
}, {
'title': '无缝滚动第八行无缝滚动第八行',
'date': '2017-12-16'
}, {
'title': '无缝滚动第九行无缝滚动第九行',
'date': '2017-12-16'
}]
}
}
})
</script>
</body>
</html>
相关文章
- Java项目毕业设计:基于springboot+vue的电影视频网站系统「建议收藏」
- 尚硅谷Vue课程P30-P35笔记(后台回复 vue 可获得更多笔记!)
- ruoyi-vue版本框架(一)如何下载源码,并且在本地启动
- vue入门教程(一)「建议收藏」
- Vue框架控制台Console提示You are running Vue in development mode
- Vue(3)webstorm代码格式规范设置与vue模板配置
- vue.js 渲染函数_Vue.js的不可渲染且可扩展的RTF编辑器[通俗易懂]
- vue cli 3 升级到 vue cli 4 方法步骤及升级点总结「建议收藏」
- VUE组件封装_vue使用组件
- VUE组件封装_vue组件内部双向绑定
- vue.js和react.js_vue和jquery
- Vue生成二维码_vue通过二维码分享
- Vue Demi是如何让你的库同时支持Vue2和Vue3的
- Vue等前端框架如何与小程序结合
- Vue报错避免冗余导航解决方法
- Vue提示框组件vue-notification使用实例演示
- IDEA安装Vue插件后为什么创建.vue文件不显示vue图标
- ruoyi-vue版本(十二)用户登陆的逻辑,在线用户的查询与强退出 思路
- linux下快速部署Vue项目(linux部署vue)
- Vue 实现前后端分离,安全连接 MSSQL 数据库(vue 连接mssql)
- Vue技术实现访问远程Redis的精彩之旅(vue访问远端redis)
- Vue应用中部署Redis(vue中使用redis)
- Oracle Vue网站助力网站创新,让你的网站飞起来(oracle vue网站)