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

如何建设网站兴田德润可以吗服装网站建设优点和缺点

如何建设网站兴田德润可以吗,服装网站建设优点和缺点,photoshop教程,小微企业建站第一步:创建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/599069.html

相关文章:

  • 网站建设专用术语网站优化建设广州
  • 南宁网站seo外包农林牧渔行业网站建设
  • 网站建设用什么书中国制造网外贸平台多少钱
  • 做静态网站有什么建议国内永久免费crm系统破解版
  • 建筑公司企业信用分在哪里查昆明网站排名优化费用
  • 网站建设时间查询云南人
  • wordpress 价格表插件丁的老头seo博客
  • 昆明网站搭建公司张家界建设网站
  • 网站开发设计jw100金融企业如何做好网络推广
  • 大连网站设计费用乐清在线网
  • 网站建设 万网重庆网站建设开发
  • html如何建网站绿色农业网站源码
  • 网站建设广告语临沂在线上网站建设
  • 一起做网店广州站互联网舆情监控系统
  • 二手房公司如何做网站wordpress 官网
  • 做漆包线的招聘网站义乌市网站建设代理
  • 网站备案号码查询广州市越秀区建设局网站
  • 神华两学一做网站网站建设怎么做账务处理
  • 网站建设介绍文字wordpress 调用菜单
  • 犀牛云做网站骗人wordpress 初始密码
  • 定制网站开发价格福建老区建设网站
  • 福州网站定制公司订餐网站建设
  • qq临时会话网站开发公司资质质量体系
  • 简单的网站开发模板广告型网站建设
  • html5的网站设计wordpress 网页加速
  • 手机wap网站特效品牌好的佛山网站建设价格
  • 手机网站制作教程下载南宁公司网站开发
  • 政协网站法治建设如何开发一个手机网站
  • 网站建设 空间什么系统建湖做网站哪家好
  • 网站建设分几块单页营销型网站