基于element ui的收起展開檢索條件效果

最近一直在用element ui做后臺(tái)項(xiàng)目,因?yàn)楹笈_(tái)項(xiàng)目,通常檢索條件過多,都展示出來的話占用頁(yè)面空間過大,也不美觀,所以就仿照ant design來了一波展開/收起的小操作,給大家看一下樣品先!

QQ截圖20201028093059.png

因?yàn)槭腔趀lement ui 做的,所以不免的要用到它的柵格布局,這樣我們的搜索框能達(dá)到一種屏幕上的響應(yīng)式布局。來吧,廢話不多說,先上代碼;
其中一些關(guān)鍵點(diǎn)我都在代碼里寫上了注釋,同學(xué)們要細(xì)心一點(diǎn)看喲!

<template>
  <div class="dashboard-container">
    <el-form ref="form" :model="form" label-width="80px">
      <el-row :gutter="20">
        <el-col :md="8" :sm="12">
          <el-form-item label="產(chǎn)品名稱">
            <el-input v-model="form.name" placeholder="請(qǐng)輸入產(chǎn)品名稱" />
          </el-form-item>
        </el-col>
        <el-col :md="8" :sm="12">
          <el-form-item label="產(chǎn)品類型">
            <el-select v-model="form.type" class="width-full" placeholder="請(qǐng)選擇產(chǎn)品類型">
              <el-option
                v-for="item in options"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              />
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :md="8" :sm="12">
          <el-form-item label="產(chǎn)品類型">
            <el-date-picker
              v-model="form.date"
              class="width-full"
              align="right"
              type="date"
              placeholder="選擇日期"
              :picker-options="pickerOptions"
             />
           </el-form-item>
        </el-col>
        <el-collapse-transition>
          <!-- 這里我們用v-show來判斷是否顯示那些被深深包裹的檢索條件,還涉及到一個(gè)知識(shí)點(diǎn),
          我們用v-show而不用v-if,是因?yàn)檫@里需要頻繁切換,v-show和v-if應(yīng)用不清楚
          的同學(xué)要去好好學(xué)習(xí)一下啦-->
          <div v-show="advanced">
            <el-col :md="8" :sm="12">
              <el-form-item label="產(chǎn)品類型">
                <el-date-picker
                  v-model="form.date"
                  class="width-full"
                  align="right"
                  type="date"
                  placeholder="選擇日期"
                  :picker-options="pickerOptions"
                />
              </el-form-item>
            </el-col>
            <el-col :md="8" :sm="12">
              <el-form-item label="產(chǎn)品名稱">
                <el-input v-model="form.name" placeholder="請(qǐng)輸入產(chǎn)品名稱" />
              </el-form-item>
            </el-col>
            <el-col :md="8" :sm="12">
              <el-form-item label="產(chǎn)品類型">
                <el-select v-model="form.type" class="width-full" placeholder="請(qǐng)選擇產(chǎn)品類型">
                  <el-option
                    v-for="item in options"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :md="8" :sm="12">
              <el-form-item label="產(chǎn)品類型">
                <el-date-picker
                  v-model="form.date"
                  class="width-full"
                  align="right"
                  type="date"
                  placeholder="選擇日期"
                  :picker-options="pickerOptions"
                />
              </el-form-item>
            </el-col>
            <el-col :md="8" :sm="12">
              <el-form-item label="產(chǎn)品名稱">
                <el-input v-model="form.name" placeholder="請(qǐng)輸入產(chǎn)品名稱" />
              </el-form-item>
            </el-col>
            <el-col :md="8" :sm="12">
              <el-form-item label="產(chǎn)品類型">
                <el-select v-model="form.type" class="width-full" placeholder="請(qǐng)選擇產(chǎn)品類型">
                  <el-option
                    v-for="item in options"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :md="8" :sm="12">
              <el-form-item label="產(chǎn)品類型">
                <el-date-picker
                  v-model="form.date"
                  class="width-full"
                  align="right"
                  type="date"
                  placeholder="選擇日期"
                  :picker-options="pickerOptions"
                />
              </el-form-item>
            </el-col>
            <el-col :md="8" :sm="12">
              <el-form-item label="產(chǎn)品名稱">
                <el-input v-model="form.name" placeholder="請(qǐng)輸入產(chǎn)品名稱" />
              </el-form-item>
            </el-col>
            <el-col :md="8" :sm="12">
              <el-form-item label="產(chǎn)品類型">
                <el-select v-model="form.type" class="width-full" placeholder="請(qǐng)選擇產(chǎn)品類型">
                  <el-option
                    v-for="item in options"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
          </div>
        </el-collapse-transition>
        <div class="right-handle-group">
          <el-button-group>
            <el-button type="primary" icon="el-icon-search">查詢</el-button>
            <el-button type="primary" icon="el-icon-magic-stick">重置</el-button>
          </el-button-group>
          <a style="margin-left: 8px" @click="toggleAdvanced">
            {{ advanced ? '收起' : '展開' }}
            <!-- 我們通過vue給class動(dòng)態(tài)賦值,
            添加一個(gè)三元判斷,判斷icon是向下還是向上,這個(gè)向下向的狀態(tài)是基于
            advanced的狀態(tài) -->
            <i :class="advanced ? 'el-icon-arrow-up' : 'el-icon-arrow-down'" />
          </a>
        </div>
      </el-row>
    </el-form>
  </div>
</template>

這里是html布局,具體一行顯示幾個(gè)。我們可以調(diào)整每一個(gè)<el-col>屬性上:md/:sm的數(shù)字。
這里我們看到一個(gè)element ui的內(nèi)置動(dòng)畫,<el-collapse-transition>,他給收起和展開帶上了一個(gè)transition飄柔,過渡起來更柔順,嘎嘎嘎。


QQ截圖20201028093257.png

下面我們來看js代碼;

<script>
export default {
  name: 'collapsePanel',
  data() {
    return {
      //select選項(xiàng)
      options: [{
        value: '選項(xiàng)1',
        label: '黃金糕'
      }, {
        value: '選項(xiàng)2',
        label: '雙皮奶'
      }, {
        value: '選項(xiàng)3',
        label: '蚵仔煎'
      }, {
        value: '選項(xiàng)4',
        label: '龍須面'
      }, {
        value: '選項(xiàng)5',
        label: '北京烤鴨'
      }],
      //時(shí)間日期組件
      pickerOptions: {
        disabledDate(time) {
          return time.getTime() > Date.now()
        },
        shortcuts: [{
          text: '今天',
          onClick(picker) {
            picker.$emit('pick', new Date())
          }
        }, {
          text: '昨天',
          onClick(picker) {
            const date = new Date()
            date.setTime(date.getTime() - 3600 * 1000 * 24)
            picker.$emit('pick', date)
          }
        }, {
          text: '一周前',
          onClick(picker) {
            const date = new Date()
            date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
            picker.$emit('pick', date)
          }
        }]
      },
      //我們給搜索條件綁定的表單對(duì)象
      form: {
        name: '',
        type: '',
        date: ''
      },
      advanced: false,//這個(gè)是關(guān)鍵,我們用它來判斷展開/收起
    }
  },
  mounted() {

  },
  methods: {
    //一個(gè)簡(jiǎn)單的js,點(diǎn)擊文字,改變狀態(tài)
    toggleAdvanced() {
      this.advanced = !this.advanced
    }
  }
}
</script>

最后呢,我們?cè)賮硪欢蝐ss,因?yàn)橄吕蚝腿掌诮M件這種,不能撐滿el-col劃分出來的塊,所以需要我們手動(dòng)來給個(gè)百分百寬度的樣式,這樣看起來更好一些。

<style lang="scss" scoped>
.dashboard {
  &-container {
    margin: 30px;
  }
  &-text {
    font-size: 30px;
    line-height: 46px;
  }
}
.width-full{width: 100%;}
.right-handle-group{float: right;}
</style>

最后,呈上代碼效果。是不是覺得很簡(jiǎn)單,快動(dòng)手試試吧。紙上得來終覺淺,絕知此事要躬行,同學(xué)們要上手多多練習(xí)啊。前端小白,在線裝逼。給我呂某人一個(gè)面子,別打臉。


QQ截圖20201028095423.png

感覺對(duì)您有用的麻煩給個(gè)小心心,謝謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(píng)論聯(lián)系作者。

友情鏈接更多精彩內(nèi)容