微信小程序组件 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 &amp; DHTML 实例编程(教程)基础知识
Jun 02 Javascript
javascript 一段左右两边随屏滚动的代码
Jun 18 Javascript
JavaScript 自动完成脚本整理(33个)
Oct 20 Javascript
jquery中animate的stop()方法作用实例分析
Jan 30 Javascript
javascript实现九宫格相加数值相等
May 28 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
Sep 18 Javascript
详解js前端代码异常监控
Jan 11 Javascript
JavaScript中创建对象的7种模式详解
Feb 21 Javascript
详解Angular 4.x Injector
May 04 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
Oct 23 Javascript
JS数据类型分类及常用判断方法
Nov 19 Javascript
小程序实现列表倒计时功能
Jan 29 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
PHP4之真OO
2006/10/09 PHP
PHP编程中字符串处理的5个技巧小结
2007/11/13 PHP
php+javascript的日历控件
2009/11/19 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
PHP中strtotime函数使用方法分享
2012/01/10 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
nodejs简单实现中英文翻译
2015/05/04 NodeJs
使用Javascript写的2048小游戏
2015/11/25 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
将RGB值转换为灰度值的简单算法
2019/10/09 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
一分钟学会JavaScript中的try-catch
2020/12/14 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
python三元运算符实现方法
2013/12/17 Python
Python中import机制详解
2017/11/14 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
python 获取等间隔的数组实例
2019/07/04 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
Surfdome西班牙:世界上最受欢迎的生活方式品牌
2019/02/13 全球购物
建筑行业的大学生自我评价
2013/12/08 职场文书
毕业生的自我评价分享
2013/12/18 职场文书
销售冠军获奖感言
2014/02/03 职场文书
新年寄语大全
2014/04/12 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
运输企业安全生产责任书
2014/07/28 职场文书
火锅店的活动方案
2014/08/15 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
通讯稿格式及范文
2015/07/22 职场文书
pytorch实现线性回归以及多元回归
2021/04/11 Python
Go 语言结构实例分析
2021/07/04 Golang
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python