微信小程序组件 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 相关文章推荐
从Ajax到JQuery Ajax学习
Feb 14 Javascript
JavaScript中如何通过arguments对象实现对象的重载
May 12 Javascript
ActiveX控件与Javascript之间的交互示例
Jun 04 Javascript
javascript操作表格排序实例分析
May 06 Javascript
js实现的黑背景灰色二级导航菜单效果代码
Aug 24 Javascript
AngularJS基础 ng-mousemove 指令简单示例
Aug 02 Javascript
JavaScript实现的CRC32函数示例
Nov 23 Javascript
原生js实现类似fullpage的单页/全屏滚动
Jan 22 Javascript
Input文本框随着输入内容多少自动延伸的实现
Feb 15 Javascript
基于es6三点运算符的使用方法(实例讲解)
Oct 12 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
Sep 01 Javascript
vue自定义组件实现双向绑定
Jan 13 Vue.js
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
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
用php实现的获取网页中的图片并保存到本地的代码
2010/01/05 PHP
php header示例代码(推荐)
2010/09/08 PHP
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
PHP实现带重试功能的curl连接示例
2016/07/28 PHP
javascript 获取图片颜色
2009/04/05 Javascript
Jquery知识点一 Jquery的ready和Dom的onload的区别
2011/01/15 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
js document.write()使用介绍
2014/02/21 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
JavaScript极简入门教程(二):对象和函数
2014/10/25 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
JS修改地址栏参数实例代码
2016/06/14 Javascript
js实现PC端根据IP定位当前城市地理位置
2017/02/22 Javascript
ES6中class类用法实例浅析
2017/04/06 Javascript
react.js使用webpack搭配环境的入门教程
2017/08/14 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
原生js实现针对Dom节点的CRUD操作示例
2019/08/26 Javascript
python中input()与raw_input()的区别分析
2016/02/27 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
一篇文章教你用python画动态爱心表白
2020/11/22 Python
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
SheIn沙特阿拉伯:女装在线
2020/03/23 全球购物
设计模式的基本要素是什么
2014/04/21 面试题
几个常见的消息中间件(MOM)
2014/01/08 面试题
英文商务邀请信
2014/01/22 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
遗失说明具结保证书
2015/02/26 职场文书
JavaScript 防篡改对象的用法示例
2021/04/24 Javascript
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python
Python max函数中key的用法及原理解析
2021/06/26 Python
Python中的tkinter库简单案例详解
2022/01/22 Python