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


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 相关文章推荐
浅析js中的浮点型运算问题
Jan 06 Javascript
JavaScript cookie的设置获取删除详解
Feb 11 Javascript
jquery JSON的解析方式示例介绍
Jul 27 Javascript
JavaScript中的对象和原型(一)
Aug 12 Javascript
聊一聊Vue.js过渡效果
Sep 07 Javascript
jquery表单验证插件validation使用方法详解
Jan 20 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
Mar 04 Javascript
JavaScript Canvas绘制圆形时钟效果
Aug 20 Javascript
详解在Angular项目中添加插件ng-bootstrap
Jul 04 Javascript
浅谈react 同构之样式直出
Nov 07 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
Jan 20 Javascript
react-router-dom 嵌套路由的实现
May 02 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
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
用js实现in_array的方法
2013/11/05 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
JavaScript函数的一些注意要点小结及js匿名函数
2015/11/10 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
js removeChild 方法深入理解
2016/08/16 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
vuex如何重置所有state(可定制)
2019/01/17 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
[01:31]完美与DOTA2历程
2014/07/31 DOTA
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
python中map()与zip()操作方法
2016/02/27 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
2019/08/23 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
春秋航空官方网站:Spring Airlines
2017/09/27 全球购物
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
高一英语教学反思
2014/01/22 职场文书
设计专业毕业生求职信
2014/06/25 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
机关副主任个人四风问题整改措施
2014/09/26 职场文书
毕业证代领委托书
2014/09/26 职场文书
自查自纠工作总结
2014/10/15 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
2014年教育工作总结
2014/11/26 职场文书
医生辞职信范文
2015/03/02 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android
MySQL数据库事务的四大特性
2022/04/20 MySQL