Установите ширину выпадающего меню равной ширине выпадающего элемента - PullRequest
1 голос
/ 01 июня 2019

У меня есть выпадающий элемент div, ширина которого отличается от ширины выпадающего меню. Я хочу, чтобы кнопка и выпадающие элементы имели одинаковую ширину.

<div class="dropdown col">
    <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Choose a form</button>
    <ul class="dropdown-menu col-xs-12">
        <a class="dropdown-item" href="#">word</a>
        <div class="dropdown-divider"></div>
        <a class="dropdown-item" href="#">word</a>
        <div class="dropdown-divider"></div>
        <a class="dropdown-item" href="#">Very long word</a>
    </ul>
</div>

Ширина элемента Very long word такая же, как у элемента word, только кнопка с другой шириной.

Ответы [ 2 ]

1 голос
/ 01 июня 2019

Один из способов сделать это - обернуть кнопку и раскрывающееся меню в новый элемент div и установить в нем желаемую ширину (для примера я установил ширину 200 пикселей), а затем просто сделать ее дочерними (кнопка + выпадающее меню) наследуют ширину div своего родителя (width: inherit !important;) следующим образом:

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>


<div class="dropdown col">
    <div style="width: 200px;">
        <button style="width: inherit !important;" class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Choose a form</button>
        <ul style="width: inherit !important;" class="dropdown-menu dropdown-menu-center">
            <a class="dropdown-item" href="#">word</a>
            <div class="dropdown-divider"></div>
            <a class="dropdown-item" href="#">word</a>
            <div class="dropdown-divider"></div>
            <a class="dropdown-item" href="#">Very long word</a>
        </ul>
    </div>
</div>
1 голос
/ 01 июня 2019

Я не уверен по вашим тегам, если вы ищете конкретный ответ для начальной загрузки, но одним из вариантов будет установить родительский контейнер .dropown на display: flex с flex-direction:column, расширяя дочерние элементы нагибкая родительская ось родителей.

.dropdown {
  display: flex;
  flex-direction: column;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...