材料设计选择搜索

时间:2018-02-19 18:06:51

标签: jquery select material-design materialize

我正在通过搜索输入查找某种选择。我用materializecss构建了我的页面,但是这个库确实不支持这种类型的选择。这是我需要的最好例子 - https://material.angularjs.org/latest/demo/select#select-header。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:6)

您可以使用Select2 GitHub问题中所述的this添加搜索功能。您所需要做的就是:

  1. 将Select2样式表和javascript文件(包括jQuery)添加到您的页面。
  2. 添加额外的CSS,使Select2看起来更像是materializecss。
  3. 运行javascript代码以初始化select元素上的Select2。
  4. 
    
    $('select').select2({width: "100%"});
    
    .select2 .selection .select2-selection--single, .select2-container--default .select2-search--dropdown .select2-search__field {
        border-width: 0 0 1px 0 !important;
        border-radius: 0 !important;
        height: 2.05rem;
    }
    
    .select2-container--default .select2-selection--multiple, .select2-container--default.select2-container--focus .select2-selection--multiple {
        border-width: 0 0 1px 0 !important;
        border-radius: 0 !important;
    }
    
    .select2-results__option {
        color: #26a69a;
        padding: 8px 16px;
        font-size: 16px;
    }
    
    .select2-container--default .select2-results__option--highlighted[aria-selected] {
        background-color: #eee !important;
        color: #26a69a !important;
    }
    
    .select2-container--default .select2-results__option[aria-selected=true] {
        background-color: #e1e1e1 !important;
    }
    
    .select2-dropdown {
        border: none !important;
        box-shadow: 0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);
    }
    
    .select2-container--default .select2-results__option[role=group] .select2-results__group {
        background-color: #333333;
        color: #fff;
    }
    
    .select2-container .select2-search--inline .select2-search__field {
        margin-top: 0 !important;
    }
    
    .select2-container .select2-search--inline .select2-search__field:focus {
        border-bottom: none !important;
        box-shadow: none !important;
    }
    
    .select2-container .select2-selection--multiple {
        min-height: 2.05rem !important;
    }
    
    .select2-container--default.select2-container--disabled .select2-selection--single {
        background-color: #ddd !important;
        color: rgba(0,0,0,0.26);
        border-bottom: 1px dotted rgba(0,0,0,0.26);
    }
    
    input[type=text],
    input[type=password],
    input[type=email],
    input[type=url],
    input[type=time],
    input[type=date],
    input[type=datetime-local],
    input[type=tel],
    input[type=number],
    input[type=search],
    textarea.materialize-textarea {
      &.valid + label::after,
      &.invalid + label::after,
      &:focus.valid + label::after,
      &:focus.invalid + label::after {
        white-space: pre;
      }
      &.empty {
        &:not(:focus).valid + label::after,
        &:not(:focus).invalid + label::after {
          top: 2.8rem;
    
        } 
      }
    }
    
    <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet"/>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-alpha.4/css/materialize.min.css" rel="stylesheet"/>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-alpha.4/js/materialize.min.js"></script>
    
    <div class="input-field col s12">
      <select>
        <option value="" disabled selected>Choose your option</option>
        <option value="1">Option 1</option>
        <option value="2">Option 2</option>
        <option value="3">Option 3</option>
      </select>
    </div>
    &#13;
    &#13;
    &#13;