当前位置: 首页 > news >正文

中小型网站建设平台网站优化+山东

中小型网站建设平台,网站优化+山东,最新h5优秀作品欣赏,移动网站打不开第一步:创建store目录结构 src/ ├── store/ │ ├── modules/ │ │ └── robot.js # 机器人专用状态模块 │ └── index.js # Vuex 主配置文件第二步:创建机器人状态模块 创建 src/store/modules/robot.js 文件&#xff…

第一步:创建store目录结构

src/
├── store/
│   ├── modules/
│   │   └── robot.js     # 机器人专用状态模块
│   └── index.js         # Vuex 主配置文件

第二步:创建机器人状态模块
创建 src/store/modules/robot.js 文件,内容如下:

// 从本地存储读取初始位置(实现持久化)
const getInitialPosition = () => {try {return JSON.parse(localStorage.getItem('robotPosition')) || { x: 100, y: 100 }} catch {return { x: 100, y: 100 }}}export default {namespaced: true,  // 启用命名空间state: () => ({position: getInitialPosition(),visibility: true}),mutations: {UPDATE_POSITION(state, newPos) {state.position = newPos// 同步到本地存储localStorage.setItem('robotPosition', JSON.stringify(newPos))},TOGGLE_VISIBILITY(state) {state.visibility = !state.visibility}},actions: {setPosition({ commit }, position) {commit('UPDATE_POSITION', position)},resetPosition({ commit }) {commit('UPDATE_POSITION', getInitialPosition())}},getters: {formattedPosition: state => {return `X: ${state.position.x}px, Y: ${state.position.y}px`}}}

第三步:配置主Store文件
修改 src/store/index.js:

import Vue from 'vue'
import Vuex from 'vuex'
import robot from './modules/robot'Vue.use(Vuex)export default new Vuex.Store({modules: {robot  // 注册机器人模块}
})

第四步:初始化Vuex
在 main.js 中挂载 store:

import Vue from 'vue'
import App from './App.vue'
import store from './store'  // 自动识别 index.jsnew Vue({store,  // 注入全局 storerender: h => h(App)
}).$mount('#app')

第五步(可选):增强持久化配置

如果要实现更复杂的持久化,可以使用 vuex-persistedstate:

1.安装插件:

npm install vuex-persistedstate

2.修改 store 配置:

// store/index.js
import createPersistedState from 'vuex-persistedstate'export default new Vuex.Store({modules: { /*...*/ },plugins: [createPersistedState({paths: ['robot.position']  // 只持久化位置信息})]
})

第六步:创建全局机器人组件(components/GlobalRobot.vue)

<template><div class="global-robot" :style="robotStyle" @mousedown="startDrag" @click="opendialog">🤖</div>
</template><script>
import { mapState, mapActions } from 'vuex'export default {name: 'GlobalRobot',data() {return {isDragging: false,dragOffset: { x: 0, y: 0 },elementWidth: '',elementHeight: ''}},computed: {...mapState('robot', ['position']),robotStyle() {return {left: `${this.position.x}px`,top: `${this.position.y}px`,zIndex: 9999}}},methods: {...mapActions('robot', ['setPosition']),startDrag(e) {this.isDragging = trueconst rect = this.$el.getBoundingClientRect()this.elementWidth = rect.widththis.elementHeight = rect.heightconsole.log(this.elementWidth)console.log(this.elementHeight)this.dragOffset = {x: e.clientX - this.position.x,y: e.clientY - this.position.y}document.addEventListener('mousemove', this.onDrag)document.addEventListener('mouseup', this.stopDrag)e.preventDefault()},onDrag(e) {if (!this.isDragging) returnconst maxX = window.innerWidth - this.elementWidthconst maxY = window.innerHeight - this.elementHeightconst newX = e.clientX - this.dragOffset.xconst newY = e.clientY - this.dragOffset.y// 严格边界限制this.setPosition({x: Math.max(0, Math.min(newX, maxX)),y: Math.max(0, Math.min(newY, maxY))})console.log(`边界检测: newX=${newX}, maxX=${maxX}, clampedX=${Math.max(0, Math.min(newX, maxX))}`
)},stopDrag() {this.isDragging = falsedocument.removeEventListener('mousemove', this.onDrag)document.removeEventListener('mouseup', this.stopDrag)},opendialog() {this.dialogVisible = true}}
}
</script><style scoped>
.global-robot {position: fixed;width: 100px;height: 100px;/* background-image: linear-gradient(92deg, #407cd6 15%, #3ebcb4 48.8525390625%, #397ace 100%); */border-radius: 50%;display: flex;justify-content: center;align-items: center;font-size: 50px;cursor: move;user-select: none;box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);transition:transform 0.2s,box-shadow 0.2s;pointer-events: auto;/* 确保可交互 */
}.global-robot:hover {transform: translateY(-2px);box-shadow: 0 6px 16px rgba(0, 0, 0, 0.25);
}.global-robot:active {cursor: grabbing;transform: scale(0.95);
}
</style>
http://www.dtcms.com/a/588744.html

相关文章:

  • 网站建设在电子商务中的作用wordpress非常卡
  • 东西湖做网站视频创作用什么软件
  • 怎么建设代刷网站apple 官网
  • 如何使用wordpress搭建网站广州建设工程造价管理站
  • 厦门网站建设cnmxcm电子商务网站建设参考书
  • 谷城县城乡建设局网站北京市昌平建设工程招标网站
  • 在本地做装修在那个网站好wordpress手机评论
  • 买域名后怎么做网站北京简网生活圈科技有限公司
  • 网站建设平台分析如何做一元购网站
  • 软件设计师网站有哪些学习建网站
  • 智联招聘网站怎么做微招聘信息做外贸用哪些网站
  • 农业特色网站建设沙元浦做网站的公司
  • 做装修网站大连哪家公司做网站比较好
  • 昆明网站建设c3sales计算机培训机构一般多少钱
  • 北京小型网站建设wordpress手机端插件下载
  • 网站建设做网站多少钱我想建设网站
  • 上海网站建设专业公司建筑企业资质
  • 网站排名提升软件网站用的是什么语言
  • 推广网络河北seo网站优化价格
  • 个人网站建设方法小微企业名录查询系统
  • 阿里云备案网站服务内容怎么填网页设计素材怎么保存到文件夹
  • 国家级门户网站有哪些中国互联网企业100强
  • 企业网站开源网页界面设计代码
  • 珠宝类网站模板深圳网站建设 罗湖
  • 企业网站是否可以做淘宝客重庆高端网站seo
  • 深圳网站设计公司是什么湖南seo优化公司
  • wordpress禁止更新插件淄博网站制作建设优化
  • 网站代码规范性企业网站优化方案
  • 如何做有后台的网站wordpress站点标题图片
  • 网站建设 兼职 外包柳市网站建设