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


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 相关文章推荐
Jquery实现Div上下移动示例
Apr 23 Javascript
Google Maps API地图应用示例分享
Oct 23 Javascript
jquery获取checkbox的值并post提交
Jan 14 Javascript
如何用javascript计算文本框还能输入多少个字符
Jul 29 Javascript
jquery插件uploadify实现带进度条的文件批量上传
Dec 13 Javascript
javascript检查某个元素在数组中的索引值
Mar 30 Javascript
详解基于webpack和vue.js搭建开发环境
Apr 05 Javascript
WebSocket实现简单客服聊天系统
May 12 Javascript
深究AngularJS中ng-drag、ng-drop的用法
Jun 12 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
Dec 12 Javascript
JS画布动态实现黑客帝国背景效果
Nov 08 Javascript
小程序实现密码输入框
Nov 16 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
多文件上载系统完整版
2006/10/09 PHP
Php+SqlServer实现分页显示
2006/10/09 PHP
php md5下16位和32位的实现代码
2008/04/09 PHP
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
php 传值赋值与引用赋值的区别
2010/12/29 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
php判断表是否存在的方法
2015/06/18 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
php use和include区别总结
2019/10/13 PHP
Prototype源码浅析 Enumerable部分(二)
2012/01/18 Javascript
js对象转json数组的简单实现案例
2014/02/28 Javascript
JavaScript常用验证函数实例汇总
2014/11/25 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
2015/06/10 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
babel基本使用详解
2017/02/17 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
js实现计时器秒表功能
2019/12/16 Javascript
Python网络编程详解
2017/10/31 Python
python3.5基于TCP实现文件传输
2020/03/20 Python
python利用ffmpeg进行录制屏幕的方法
2019/01/10 Python
Python:合并两个numpy矩阵的实现
2019/12/02 Python
Python super()函数使用及多重继承
2020/05/06 Python
python pip如何手动安装二进制包
2020/09/30 Python
HTML5标签大全
2016/11/23 HTML / CSS
俄罗斯香水和化妆品购物网站:Л’Этуаль
2018/05/10 全球购物
美国糖果店:Sugarfina
2019/02/21 全球购物
简历中求职的个人自我评价
2013/12/03 职场文书
甲方资料员岗位职责
2013/12/13 职场文书
大三学习计划书范文
2014/05/02 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
php实现自动生成验证码的实例讲解
2021/11/17 PHP
MySQL生成千万测试数据以及遇到的问题
2022/08/05 MySQL