vue 固定范围内随机位置生成 图片(可其他东西)
vue 固定范围内随机位置生成 图片(可其他东西)
先说一下思路:
- 在一个范围内(主要是为了确认随机生成的图片中心点在范围内)
- 拿到图片半径(可随机,看需求)
- 随机生成xy坐标 (left,top)
- 第一个判断:判断是否在规定范围内
x (随机点的X) - r (半径) >=0 && y(随机点的Y)-r>=0
x+r<= W(范围宽) && y+r<=H (范围高) - 判断最新生成的 图片 范围内是否 有其他的图片
假设我们生成的图片集合成一个 list:[{x:150,y:90,r:30},{x:240,y:70,r:30}…]
最新的 图片:x: 260,y: 140,r:60
for(var i in list){if(list[i].x>=260&&list[i].x<=260+2*60){return false}if(list[i].y>=260&&list[i].y<=260+2*60){return false}
}
如果没有返回false,就把他丢到 list里面,即又生成一个。
开始实现
html
<div class="component" :style="`width:${clientWidth}px;height:${clientHeight}px;`"><template v-for="(item,index) in graphicsList"><div class="graphics" :key="index" :style="`left:${item.x}px;top:${item.y}px;`"><img src=""></div></template></div>
js
data() {return {clientHeight: null,clientWidth: null,// 半径 即图片100*100radius: 50, // 有随机要求可动态生成graphicsList:[]};},methods: {// 获取可视区域getClient(){// 获取html可视区域高度this.clientHeight = document.documentElement.clientHeight - 100 // 预留100px不紧贴屏幕this.clientWidth = document.documentElement.clientWidth - 120 // 预留120px不紧贴屏幕},// 随机生成图形位置(xy坐标)generateLocation(){let x = Math.floor(Math.random()*this.clientHeight) + this.radius // 加 this.radius 保证图形中心在范围内,后面可少判断一步let y = Math.floor(Math.random()*this.clientWidth) + this.radiusreturn {x,y,r: this.radius}},// 生成generate(){let obj = this.generateLocation()// 判断是否在规定范围内 if(obj.x + obj.r>this.clientHeight){return false}if(obj.y + obj.r>this.clientHeight){return false}// 判断最新生成的 图片 范围内是否 有其他的图片 if(this.graphicsList.length!==0){for(var i in list){// 判断是否在规定范围内 if(list[i].x>= obj.x && list[i].x<= obj.x + (obj.r*2)){return false}if(list[i].y>= obj.x && list[i].y<= obj.x + (obj.r*2)){return false}if(Number(i)+1==list.length){this.graphicsList.push(obj)}}}else{this.graphicsList.push(obj)}},},
scss
.component {position: absolute;.demo {width: 100px;height: 100px;position: absolute;z-index: 2;img {position: relative;object-fit: contain;width: 100px;height: 100px;}}
}
vue 固定范围内随机位置生成 图片(可其他东西)相关推荐
- 随机位置显示图片不重叠前端实现详细讲解附效果图,代码可直接使用
目录 先看看效果图 所要实现的功能 看看代码 js代码讲解: 下面看看完整代码吧 小程序版本完整代码 VUE版本的代码: 先看看效果图 所要实现的功能 在页面上随机的位置显示随机大小的图片,并且每个图 ...
- C#全屏随机位置显示图片的小程序
想法:将屏幕截图作为程序背景图,在之上弹出提示窗口,选择确定后进行定时图片随机位置显示.(支持ESC键退出) 需要添加的控件:Timer 需要修改的Form1属性为下图红色区域: 资源文件的添加:添加 ...
- java 在某个范围内随机_java生成某个范围内的随机时间
Date randomDate=randomDate("2010-09-20","2010-09-21"); /** * 生成随机时间 * @param beg ...
- 随机位置生成小方块案例
每一秒改变所有小方块的颜色和位置,效果如图 html代码很简单,就是一个容器以及十个小方块 ```javascript <div id = 'container'></div> ...
- vue框架 行内样式 添加背景图片
<div class="logo" :style="{width: concetWidth+'px',height: concetHeight+'px' , 'ba ...
- Android屏幕随机位置弹出View
最近项目中人脸注册需要尽量多的捕捉人脸特征,就要想办法使得人脸在注册中呈现不同角度,于是想到在屏幕内随机位置弹出一个吸引注意力的View. 本文中主要用到: 1.view.setX();setY()方 ...
- Actor范围内随机生成 Learn Unreal Engine (with C++)
Actor范围内随机生成 Learn Unreal Engine (with C++) SpaceshipBattle · fanxingin/UE4项目 - 码云 - 开源中国 (gitee.com ...
- 用 Python 自动生成 Word 文档并在指定位置插入图片
用Python生成Word文档 在指定位置插入图片 首先当然需要第三方库啦(▽) 天才第一步,第三方的库O(∩_∩)O哈哈~ 参照转发的是这位大佬的博客:https://blog.csdn.net/c ...
- vue组件读取static文件夹内json文件的图片路径问题
static是放置静态文件的地方,可以我们也会把json文件放在里面,但是经常我们会遇到读取josn文件内图片路径的问题,这个问题困了我两天,今天一大早就又开始研究这个问题,现在终于得到了解决,关于这 ...
最新文章
- oracle11g怎么显示中文,ORACLE11G中PLSQL中文显示乱码、Linux下sqlplus查询中文乱码
- dos窗口输入 pip 显示不是内部或外部命令
- SQL Server 中创建数据库、更改主文件组示例
- 第一阶段:前端开发_Mysql——表与表之间的关系
- 温故而知新 js 的错误处理机制
- Impala之DDL、DML
- qoq是什么意思的缩写_买鞋多年分不清PE、SE、TD什么意思?建议收藏,这些缩写一定要知道...
- python如何画出多个独立的图片_python使用matplotlib:subplot绘制多个子图的示例
- 智能锁行业安全分析报告
- 如何使用CSDN写博客?—CSDN基础知识汇总
- php京东接口开发,技术文档
- 5000个常用汉字(完整版) 繁体简体
- access数据库代做_矿井三维模型(代做矿山模型)
- 第三方支付对接-支付宝支付接入教程
- 如何将ape无损音转码为wav文件
- Example文件简介
- 有赞订单搜索AKF架构演进之路
- 记一次流量分析实战——安恒科技(八月ctf)
- MusicPlayerByService
- 帮助 help 命令