ドロップダウンリストに、独自のパッケージ

// HTML:

<ヘッダ> <oSelect @ changeOption = "onChangeOption":selectData = "selectData"> </ oSelect> </ヘッダ>
データ(){ 
    selectData:{ 
              defaultIndex: 0、// デフォルトで選択は、いくつかの最初のものである 
              :selectStatus falseに// 表示によって隠されたドロップダウンボックスを制御する 
              selectOptions:[] // データのドロップダウンボックス
     } 
} 

onChangeOption (インデックス、ID、houseName){ 
            // ヘッダ選択のドロップダウンリスト
            この .selectData.defaultIndex = 指数;
             この .houseId = ID;
             この .houseName = houseName; 
}
作成(){ 
          CONST = これを       この .postRequest( ''、{} 関数(データ){     //パッケージこの要求は、axiosにパッケージをチェック 
            that.houseId = DATA [0 ]。 PROJECTID;          //デフォルト最初の初期化 
            that.houseName = DATA [0 ] .projectName; 
            LETのARR = []; 
            data.forEach((ヴァル) => { 
            arr.push({
               'houseId' :val.projectIdを、
               ' houseName ' :val.projectName 
            }) 
            })
            that.selectData.selectOptions =ARR 
          })
        }、


//パッケージアセンブリoSelect
<テンプレート> 
  の<div> 
    <divのクラス= "選択ボックス" @ = "changeStatus"をクリックしてください> 
      <H5クラス= "タイトルを選択し、" V- 場合名= "selectData:= "selectData.selectOptions.length 0>"。 selectOptionsは[selectData.defaultIndex] .houseName」:クラス= "{ 'を選択し、タイトルアクティブ':selectData.selectStatus}"> 
        {{selectData.selectOptions [selectData.defaultIndex] .houseName}}
       </ H5> 
      <遷移名= "スライドダウン"> 
        <ulのクラス= "を選択し、オプションの" V-ショー= "selectData.selectStatus"> 
          <LIクラス= "を選択し、オプション項目を" V- ため= "(アイテム、インデックス)selectData.selectOptionsで" @ = "emitOption(インデックス、item.houseId、item.houseName、item.accountCode、item.sysUrl、item.pkHouse)"をクリックします。class = "{ 'を選択し、オプション-active ':selectData.defaultIndex ===インデックス} "> 
            {{item.houseName}}
           </ LI> 
          <DIV CLASS ="矢印トップ"> </ div> 
        </ UL> 
      </遷移> 
    </ DIV > 
  </ div> 
</テンプレート> 

<スクリプト> 
  輸出デフォルト{ 
    名: 'oSelect' 
    小道具:{ 
      selectData:{ 
        タイプ:オブジェクト、
        デフォルト関数(){
           リターン{} 
        } 
      } 
    }、
    方法:{ 
      emitOption(インデックス、ID、名前、accountCode、sysUrl、pkHouse){ 
        この $発する( 'changeOption' インデックス、ID、名前、accountCode、sysUrl、pkHouse)。
//                 にconsole.log(インデックス)
      }、
      changeStatus(){ 
        この .selectData.selectStatus =!この.selectData.selectStatus 
      } 
    } 
  }
 </ SCRIPT> 

<スタイル> 
  .select - ボックス{ 
    位置:相対。
    / * 最大幅:250ピクセル; * / 
    幅: 100%;  - 高さ:55×;
    / *マージン:は50px自動; * / 
    / * のborder-bottom:1pxの固体#1 d8dce5。* / 
  } 
  .select - タイトル{ 
    位置:相対。
    パディング: 0 30px 0 10pxの;
    / * 国境:1pxの固体#1 d8dce5。* / 
    国境 - 半径:5pxの; 
    トランジション - 持続時間:500ミリ秒。
    カーソル:ポインタ; 
    フォント - サイズ:32PX; 
    フォント -weight:400 ; 
    色:# 333 ; 
    テキスト - 整列:左; 
  } 
  / * 向下的三角* / 
  .select -タイトル:{後の
    内容: '' ; 
    位置:絶対; 
    高さ: 0 ; 
    幅: 0 ; 
    国境 - トップ:16pxに固体#1 d70b19。
    国境 - 左:ソリッド透明に16px; 
    国境 - 右:16pxに透明な固体; 
    右:9px; 
    トップ: 0 ; 
    下: 0 ; 
    マージン:自動; 
    トランジション - 持続時間:500ミリ秒。
    遷移 -timing- 関数:ease-  - アウト。
  } 
  .select -Title- アクティブ{ 
    ボーダー - カラー:#1 409eff; 
  } 
  / * の矢印Xianxiang * / 
  .Select -title- アクティブ:{後
    変換:回転( - 原稿180°); 
    ボーダー -トップ- カラー:#1 d70b19; 
  } 
  。 SELECT - オプション{ 
    位置:絶対; 
    / * パディング:10pxの0; * / 
    / * トップ:85px; * / 
    ボーダー:1ピクセル固体#1 d8dce5; 
    幅: 100%; 
    ボーダー - RADIUS:5pxの;
     / * 全体のUL背景白の色* /
    背景- 色:#FFF; 
    ボックス - 影:1pxの4PX 2ピクセル2ピクセル#cdcdcd。
    Z -index:999 ; 
  } 
  .select -option- 項目{ 
    パディング: 0 10pxのを、
    カーソル:ポインタ; 
    トランジション - 持続時間:300ミリ秒。
    テキスト - 整列:左; 
    色:# 999 ; 
  } 
  .select -option項目:ホバー.select-option- アクティブ{ 
    背景:#1 f1f1f1。
    / * 色:#409eff。
    * / 
    色:#1 d70b19。
  } 
  / * 箭头CSS* /
   位置:絶対;
  .arrow - トップ{
     / * 位置:絶対。
    高さ:0; 
    幅:0; 
    / *トップ:-7px。* / 
    / * のborder-bottom:20ピクセル固体#409eff。* / 
    / * #d8dce5 * / 
    / * 国境左:20ピクセル固体透明。* / 
    / * / *のborder-right:20ピクセル固体透明。* / 
    / * 左:0; 
    右:0; * / 
    / * マージン:自動; 
    z屈折率:99。* / 
  } 
  / * 点击之后的向上的三角* / 
  / * .arrowトップ:{後に
   コンテンツ: ''; 
   表示ブロック; 
   高さ:0;
   幅:0; 
   border-bottom:20ピクセル固体#409eff。
   国境左:20ピクセル固体透明。
   border-right:20ピクセル固体透明。
   右:5pxの; 
   トップ:-55px; 
   z屈折率:99。
  } * / 
  / * 下拉框显示隐藏动画* / 
  .slideダウンの入る活性、.slide-ダウン休暇{ 
    遷移:全.3s容易 -  - アウト。
    変換 -origin:0 トップを。
    変換:scaleYの( 1 ); 
  } 
  .slide -down- {入力
    変換:scaleYの( 0 )。
  } 
  .slideダウンの-leave- アクティブ{ 
    遷移:全.3s容易 -  - アウト。
    変換 -origin:0 トップを。
    変換:scaleYの( 0 ); 
  }
 </スタイル>
 
 

 

効果: 

 

 

おすすめ

転載: www.cnblogs.com/panax/p/10960527.html