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


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 相关文章推荐
JS实多级联动下拉菜单类,简单实现省市区联动菜单!
May 03 Javascript
页面右下角弹出提示框示例代码js版
Aug 02 Javascript
JavaScript中的函数嵌套使用
Jun 04 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
Sep 29 Javascript
最原始的jQuery注册验证方式
Oct 11 Javascript
Vue波纹按钮组件制作
Apr 30 Javascript
Vue拖拽组件开发实例详解
May 11 Javascript
详解如何配置vue-cli3.0的vue.config.js
Aug 23 Javascript
Node.js原生api搭建web服务器的方法步骤
Feb 15 Javascript
jQuery操作cookie的示例代码
Jun 05 jQuery
原生js实现ajax请求和JSONP跨域请求操作示例
Mar 14 Javascript
React生命周期原理与用法踩坑笔记
Apr 28 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
上海永华YH-R296(华普R-96)12波段立体声收音机的分析和打理
2021/03/02 无线电
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
JavaScript 学习笔记(四)
2009/12/31 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
jQuery+css+html实现页面遮罩弹出框
2013/03/21 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
用JavaScript和jQuery实现瀑布流
2017/03/19 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
vue登录注册实例详解
2019/09/14 Javascript
[02:09]EHOME夺得首届辉夜杯冠军—现场颁奖仪式
2015/12/28 DOTA
[02:06]2018完美世界全国高校联赛秋季赛开始报名(附彩蛋)
2018/09/03 DOTA
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
python 读写txt文件 json文件的实现方法
2016/10/22 Python
Java与Python两大幸存者谁更胜一筹呢
2018/04/12 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
什么是测试驱动开发(TDD)
2012/02/15 面试题
银行见习期自我鉴定
2014/01/29 职场文书
总结表彰大会主持词
2014/03/26 职场文书
理发店策划方案
2014/06/05 职场文书
上班时间打瞌睡检讨书
2014/09/26 职场文书
考试没考好检讨书
2015/05/06 职场文书
民事撤诉申请书范本
2015/05/18 职场文书
收入证明怎么写
2015/06/12 职场文书
如何写好开幕词?
2019/06/24 职场文书
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android