Làm thế nào để loại bỏ mũi tên trong trình đơn thả xuống trong Bootstrap 4?


118

Tôi đang sử dụng Bootstrap 4. Tôi đã cố xóa mũi tên trong menu thả xuống.

Các câu trả lời tôi tìm thấy cho Bootstrap 3 không hoạt động nữa.

Jsfiddle là ở đây .

<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>

Câu trả lời:


176

Chỉ cần xóa lớp "dropdown-toggle" khỏi phần tử. Menu thả xuống sẽ vẫn hoạt động nếu bạn có thuộc tính chuyển đổi dữ liệu như sau

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

ghi đè các kiểu lớp .dropdown-toggle ảnh hưởng đến tất cả các menu thả xuống và bạn có thể muốn giữ mũi tên ở các nút khác, đó là lý do tại sao đây là giải pháp đơn giản nhất.

Chỉnh sửa: Giữ lớp thả xuống nếu bạn muốn giữ kiểu viền

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

3
Vì một số lý do, các giải pháp khác không hoạt động với tôi. Tôi đang chạy Bootstrap 4. Đây là thứ duy nhất hoạt động.
anonymousacorn

9
Điều này không hoàn toàn phù hợp với tôi. Cạnh phải của nút không còn được bo tròn.
Jace Browning

Đơn giản hơn bằng văn bản tùy chỉnh CSS với !important:)
hughjdavey

2
Tôi đã thử nghiệm điều này và nó hoạt động khá tốt! Đã thử nghiệm trong FF, Chrome, IE và Opera - ngay cả trên các thiết bị Android di động có trình duyệt cài sẵn không có mũi tên khó chịu - cảm ơn rất nhiều! LƯU Ý: không xóa toàn bộ thuộc tính "dropdown-toggle", chỉ xóa thuộc tính "-toggle", để kiểu của bạn cho menu thả xuống không bị loại bỏ. Vì vậy, "dropdown-toggle" chuyển thành "dropdown" - hy vọng điều này sẽ hữu ích.
Kerim Yagmurcu

126

Với css, bạn chỉ có thể làm điều đó:

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

11
Tôi cũng phải thêm vào !importantđể CSS tùy chỉnh này có hiệu lực.
Jace Browning

1
Điều này sẽ ảnh hưởng đến mọi menu thả xuống được sử dụng trong các trang khác nếu bạn đang sử dụng cùng một CSS.
Pavan Nath

thêm một số tiền tố khác để chỉ tắt mũi tên cho nút, ví dụ: .btn.btn-outline-Secondary.dropdown-toggle :: after {display: none! important; }
doglpg

35

Tôi không đề xuất bất kỳ câu trả lời hiện có nào vì:

  • .dropdown-togglecó nhiều kiểu dáng hơn chỉ là dấu mũ. Xóa lớp khỏi phần tử gây ra các vấn đề về kiểu dáng .

  • Ghi đè .dropdown-togglekhông có ý nghĩa. Chỉ vì bạn không cần dấu mũ trên một số phần tử cụ thể, không có nghĩa là bạn sẽ không cần dấu mũ sau này.

  • ::afterkhông bao gồm các biến thể thả xuống (một số sử dụng ::before).

Sử dụng một tùy chỉnh .caret-offtrong cùng một phần tử với .dropdown-togglephần tử của bạn :

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

3
Câu trả lời hay nhất, tôi chỉ muốn thêm một số thông tin bổ sung cho những người khác, như lớp học này nên được thêm vào cùng với dropdown-toggle.
eestein


5

Nếu bạn quan tâm đến việc thay thế mũi tên bằng một Biểu tượng khác (chẳng hạn như FontAwesome), bạn chỉ cần xóa đường viền trên phần tử giả của .dropdown-toggle

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

4

Tôi đã sử dụng câu trả lời được chấp nhận khá lâu trong dự án của mình nhưng vừa rồi tình cờ gặp một biến được bootstrap sử dụng :

$enable-caret: true !default;

Nếu bạn đặt giá trị này thành false thì dấu mũ sẽ bị xóa mà không cần phải thực hiện bất kỳ mã tùy chỉnh nào.

Dự án của tôi là Ruby / Rails nên tôi đang sử dụng bootstrap-rubygem . Tôi đã thay đổi biến bằng cách nhập custom-variables.scssvới bộ biến trên false trong tôi application.scss TRƯỚC các bootstrap.scsstập tin / file.


2

Nếu bạn loại bỏ phù hợp với lớp chuyển đổi thả xuống như bên dưới, tất cả các nút thả xuống trên hệ thống của bạn sẽ không còn dấu mũ nữa.

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

Nhưng có lẽ đó không phải là những gì bạn muốn, vì vậy để chỉ loại bỏ một nút cụ thể, chúng tôi sẽ chèn một lớp có tên: remoecaret và chúng tôi sẽ phù hợp với lớp: dropdown-toggle như sau:

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

và html của chúng tôi trông giống như sau:

<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

Boostrap tạo điều này bằng cách sử dụng đường viền CSS:

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

1

Nếu bạn chỉ muốn chính xác trong lớp nút bootstrap này, hãy tạo:

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

0

bạn đã thử tag = "a" trong lớp chưa? nó ẩn mũi tên mà không cần thêm css.


-1

Thêm không có mũi tên để thả xuống chuyển đổi khai báo lớp


-2

Điều này hoạt động trên bootsrap4 và ng-bootstrap.

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

3
Sao chép câu trả lời được chấp nhận của đứa trẻ hai tuổi, nhưng có lỗi đánh máy.
miken32
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.