select2 中的右对齐下拉菜单

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)

我希望它看起来像这样,但没有固定值来实现它。

在此处输入图片说明

Meh*_*ani 9

由于您希望选择和下拉菜单的大小不同,这是我使用 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选项,您的生活会更轻松;)