亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

vue 2.0封裝model組件的方法

2019-11-19 15:54:35
字體:
來源:轉載
供稿:網友

本文介紹了vue 2.0封裝model組件的方法,分享給大家,希望對大家有所幫助

單文件組件

使用單文件組件封裝model的模板、邏輯和樣式,之后就可以在頁面中調用此通用組件。

需求

model有兩個使用場景:

1、備注/修改密碼(簡易):

在屏幕中垂直居中
2、添加/修改/展示信息(復雜):

距離屏幕頂部200px,內容過長時可滾動。

3、常規要求(共同點):

標題,關閉icon

點擊確定/關閉/遮罩,隱藏model組件

分析上述需求點,得到如下圖:


  • wrapper:負責遮蓋屏幕
  • inner:負責垂直居中/距頂部200px
  • title:可變化標題
  • content:可變化的內容區域

方案

1、Prop傳參
title(標題)、show(隱藏/顯示)、width(寬度)、type(居中/頂部)

2、自定義事件
關閉model

3、slot分發
內容區域可自定義

4、滾動穿透

具體實現

template

 <div class="model-mask" v-show="show">  <div :class="[type === 'top' ? 'model-wrapper-top' : 'model-wrapper']" @click="close">   <div :class="[type === 'top' ? 'model-container-top' : 'model-container']"    :style="{width:width + 'px'}">    <div class="model-header">     <span>{{title}}</span>     <i class="close-empty" @click="close">      <Icon       type="ivu-icon ivu-icon-ios-close-empty"       size="25" />     </i>    </div>    <div class="model-body">     <slot></slot>    </div>   </div>  </div> </div>

script

 export default { name: 'MyModel', props: {  title: String,  show: Boolean,  width: Number,  type: String }, data () {  return {   scrollTop: ''  } }, watch: {  show: function (val, oldVal) {   function getScrollTop () {    return document.body.scrollTop || document.documentElement.scrollTop   }   if (val) {    // 在彈出層顯示之前,記錄當前的滾動位置    this.scrollTop = getScrollTop()    let body = document.querySelector('body')    body.className = 'not-scroll'    // 把脫離文檔流的body拉上去!否則頁面會回到頂部!    document.body.style.top = -this.scrollTop + 'px'   }  } }, methods: {  close: function (e) {   function to (scrollTop) {    document.body.scrollTop = document.documentElement.scrollTop = scrollTop   }   let target = e.srcElement || e.target   if (target.className === 'model-wrapper' ||     target.className.indexOf('ivu-icon-ios-close-empty') > -1 ||     target.className === 'model-wrapper-top') {    this.$emit('close')    let body = document.querySelector('body')    body.className = ''    // 滾回到老地方!    to(this.scrollTop)   }  } }}

style

 <style scoped lang="scss">.model-mask { height: 100%; position: fixed; top: 0; bottom: 0; left: 0; right: 0; z-index: 1000; background: rgba(0, 0, 0, .5);}/** * 垂直居中 */.model-wrapper { height: 100%; text-align: center;}.model-wrapper:before { content: ""; display: inline-block; height: 100%; vertical-align: middle;}.model-container { position: relative; display: inline-block; vertical-align: middle; background-color: white; text-align: left; box-shadow: 0 5px 14px 0 rgba(0,0,0,0.15); border-radius: 6px; overflow: hidden; z-index: 1050;}/** * 距離頂部100px,可滾動 */.model-wrapper-top { position: relative; height: 100%; overflow-x: hidden; overflow-y: scroll;}.model-container-top { margin: 100px auto; background-color: white; text-align: left; box-shadow: 0 5px 14px 0 rgba(0,0,0,0.15); border-radius: 6px; overflow: hidden;}.close-empty { position: absolute; right: 16px; top: 10px; overflow: hidden; cursor: pointer; z-index: 1100;}.model-header { position: relative; height: 45px; line-height: 45px; padding: 0 20px; font-size: 14px; color: #999; border-bottom: 1px solid #eee;}</style>

引用

 <button type="button" @click="showModel">戳我呀</button>import MyModel from '../componets/model.vue'export default { name: 'test', components: {  MyModel }, data () {  return {   show: false  } }, methods: {  /**   * 打開model   */  closeModel: function () {   this.show = false  },  /**   * 關閉model   */  showModel: function () {   this.show = true  } }}

引用一

 <my-model title="標題" :width="400" :show="show" v-on:close="closeModel">   <!-- slot -->   <div class="tips">     <p>this is content area。</p>   </div>  </my-model>

引用二

 <my-model type="top" title="標題" :width="400" :show="show" v-on:close="closeModel">   <!-- slot -->   <div class="tips">     <p v-for="i in 50">this is content area。</p>   </div>  </my-model>

demo

垂直居中


距頂部200px,可滾動

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久九九国产精品怡红院| 国产主播喷水一区二区| 久久久日本电影| 久久久97精品| 亚洲aⅴ男人的天堂在线观看| 精品久久久精品| 91麻豆国产精品| 亚洲一级一级97网| 成人h片在线播放免费网站| 国产精品老牛影院在线观看| 日韩av中文字幕在线| 亚洲国产日韩精品在线| 91亚洲国产成人久久精品网站| 欧美成人激情视频免费观看| 亚洲第一区中文99精品| 欧美三级欧美成人高清www| 成人xxxx视频| 久久久亚洲成人| 亚洲天堂av在线播放| 欧美视频精品一区| 欧美激情成人在线视频| 久久精品国产成人| 欧洲成人免费视频| 亚洲国产精品久久久久秋霞不卡| 中文字幕av一区| 欧美在线日韩在线| 国产精品美女久久久久av超清| 97国产一区二区精品久久呦| 国产一区欧美二区三区| 欧美中文字幕第一页| 日日噜噜噜夜夜爽亚洲精品| 亚洲四色影视在线观看| 国产精品一区二区三区成人| 深夜福利亚洲导航| 久久精品国产2020观看福利| 精品久久久在线观看| 亚洲男人天堂九九视频| 久久精品福利视频| xvideos亚洲| 欧美在线视频在线播放完整版免费观看| 久久中文字幕一区| 97热精品视频官网| 亚洲成人激情图| 欧美日韩性视频| 亚洲欧美激情在线视频| 亚洲xxx自由成熟| 国产精品麻豆va在线播放| 亚洲一区二区国产| 欧美大尺度在线观看| 2019中文字幕免费视频| 最近2019年手机中文字幕| 成人在线免费观看视视频| 69久久夜色精品国产69| 亚洲美女激情视频| 亚洲国产美女久久久久| 精品国产户外野外| 国产视频精品xxxx| 一级做a爰片久久毛片美女图片| 欧美亚洲一级片| 国产成人小视频在线观看| 亚洲欧美日韩天堂| 国产91在线播放| 精品视频www| 亚洲美女精品成人在线视频| 原创国产精品91| 日韩av在线影院| 68精品国产免费久久久久久婷婷| 欧洲成人午夜免费大片| 91精品国产91久久久| 国产丝袜精品第一页| 97视频在线观看视频免费视频| 亚洲欧洲免费视频| 欧美xxxwww| 亚洲欧洲一区二区三区久久| 91av中文字幕| 亚洲精品国产免费| 久久精品国产电影| 欧美资源在线观看| 亚洲免费一在线| 国产日韩精品在线| 成人国产精品一区| 精品在线小视频| 亚洲国产欧美在线成人app| 日韩乱码在线视频| 国产精品女主播| 欧美电影免费观看网站| 亚洲精品国产精品乱码不99按摩| 日韩资源在线观看| 欧美激情精品久久久久久变态| 亚洲二区在线播放视频| 久久久久久12| 国产精品视频最多的网站| 国产精品日韩专区| 91伊人影院在线播放| 亚洲v日韩v综合v精品v| 国产一级揄自揄精品视频| 久久亚洲精品中文字幕冲田杏梨| 在线不卡国产精品| 热久久免费视频精品| 午夜精品一区二区三区视频免费看| 国产欧美精品一区二区三区-老狼| 伊人久久五月天| 国产精品免费久久久久影院| 精品丝袜一区二区三区| 97国产suv精品一区二区62| 欧美日韩国产精品一区二区不卡中文| 国产精品老牛影院在线观看| 日本精品视频网站| 久久久亚洲欧洲日产国码aⅴ| 欧美日韩国产综合视频在线观看中文| 黑人欧美xxxx| 1769国产精品| 色综合伊人色综合网站| 亚洲欧洲一区二区三区久久| 国产精品三级网站| 亚洲成年人在线播放| 国产精品免费一区豆花| 麻豆成人在线看| 久久久www成人免费精品张筱雨| 91精品久久久久久久久久另类| www国产亚洲精品久久网站| 日韩欧美有码在线| 懂色aⅴ精品一区二区三区蜜月| 国产精品久久久久久久一区探花| 成人444kkkk在线观看| 91欧美视频网站| 一区二区三区动漫| 国产精品激情自拍| 日韩一区二区在线视频| 97成人精品视频在线观看| 色琪琪综合男人的天堂aⅴ视频| 日韩美女免费观看| 国产精品91在线观看| 91视频国产精品| 久久人人97超碰精品888| 欧美老女人bb| 91久久久久久国产精品| 国产婷婷97碰碰久久人人蜜臀| 色综合久久88| 国产精品a久久久久久| 欧美激情xxxx性bbbb| 中文字幕一区日韩电影| 国产精品久久久久久久久粉嫩av| 亚洲一区久久久| 欧美片一区二区三区| 亚洲一区二区少妇| 久久91亚洲人成电影网站| 久久久天堂国产精品女人| 欧美大人香蕉在线| 日韩美女免费观看| 欧美大片网站在线观看| 精品自在线视频| 欧美一级黄色网| 亚洲日韩欧美视频一区| 欧洲精品久久久| 亚洲国产免费av| 97精品国产91久久久久久| 亚洲老头老太hd| 久久伊人91精品综合网站| 久久久www成人免费精品| 日韩美女免费线视频| 久久久久久久久久婷婷| 精品视频在线导航| 欧美激情喷水视频|