国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

VUE組件中的 Drawer 抽屜實現代碼

2019-11-19 11:04:26
字體:
來源:轉載
供稿:網友

因為項目中用的是 element-ui 框架,而這個框架并沒有抽屜組件,所以自己實現一個,具體代碼如下:

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.parentNode   box.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>

總結

以上所述是小編給大家介紹的VUE組件中的 Drawer 抽屜實現代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 福建省| 弋阳县| 崇信县| 乐安县| 安化县| 左贡县| 渭南市| 洱源县| 包头市| 保亭| 平乐县| 衢州市| 综艺| 蒲江县| 冀州市| 潜江市| 韩城市| 措美县| 旬邑县| 万盛区| 长顺县| 仁怀市| 惠水县| 五寨县| 伊春市| 襄垣县| 永宁县| 民勤县| 松潘县| 固始县| 和林格尔县| 贵州省| 肃宁县| 霍邱县| 清远市| 乡宁县| 新晃| 禄劝| 富宁县| 方城县| 广昌县|