使用 Select2 和 Bootstrap 截断文本
Text cut-off with Select2 and Bootstrap
我目前遇到一个表单问题,该表单使用 Select2 结合 bootstrap 布局使选择看起来更好(并且更实用)。
问题是所选内容中最长的元素在被选中后被截断。虽然这不是选择本身的问题,但它看起来很奇怪(尤其是对于短值)并且让用户不必费力地检查他们选择的内容。有关示例,请参见以下屏幕截图。在这种情况下,如果不重新打开选择列表,用户将无法在他选择 A 或 B 时进行检查。
据我所知,问题可能是由 Select2 用来执行其操作的顶层 span
上设置的 width
引起的。我不确定如何修复它以及最好的方法是什么。感觉让顶层跨度稍微大一点是最好的,但我不确定如何确定它的设置位置。
另一种方法是将 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>
试试这个:
如果你设置min-width
那么你会去掉小字。
#selection {
min-width:150px;
}
你也可以像这样在 select 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>
你可以 wrap select 用 wrapper div
并给那个 wrapper a max-width 并给出 select 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%;
}
Here is an working example-
$(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>
我遇到了同样的问题,经过大量研究,这是一个自 2012 年以来的已知问题,看起来它将在 Select2 4.1.0-beta.0 中修复
目前,您可以使用以下CSS暂时修复它:
.select2-selection--multiple .select2-search--inline .select2-search__field {
width: auto !important;
}
我目前遇到一个表单问题,该表单使用 Select2 结合 bootstrap 布局使选择看起来更好(并且更实用)。
问题是所选内容中最长的元素在被选中后被截断。虽然这不是选择本身的问题,但它看起来很奇怪(尤其是对于短值)并且让用户不必费力地检查他们选择的内容。有关示例,请参见以下屏幕截图。在这种情况下,如果不重新打开选择列表,用户将无法在他选择 A 或 B 时进行检查。
据我所知,问题可能是由 Select2 用来执行其操作的顶层 span
上设置的 width
引起的。我不确定如何修复它以及最好的方法是什么。感觉让顶层跨度稍微大一点是最好的,但我不确定如何确定它的设置位置。
另一种方法是将 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>
试试这个:
如果你设置min-width
那么你会去掉小字。
#selection {
min-width:150px;
}
你也可以像这样在 select 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>
你可以 wrap select 用 wrapper div
并给那个 wrapper a max-width 并给出 select 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%;
}
Here is an working example-
$(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>
我遇到了同样的问题,经过大量研究,这是一个自 2012 年以来的已知问题,看起来它将在 Select2 4.1.0-beta.0 中修复
目前,您可以使用以下CSS暂时修复它:
.select2-selection--multiple .select2-search--inline .select2-search__field {
width: auto !important;
}