原生小程序封装跑马灯效果


Posted in Javascript onOctober 21, 2020

本文实例为大家分享了小程序封装跑马灯效果的具体代码,供大家参考,具体内容如下

原生小程序封装跑马灯效果

Marquee.wxml

<view class="marquee_container " style="background:{{broadcast_arr.back_color}};font-size:32rpx;">
 <view class='marquee_text' style='--marqueeWidth--:{{-broadcast_arr.width_mal}}px;--speed--:{{broadcast_arr.time}}s;width:{{broadcast_arr.width_mal}}px;'>
 <block wx:for="{{data}}" wx:key='index'>
 <view style='color:{{broadcast_arr.text_color}};margin-left:{{index!=0?item.starspos*2:0}}rpx;'>
 {{item.img}}
 </view>
 </block>
 </view>
</view>

Marquee.wxss

@keyframes around {
 from {
 margin-left: 100%;
 }

 to {
 margin-left: var(--marqueeWidth--);
 }
}

.marquee_container {
 /* background-color: #0099FF; */
 padding: 12rpx 0;
 position: relative;
 width: 100%;
 /* height: 50rpx; */

}

.marquee_text {
 display: flex;
 white-space: nowrap;
 animation-name: around;
 animation-duration: var(--speed--);
 animation-iteration-count: infinite;
 animation-timing-function: linear;
 line-height: 50rpx;
}

.marquee_tit {
 height: 50rpx;
 line-height: 50rpx;
 position: absolute;
 padding-left: 22rpx;
}

Marquee.js

Component({
 options: {
 multipleSlots: true // 在组件定义时的选项中启用多slot支持
 },
 properties: {
 title: {   // 属性名
  type: String,  // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型)
  value: '标题' , // 属性初始值(可选),如果未指定则会根据类型选择一个
  observer: function (newVal) {
  this.setData({
   'data[0].img': newVal
  })
  this.run()
  }
 }
 },
 data: {
 data: [
  {
  img: "",
  }
 ],
 broadcast_arr: {
  speed: 5, //滚动速度,每秒5个字
  font_size: "16", //字体大小(px)
  text_color: "#de8c17", //字体颜色
  back_color: "#fffbe8", //背景色
 }
 },

 /**
 * 生命周期函数--监听页面加载
 */
 methods: {
 run() {
  let ititdata = this.data.data,
  assist = this.data.broadcast_arr,
  this_width = 0,
  spacing = 0,
  speed = (this.data.broadcast_arr.speed * this.data.broadcast_arr.font_size); //m每秒行走的距离

  for (let i in ititdata) {
  ititdata[i].starspos = wx.getSystemInfoSync().windowWidth; //以取屏幕宽度为间距
  this_width += (ititdata[i].img.length-12) * this.data.broadcast_arr.font_size;
  if (i != ititdata.length - 1) {
   spacing += ititdata[i].starspos
  }
  }
  let total_length = this_width + spacing;//总长
  assist.time = total_length / speed; /**滚动时间*/
  assist.width_mal = total_length;
  this.setData({
  broadcast_arr: assist,
  data: ititdata
  })
 }
 }
})

index引入—index.json

{
 "usingComponents": {
 "marquee":"/components/Marquee/Marquee"
 },

index.wxml

<!--跑马灯 Linyufan.com-->
 <marquee id='marquee' title='江龙:每日惠自提店铺特价啦~店铺特价啦~店铺特价啦~'></marquee>
<!--跑马灯-->

index.js

onReady:function(){
 this.marquee=this.selectComponent('#marquee')
 this.marquee.run()
 },

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

Javascript 相关文章推荐
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
Mar 08 Javascript
基于jQuery的试卷自动排版系统实现代码
Jan 06 Javascript
JavaScript 学习笔记之数据类型
Jan 14 Javascript
jQuery的文档处理程序详解
May 10 Javascript
javascript iframe跨域详解
Oct 26 Javascript
jQuery纵向导航菜单效果实现方法
Dec 19 Javascript
js仿搜狐视频记录片列表展示效果
May 30 Javascript
深入浅析var,let,const的异同点
Aug 07 Javascript
微信小程序签到功能
Oct 31 Javascript
Node.js assert断言原理与用法分析
Jan 04 Javascript
vue-cli创建的项目中的gitHooks原理解析
Feb 14 Javascript
javascript-hashchange事件和历史状态管理实例分析
Apr 18 Javascript
uniapp实现横向滚动选择日期
Oct 21 #Javascript
实现vuex原理的示例
Oct 21 #Javascript
详解JavaScript类型判断的四种方法
Oct 21 #Javascript
node.js如何根据URL返回指定的图片详解
Oct 21 #Javascript
vue中template的三种写法示例
Oct 21 #Javascript
Vue使用v-viewer实现图片预览
Oct 21 #Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
Oct 20 #Javascript
You might like
一个简单的PHP入门源程序
2006/10/09 PHP
分享一下贝贝成长进度的php代码
2012/09/14 PHP
php实现的双向队列类实例
2014/09/24 PHP
PHP判断数据库中的记录是否存在的方法
2014/11/14 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
PHP代码加密的方法总结
2020/03/13 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
Jquery each方法跳出循环,并获取返回值(实例讲解)
2013/12/12 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
数组Array的排序sort方法
2017/02/17 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
2017/07/24 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
2017/09/03 jQuery
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
Python docx库用法示例分析
2019/02/16 Python
Django 路由控制的实现
2019/07/17 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
Python计算信息熵实例
2020/06/18 Python
Java Unsafe类实现原理及测试代码
2020/09/15 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
地球上最先进的胡子和头发修剪器:Bevel
2018/01/23 全球购物
自动化专业本科毕业生求职信
2013/10/20 职场文书
护理助产毕业生的求职信
2014/03/02 职场文书
乡镇团委工作总结2015
2015/05/26 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
申论不会写怎么办?教您掌握这6点思维和原则
2019/07/17 职场文书
实现一个简单得数据响应系统
2021/11/11 Javascript
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL