最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue.JS實現垂直方向展開、收縮不定高度模塊的JS組件

 更新時間:2018年06月19日 16:42:56   作者:ECMAScripter  
這篇文章主要介紹了Vue.JS實現垂直方向展開、收縮不定高度模塊的JS組件,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

需求分析:

如圖,有很多高度不固定的模塊(圖中只顯示兩個,本人項目有十三個),點擊模塊標題展開相應的模塊,再次點擊此模塊匿藏,如何實現此需求并實現復用? 

 點擊紅框前:

這里寫圖片描述 

 點擊后:

這里寫圖片描述

難點分析:

模塊高度不固定。比如,本人一開始想到的方法如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    .box{
      height:500px;
      background-color:black; 
       overflow: hidden;            
    }
    .mybox-leave-active,.mybox-enter-active{
      transition: all 1s ease; 
    }
    .mybox-leave-active,.mybox-enter{
      height:0px !important;
    }
    .mybox-leave,.mybox-enter-active{
      height: 500px;
    }
  </style>
</head>
<body>
<div id="box">
  <transition name="mybox">
    <div class="box" v-show="boxshow"></div>
  </transition>
  <button @click="togglebox">按鈕</button>
</div>
</body>
<script src="../bower_components/vue/dist/vue.js"></script>
<script>
  new Vue({
    el:'#box',
    data:{
      boxshow:false
    },
    methods:{

      togglebox:function(){
        this.boxshow = !this.boxshow;
      }
    }   
  });
</script>
</html>

這種方法確實可以實現點擊展開,再次點擊收縮的需求,但是有一個明顯的缺點:限定了容器的高度,也就是每個模塊都需要固定高度,并不適用于需求場景。

解決方案:

1、實現一個函數式組件

本人命名為vertical-toggle.js
// Created by xiaoqiang on 17/04/2018.
const elTransition = '0.3s height ease-in-out, 0.3s padding-top ease-in-out, 0.3s padding-bottom ease-in-out'
const Transition = {
 'before-enter' (el) {
  el.style.transition = elTransition
  if (!el.dataset) el.dataset = {}
  el.dataset.oldPaddingTop = el.style.paddingTop
  el.dataset.oldPaddingBottom = el.style.paddingBottom
  el.style.height = 0
  el.style.paddingTop = 0
  el.style.paddingBottom = 0
 },
 'enter' (el) {
  el.dataset.oldOverflow = el.style.overflow
  if (el.scrollHeight !== 0) {
   el.style.height = el.scrollHeight + 'px'
   el.style.paddingTop = el.dataset.oldPaddingTop
   el.style.paddingBottom = el.dataset.oldPaddingBottom
  } else {
   el.style.height = ''
   el.style.paddingTop = el.dataset.oldPaddingTop
   el.style.paddingBottom = el.dataset.oldPaddingBottom
  }
  el.style.overflow = 'hidden'
 },
 'after-enter' (el) {
  el.style.transition = ''
  el.style.height = ''
  el.style.overflow = el.dataset.oldOverflow
 },
 'before-leave' (el) {
  if (!el.dataset) el.dataset = {}
  el.dataset.oldPaddingTop = el.style.paddingTop
  el.dataset.oldPaddingBottom = el.style.paddingBottom
  el.dataset.oldOverflow = el.style.overflow
  el.style.height = el.scrollHeight + 'px'
  el.style.overflow = 'hidden'
 },
 'leave' (el) {
  if (el.scrollHeight !== 0) {
   el.style.transition = elTransition
   el.style.height = 0
   el.style.paddingTop = 0
   el.style.paddingBottom = 0
  }
 },
 'after-leave' (el) {
  el.style.transition = ''
  el.style.height = ''
  el.style.overflow = el.dataset.oldOverflow
  el.style.paddingTop = el.dataset.oldPaddingTop
  el.style.paddingBottom = el.dataset.oldPaddingBottom
 }
}
export default {
 name: 'VerticalToggle',
 functional: true,
 render (h, { children }) {
  const data = {
   on: Transition
  }
  return h('transition', data, children)
 }
}

2、引用此組件

這里寫圖片描述 

 在components中注冊了此組件:

這里寫圖片描述

即可在teamplate中引用,請留意紅框文字說明部分。

這里寫圖片描述 

至此,Vue.js實現垂直展開、收縮不定高度模塊組件實現完成及應用均已完成。 

 實現效果:

這里寫圖片描述

總結

以上所述是小編給大家介紹的Vue.JS實現垂直方向展開、收縮不定高度模塊的JS組件,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • vue3.0中使用Element-Plus中Select下的filter-method屬性代碼示例

    vue3.0中使用Element-Plus中Select下的filter-method屬性代碼示例

    這篇文章主要給大家介紹了關于vue3.0中使用Element-Plus中Select下的filter-method屬性的相關資料,Filter-method用法是指從一組數據中選擇滿足條件的項,文中通過圖文以及代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • vue實現簡單圖片上傳

    vue實現簡單圖片上傳

    這篇文章主要為大家詳細介紹了vue實現簡單圖片上傳功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • Vue 401配合Vuex防止多次彈框的案例

    Vue 401配合Vuex防止多次彈框的案例

    這篇文章主要介紹了Vue 401配合Vuex防止多次彈框的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue雙向錨點實現過程簡易版(scrollIntoView)

    vue雙向錨點實現過程簡易版(scrollIntoView)

    這篇文章主要介紹了vue雙向錨點實現過程簡易版(scrollIntoView),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 深入淺析nuxt.js基于ssh的vue通用框架

    深入淺析nuxt.js基于ssh的vue通用框架

    Nuxt.js 是一個基于 Vue.js 的通用應用框架。 通過對客戶端/服務端基礎架構的抽象組織, Nuxt.js 主要關注的是應用的 UI渲染,需要的朋友可以參考下
    2019-05-05
  • Vue安裝瀏覽器開發(fā)工具的步驟詳解

    Vue安裝瀏覽器開發(fā)工具的步驟詳解

    這篇文章主要介紹了Vue安裝瀏覽器開發(fā)工具步驟詳解,本文分步驟給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • vue el-form一行里面放置多個el-form-item的實現

    vue el-form一行里面放置多個el-form-item的實現

    本文主要介紹了vue el-form一行里面放置多個el-form-item的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Vue3.0實現無限級菜單

    Vue3.0實現無限級菜單

    這篇文章主要為大家詳細介紹了基于Vue3.0實現無限級菜單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • vue實現文字檢索時候將搜索內容標紅功能

    vue實現文字檢索時候將搜索內容標紅功能

    這篇文章主要介紹了vue中實現文字檢索時候將搜索內容標紅,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • vue中@click和@click.native.prevent的區(qū)別

    vue中@click和@click.native.prevent的區(qū)別

    這篇文章主要介紹了vue中@click和@click.native.prevent的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04

最新評論

株洲县| 云南省| 奈曼旗| 河间市| 黄浦区| 贵州省| 筠连县| 元氏县| 德化县| 曲阜市| 文成县| 确山县| 兴仁县| 庆城县| 麦盖提县| 东明县| 富宁县| 镇雄县| 芜湖县| 镇江市| 商都县| 河南省| 嘉义市| 郴州市| 平和县| 平邑县| 辛集市| 衡东县| 筠连县| 琼海市| 鄂伦春自治旗| 毕节市| 吉林市| 酒泉市| 土默特左旗| 饶河县| 禹州市| 香格里拉县| 宜黄县| 遂平县| 伊春市|