整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          下拉框select美化(需要js的參與)

          html 布局
          <div class="select dowebok">
              <span class="placeholder">請選擇</span>
              <ul>
                  <li>醫療</li>
                  <li>保險</li>
                  <li>媒體</li>
                  <li>銀行</li>
              </ul>
          </div>
          css code
          .select {
              position: relative;
              display: block;
              margin: 0 auto;
              width: 100%;
              max-width: 325px;
              color: #cccccc;
              vertical-align: middle;
              text-align: left;
              user-select: none;
              -webkit-touch-callout: none;
          }
          .select .placeholder {
              position: relative;
              display: block;
              background-color: #393d41;
              z-index: 1;
              padding: 1em;
              border-radius: 2px;
              cursor: pointer;
          }
          .select .placeholder:hover {
              background: #34383c;
          }
          .select .placeholder:after {
              position: absolute;
              right: 1em;
              top: 50%;
              transform: translateY(-50%);
              font-family: 'FontAwesome';
              content: '\f078';
              z-index: 10;
          }
          .select.is-open .placeholder:after {
              content: '\f077';
          }
          .select.is-open ul {
              display: block;
          }
          .select.select--white .placeholder {
              background: #fff;
              color: #999;
          }
          .select.select--white .placeholder:hover {
              background: #fafafa;
          }
          .select ul {
              display: none;
              position: absolute;
              overflow: hidden;
              width: 100%;
              background: #fff;
              border-radius: 2px;
              top: 100%;
              left: 0;
              list-style: none;
              margin: 5px 0 0 0;
              padding: 0;
              z-index: 100;
          }
          .select ul li {
              display: block;
              text-align: left;
              padding: 0.8em 1em 0.8em 1em;
              color: #999;
              cursor: pointer;
          }
          .select ul li:hover {
              background: #4ebbf0;
              color: #fff;
          }


          JS code
          $('.cooperation-topic .select').on('click', '.placeholder', function(e) {
              var parent = $(this).closest('.select');
              if (!parent.hasClass('is-open')) {
                  parent.addClass('is-open');
                  $('.cooperation-topic .select.is-open').not(parent).removeClass('is-open');
              } else {
                  parent.removeClass('is-open');
              }
              e.stopPropagation();}).on('click', 'ul>li', function() {
              var parent = $(this).closest('.select');
              parent.removeClass('is-open').find('.placeholder').text($(this).text());
              parent.find('input[type="hidden"]').val($(this).attr('date-value'));
          });
           
          $('body').on('click', function() {
              $('.cooperation-topic .select.is-open').removeClass('is-open');
          });

          們在開發項目時候經常會遇到這樣的需求,提供一個可選擇的下拉框,下拉列表中提供了常見的選項。當所提供選項選項無法滿足用戶需求時用戶可以自行輸入所需參數。為了滿足大部分的用戶需求我們可以封裝一個通用組件來滿足多種需求,當調用的組件的時候配置好參數就可以快速實現所需功能了。

          圖來自“互聯網”

          ?組件實現的功能:

          1,可定義組件寬度,下拉寬度與組件寬度一致;類型number,默認值100;

          2,可定義后綴,默認為空;

          3,可定義是否只讀,默認為false;

          4,可定義下拉列表選項,類型數組,默認為空;

          5,可定義輸入框中值顯示位置,分別為居左、居中、居右;分隊對應的可輸入值為left、center、right,默認居中即center。

          6,可定義下拉按鈕顯示,類型布爾值,默認為true(顯示)。

          定義模板

          這里利用了element中的popover彈出框組件中嵌套下拉列表來實現下拉選項,當選擇下拉選項中的值時將該值賦值給input框中的綁定值。而input框主要使用了些動態樣式并監聽了鼠標獲取焦點、鍵盤輸入、鍵盤刪除、鼠標失去焦點等觸發事件 ,來實時改變輸入框中顯示的值。

          定義CSS樣式

          這里我用的是scss預處理器,在修改popover組件樣式時我們用到了深度作用選擇器::v-deep,具體的可以參考文章Vue實戰072:CSS樣式中的各種深度作用選擇器的使用,這里需要注意的是控制彈出框與input框的寬度一致,在popover組件上添加一個樣式獲取上級組件的寬度以達到控制彈出窗父級組件的寬度,這樣popover中就可以獲取到父級組件的寬度,再通過深度作用選擇器來定位組件中的DOM元素并進行修改即可。

          定義功能邏輯

          props中是留給用戶調用組件時配置的參數值,前面文章Vue實戰071:Element實現WEB顏色選擇器功能中有提到過prop傳遞過來的值都是單向下行綁定,子組件不能修改由父組件傳遞過來的值。所以這里我們同樣定義一個變量來接受父級傳遞過來的值,然后通過計算屬性拼接后綴顯示。當選擇下拉選項中的值時將該值在復制給變量,同時監聽顯示值的變化并通過this.$emit將該值傳遞給父級組件。

          組件調用

          組件中只有下拉列表必須提供數據的,其他參數都定義了默認值所以可選填。這樣用戶就可以非常靈活的使用該組件了,也大大提高了組件的可使用范圍。這里沒看到組件引入是因為我對組件進行了全局自動化注冊,可以參考文章Vue實戰070:組件的局部注冊和全局注冊(含自動化注冊)功能實現。

          總結:

          以上內容是小編給大家分享的Vue實戰073:可輸入的下拉框組件功能實現,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。更多Vue實戰技巧可以參考專欄:Vue實戰系列,在此也非常感謝大家對小編的支持!

          avaweb

          在我們日常的javaweb開發過程中呢,會經常遇到獲取表單中的下拉菜單中的value以及他的text,下面我來教大家兩種方法。(推薦第二種哈~,希望大家多多評論點贊呀,上一篇文章中,各位猿媛光想著收藏,都看不到你們給我寫的評論,桑心~~)


          假如我們的select長這樣:

          <select id="myselect">

          <option value="1">test1</option>

          <option value="2" selected="selected">test2</option>

          <option value="3">test3</option>

          </select>

          第一種呢是用我們比較常見的JQuery

          var $selected = $("#myselect option").filter(":selected");

          獲取文本: $selected.text();

          獲取value: $selected.val();

          第二種呢當然是我們的原生js啦~~(推薦喲,收藏評論哈~)

          var e = document.getElementById("myselect");

          獲取文本:var text= e.options[e.selectedIndex].text;

          獲取value: e.value;

          我在后續的文章中,會分享更多更實用的開發小技巧給大家,希望大家多多關注!


          主站蜘蛛池模板: 亚洲熟女乱色一区二区三区| 国产美女一区二区三区| 日本一区二区三区免费高清在线| 亚洲无线码在线一区观看 | 亚洲日韩一区二区三区| 一区二区视频在线免费观看| 国产高清一区二区三区视频| 日本中文字幕在线视频一区| 国产在线无码视频一区二区三区 | 精品国产日韩亚洲一区在线| 日韩一区二区在线免费观看| www一区二区三区| 一区二区三区在线免费看| 亚洲av成人一区二区三区观看在线| 成人精品一区二区三区校园激情| 一区二区三区高清视频在线观看| 亚洲欧洲∨国产一区二区三区| 中文字幕av人妻少妇一区二区| 无码一区二区三区亚洲人妻 | 无码视频一区二区三区在线观看| 亚洲av成人一区二区三区| 国产嫖妓一区二区三区无码| 国精无码欧精品亚洲一区| 亚洲日韩中文字幕无码一区| 国产综合无码一区二区三区| 精品一区精品二区制服| 亚洲国产综合精品一区在线播放| 久久国产精品视频一区| 福利国产微拍广场一区视频在线| 岛国无码av不卡一区二区| 韩国精品福利一区二区三区| 国产自产V一区二区三区C| 国精产品999一区二区三区有限| 中文字幕一区二区三区乱码| 日韩高清一区二区三区不卡| 少妇特黄A一区二区三区| 国产成人精品一区在线| 鲁丝丝国产一区二区| 亚洲Av高清一区二区三区| 韩国福利一区二区三区高清视频| 在线观看中文字幕一区|