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

发布时间 - 2026-01-11 02:01:33    点击率:

微信小程序组件 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);

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


# 微信小程序组件  # marquee  # 小程序  # 详解微信小程序 登录获取unionid  # 微信小程序与php 实现微信支付的简单实例  # 详解微信小程序 同步异步解决办法  # 微信小程序图片宽100%显示并且不变形  # 微信小程序中页面FOR循环和嵌套循环  # 微信小程序图片自适应支持多图实例详解  # 微信小程序后台解密用户数据实例详解  # 是个  # 是有  # 是这样  # 希望能  # 可以实现  # 中也  # 谢谢大家  # 中国  # 到该  # 不起作用  # 跑马灯  # 你好  # view  # wxml  # marquee_container  # marqueeWidth  # style  # hspace  # vspace  # world 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  WordPress 子目录安装中正确处理脚本路径的完整指南  如何快速重置建站主机并恢复默认配置?  Laravel如何实现模型的全局作用域?(Global Scope示例)  南京网站制作费用,南京远驱官方网站?  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  如何在宝塔面板中修改默认建站目录?  香港服务器选型指南:免备案配置与高效建站方案解析  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  Android okhttputils现在进度显示实例代码  如何用VPS主机快速搭建个人网站?  Laravel如何实现用户密码重置功能?(完整流程代码)  如何用搬瓦工VPS快速搭建个人网站?  Linux系统命令中tree命令详解  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  Windows Hello人脸识别突然无法使用  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  Laravel如何实现API版本控制_Laravel版本化API设计方案  昵图网官网入口 昵图网素材平台官方入口  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  大型企业网站制作流程,做网站需要注册公司吗?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  高防服务器:AI智能防御DDoS攻击与数据安全保障  实例解析angularjs的filter过滤器  如何获取免费开源的自助建站系统源码?  JS中对数组元素进行增删改移的方法总结  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  在线制作视频的网站有哪些,电脑如何制作视频短片?  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  网站制作价目表怎么做,珍爱网婚介费用多少?  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  如何解决hover在ie6中的兼容性问题  JavaScript如何实现错误处理_try...catch如何捕获异常?  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  如何在云主机快速搭建网站站点?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?