使用Select2和Bootstrap进行文本截断

时间:2017-04-18 08:54:51

标签: jquery css twitter-bootstrap jquery-select2 select2

我目前遇到一个问题,表单使用Select2使选择看起来更好(并且功能更强)并结合引导程序布局。

问题在于选择的最长元素在被选中之后被切断。虽然它不是选择本身的问题,但它看起来很奇怪(特别是对于短值)并且使得用户不必检查他们选择的内容。有关示例,请参见以下屏幕截图。在这种情况下,如果用户在没有重新打开选择列表的情况下选择A或B,他将无法进行检查。

selection error

据我所知,问题可能是由Select2用来执行其操作的顶级width上的span设置引起的。我不确定如何解决它,以及最好的方法是什么。感觉最好让顶级跨度变得如此之大,但我不知道如何弄清楚它的位置。

另一种方法是将text-overflow属性设置为ellipsis。但我觉得我错过了一些更明显的东西。我无法想象以前这不是一个问题。

我的方法是否合理,或者我错过了可以解决此问题的option for Select2

MWE的代码如下,使用JQuery 1.12和Select2 4.0.3。它也可以作为fiddle

<html>
<head>
    <link rel="stylesheet" href="https://rawgit.com/select2/select2/master/dist/css/select2.min.css">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

    <script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js" ></script>
    <script type="text/javascript" src="https://rawgit.com/select2/select2/master/dist/js/select2.js"></script>

    <script>
    $(document).ready(function() {
        console.log("JS");
      $("select").select2({});
    });
    </script>
</head>
<body>
    <select id="selection">
      <option>Something</option>
      <option>Something different A</option>
      <option>Something different B</option>
    </select>
</body>
</html>

4 个答案:

答案 0 :(得分:2)

你也可以在选择div中添加填充

#selection{padding:10px;}
<html>
<head>
    <link rel="stylesheet" href="https://rawgit.com/select2/select2/master/dist/css/select2.min.css">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

    <script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js" ></script>
    <script type="text/javascript" src="https://rawgit.com/select2/select2/master/dist/js/select2.js"></script>

    <script>
    $(document).ready(function() {
        console.log("JS");
      $("select").select2({});
    });
    </script>
</head>
<body>
    <select id="selection">
      <option>Something</option>
      <option>Something different A</option>
      <option>Something different B</option>
    </select>
</body>
</html>

答案 1 :(得分:1)

试试这个:

如果您设置min-width,那么您将删除小文本。

#selection {
  min-width:150px;
}

答案 2 :(得分:1)

您可以打包 选择并使用wrapper div并将包装赋予 max-width 并提供选择 width:100%

  

HTML -

<div class="select--wrapper">
  <select id="selection">
      <option>Something</option>
      <option>Something different A</option>
      <option>Something different B</option>
    </select>
</div>
  

的CSS -

.select--wrapper {
  max-width: 200px;
  width: 100%
}

#selection {
  width: 100%;
}
  

这是一个工作示例 -

$(document).ready(function() {

  $("select").select2({});
});
.select--wrapper {
  max-width: 200px;
  width: 100%
}

#selection {
  width: 100%;
}
<link rel="stylesheet" href="https://rawgit.com/select2/select2/master/dist/css/select2.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="https://rawgit.com/select2/select2/master/dist/js/select2.js"></script>


<div class="select--wrapper">
  <select id="selection">
      <option>Something</option>
      <option>Something different A</option>
      <option>Something different B</option>
    </select>
</div>

答案 3 :(得分:0)

我遇到了同样的问题,经过大量研究,这是自2012年以来的一个已知问题,看起来它将在Select2 4.1.0-beta.0中得到解决

Github issue

目前,您可以使用以下CSS临时修复它:

.select2-selection--multiple .select2-search--inline .select2-search__field {
       width: auto !important;
}