我喜欢https://github.com/ivaynberg/select2中的select2框 我使用format:选项来格式化每个元素,它看起来很棒。
除了由于图像而选择的元素大于选择框的高度外,一切都很好。
我知道如何更改宽度,但是如何更改高度以便在选择元素之后,它会显示完整的内容(约150px)
这是我的启蒙:
<script>
$("#selboxChild").select2({
matcher: function(term, text) {
var t = (js_child_sponsors[text] ? js_child_sponsors[text] : text);
return t.toUpperCase().indexOf(term.toUpperCase()) >= 0;
},
formatResult: formatChild,
formatSelection: formatChild,
escapeMarkup: function(m) {
return m;
}
});
</script>
这是我的选择框
<select id="selboxChild" style="width: 300px; height: 200px">
<option value="">No child attached</option>
</select>
澄清:我不希望每个选项的高度都改变 我在选择一个孩子后,正在寻找选择框来改变身高。
所以当页面首次加载时会显示“没有选择孩子” 当您单击下拉菜单并选择一个孩子时,您会看到孩子的图像。 现在我需要选择框来扩展!否则孩子的照片会被切断。
有人理解吗?
答案 0 :(得分:27)
你可以用一些简单的CSS来做到这一点。 根据我的阅读,你想用类&#34; select2-choices&#34;来设置元素的高度。
.select2-choices {
min-height: 150px;
max-height: 150px;
overflow-y: auto;
}
那应该给你一个150px的设定高度,如果需要它会滚动。只需调整高度,直到图像符合要求。
您还可以使用css设置select2结果的高度(选择控件的下拉部分)。
ul.select2-results {
max-height: 200px;
}
200px是默认高度,因此请将其更改为所需的下拉高度。
答案 1 :(得分:25)
.select2-selection__rendered {
line-height: 31px !important;
}
.select2-container .select2-selection--single {
height: 35px !important;
}
.select2-selection__arrow {
height: 34px !important;
}
答案 2 :(得分:13)
你可能想先给你的select2一个特殊的类,然后只修改那个类的css,而不是改变全站的所有select2 css。
$("#selboxChild").select2({ width: '300px', dropdownCssClass: "bigdrop" });
<强> SCSS 强>
.bigdrop.select2-container .select2-results {max-height: 200px;}
.bigdrop .select2-results {max-height: 200px;}
.bigdrop .select2-choices {min-height: 150px; max-height: 150px; overflow-y: auto;}
答案 3 :(得分:8)
编辑select2.css文件。转到高度选项并更改:
.select2-container .select2-choice {
display: block;
height: 36px;
padding: 0 0 0 8px;
overflow: hidden;
position: relative;
border: 1px solid #aaa;
white-space: nowrap;
line-height: 26px;
color: #444;
text-decoration: none;
border-radius: 4px;
background-clip: padding-box;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-color: #fff;
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));
background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);
background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);
background-image: -o-linear-gradient(bottom, #eee 0%, #fff 50%);
background-image: -ms-linear-gradient(top, #fff 0%, #eee 50%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);
background-image: linear-gradient(top, #fff 0%, #eee 50%);
}
答案 4 :(得分:7)
这项工作对我来说
.select2-container--default .select2-results>.select2-results__options{
max-height: 500px;
}
答案 5 :(得分:6)
所选答案是正确的,但您不必编辑 select2.css 文件。您可以将以下内容添加到您自己的自定义css文件中。
.select2-container .select2-choice {
display: block!important;
height: 36px!important;
white-space: nowrap!important;
line-height: 26px!important;
}
答案 6 :(得分:5)
我来到这里寻找一种方法来指定启用select2的下拉列表的高度。这对我有用:
.select2-container .select2-choice, .select2-result-label {
font-size: 1.5em;
height: 41px;
overflow: auto;
}
.select2-arrow, .select2-chosen {
padding-top: 6px;
}
在:
在:
答案 7 :(得分:5)
这是我对Carpetsmoker的答案(我喜欢它因为它是动态的),清理并更新为select2 v4:
$('#selectField').on('select2:open', function (e) {
var container = $(this).select('select2-container');
var position = container.offset().top;
var availableHeight = $(window).height() - position - container.outerHeight();
var bottomPadding = 50; // Set as needed
$('ul.select2-results__options').css('max-height', (availableHeight - bottomPadding) + 'px');
});
答案 8 :(得分:3)
我知道这个问题已经过时了,但是我在2017年寻找同一个问题的解决方案并自己找到了。
.select2-selection {
height: auto !important;
}
这将根据内容动态调整输入的高度。
答案 9 :(得分:3)
只需添加select2.css
revert
答案 10 :(得分:3)
似乎样式表选择器随着时间的推移而发生了变化。我正在使用select2-4.0.2和正确的选择器来设置当前的框高度:
Page diagram (where i is an iFrame)
_____________
| | |
| i1 | i2 |
| | |
|_____|_____|
答案 11 :(得分:2)
我正在使用Select2 4.0。这适合我。我只有一个Select2控件。
.select2-selection.select2-selection--multiple {
min-height: 25px;
max-height: 25px;
}
答案 12 :(得分:1)
在select2.css之后排队另一个css文件,并在该css中添加以下内容:
netcoreapp1.1
即。如果您希望选择框高度的高度为34px。
答案 13 :(得分:1)
我想到了:
.select2,
.select2-search__field,
.select2-results__option
{
font-size:1.3em!important;
}
.select2-selection__rendered {
line-height: 2em !important;
}
.select2-container .select2-selection--single {
height: 2em !important;
}
.select2-selection__arrow {
height: 2em !important;
}
答案 14 :(得分:1)
我使用以下内容来动态调整select2下拉元素的高度,使其恰好适合选项数量:
:
请确保在CSS中取消设置(默认)最大高度:
$('select').on('select2:open', function (e) {
var OptionsSize = $(this).find("option").size(); // The amount of options
var HeightPerOption = 36; // the height in pixels every option should be
var DropDownHeight = OptionsSize * HeightPerOption;
$(".select2-results__options").height(DropDownHeight);
});
(仅在select2的版本4中进行了测试)
答案 15 :(得分:1)
以上解决方案均不适用于我。这是我的解决方案:
/* Height fix for select2 */
.select2-container .select2-selection--single, .select2-container--default .select2-selection--single .select2-selection__rendered, .select2-container--default .select2-selection--single .select2-selection__arrow {
height: 35px;
}
.select2-container--default .select2-selection--single .select2-selection__rendered {
line-height: 35px;
}
答案 16 :(得分:1)
我在这里找到的惰性解决方案 https://github.com/panorama-ed/maximize-select2-height
最大化-选择2高度
此软件包简短易懂。它神奇地扩展了Select2下拉列表以填充窗口的高度。
它取决于下拉菜单中元素的数量,页面上Select2的位置,页面的大小和滚动位置,滚动条的可见性以及下拉菜单是向上显示还是向下显示。每次打开下拉菜单时,它都会自动调整大小。而且缩小了,大约有800个字节(包括注释)!
(请注意,此插件仅适用于Select2 v4.x.x。)
$("#my-dropdown").select2().maximizeSelect2Height();
享受!
答案 17 :(得分:1)
在4.0.6上,下面是适合我的解决方案。必须包含select2-selection__rendered
和select2-selection__arrow
以垂直对齐下拉标签和箭头图标:
.select2-container .select2-selection,
.select2-selection__rendered,
.select2-selection__arrow {
height: 48px !important;
line-height: 48px !important;
}
答案 18 :(得分:1)
我遇到了类似的问题,大多数这些解决方案都很接近,但没有雪茄。 以下是最简单的形式:
.select2-selection {
min-height: 10px !important;
}
您可以将最小高度设置为您想要的高度。高度将根据需要扩大。我个人发现填充有点不平衡,字体太大,所以我也在这里添加了。
答案 19 :(得分:0)
恕我直言,将高度设置为固定数字很少有用。将其设置为屏幕上可用的任何空间都非常有用。
这正是这段代码的作用:
$('select').on('select2-opening', function() {
var container = $(this).select2('container')
var position = $(this).select2('container').offset().top
var avail_height = $(window).height() - container.offset().top - container.outerHeight()
// The 50 is a magic number here. I think this is the search box + other UI
// chrome from select2?
$('ul.select2-results').css('max-height', (avail_height - 50) + px)
})
我为select2 3.5做了这个。我没有用4.0测试它,但从文档中可能也适用于4.0。
答案 20 :(得分:0)
尝试一下,对我有用:
<select name="select_name" id="select_id" class="select2_extend_height wrap form-control" data-placeholder="----">
<option value=""></option>
<option value="1">test</option>
</select>
.wrap.select2-selection--single {
height: 100%;
}
.select2-container .wrap.select2-selection--single .select2-selection__rendered {
word-wrap: break-word;
text-overflow: inherit;
white-space: normal;
}
$('.select2_extend_height').select2({containerCssClass: "wrap"});
答案 21 :(得分:0)
如果这里有人试图将输入样式和bootstrap4的表单组高度与select2匹配,这就是我所做的,
.select2-container{
.select2-selection{
height: 37px!important;
}
.select2-selection__rendered{
margin-top: 4px!important;
}
.select2-selection__arrow{
margin-top: 4px;
}
.select2-selection--single{
border: 1px solid #ced4da!important;
}
*:focus{
outline: none;
}
}
这也会删除轮廓。
答案 22 :(得分:0)
对于v4.0.7 您可以通过覆盖CSS类来增加高度,例如以下示例:
.select2-container .select2-selection--single {
height: 36px;
}
.select2-container--default .select2-selection--single .select2-selection__rendered {
line-height: 36px;
}
.select2-container--default .select2-selection--single .select2-selection__arrow {
height: 36px;
}
答案 23 :(得分:0)
使用几行CSS样式自定义Select 2呈现的组件的非常简单的方法:
// Change the select container width and allow it to take the full parent width
.select2
{
width: 100% !important
}
// Set the select field height, background color etc ...
.select2-selection
{
height: 50px !important
background-color: $light-color
}
// Set selected value position, color , font size, etc ...
.select2-selection__rendered
{
line-height: 35px !important
color: yellow !important
}
答案 24 :(得分:0)
应用此替代CSS可以增加结果框的高度
.select2-container--bootstrap4 .select2-results>.select2-results__options {
max-height: 20em;
}
答案 25 :(得分:0)
如果您有多个select2
,而只想调整一个。做到这一点:
为您的元素获取ID:
<div id="skills">
<select class="select2" > </select>
</div>
并添加此CSS:
#skills > span >span >span>.select2-selection__rendered{
line-height: 80px !important;
}
答案 26 :(得分:0)
添加样式
.select2-container .select2-selection--single{
height:0%;
}
答案 27 :(得分:0)
这是我的解决方案。 注意:对于引导程序 4
.select2-container {
height: calc(1.5em + .75rem + 2px) !important;
}
答案 28 :(得分:-1)
您不需要更改所有select2的高度 - 源<input>
类被复制到select2-container,因此您可以按输入类别设置它们的样式。例如,如果要设置select2的某些实例的高度,请将您的类添加到源<select>
元素,然后在CSS文件中使用“.select2-container。your-class
。
问候。
存在一些问题:不会复制类名select2*
。
答案 29 :(得分:-1)
快速简便,将其添加到您的页面:
<style>
.select2-results {
max-height: 500px;
}
</style>