• 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如何实现可拖拽菜单

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了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;        
  


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

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

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

相关文章

  • Photoshop设计粉色金属质感的字体教程
  • jQuery表单插件jquery.form.js
  • TP框架中的钩子怎么配置调用(附代码实例)
  • PS制作超酷黑白像素文字效果
  • 详解JS,Jquery获取屏幕的宽度和高度代码
  • 使用织梦DdedCMS添加文章时同时更新所有单页面的
  • 在 MySQL 中 int (10) 和 int (11) 的区别
  • WordPress后台出现多篇英文文章
  • vue3为什么快?vue3的效率提升主要在哪方面?
  • 浅析CSS中怎么实现线性渐变(linear-gradient)

文章分类

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

最近更新的内容

    • Photoshop绘制一个复古的游戏手柄
    • 带你实现女朋友欲罢不能的网易云音乐宇宙尘埃特效
    • AI画笔工具在字体设计中的灵活运用
    • 在PHP中通过GD库创建简单的图片(图文详解)
    • 解决Laravel 8 undefined variable错误问题
    • 最新织梦漏洞,首页head之间被篡改加入异常代码解决办法
    • 分享实现PHP红包算法的思路(附开发代码)
    • Thinkphp5如何实现图片、音频和视频文件的上传功能
    • PHP开发支付宝PC扫码支付/支付宝当面付开发流程
    • Photoshop简单的绘制逼真的小汽车教程

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

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