样式化 <select> 多个属性 [关闭]

Posted

技术标签:

【中文标题】样式化 <select> 多个属性 [关闭]【英文标题】:Styling <select> multiple Attribute [closed] 【发布时间】:2022-01-17 01:44:28 【问题描述】:

我刚刚发现了 select 标签的 multiple 属性。我在我的项目中实现了它,但它看起来不太好,我必须按住 ctrl 才能选择多个,这有点烦人。我想知道是否有任何方法可以对其进行样式设置以使其看起来更好,因为主要目标是从五个单词中选择一个或多个单词

还有代码:

    <div class="form-group">
      <label class="col-form-label">Select some options</label>
        <select class="form-control" id="aluno" multiple>
          <option selected="true" disabled>Click to select</option>
          <option>Option 1</option>
          <option>Option 2</option>
          <option>Option 3</option>
          <option>Option 4</option>
          <option>Option 5</option>
        </select>
    </div>

【问题讨论】:

你在寻找类似Select2的东西吗? 按住 ctrl 选择多个是众所周知的 UI/UX 元素,大多数需要选择多个的人都知道 “主要目标是从五个单词中选择一个或多个单词。” - 在这种情况下,我宁愿选择五个复选框+标签以... “看起来更好”不是一个特定的问题陈述。请参阅How to Ask。 【参考方案1】:

正如@mrplungjan 提到的那样——“按住 ctrl 选择多个是众所周知的 UI/UX 元素,大多数需要选择多个的人都知道。”

基本上,大多数希望从选择菜单中选择多个选项的人应该熟悉 ctrl 功能,以选择多个。这就是为什么它是 selectoption 元素的默认设置。

但是,您可以编写一个脚本来解决这个问题,并获得您想要的输出。看看这个使用 jQuery 的例子。

$('option').mousedown(function(e) 
    e.preventDefault();
    var originalScrollTop = $(this).parent().scrollTop();
    console.log(originalScrollTop);
    $(this).prop('selected', $(this).prop('selected') ? false : true);
    var self = this;
    $(this).parent().focus();
    setTimeout(function() 
        $(self).parent().scrollTop(originalScrollTop);
    , 0);
    
    return false;
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
<div class="form-group">
      <label class="col-form-label">Select some options</label>
        <select class="form-control" id="aluno" multiple>
          <option selected="true" disabled>Click to select</option>
          <option>Option 1</option>
          <option>Option 2</option>
          <option>Option 3</option>
          <option>Option 4</option>
          <option>Option 5</option>
        </select>
    </div>

查看here 以获取有关样式选择和选项元素的更多信息。应用 Bootstrap 库可能是最简单的方法。

【讨论】:

问题是关于样式,而不是行为。此外,如果这是一个重复的答案(正如使用非常旧的 jQuery 版本所建议的那样),它应该被标记为关闭,而不是重复。

以上是关于样式化 <select> 多个属性 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

样式化组件的多个道具选项

怎么设置<select>下拉列表的背景和下拉的小三角样式

在 React 中使用多个选项从 <select> 中检索值

脚本化CSS(通过JS来间接操作CSS)

html中<select>标签用法解析及如何设置select的默认选中状态

已知多个button,怎么修改他们的共有属性 c#,wpf