使用vue搭建一个仿window系统。
大体实现思路是:
有一个config变量layers里面装的是每一个组件的相关配置。每一个组件都是以绝对定位的方式定位在页面上,x代表left,y代表top。
在拖动组件的时候,每触发一次mousemove事件就去修改这个config变量。从而实现拖动效果
在更换壁纸组件里,当使用img加载图片没有任何问题。
<div class="prev-view" v-for="item of 5" @click="changeWallpaper(item)"> <img :src="`/src/assets/wallpaper/windows${item}.jpg`" alt="" style="width: 100%; height: 100%;"> </div>
当使用background-image展示图片时拖拽会引起卡顿,但是在切换数次壁纸后就不卡顿了
<div class="prev-view" v-for="item of 5" @click="changeWallpaper(item)" :style="`background: center / cover no-repeat url(/src/assets/wallpaper/windows${item}.jpg)`"> </div>
问题可能是由于背景图片在初次加载时并未完全加载,导致在拖动过程中需要重新绘制页面,从而引起卡顿。
在Vue.js中,你可以使用v-if
或v-show
指令来控制元素的显示和隐藏。你可以尝试在图片完全加载之后再显示元素,这样就不会在图片加载的过程中进行拖动操作。
此外,你可以尝试在图片加载完成之后再更新背景图片的样式,可以使用JavaScript的Image
对象来监听load
事件。以下是一个可能的解决方案:
new Vue({ el: '#app', data: { currentWallpaper: 0, wallpapersLoaded: 0, wallpapersToLoad: 5 }, methods: { changeWallpaper(index) { if (this.wallpapersLoaded < this.wallpapersToLoad) { this.currentWallpaper = index; this.loadWallpaper(index); } else { this.currentWallpaper = index; this.updateWallpaperStyle(); } }, loadWallpaper(index) { const img = new Image(); img.src = `/src/assets/wallpaper/windows${index}.jpg`; img.onload = () => { this.wallpapersLoaded++; this.updateWallpaperStyle(); }; }, updateWallpaperStyle() { const wallpaperElement = document.querySelector('.prev-view'); wallpaperElement.style.backgroundImage = `url(/src/assets/wallpaper/windows${this.currentWallpaper}.jpg)`; wallpaperElement.style.backgroundSize = 'cover'; wallpaperElement.style.backgroundRepeat = 'no-repeat'; wallpaperElement.style.backgroundPosition = 'center'; } }});
在HTML中,你只需要简单地显示元素:
<div class="prev-view" v-for="item of 5" @click="changeWallpaper(item)"></div>
以上代码会首先加载所有图片,并在所有图片加载完成后更新背景图片的样式。这样可以确保在拖动过程中不会因为图片加载而引起卡顿。
注意,以上代码假设你只有一个需要加载背景图片的元素。如果你有多个元素需要加载背景图片,你可能需要对代码进行一些修改,以便为每个元素分别加载和更新背景图片。
html代码是这样的,动态遍历一个树形结构 控制台看到后端传过来是有数据的,是有链接的 我复制图片的链接,且放到地址栏,回车是可以下载图片。我也有试过写死在img标签,页面能正常显示,说明链接是正常的 树形结构最后一层是没有显示图片。 注:我猜想是只有最后一层才有图片的原因造成的,所以我有些判断v-if,有值才加载。但结果都没显示,前端vue.js的语法不知道怎么写了。所以请问大家,这个得怎么把图
本文向大家介绍Vue.js实现图片的随意拖动方法,包括了Vue.js实现图片的随意拖动方法的使用技巧和注意事项,需要的朋友参考一下 主要代码如下: 以上这篇Vue.js实现图片的随意拖动方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
Vue项目中,首页有一张几乎半瓶的背景图片,在Lighthouse中耗时1600ms,似乎想不到什么办法去进行优化呀?压缩,转webp,或者转base64等等都无法大幅度降低lcp的耗时。请问各位有什么其他的想法吗?
本文向大家介绍JS HTML5拖拽上传图片预览,包括了JS HTML5拖拽上传图片预览的使用技巧和注意事项,需要的朋友参考一下 1.文件API:(File API) file类型的的表单控件选择的每一个文件都是一个file对象,而FileList对象则是这些file对象的集合列表,代表所选择的所有文件。file对象继承于Blob对象,该对象表示二进制原始数据,提供slice方法,可以访问到字节内部
本文向大家介绍js css3实现图片拖拽效果,包括了js css3实现图片拖拽效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了css3实现图片拖拽效果的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍js实现拖拽上传图片功能,包括了js实现拖拽上传图片功能的使用技巧和注意事项,需要的朋友参考一下 直接把本地图片拉到你设定的图片上传成功后的位置,就ok了,具体代码如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。