问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

vue怎么引入RangePicker?

发布网友 发布时间:2022-04-23 10:42

我来回答

2个回答

懂视网 时间:2022-05-14 19:57

本篇文章给大家带来的内容是关于基于vue实现简单range的代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

废话不多说先上成果图

2340175370-5b96f78f19eda_articlex.gif

实现思路

主要分界面与逻辑两大块

界面分为5个部分

  • 左滑块长度

  • 左内容位置

  • 中间长度

  • 右滑块长度

  • 右内容位置

  • 逻辑

  • touch3个事件

  • 各滑块长度及位置计算

  • 选中时变色

  • 具体实现步骤
    1. 首先我们明白整个容器的长度是不变的等于左边+中间+右边所以我们可以通过先获取总的容器的宽度并用变量进行保存,这里我用的就是屏幕的宽度。

    this.rangeWidth = document.body.clientWidth
    1. 添加vue的三种touch事件

    @touchstart.stop.prevent="leftTextTouchStart" //按下 
    @touchmove.stop.prevent="leftTextTouchMove" //滑动 
    @touchend.stop.prevent="leftTextTouchEnd" //松开//右滑块,同上 
    @touchstart.stop.prevent="rightTextTouchStart" 
    @touchmove.stop.prevent="rightTextTouchMove" 
    @touchend.stop.prevent="rightTextTouchEnd"
    1. 使用类绑定的方式,在touchStart事件触发的方式,修改点击的滑块的样式,在松开时触发touchend事件,恢复原来的样式

    //滑动事件方法
    leftTextTouchStart() {
     this.leftClick = true;
    }, 
    leftTextTouchEnd() {
     this.leftClick = false;
    },
    //类样式绑定
    :class="{check_text_p:leftClick}"
    1. 滑动时三大块核心宽度及位置的计算,因为滑动中坐标轴是实时变化,这里我们使用vue的计算属性进行操作

    rangeWidth //整个容器的宽度
    leftWidth //左边滑动的距离,通过滑动事件定义
    rightWidth //右边滑动的距离,通过滑动事件定义
    width() {
     return Math.min(Math.max(0, this.rangeWidth - this.leftWidth - this.rightWidth), this.rangeWidth)//内容宽度应等于总宽度减去左右两边,且大于等于0小于等于总宽度
    }
    left() { 
     return Math.max(this.leftWidth, 0)//防止左滑出界面
    }
    right() {
     if (this.left + this.rightWidth <= this.rangeWidth) return Math.max(this.rightWidth - 0.5, 0)//防止右滑出界面
    }
    1. 滑动事件中,界面变化及左右两边滑动距离的记录

    leftTextTouchMove(e) {
     let touch = e.changedTouches[0];
     let clientX = touch.clientX;//获取滑动事件的横坐标值 
     if (clientX >= 0) {//只检测滑块在坐标值在屏幕内 
     if (this.left + this.right <= this.rangeWidth) {//防止左右滑块位置倒置  
      this.leftWidth = clientX;//左滑块距离等于x坐标  //界面操作  
      $('#nowRange').css({'left': this.left, 'width': this.width});
      $('#leftText').css({'left': this.left});
      $('#leftImg').css({'left': this.left}); 
     } 
     }
    }
    rightTextTouchMove(e) {
     let touch = e.changedTouches[0];
     let clientX = touch.clientX;//获取滑动事件的横坐标值 
     if (clientX <= this.rangeWidth) {//只检测滑块在坐标值在屏幕内 
     this.rightWidth = this.rangeWidth - clientX;//右边滑块距离等于总长度减去滑动横坐标 
     if (this.left + this.right <= this.rangeWidth) {//防止左右滑块位置倒置  //界面变化  
      $('#nowRange').css({'width': this.width});
      $('#rightText').css({'right': this.right});
      $('#rightImg').css({'right': this.right});
     } 
     }
    },

    6.文本内容通过计算值便可实现

    leftText() {
     let num = parseInt(this.left / this.rangeWidth * 100);
     if (num === 0 || isNaN(num)) return '不限'; 
     return num + 'k';
    }
    rightText() {
     if (this.rangeWidth === 0) return '不限'; 
     let num = parseInt((this.rangeWidth - this.right) / this.rangeWidth * 100);
     if (num >= 0) {
     if (num === 100) return '不限';
     return num + 'k'; 
     }
    }

    核心代码就这些了。

    热心网友 时间:2022-05-14 17:05

    包里面是没有RangePicker这个函数的,所以你导进来解构是会报错的。我看这个包里面只有以下函数:
    Affix,
    Anchor,
    AutoComplete,
    Alert,
    Avatar,
    BackTop,
    Badge,
    Breadcrumb,
    Button,
    Calendar,
    Card,
    Collapse,
    Comment,
    Carousel,
    Cascader,
    Checkbox,
    Col,
    ConfigProvider,
    DatePicker,
    Divider,
    Dropdown,
    Empty,
    Form,
    FormModel,
    Icon,
    Input,
    InputNumber,
    Layout,
    List,
    LocaleProvider,
    message,
    Menu,
    Mentions,
    Modal,
    notification,
    Pagination,
    Popconfirm,
    Popover,
    Progress,
    Radio,
    Rate,
    Row,
    Select,
    Slider,
    Spin,
    Statistic,
    Steps,
    Switch,
    Table,
    Transfer,
    Tree,
    TreeSelect,
    Tabs,
    Tag,
    TimePicker,
    Timeline,
    Tooltip,
    Upload,
    Drawer,
    Skeleton,
    Result,
    Descriptions,
    PageHeader,
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... elementadmin登陆页面被重定向刷新卡死 破电话Vue Vlog剪视频卡死了怎麼办? visa借记卡能够给vue交费吗 用398这三张卡片在VUE的最大的三位数与最小的三位数相差多少。 vue不同页面引用同一个tab选项卡组件,选中效果怎么实现 vue中点击div里的当前元素添加class删除其他兄弟元素的class? vuejs代码中的一个符号不懂什么意思? vue考试能刷的信用卡 vue选项卡切换跟路由切换的区别? 如何优雅的使用vue+vux开发app vue新建项目卡在project的位置了怎么办,点enter没用 利用vue如何实现标签实现第一个tab标签页 适合牛宝宝的男孩名字有什么? VUE卡点软件没法用怎么解决? 如何封装vue中的参数 好听的姓牛的男孩名字有哪些? 使用农行K宝输入密码时电脑要黑屏是怎么回事? 谁知道电脑中那个下面的小下划线怎么输入 用电脑怎么打下划线? 笔记本上打字怎么打下划线? 医学包括哪几个科? airpods pro连电脑卡顿 农行企业网银输入密码后黑屏怎么解决? 关于电脑CPU问题? cpu常见故障现象与解决办法有哪些 cpu散热器问题? cpu风扇的常见故障有哪些 CPU常见问题及解决方法? 电脑CPU怎样保养和常见的问题? CPU性能不好怎么办? CPU常见的故障是什么? 电脑开机不了提示说cpu有问题,应怎么办? 关于CPU性能的问题 常见的三菱PLC CPU电路板常见的故障及处理方法有哪些? 很多人认为《冰上的尤里》中勇利更爱维克托,对此你怎么看? 勇利和维克托是恋人吗 勇利×维克多车五分钟是在哪一集 《冰上的尤利》中,维克多和勇利谁攻谁受 胜生勇利在哪买的戒指 勇利和维克托最后真的会结婚吗