微信小程序实现简单跑马灯效果


Posted in Javascript onMay 26, 2020

跑马灯效果比较常见,一般做电商类的小程序,都会用到,所以代码君今天特地写一篇文章,来教一下大家,如何去实现跑马灯效果,下面是代码君实现的效果,可以先看一下!

微信小程序实现简单跑马灯效果

跑马灯效果的制作

制作方式很简单,先方上代码,后面会对代码详细讲解

一、wxml界面的实现

<!-- 跑马灯效果 -->
 <view class="example">
 <view class="marquee_box">
 <view class="marquee_text" style="{{orientation}}:{{marqueeDistance}}px;font-size: {{size}}px;">
  <image src="{{adUrl}}" class='ad-image' />{{text}}
 </view>
 </view>
 </view>

界面布局很简单,一个底部背景容器,加入一个广播图片和对应的跑马灯文字

二、wxss样式

.example {
 display: block;
 width: 100%;
 height: 70rpx;
 background-color: #f2f2f2;
 line-height: 70rpx;
}

.marquee_box {
 width: 100%;
 position: relative;
}

.marquee_text {
 white-space: nowrap;
 position: absolute;
 top: 0;
 display: flex;
 flex-direction: row;
}

.ad-image {
 width: 40rpx;
 height: 40rpx;
 margin-right: 10rpx;
 margin-top: 15rpx;
}

样式就这些,这里代码君要带着大家回顾一下以前教程里讲解的内容

1.文字居中css样式要如何设置?
只需要将属性height与line-height设置成一样高度即可

2.display属性

none:此元素不会被显示
block:两个元素自动换行
inline:两个元素靠在一起
inherit:继承父类
flex:多栏多列

三、xxx.js

Page({
 data: {
 text: '51淘甄?,一个可以省钱的购物平台',
 marqueePace: 1,//滚动速度
 marqueeDistance: 0,//初始滚动距离
 size: 14,
 orientation: 'left',//滚动方向
 interval: 20, // 时间间隔
 adUrl: '../../images/ic_home_msg.png',
 },
 onShow: function () {
 // 页面显示
 var that = this;
 var length = that.data.text.length * that.data.size;//文字长度
 var windowWidth = wx.getSystemInfoSync().windowWidth;// 屏幕宽度
 that.setData({
 length: length,
 windowWidth: windowWidth,
 });
 that.runMarquee();// 水平一行字滚动完了再按照原来的方向滚动
 },
 runMarquee: function () {
 var that = this;
 var interval = setInterval(function () {
 //文字一直移动到末端
 if (-that.data.marqueeDistance < that.data.length) {
 that.setData({
  marqueeDistance: that.data.marqueeDistance - that.data.marqueePace,
 });
 } else {
 clearInterval(interval);
 that.setData({
  marqueeDistance: that.data.windowWidth
 });
 that.runMarquee();
 }
 }, that.data.interval);
 }
})

js里面需要讲解的比较多

1.setInterval 计时器如何使用?

setInterval(function(){
console.log("interval")
},1000)

这个方法是微信小程序的api,直接使用即可,和正常的定时器一样,setInterval需要传入两个参数,一个是回调的方法,另一个是每隔多久执行一次,在此项目中,我们用的是字段参数interval,值设置为20

2.settimeout和setinterval()这两个都是腾讯提供的API,他们有什么区别吗?

  • settimeout隔一段时间执行函数且执行一次,场景是我们可能希望一个任务隔一段时间后再执行
  • etinterval()函数是每隔一段时间便执行,就是会一直循环执行,如果想停止的话可以使用clearinterval

3.跑马灯实现原理

  • 第一步:计算跑马灯文字长度
  • 第二步:每隔一段时间,移动一点距离,产生移动
  • 第三步:当移出屏幕,重置跑马灯的距离为屏幕宽度,然后就可以继续循环第一步操作了
  • 根据代码君说的这几步,读者可以去一一对照代码,方法函数runMarquee里面的代码逻辑就是执行以上三步,在此代码君就不过多解释了

总结

以上就是跑马灯效果的整个流程,原理也不是很难,一个计时器,轻松就可以实现。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
网页里控制图片大小的相关代码
Jun 13 Javascript
JavaScript 继承详解(四)
Jul 13 Javascript
javascript中注册和移除事件的4种方式
Mar 20 Javascript
Javascript call和apply区别及使用方法
Nov 14 Javascript
jQuery移动端图片上传组件
Jun 12 Javascript
关于JS 预解释的相关理解
Jun 28 Javascript
前端分页功能的实现以及原理(jQuery)
Jan 22 Javascript
JS数组去重(4种方法)
Mar 27 Javascript
详解使用mpvue开发github小程序总结
Jul 25 Javascript
js对象简介与基本用法示例
Mar 13 Javascript
vue+element UI实现树形表格
Dec 29 Vue.js
如何利用React实现图片识别App
Feb 18 Javascript
详解如何快速配置webpack多入口脚手架
Dec 28 #Javascript
详解puppeteer使用代理
Dec 27 #Javascript
Angular(5.2-&gt;6.1)升级小结
Dec 27 #Javascript
详解angular2 控制视图的封装模式
Dec 27 #Javascript
JavaScript原型对象原理与应用分析
Dec 27 #Javascript
angular6 填坑之sdk的方法
Dec 27 #Javascript
react+ant design实现Table的增、删、改的示例代码
Dec 27 #Javascript
You might like
php分页函数完整实例代码
2014/09/22 PHP
PHP中使用GD库创建圆形饼图的例子
2014/11/19 PHP
CentOS下PHP安装Oracle扩展
2015/02/15 PHP
CodeIgniter删除和设置Cookie的方法
2015/04/07 PHP
php中mkdir()函数的权限问题分析
2016/09/24 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
JQ实现新浪游戏首页幻灯片
2015/07/29 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
微信小程序 Template详解及简单实例
2017/01/05 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
快速搭建React的环境步骤详解
2017/11/06 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
Vue看了就会的8个小技巧
2021/01/21 Vue.js
Python正则表达式介绍
2012/08/06 Python
Python实现保证只能运行一个脚本实例
2015/06/24 Python
python类中super()和__init__()的区别
2016/10/18 Python
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
简单实现python聊天程序
2018/04/01 Python
Python爬虫:将headers请求头字符串转为字典的方法
2019/08/21 Python
Python类型转换的魔术方法详解
2020/12/23 Python
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
墨西哥购物网站:Elektra
2020/01/21 全球购物
市场营销个人求职信范文
2014/02/02 职场文书
篝火晚会主持词
2014/03/25 职场文书
如何撰写一封出色的求职信
2014/04/27 职场文书
2015年前台文员工作总结
2015/05/18 职场文书
教你用Python matplotlib库制作简单的动画
2021/06/11 Python
用php如何解决大文件分片上传问题
2021/07/07 PHP
在python中读取和写入CSV文件详情
2022/06/28 Python