在vue项目中操作元素ref案例;

在这里插入图片描述

原博主链接

<!--* @Description:会动的词云* @Author: Vergil* @Date: 2021-08-25 14:17:45* @LastEditTime: 2021-08-25 17:08:15* @LastEditors: Vergil
-->
<template><div class="wordCloud" ref="wordCloud"></div>
</template>
<script>
export default {name: 'word-cloud',data () {return {hotWord: ['万事如意', '事事如意 ', '万事亨通', '一帆风顺', '万事大吉', '吉祥如意', '步步高升', '步步登高', '三羊开泰', '得心应手', '财源广进', '陶未媲美','阖家安康', '龙马精神', '锦绣前程', '吉祥如意', '生龙活虎', '神采奕奕', '五谷丰登', '马到成功', '飞黄腾达', ' 步步高升', '福禄寿禧'],color: ['#a18cd1', '#fad0c4', '#ff8177','#fecfef', '#fda085', '#f5576c','#fe9a8b', '#30cfd0', '#38f9d7'],wordArr: [],timer: null,resetTime: 10,ContainerSize: ''}},mounted () {this.init()},methods: {init () {this.dealSpan()this.initWordPos()this.render()},dealSpan () {const wordArr = []this.hotWord.forEach((value) => {// 根据词云数量生成span数量设置字体颜色和大小const spanDom = document.createElement('span')spanDom.style.position = 'relative'spanDom.style.display = 'inline-block'spanDom.style.color = this.randomColor()spanDom.style.fontSize = this.randomNumber(15, 30) + 'px'spanDom.innerHTML = valuespanDom.local = {position: {// 位置x: 0,y: 0},direction: {// 方向 正数往右 负数往左x: 1,y: 1},velocity: {// 每次位移初速度x: -0.5 + Math.random(),y: -0.5 + Math.random()}}this.$refs.wordCloud.appendChild(spanDom)wordArr.push(spanDom)})this.wordArr = wordArr},randomColor () {// 获取随机颜色var colorIndex = Math.floor(this.color.length * Math.random())return this.color[colorIndex]},randomNumber (lowerInteger, upperInteger) {// 获得一个包含最小值和最大值之间的随机数。const choices = upperInteger - lowerInteger + 1return Math.floor(Math.random() * choices + lowerInteger)},render () {if (this.resetTime < 100) {this.resetTime = this.resetTime + 1this.timer = requestAnimationFrame(this.render.bind(this))// setInterval(() => {//   console.log(1)//   this.render.bind(this)// }, 10)this.resetTime = 0}this.wordFly()},wordFly () {this.wordArr.forEach((value) => {// 设置运动方向 大于边界或者小于边界的时候换方向if (value.local.realPos.minx + value.local.position.x < this.ContainerSize.leftPos.x || value.local.realPos.maxx + value.local.position.x > this.ContainerSize.rightPos.x) {value.local.direction.x = -value.local.direction.x}if (value.local.realPos.miny + value.local.position.y < this.ContainerSize.leftPos.y || value.local.realPos.maxy + value.local.position.y > this.ContainerSize.rightPos.y) {value.local.direction.y = -value.local.direction.y}value.local.position.x += value.local.velocity.x * value.local.direction.xvalue.local.position.y += value.local.velocity.y * value.local.direction.y// 给每个词云加动画过渡value.style.transform = 'translateX(' + value.local.position.x + 'px) translateY(' + value.local.position.y + 'px)'})},initWordPos () {// 计算每个词的真实位置和容器的位置this.wordArr.forEach((value) => {value.local.realPos = {minx: value.offsetLeft,maxx: value.offsetLeft + value.offsetWidth,miny: value.offsetTop,maxy: value.offsetTop + value.offsetHeight}})this.ContainerSize = this.getContainerSize()},getContainerSize () {// 判断容器大小控制词云位置const el = this.$refs.wordCloudreturn {leftPos: {// 容器左侧的位置和顶部位置x: el.offsetLeft,y: el.offsetTop},rightPos: {// 容器右侧的位置和底部位置x: el.offsetLeft + el.offsetWidth,y: el.offsetTop + el.offsetHeight}}}},destroyed () {// 组件销毁,关闭定时执行cancelAnimationFrame(this.timer)}
}
</script>
<style lang="less" scoped>
.wordCloud {width: 100%;// height: 100%;height: 400px;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

epoll.h 源码记录

epoll.h源码&#xff1a; /* Copyright (C) 2002-2013 Free Software Foundation, Inc.This file is part of the GNU C Library.The GNU C Library is free software; you can redistribute it and/ormodify it under the terms of the GNU Lesser General PublicLicense as …

calc()函数及vmin,vmax,vh,vw的认识,在family里的实战运用

css的calc()函数用于动态计算长度值&#xff1b; 比如下面这个&#xff0c; font-size: calc(10px 2vmin); 控制字体缩放。 这里的vmin&#xff08;相对于视口的宽度或高度中较小的那个。其中最小的那个被均分为100单位的vmin&#xff09;&#xff1b; 比如我们的视口长1…

【C->Cpp】深度解析#由C迈向Cpp(2)

目录 &#xff08;一&#xff09;缺省参数 全缺省参数 半缺省参数 缺省参数只能在函数的声明中出现&#xff1a; 小结&#xff1a; &#xff08;二&#xff09;函数重载 函数重载的定义 三种重载 在上一篇中&#xff0c;我们从第一个Cpp程序为切入&#xff0c;讲解了Cpp的…

MySQL主从数据库配置

公司有未知台服务器&#xff0c;以后都要自己来接管。MySQL主从是必需要会的技术&#xff0c;所以加强学习一下以图以后安稳日子啊&#xff01; 主服务器&#xff08;master&#xff09;: 192.168.30.204&#xff0c;用yum安装的MySQL.&#xff08;内有多个库&#xff09; 从服…

转: ant condition使用

评注&#xff1a; 用c语言的方式来&#xff0c;比喻ant...比较好理解 转&#xff1a; http://www.smithfox.com/?e176 [备忘] Apache Ant中的逻辑判断 [原创链接: http://www.smithfox.com/?e176 转载请保留此声明, 谢谢!! ] 在写Ant时有时免不了要简单的逻辑, 本文并没有创造…

Epoll在LT和ET模式下的读写方式

From: http://www.ccvita.com/515.html 在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK) 从字面上看, 意思是:EAGAIN: 再试一次&#xff0c;EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block&#xff0c;perror输出: Res…

react 创建

1&#xff1a;可以html页直接引入 <script src"../build/react.development.js"></script><script src"../build/react-dom.development.js"></script><script src"../build/babel.min.js"></script> 2&a…

《精彩绝伦的CSS》读书笔记(二)

3.2 大多数允许使用多个关键字的CSS属性都允许以任何顺序书写关键字,但font属性是很少见的例外之一.font: <font-size> <font-family>;这连个只必须按照既定的顺序进行书写,如果顺序颠倒或者漏掉了其中一个,浏览器会完全忽略这条声明. 其他关键字全部都得放在这两个…

Session机制详解

虽然session机制在web应用程序中被采 用已经很长时间了&#xff0c;但是仍然有很多人不清楚session机制的本质&#xff0c;以至不能正确的应用这一技术。本文将详细讨论session的工作机制并且对在 Java web application中应用session机制时常见的问题作出解答。 一、术语ses…

element-ui的表单校验;el-form表单校验;el-form表单自定义校验;手机号校验;车牌号校验;车牌号正则校验;手动校验表单某一项;手动清空表单的某一项校验结果

示例&#xff1a;代码在末尾 可以直接复制使用 一、基本属性认知&#xff1a; 1. required: true 会有 * &#xff0c; 但仅是触发最后点击提交按钮时&#xff0c;校验某一项位必填&#xff1b;与输入事件或者选择或者失焦时候 怎么校验无关 &#xff08;这时候的校验取决于是…

npm eject 暴露webpack报错,less或sass添加报错

在使用react时候&#xff0c;添加sass或者less&#xff0c;需要暴露config里的webpack出来&#xff0c;直接npm eject会暴以下错&#xff1b; Usage: npm <command> where <command> is one of: access, adduser, audit, bin, bugs, c, cache, ci, cit, …

Eclipse For JavaSE安装、配置、测试

Eclipse For JavaSE安装、配置、测试(win7_64bit) 目录 1.概述 2.本文用到的工具 3.安装与配置 4.JavaSE开发测试 5.ADT安装与Android开发测试 6.注意事项 7.相关博文 >>看不清的图片可在新标签打开查看大图 1.概述 eclipse应该是Java开发界家喻户晓的IDE了&#xff0c;通…

关于GNS3占用很大CPU的问题,很大可能对你有用

在用GNS3的时候不知道为什么&#xff0c;CPU居高不下&#xff0c;占据100%&#xff0c;拼命计算IDLE值&#xff0c;甚至使用上了BES软件&#xff0c;都没用&#xff0c;后来在51CTO看到有个朋友回帖说是更改一下RAM应该可以。我发现GNS3给每台设备默认是分配128M&#xff0c;于…

Typescript学习;Typescript总结;Typescript 的数据类型有哪些?

推荐一个学习Typescript的网址&#xff0c;写的特别清晰易懂&#xff0c;比官网好理解&#xff1a;Typescript文档整理 一个总结&#xff1a;Typescript 的数据类型有哪些

epoll的两种模式

From: http://haoningabc.iteye.com/blog/1432958 linux异步IO浅析 http://hi.baidu.com/_kouu/blog/item/e225f67b337841f42f73b341.html epoll有两种模式,Edge Triggered(简称ET) 和 Level Triggered(简称LT).在采用这两种模式时要注意的是,如果采用ET模式,那么仅当状态发生…

react 添加less预处理语言

首先是安装react react创建 创建完了&#xff0c;添加react 首先cnpm i less less-loader --save-dev 下载完成后执行&#xff1a;npm run eject&#xff1b;暴露config等一些配置文件 config目录有个webpack配置文件&#xff0c;修改 const cssRegex /\.css$/; 改成 con…

微软公布 Windows Phone 8 多项新特性

多款热门游戏登陆WP8 全新锁屏界面可浏览Facebook图集 数据压缩服务DATA SENSE 鲍尔默宣布WP8终端上市细则 10月30日消息&#xff0c;微软今日凌晨于美国旧金山公布Windows Phone 8诸多新特性&#xff0c;并宣布了诺基亚、HTC以及三星多款WP8终端美国上市日期及运营商定制方式。…

博客地址迁移

博客地址迁移 新的文章不在博客园写了&#xff0c;有兴趣关注本人博客的请移步 https://github.com/jsCoder-yy 另外&#xff0c;旧的博客内容也会逐步迁移到github上。posted on 2016-06-30 14:15 jsCoder_洋洋 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com…

为什么[]==0;JavaScript里什么情况下a==!a为true呢?

原文链接 JavaScript里什么情况下a!a为true呢&#xff1f; 答案是当a []的时候&#xff0c;这是因为JavaScript的类型转换。 我们先来考虑这个问题&#xff0c;console.log([] false)会打印什么呢&#xff1f;答案是true。为什么呢&#xff1f;首先&#xff0c;因为当&quo…