Як видалити стрілку в спадному меню в Bootstrap 4?


118

Я використовую Bootstrap 4. Я намагався видалити стрілку в спадному меню.

Ці відповіді , які я знайшов для Bootstrap 3 не працюють.

Jsfiddle знаходиться тут .

<div class="dropdown open">
  <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    Dropdown
  </button>
  <div class="dropdown-menu" aria-labelledby="dropdownMenu1">
    <a class="dropdown-item" href="#">Action</a>
    <a class="dropdown-item" href="#">Another action</a>
  </div>
</div>

Відповіді:


176

Просто видаліть з елемента клас "спад-перемикання". Випадаюче все ще працюватиме, якщо у вас є атрибут перемикання даних наступним чином

<button role="button" type="button" class="btn" data-toggle="dropdown"> 
    Dropdown Without Arrow
</button>

переосмислення стилів класу .dropdown-toggle впливає на всі спадні меню, і ви можете зберегти стрілку в інших кнопках, тому це виглядає як найпростіше рішення.

Редагувати. Зберігайте клас, що випадає, якщо ви хочете зберегти стиль межі

<button role="button" type="button" class="btn dropdown" data-toggle="dropdown"> 
    Dropdown Without Arrow
</button>

3
Чомусь інші рішення не працювали для мене. Я запускаю Bootstrap 4. Це було єдине, що працювало.
anonymousmousacorn

9
Це не дуже спрацювало для мене. Права частина кнопки більше не округла.
Джейс Браунінг

Простіше, ніж писати користувальницький CSS з !important:)
hughjdavey

2
Я перевірив це, і це працює досить добре! Тестували в FF, Chrome, IE та Opera - навіть на мобільних Android-пристроях із вбудованим браузером, не дратуючи стрілки - спасибі, пане сер! ПРИМІТКА: не видаляйте повний атрибут "drop-toggle", просто видаліть атрибут "-ggle", щоб ваша стилізація для меню, що випадає, не позбулася. Тож "dropdown-toggle" перетворюється на "dropdown" - сподіваюся, це допоможе.
Керім Ягмурку

126

З css ви можете просто так:

.dropdown-toggle::after {
    display:none;
}

11
Мені також довелося включити, !importantщоб цей спеціальний CSS набув чинності.
Джейс Браунінг

1
Це вплине на кожне спадне меню, яке використовується на інших сторінках, якщо ви використовуєте той самий CSS.
Pavan Nath

додайте ще якийсь префікс, щоб відключити лише стрілку для кнопки, наприклад: .btn.btn-outline-second.dropdown-toggle :: after {display: none! важливо; }
puppylpg

35

Я не рекомендую жодної з існуючих відповідей, оскільки:

  • .dropdown-toggleмає більше стилів, ніж просто каре. Видалення класу з елемента спричиняє проблеми стилізації .

  • Переосмислення .dropdown-toggleне має сенсу. Тільки тому, що вам не потрібна карета на якомусь конкретному елементі, це не означає, що пізніше він вам не знадобиться.

  • ::afterне охоплює варіанти, що випадають (деяке використання ::before).

Використовуйте звичай .caret-offу тому ж елементі, що і ваш .dropdown-toggleелемент:

.caret-off::before {
    display: none;
}
.caret-off::after {
    display: none;
}

3
Найкраща відповідь, я просто додам додаткову інформацію для інших людей, наприклад, цей клас слід додати разом з dropdown-toggle.
eestein


5

Якщо вам цікаво замінити стрілку на іншу піктограму (наприклад, FontAwesome), вам просто потрібно буде видалити рамку на псевдоелементі .dropdown-toggle

.dropdown-toggle::after { border: none; }

4

Я досить довго використовував прийняту відповідь у своєму проекті, але зараз натрапив на змінну, яку використовує bootstrap :

$enable-caret: true !default;

Якщо встановити це значення false, карету буде видалено без необхідності робити спеціальний код.

Моїм проектом був Ruby / Rails, тому я використовував bootstrap-rubygem . Я змінив змінну, імпортувавши custom-variables.scssвищевказану змінну, встановлену на помилкову, application.scss перед тим як bootstrap.scssфайл / файли.


2

Якщо ви вилучите відповідний клас перемикання клавіш, як показано нижче, всі кнопки, що випадають у вашій системі, більше не матимуть карети.

.dropdown-toggle::after {
    display:none;
}

Але, можливо, це не те, що ви хочете, тому для видалення лише конкретної кнопки ми вставимо клас під назвою: remoecaret, і ми підійдемо до класу: dropdown-toggle наступним чином:

.removecaret.dropdown-toggle::after {
    display: none;
}

а наш html виглядає приблизно так:

<div class="btn-group">
  <button class="btn btn-outline-secondary btn-sm dropdown-toggle removecaret" data-toggle="dropdown">
    <i class="fa fa-bars" aria-hidden="true"></i>
  </button>
  <ul class="dropdown-menu dropdown-menu-right">
    <li><a href="#"><a href="#"><i class="fa fa-cog" aria-hidden="true"></i>&nbsp;Edit</a></li>
  </ul>
</div>


1

Якщо ви хочете точно тільки в цьому класі кнопок завантажувальної програми, зробіть:

.btn .dropdown-toggle::after {
    display:none;
}



-2

Це працює на bootsrap4 та ng-bootstrap.

.dropdown-toggle:after {
    display: none;
}

3
Копіювання дворічної прийнятої відповіді, але з друкарською помилкою.
miken32
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.