微信小程序组件 marquee实例详解


Posted in Javascript onJune 23, 2017

微信小程序组件 marquee实例详解

1. marquee标签

html是有marquee标签的,可以实现跑马灯效果,但小程序没有,所以要实现。这里考虑使用css3的animation实现。

html的marquee是这样使用的。

<marquee direction="left" behavior="scroll" scrollamount="1" scrolldelay="0" loop="-1" width="200" height="50" bgcolor="#0099FF" hspace="10" vspace="10">
   hello world
</marquee>

2. wxml

<view class="marquee_container" style="--marqueeWidth--:{{-marquee.width}}em">
  <view class="marquee_text">{{marquee.text}}</view>
</view>

传入wxml的是个json对象

marquee:{
  width:12,
  text:'hello world'
}

而那个奇怪的--marqueeWidth是给@keyframes传的变量。内联设置变量,css文件中也可以获取到该变量。

3. wxss

@keyframes around {
  from {
   margin-left: 100%;
  }
  to {
   margin-left: var(--marqueeWidth--);// var接受传入的变量
  }
 }

.marquee_container{
 background-color: #0099FF;
 height: 1.2em;
 position: relative;
 width: 100%;
}
.marquee_container:hover{
 animation-play-state: paused; // 不起作用
}
.marquee_text{
 display: inline-block;
 white-space: nowrap;
 animation-name: around;
 animation-duration: 5s;
 animation-iteration-count: infinite;
 animation-timing-function:linear;
}

4. js

export default {
 getWidth:(str)=>{
  return [].reduce.call(str, (pre, cur, index, arr) => {
   if (str.charCodeAt(index) > 255) {// charCode大于255是汉字
    pre++;
   } else {
    pre += 0.5;
   }
   return pre;
  }, 0);
 },
 getDuration:(str)=>{// 保留,根据文字长度设置时间
  return this.getWidth()/10;
 }
}

以上是组件的封装。

5. 使用

// wxml
<include src="../component/marquee/marquee.wxml" />
// wxss
@import "../component/marquee/marquee.wxss";
// js
import marquee from '../component/marquee/marquee.js';

var options = Object.assign(marquee, {
 data: {
  motto: 'Hello World',
  userInfo: {},
  marquee: { text: '你好,中国!hello,world!' }
 },
 onLoad: function () {
  // ...

  const str = this.data.marquee.text;
  const width = this.getWidth(str);
  console.log('width',width);
  this.setData({ [`${'marquee'}.width`]: width });
 }
});
Page(options);

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
javascript获得服务器端控件的ID的实现代码
Dec 28 Javascript
jQuery实现tab标签自动切换的方法
Feb 28 Javascript
解决WordPress使用CDN后博文无法评论的错误
Dec 15 Javascript
JavaScript实现刷新不重记的倒计时
Aug 10 Javascript
node.js实现登录注册页面
Apr 08 Javascript
js定时器+简单的动画效果实例
Nov 10 Javascript
Vue2 SSR渲染根据不同页面修改 meta
Nov 20 Javascript
简单了解JavaScript弹窗实现代码
May 07 Javascript
vue使用swiper实现左右滑动切换图片
Oct 16 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 Vue.js
浅谈TypeScript 索引签名的理解
Oct 16 Javascript
JavaScript阻止事件冒泡的方法
Dec 06 Javascript
VUE元素的隐藏和显示(v-show指令)
Jun 23 #Javascript
vue数据双向绑定的注意点
Jun 23 #Javascript
Vue.js常用指令的使用小结
Jun 23 #Javascript
JS中将多个逗号替换为一个逗号的实现代码
Jun 23 #Javascript
JavaScript对象_动力节点Java学院整理
Jun 23 #Javascript
JavaScript订单操作小程序完整版
Jun 23 #Javascript
详解vue模拟加载更多功能(数据追加)
Jun 23 #Javascript
You might like
php数组的概述及分类与声明代码演示
2013/02/26 PHP
php设置编码格式的方法
2013/03/05 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
给ListBox添加双击事件示例代码
2013/12/02 Javascript
Jquery方式获取iframe页面中的 Dom元素
2014/05/07 Javascript
jQuery学习总结之jQuery事件
2014/06/30 Javascript
一个仿糯米弹框效果demo
2014/07/22 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
js操作数据库实现注册和登陆的简单实例
2016/05/26 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
JavaScript中展开运算符及应用的实例代码
2021/01/14 Javascript
[58:54]EG vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
Python continue继续循环用法总结
2018/06/10 Python
详解python-图像处理(映射变换)
2019/03/22 Python
python tkinter实现屏保程序
2019/07/30 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
Python常用库大全及简要说明
2020/01/17 Python
Python通过getattr函数获取对象的属性值
2020/10/16 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
咖啡店创业计划书范文
2014/09/15 职场文书
大学生个人年度总结范文
2015/02/15 职场文书
python中pandas对多列进行分组统计的实现
2021/06/18 Python
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js