Sea*_*ass 11 html javascript css jquery jquery-select2
有没有办法dropdownAutoWidth: true在 select2 中右对齐下拉菜单,而不是标准的左对齐?我希望选择保持不变,但下拉菜单向左移动,以便与右侧的选择对齐。请参阅下面错误对齐的片段...
注意:我想要不同大小的选择和下拉菜单,如图所示。
编辑 // 更新建议添加direction: rtl; text-align: right;. 这只会右对齐文本。我希望整个下拉菜单与其上方的选定选项右对齐。例如,下拉菜单应该突出在所选选项的左侧,而不是右侧。
编辑 2 // 更新为.select2-dropdown { left: -69px !important; }这使它看起来像我想要的那样,但是有没有办法不必设置 -69px 的固定值?
$(".form-control").select2({
width: '100px',
dropdownAutoWidth : true,
});Run Code Online (Sandbox Code Playgroud)
.select2-container--default .select2-results > .select2-results__options { direction: rtl; text-align: right; }
.select2-dropdown {
left:-69px !important;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
<select class="form-control">
<option selected="selected">orange</option>
<option>white</option>
<option selected="selected">purple</option>
</select>Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样,但没有固定值来实现它。
由于您希望选择和下拉菜单的大小不同,这是我使用 select2 内置选项和一些 CSS 的解决方案,但可能并不完美。
制作rtl非常简单,只需使用dir,但我们需要传递一些其他选项,如下所示:
$('select').select2({
dir: "rtl",
dropdownAutoWidth: true,
dropdownParent: $('#parent')
});
Run Code Online (Sandbox Code Playgroud)
这里的关键是dropdownParent,你还需要编辑你HTML的如下:
<div id='parent'>
<select>
<option selected="selected">orange</option>
<option>white</option>
<option selected="selected">purple</option>
</select>
</div>
Run Code Online (Sandbox Code Playgroud)
最后你需要一些 CSS:
#parent {
/* can be any value */
width: 300px;
text-align: right;
direction: rtl;
position: relative;
}
#parent .select2-container--open + .select2-container--open {
left: auto;
right: 0;
width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
你可以在 codepen 上看到它的实际效果
如果您有多个选择,则需要一些 JS 代码来处理dropdownParent选项。顺便说一句,如果您删除dropdownAutoWidth选项,您的生活会更轻松;)