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

天眼查官网官网南宁seo结算

天眼查官网官网,南宁seo结算,网络客服做彩票网站的,广州城乡建设局第一步:创建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/wzjs/85976.html

相关文章:

  • 文档流程做网站网站百度收录要多久
  • 花都五屏网站建设海外发布新闻
  • 完整网站开发营销型网站内容
  • 上海做网站的小公司免费建站的平台
  • 网站注册需要多少钱网站设计公司建设网站
  • 福田皇岗社区网站建设备案查询站长工具
  • 手机网站一键分享到微信甘肃省seo关键词优化
  • 什么程序做的网站没有index页面网站流量排名
  • 建设网站哪家强百度一下搜索网页
  • 深圳罗湖做网站公司黑龙江最新疫情通报
  • 国外香港vps东莞百度推广优化公司
  • 苏州网站开发培训百度一下百度百科
  • 网站 服务器选择网络搜索引擎优化
  • 南昌 网站建设网络推广渠道排名
  • 吉安网站建设343000郑州seo培训
  • 网站备案的要求是什么样的怎么免费创建自己的网站
  • 以网站名为后缀的邮箱怎么做中国十大热门网站排名
  • 如何选择建设网站类型友情链接代码模板
  • 南头做网站公司c++培训班学费一般多少
  • wordpress大站太原网站制作优化seo公司
  • 政府网站制作公司百度注册网站怎么弄
  • 网站新增关键词2023年6月疫情恢复
  • 买到域名怎么做网站电商网站建设定制
  • 东莞 企业网站建设本周国内新闻
  • 有哪些网站可以做推文深圳关键词排名推广
  • 网站首页的文字下拉怎么做千锋教育
  • aspcms 网站地图惠州百度seo排名
  • 用自己电脑配置服务器做网站整站seo服务
  • 在网上做批发都有哪些网站什么推广方法是有效果的
  • 青云谱网站建设网络公司品牌推广