VUE组件 之 Drawer 抽屉

一、源码地址

https://github.com/imxiaoer/DrawerForVue

 

二、效果图

 

三、具体代码

drawer.vue

复制代码

<template><div class="drawer"><div :class="maskClass" @click="closeByMask"></div><div :class="mainClass" :style="mainStyle" class="main"><div class="drawer-head"><span>{{ title }}</span><span class="close-btn" v-show="closable" @click="closeByButton">X</span></div><div class="drawer-body"><slot/></div></div></div>
</template><script>
export default {props: {// 是否打开display: {type: Boolean},// 标题title: {type: String,default: '标题'},// 是否显示关闭按钮closable: {type: Boolean,default: true},// 是否显示遮罩mask: {type: Boolean,default: true},// 是否点击遮罩关闭maskClosable: {type: Boolean,default: true},// 宽度width: {type: String,default: '400px'},// 是否在父级元素中打开inner: {type: Boolean,default: false}},computed: {maskClass: function () {return {'mask-show': (this.mask && this.display),'mask-hide': !(this.mask && this.display),'inner': this.inner}},mainClass: function () {return {'main-show': this.display,'main-hide': !this.display,'inner': this.inner}},mainStyle: function () {return {width: this.width,right: this.display ? '0' : `-${this.width}`,borderLeft: this.mask ? 'none' : '1px solid #eee'}}},mounted () {if (this.inner) {let box = this.$el.parentNodebox.style.position = 'relative'}},methods: {closeByMask () {this.maskClosable && this.$emit('update:display', false)},closeByButton () {this.$emit('update:display', false)}}
}
</script><style lang="scss" scoped>
.drawer {/* 遮罩 */.mask-show {position: fixed;top: 0;left: 0;width: 100%;height: 100%;z-index: 10;background-color: rgba(0,0,0,.5);opacity: 1;transition: opacity .5s;}.mask-hide {opacity: 0;transition: opacity .5s;}/* 滑块 */.main {position: fixed;z-index: 10;top: 0;height: 100%;background: #fff;transition: all 0.5s;}.main-show {opacity: 1;}.main-hide {opacity: 0;}/* 某个元素内部显示 */.inner {position: absolute;}/* 其他样式 */.drawer-head {display: flex;justify-content: space-between;height: 45px;line-height: 45px;padding: 0 15px;font-size: 14px;font-weight: bold;border-bottom: 1px solid #eee;.close-btn {display: inline-block;cursor: pointer;height: 100%;padding-left: 20px;}}.drawer-body {font-size: 14px;padding: 15px;}
}
</style>

复制代码

 

组件具体使用如下:

复制代码

<template><div class="box"><el-button type="primary" @click="display = true">打开抽屉</el-button><drawer title="我是一个抽屉组件" :display.sync="display" :inner="true" :width="drawerWidth" :mask="false">1. Hello, world!2. Do you like it?</drawer></div>
</template><script>
import drawer from '@/components/drawer/drawer'
export default {components: { drawer },data () {return {display: false,drawerWidth: '500px'}       }
}
</script>

复制代码

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是基金净值、单位净值、累计净值

基金知识-单位净值和累计净值 一投资者问&#xff1a;单位净值和累计净值分别指什么&#xff1f;如何通过这两个值来评定一个基金&#xff1f; 景顺长城基金管理有限公司答&#xff1a;基金资产净值是在某一时点上&#xff0c;基金资产的总市值扣除负债后的余额&#xff0c;代表…

Java生鲜电商平台-用户管理的架构与实战

Java生鲜电商平台-用户管理的架构与实战 在电商后台中&#xff0c;用户管理是运营人员管理用户的模块。这里的用户区别于运营人员&#xff0c;会在权限的角色管理中分别阐述。这里的用户包含平台的一般用户&#xff0c;会员用户等。本文将分享一下用户管理模块的设计心得。在设…

vue+Element-ui实现分页效果

当我们向后台请求大量数据的时候&#xff0c;并要在页面展示出来&#xff0c;请求的数据可能上百条数据或者更多的时候&#xff0c;并不想在一个页面展示&#xff0c;这就需要使用分页功能来去完成了。 1.本次所使用的是vue2.0element-ui实现一个分页功能&#xff0c;element-…

ListViewAutoScrollHelper

ListViewAutoScrollHelper转载于:https://www.cnblogs.com/ZacharyHodgeZou/p/4208350.html

wx.navigateTo跳转首页无效

问题: 首页A—B,B—C,C—A(回首页无效) 先来看首页,首页是由tabBar中三个页面组成 再来看下首页的代码组成 //只保留核心代码 "tabBar": { ... "list": [ { "pagePath": "pages/home/home", "te…

21款网页版html5小游戏源码

html5魅族创意的贪食蛇游戏源码下载 html5网页版打砖块小游戏源码下载 html5 3D立体魔方小游戏源码下载 html5网页版飞机躲避游戏源码下载 html5三国人物连连看游戏源码下载 js html5 2048数字游戏源码_2048网页版源码下载 html5盲打高手打飞字游戏下载_网页版英文打飞字游戏源…

Cookie的使用(js-cookie插件)

一、安装 npm install js-cookie --save二、引用 import Cookies from js-cookie三、一般使用 存到Cookie去 // Create a cookie, valid across the entire site: Cookies.set(name, value);// Create a cookie that expires 7 days from now, valid across the entire site…

js的array.some()方法

定义和用法 some() 方法用于检测数组中的元素是否满足指定条件&#xff08;函数提供&#xff09;。 some() 方法会依次执行数组的每个元素&#xff1a; 如果有一个元素满足条件&#xff0c;则表达式返回true , 剩余的元素不会再执行检测。如果没有满足条件的元素&#xff0c…

AOP集成防止连续多次点击问题

AOP即Aspect Oriented Programming的缩写,习惯称为切面编程;与OOP(面向对象编程)万物模块化的思想不同,AOP则是将涉及到众多模块的某一类问题进行统一管理,AOP的优点是将业务逻辑与系统化功能高度解耦,让我们在开发过程中可以只专注于业务逻辑,其他一些系统化功能(如路由、日志…

应用内安装部分手机出现解析错误

在做应用内升级安装apk 的时候 出现了 程序包解析出错&#xff0c;这就很难受了 明明程序包有问题&#xff0c;而且还并不是必发&#xff0c;查了下资料发现是7.0版本的问题 有好几种说法会引起这个问题 1 使用了V2包 我们在打包的时候最好不要用V2签名 2 加入临时授权 intent.…

自定义input[type=file]的兼容样式

input[type"file"]的样式在各个浏览器中的表现不尽相同&#xff1a; 1. chrome: 2. firefox: 3. opera: 4. ie: 5. edge: 另外&#xff0c;当我们规定 input[type"file"] 的高度&#xff0c;并把它的行高设置成与其高度相等后&#xff0c;chrome中难看的样…

Excel催化剂开源第37波-音视频文件元数据提取(分辨率,时长,采样率等)

上一篇提到图片元信息Exif的提取&#xff0c;当然还有一类音视频文件&#xff0c;也同样存储着许多宝贵的元数据&#xff0c;那就开源到底呗&#xff0c;虽然自己找寻过程也是蛮艰辛坎坷的&#xff0c;大家看后有收获&#xff0c;只求多多传播下&#xff0c;让前人的工作可以更…

ECharts 雷达图在类目值下面显示数值

需要实现的效果&#xff1a; 官网里面的demo显示数值&#xff0c;都是在拐点处&#xff1a; 【解决】 1、只显示类目 <div id"mychart" style"width:300px;height:300px;margin:0 auto;"></div><script>var arr1 [60,73,85,40,60];var…

RecyclerView复用item导致数据混乱

一般recyclerview会复用item以让recycler性能提升 但是我们有些时候会出现复用了之后混乱的情况 如何防止RecyclerView复用item呢 1 最好是每一个有判断的地方&#xff0c;都要写全所有情况&#xff0c;什么意思呢 if里textView设了一个值&#xff0c;false也必须设置一个值 2 …

echarts tooltip在图表范围内显示

以下两种解决方式&#xff0c;能够应对大部分出现此类问题项目 tooltip.position: 提示框浮层的位置&#xff0c;默认不设置时位置会跟随鼠标的位置。 可选&#xff1a;string, Array, Function 一、解决方法&#xff1a; 1、设置x轴固定不动 y轴上下跟随 /*设置x轴左右固定…

Vue.js 动态为img的src赋值

在vue中动态给src赋值绑定图片会显示不出来 动态添加src被当做静态资源处理了&#xff0c;没有进行编译 解决方法&#xff1a; 1、用网络地址 把图片放在cdn或自己的服务器上&#xff0c;把网络地址存在imgUrl里&#xff0c;然后直接<img :src"Url"> 2.把图片放…

项目打包部署到Tomcat

一、 使用 npm run build打包完成之后会出现一个dist文件夹&#xff0c;里面有static文件夹和一个index.html文件&#xff0c;一般我们部署在tomcat上面会将文件放在webapps文件夹下 如果不进行任何修改将dist文件夹放进去的话&#xff0c;会出现资源路径错误的问题&#xff…

算法阶段三总结

3月25日-4月4日这段时间里。我把字符串的一些基本操作和算法学了下。主要有串的基本操作&#xff0c;字符串的hash函数&#xff08;Rabin-Karp&#xff0c;ELFhash&#xff09;&#xff0c;还有KMP算法。总体感觉还是不错的。尤其清明这三天没出去&#xff0c;都呆在宿舍了&…

vue.config和editorconfig

我们在做项目的时候&#xff0c;应该给经常用到的文件配置它的别名&#xff0c;这样做&#xff0c;既可以方便引用&#xff0c;也可以防止当文件位置发生改变的时候出现错误。 配置前: import bartar from ../../components/bartar 配置后(不用再关心文件层级关系): import bar…