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

vant的picker組件設(shè)置文字超長滾動方式

 更新時間:2022年12月06日 09:30:20   作者:_木兮_  
這篇文章主要介紹了vant的picker組件設(shè)置文字超長滾動方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

picker組件設(shè)置文字超長滾動

我們的手機(jī)端使用vant來做前端UI框架。

今天在使用vant的picker組件時候,遇到了一個問題。當(dāng)文字過長的時候,vant的處理方式是ellipsis,超長部分顯示【…】

如果恰好省略號前邊內(nèi)容相同,用戶就無法區(qū)分選項了。如圖:

vant沒有提供滾動的實(shí)現(xiàn)方式,所以我們自己兼容實(shí)現(xiàn)一下。

首先,打開開發(fā)者工具看下dom結(jié)構(gòu)

我的思路是,如果在選中狀態(tài)下,內(nèi)層文字div長度大于外層的時候。給內(nèi)層增加一個滾動動畫效果。

實(shí)現(xiàn)如下:

  • 重寫.van-ellipsis兩個樣式,去掉ellipsis效果和overflow:hidden
  • 監(jiān)聽picker的change事件
  • 在dom渲染結(jié)束之后,獲取.van-picker-column__item–selected并判斷它與內(nèi)部文字的寬度
  • 如果內(nèi)部組件寬度大于外部,在添加一個animation
<template>
  <div id="app">
    <van-picker show-toolbar title="標(biāo)題" :columns="columns" @change="checkScroll" />
  </div>
</template>
<script>
export default {
  name: 'App',
  data () {
    return {
      columns: [{
        text: '浙江',
        children: [{
          text: '溫州溫州溫州溫州溫州溫州溫州-杭州',
          children: [{ text: '西湖區(qū)' }, { text: '余杭區(qū)' }],
        }, {
          text: '溫州溫州溫州溫州溫州溫州溫州-溫州',
          children: [{ text: '鹿城區(qū)' }, { text: '甌海區(qū)' }],
        }]
      }]
    }
  },
  methods: {
    checkScroll () {
      this.$nextTick(() => {
        // 獲取選中元素
        let selectedItems = [...document.querySelectorAll('.van-picker-column__item--selected')]
        selectedItems.forEach(item => {
          let child = item.querySelector('.van-ellipsis')
          if (child.offsetWidth > item.offsetWidth) { // 判斷child文字寬度
            item.classList.add('scroll')
          } else {
            item.classList.remove('scroll')
          }
        })
      })
    }
  }
}
</script>
<style lang="less" scoped>
/deep/ .van-picker-column__item--selected {
  /* 重寫選中后的效果 */
  .van-ellipsis {
    text-overflow: unset;
    overflow: visible;
  }
  /* 增加scroll類 */
  &.scroll > .van-ellipsis {
    animation: move 4s linear infinite;
  }
}
@keyframes move {
  0% { transform: translateX(100%); }
  100% { transform: translateX(-100%); }
}
</style>

這樣,當(dāng)滾動picker選中文字超長的時候,選中項就會出現(xiàn)滾動效果。

vant_picker_選擇器(搭配彈出層使用)

<van-field
  readonly
  clickable
  label="城市"
  :value="value"
  placeholder="選擇城市"
  @click="showPicker = true"
/>
<van-popup v-model="showPicker" round position="bottom">
  <van-picker
    show-toolbar
    :columns="columns"
    value-key="name" 
    @cancel="showPicker = false"
    @confirm="onConfirm"
  />
</van-popup>
<!--
重點(diǎn):自定義value-key屬性:默認(rèn)值是text
value-key這個屬性是自定義后臺返回字段作為選擇器顯示的內(nèi)容,這樣后臺返回的字段位未name時,也可以顯示了。
否則默認(rèn)的原始對象默認(rèn)是[{text:'選項一',value:'1'},{text:'選項二',value:'2'}]
-->

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • webpack中的optimization配置示例詳解

    webpack中的optimization配置示例詳解

    這篇文章主要介紹了webpack中的optimization配置詳解,主要就是根據(jù)不同的策略來分割打包出來的bundle,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • 深入了解Vue2中的的雙端diff算法

    深入了解Vue2中的的雙端diff算法

    雙端Diff在可以解決更多簡單Diff算法處理不了的場景,且比簡單Diff算法性能更好。本文主要來和大家詳細(xì)講講Vue2中的雙端diff算法的實(shí)現(xiàn)與使用,需要的可以參考一下
    2023-02-02
  • vue+elementUI多表單同時提交及表單校驗(yàn)最新解決方案

    vue+elementUI多表單同時提交及表單校驗(yàn)最新解決方案

    假設(shè)有一個頁面,需要分三步填寫三個表單,且每個表單位于獨(dú)立的組件中,然后最后保存同時提交,如何進(jìn)行表單必填項校驗(yàn),下面小編給大家介紹vue+elementUI多表單同時提交及表單校驗(yàn)最新解決方案,感興趣的朋友一起看看吧
    2024-03-03
  • Vue中Video標(biāo)簽播放解析后短視頻去水印無響應(yīng)解決

    Vue中Video標(biāo)簽播放解析后短視頻去水印無響應(yīng)解決

    這篇文章主要為大家介紹了Vue中使用Video標(biāo)簽播放?<解析后的短視頻>去水印視頻無響應(yīng)的解決方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • vue大型項目之分模塊運(yùn)行/打包的實(shí)現(xiàn)

    vue大型項目之分模塊運(yùn)行/打包的實(shí)現(xiàn)

    這篇文章主要介紹了vue大型項目之分模塊運(yùn)行/打包的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 使用vue實(shí)現(xiàn)HTML頁面生成圖片的方法

    使用vue實(shí)現(xiàn)HTML頁面生成圖片的方法

    這篇文章主要介紹了使用vue實(shí)現(xiàn)HTML頁面生成圖片的相關(guān)知識,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 淺談Vue.nextTick 的實(shí)現(xiàn)方法

    淺談Vue.nextTick 的實(shí)現(xiàn)方法

    本篇文章主要介紹了Vue.nextTick 的實(shí)現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • vue3 組合式API defineEmits() 與 emits 組件選項詳解

    vue3 組合式API defineEmits() 與 emits 組

    在Vue中,defineEmits()是Vue3組合式API中用于聲明自定義事件的,而emits選項則用于Vue2和Vue3的選項式API中,defineEmits()允許使用字符串?dāng)?shù)組或?qū)ο笮问铰暶魇录?emits選項也支持這兩種形式,且驗(yàn)證函數(shù)可以驗(yàn)證事件參數(shù),這兩種方法都是為了更規(guī)范地在組件間通信
    2024-09-09
  • Vue中@keyup.enter?@v-model.trim的用法小結(jié)

    Vue中@keyup.enter?@v-model.trim的用法小結(jié)

    這篇文章主要介紹了Vue中@keyup.enter?@v-model.trim的用法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-12-12
  • 解決Vue開發(fā)中對話框被遮罩層擋住的問題

    解決Vue開發(fā)中對話框被遮罩層擋住的問題

    在Vue的開發(fā)中,一旦我們用到對話框,經(jīng)常出現(xiàn)的問題是對話框被遮罩層擋住,怎么來解決這個問題呢?下面小編給大家?guī)砹薞ue開發(fā)中對話框被遮罩層擋住的問題及解決方法,一起看看吧
    2018-11-11

最新評論

罗平县| 赤水市| 邵阳市| 文登市| 利津县| 南丹县| 新建县| 泰州市| 阳原县| 白城市| 保康县| 伊春市| 泸定县| 抚宁县| 杭锦后旗| 云龙县| 哈巴河县| 平阴县| 黑水县| 措勤县| 正宁县| 乌审旗| 寻甸| 武胜县| 白城市| 永新县| 隆回县| 丹阳市| 洛南县| 乌兰县| 大冶市| 郎溪县| 鹤壁市| 通化市| 体育| 东兴市| 新邵县| 抚顺县| 西乡县| 莱州市| 沁源县|