2017-03-20 113 views
0

我試圖增加select2下拉容器的高度,而將其他容器保留在默認高度。我的容器寬度是固定的,當我選擇第二個選項時(如果我使用'height-min',會發生這種情況),我不想將空行強行插入容器中。你會see all this in the jsfiddle更改幾個select2容器中的一個的高度

任何任何想法,我可以如何控制第一個容器,同時離開第二個和第三個容器?這已經幾個職位,但似乎沒有任何工作。

https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js 
https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css 


<select id="dropList1" style="width:125px;" multiple="multiple"> 
    <option value="Sun">Sun</option> 
    <option value="Moon">Moon</option> 
    <option value="Stars">Stars</option> 
</select> 
<br> 
<br> 
<br> 
<select id="dropList2" style="width:125px" multiple="multiple"> 
    <option value="Earth">Earth</option> 
    <option value="Wind">Wind</option> 
</select> 
<br> 
<br> 
<br> 
<select id="dropList3" style="width:125px" multiple="multiple"> 
    <option value="Fire">Fire</option> 
    <option value="Water">Water</option> 
</select> 




$("#dropList1").select2({ placeholder: "Select type",}); 
$("#dropList2").select2({ placeholder: "Select type",}); 
$("#dropList3").select2({ placeholder: "Select type",}); 



body { 
padding: 30px; 
} 

.select2-container .select2-selection--multiple { 
font-family: 'Arial', Verdana; 
font-size: 12px; 
box-sizing: border-box; 
display: block; 
height: 27px; 
} 
+0

我想這一點,使用從其他職位的建議,但它根本沒有任何效果。 – Silverburch

回答

1

您可以通過添加這對你的CSS代碼

#dropList1 + .select2-container--default .select2-selection--multiple{ 
    height: 100px; 
} 

注意,高度將被固定

,但如果你希望它增加自動根據增加高度元件裏面你需要用auto來代替

#dropList1 + .select2-container--default .select2-selection--multiple{ 
    height: auto; 
} 

and thi旨意隻影響第一與ID選擇= #dropList1

還可以減少在輸入字段所選的選項之間的空間通過將該代碼,以避免不必要的換行符:

#dropList1 + .select2-container--default .select2-selection--multiple .select2-selection__choice{ 
     margin-right: 1px; 
} 

See JSfiddle

+0

幾乎在那裏,但仍然允許空白行被強制進入容器時,只有2個選項被選中 – Silverburch

+0

這取決於所選擇的選項的大小..如果你選擇兩個簡短的選項空白不會發生......但你甚至選擇一個大的選項,它會發生,這是由固定的寬度造成的 – Chiller

+0

在我原來的小提琴中,你會看到我能夠把'太陽和'月亮'放在一起,而不用強制新線 – Silverburch

1

您可以簡單地將自定義類添加到所需的選擇標記並在CSS中包含所需的高度。這裏是下面的代碼:

body { 
 
padding: 30px; 
 
} 
 

 
.select2-container .select2-selection--multiple { 
 
font-family: 'Arial', Verdana; 
 
font-size: 12px; 
 
box-sizing: border-box; 
 
display: block; 
 
height: 27px; 
 
} 
 
.ChangedHeight{ 
 
height: 200px!important; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js 
 
https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css 
 

 

 
<select id="dropList1" style="width:125px;" multiple="multiple"> 
 
    <option value="Sun">Sun</option> 
 
    <option value="Moon">Moon</option> 
 
    <option value="Stars">Stars</option> 
 
</select> 
 
<br> 
 
<br> 
 
<br> 
 
<select id="dropList2" class="ChangedHeight" style="width:125px" multiple="multiple"> 
 
    <option value="Earth">Earth</option> 
 
    <option value="Wind">Wind</option> 
 
</select> 
 
<br> 
 
<br> 
 
<br> 
 
<select id="dropList3" style="width:125px" multiple="multiple"> 
 
    <option value="Fire">Fire</option> 
 
    <option value="Water">Water</option> 
 
</select>

你甚至可以在選擇標記添加內嵌樣式。

+0

是的,這似乎工作,因爲你建議的jQuery插件,但不知道爲什麼容器的顯示有點瘋狂。 – Silverburch

0

對於重寫第一Select標籤中,使用所示CSS code

有由中使用的圖案插件用於爲定製SELECT標籤創建HTML。因此,通過使用相同的模式,您可以覆蓋所需的SELECT2標籤。

$("#dropList1").select2({ 
 
    placeholder: "Select type", 
 
}); 
 
$("#dropList2").select2({ 
 
    placeholder: "Select type", 
 
}); 
 
$("#dropList3").select2({ 
 
    placeholder: "Select type", 
 
});
body { 
 
    padding: 30px; 
 
} 
 

 
.select2-container .select2-selection--multiple { 
 
    font-family: 'Arial', Verdana; 
 
    font-size: 12px; 
 
    box-sizing: border-box; 
 
    display: block; 
 
    height: 27px; 
 
} 
 

 
#dropList1+.select2 .select2-selection--multiple { 
 
    height: auto !important; 
 
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" /> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script> 
 

 
<h3>Managing the wrapper height to collect all selected tags properly</h3> 
 
<select id="dropList1" class="select-one" style="width:125px" multiple="multiple"> 
 
    <option value="Sun">Sun</option> 
 
    <option value="Moon">Moon</option> 
 
    <option value="Stars">Stars</option> 
 
</select> 
 

 
<br> 
 
<br> 
 
<br> 
 
<h3>Default behaviour of the SELECT tag, the tags flow out of wrapper.</h3> 
 

 
<select id="dropList2" style="width:125px" multiple="multiple"> 
 
    <option value="Earth">Earth</option> 
 
    <option value="Wind">Wind</option> 
 
    <option value="Moon">Moon</option> 
 
    <option value="Stars">Stars</option> 
 
</select> 
 
<br> 
 
<br> 
 
<br> 
 
<select id="dropList3" style="width:125px" multiple="multiple"> 
 
    <option value="Fire">Fire</option> 
 
    <option value="Water">Water</option> 
 
</select>

+0

在代碼片段中,這似乎不起作用。 – Silverburch

+0

@Silverburch我以爲你想管理第一個到另外兩個的高度。道歉。現在檢查答案。 !你也可以通過'class'來定位它,我使用你想要的'SELECT'標籤的'ID'來控制'css'。 –

相關問題