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


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 相关文章推荐
用javascript实现在小方框中浏览大图的代码
Aug 14 Javascript
Javascript call和apply区别及使用方法
Nov 14 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
Apr 17 Javascript
Node.js的包详细介绍
Jan 14 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
Dec 25 Javascript
详解vue.js移动端导航navigationbar的封装
Jul 05 Javascript
jquery层次选择器的介绍
Jan 18 jQuery
微信小程序云开发之使用云数据库
May 17 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
Nov 12 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
Feb 16 Javascript
Vue的全局过滤器和私有过滤器的实现
Apr 20 Javascript
vue-router 2.0 跳转之router.push()用法说明
Aug 12 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实现mysql同步的实现方法
2009/10/21 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
jQuery 选择器理解
2010/03/16 Javascript
几个有趣的Javascript Hack
2010/07/24 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
2011/06/20 Javascript
js实现延时加载Flash的方法
2015/11/26 Javascript
浅析js绑定事件的常用方法
2016/05/15 Javascript
原生js封装二级城市下拉列表的实现代码
2016/06/16 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
小程序根据手机机型设置自定义底部导航距离
2019/06/04 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
对Python实现简单的API接口实例讲解
2018/12/10 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
python 用 xlwings 库 生成图表的操作方法
2019/12/22 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
2020/02/12 Python
从python读取sql的实例方法
2020/07/21 Python
使用CSS Grid布局实现网格的流动
2014/12/30 HTML / CSS
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
一份Java笔试题
2012/02/21 面试题
行政专员工作职责
2013/12/22 职场文书
现场施工员岗位职责
2014/03/10 职场文书
银行求职信范文
2014/05/26 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
离婚协议书的范本
2015/01/27 职场文书
关于学习的决心书
2015/02/05 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
实验室安全管理制度
2015/08/05 职场文书
演讲稿:​快乐,从不抱怨开始!
2019/04/02 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书