微信小程序组件 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中检测变量的类型的代码
Dec 28 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
Jun 17 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
Aug 06 Javascript
浅谈Javascript中substr和substring的区别
Sep 30 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
Jan 12 Javascript
JavaScript实战(原生range和自定义特效)简单实例
Aug 21 Javascript
vue2 router 动态传参,多个参数的实例
Nov 10 Javascript
p5.js入门教程之小球动画示例代码
Mar 15 Javascript
mpvue小程序仿qq左滑置顶删除组件
Aug 03 Javascript
Vue.js中的组件系统
May 30 Javascript
避坑之 JavaScript 中的toFixed()和正则表达式
Apr 19 Javascript
vue.js 使用原生js实现轮播图
Apr 26 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
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
CodeIgniter配置之SESSION用法实例分析
2016/01/19 PHP
Prototype1.5 rc2版指南最后一篇之Position
2007/01/10 Javascript
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
js 金额格式化来回转换示例
2014/02/23 Javascript
JavaScript中的Web worker多线程API研究
2014/12/06 Javascript
jquery实现图片预加载
2015/12/25 Javascript
浅谈JavaScript中数组的增删改查
2016/06/20 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
深入理解ES7的async/await的用法
2017/09/09 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
vue.js 实现点击展开收起动画效果
2018/07/07 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
2020/04/09 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
python定时器使用示例分享
2014/02/16 Python
Python类属性与实例属性用法分析
2015/05/09 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
详解基于django实现的webssh简单例子
2018/07/17 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
劳动竞赛活动总结
2014/05/05 职场文书
运动会演讲稿
2014/05/07 职场文书
本科毕业生求职信
2014/06/15 职场文书
党支部创先争优活动总结
2014/08/28 职场文书
体育运动会广播稿
2014/10/05 职场文书
水电工岗位职责
2015/02/14 职场文书
2016高考冲刺决心书
2015/09/23 职场文书
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
js之ajax文件上传
2021/05/13 Javascript
关于python中readlines函数的参数hint的相关知识总结
2021/06/24 Python