• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > vue.js如何实现可拖拽菜单

vue.js如何实现可拖拽菜单

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了vue.js菜单,可拖拽菜单等相关知识,希望对您有所帮助

vue.js实现可拖拽菜单的方法:【import "@/assets/second.css";export default {name: "HelloWorld",directives: {move(el, bindings) {...】。


vue.js如何实现可拖拽菜单


在给出正式的实现代码之前,我们要先来了解一点相关知识点。


知识点一:

vue中的自定义指令 directive

// 注册一个全局自定义指令 `v-focus`Vue.directive('focus', {  // 当被绑定的元素插入到 DOM 中时……  inserted: function (el) {    // 聚焦元素    el.focus()  }}) // 注册局部自定义指令 directives: {  focus: {    // 指令的定义    inserted: function (el) {      el.focus()    }  }}// 在此我们用的是局部

知识点二:js

onmousedown             :鼠标按下事件clientX                 :时鼠标指针相对于浏览器页面(或客户区)的水平坐标document.getElementById :通过id获取节点offsetWidth             :获取的是盒子最终的宽onmousemove             :鼠标移动事件 onmouseup               :鼠标释放事件

效果图:


vue.js如何实现可拖拽菜单


vue.js如何实现可拖拽菜单


页面代码:

<template>  <el-container>    <el-main>      <div class="myBox">        <div id="silderLeft">          <div class="menuList">侧栏菜单区</div>          <div class="moveBtn" v-move></div>        </div>        <div class="silderRight">右边自适应大小,黄色的为拖拽的按钮</div>      </div>    </el-main>  </el-container></template> <script>import "@/assets/second.css";export default {  name: "HelloWorld",  directives: {    move(el, bindings) {      el.onmousedown = function(e) {        var init = e.clientX;        var parent = document.getElementById("silderLeft");        var initWidth = parent.offsetWidth;        document.onmousemove = function(e) {          var end = e.clientX;          var newWidth = end - init + initWidth;          parent.style.width = newWidth + "px";        };        document.onmouseup = function() {          document.onmousemove = document.onmouseup = null;        };      };    }  },  data() {    return {      msg: "我是第二页"    };  },  methods: {},  mounted() {},  created() {},  updated() {}};</script> <!-- Add "scoped" attribute to limit CSS to this component only --><style scoped></style>

样式代码:

.myBox{    width: 100%;;    height: 700px;    border: 1px solid red;    display: flex;}#silderLeft{    width: 250px;    height: 100%;        background-color: #999;    position: relative;    /* overflow-y: auto; */}/* 拖动条 */.moveBtn{    height: 100%;    width: 10px;    /* opacity: 0; */    position: absolute;    right: 0px;    top: 0;    cursor: col-resize;    background-color: yellow;}.menuList{    background-color: yellowgreen;    /* height: 120%; */}.silderRight{    height: 100%;    background-color: sandybrown;    flex: 1;}

可以修改自定义命令,设置一个最小拖拽宽度

directives: {  move(el, bindings) {    el.onmousedown = function(e) {      var init = e.clientX;      console.log('init',init);      var parent = document.getElementById("sidebar");      var initWidth = parent.offsetWidth;      document.onmousemove = function(e) {        var end = e.clientX;        // end - init表示鼠标移动的距离        // end为鼠标移动的宽度,可用于设置最小宽度        if(end > 250){          var newWidth = end - init + initWidth;          parent.style.width = newWidth + "px";        }else{          end = 250;          // 最小宽度242          parent.style.width = 242 + "px";        }      };      document.onmouseup = function() {        document.onmousemove = document.onmouseup = null;      };    };  }}



分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • vue.js怎么实现二级下拉悬浮菜单
  • vue.js如何实现可拖拽菜单

相关文章

  • 2022-04-29PHP存入mysql乱码怎么办
  • 2022-04-29PHP怎么指定跳出几层循环
  • 2022-04-29wordpress优化:纯代码禁止文章自动保存及修订版本的方法
  • 2022-04-29PHP重定向如何实现数据不丢失?
  • 2022-04-29浅谈如何在制作dedecms模板中进行一些SEO设置
  • 2022-04-29MySQL大数据分页查询性能优化
  • 2022-04-29解析关于Thinkphp5复合型缓存的使用问题
  • 2022-04-29关于在页面SEO优化中H标签的正确使用方法
  • 2022-04-29PS广告创意设计实例——拼出来的艺术
  • 2022-04-29Photoshop打造超酷的火焰汽车

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • PHP如何实现禁止浏览器缓存
    • PHPcms v9调用热门文章的两种方法
    • WordPress图片显示模糊的问题
    • 优化的实质是什么?
    • 解决phpMyadmin给MySQL数据表创建触发器遇到的问题
    • 服务器宝塔面板Redis无法随系统启动怎么办呢
    • 帝国CMS关闭前台不需要功能方法
    • DedeCMSV5.6版自动采集功能规则使用基本知识详细讲
    • Photoshop制作漂亮火焰翅膀视频教程
    • PTcms4.28安装搭建详细教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有