Xóa Chọn mũi tên trên IE


126

Tôi đã chọn phần tử, tôi muốn xóa mũi tên, sau đó tôi có thể thêm biểu tượng khác .. tôi có thể làm điều đó cho Firefox Safari và Chrome, nhưng điều này không hoạt động trên IE9 .

.styled-select select 
{
    border: 0 !important;  /*Removes border*/
    -webkit-appearance: none;  /*Removes default chrome and safari style*/
    -moz-appearance: none;  /*Removes default style Firefox*/
    background: url('select_icon.png')  no-repeat;
     background-position: 179px 7px;
     text-indent: 0.01px;
     text-overflow: "";
     color: #FCAF17;
     width:200px;
 }

XEM Fiddle trên IE9 . tất cả những gì tôi cần là loại bỏ mũi tên trong eg9 Xin vui lòng trả lời câu trả lời.


1
Nó có thể không thể ở tất cả. Các trình duyệt (đặc biệt là IE) thường miễn cưỡng cung cấp các tùy chọn kiểu dáng mở rộng cho các widget của họ.
Pekka

Bạn không thể làm điều này chỉ với CSS, nhưng tôi tin rằng có các thư viện JS cho các biểu mẫu kiểu dáng có thể làm điều này. Google nên biết.
Mark Simpson

@Alberto câu hỏi này đã được trả lời trước 2 năm :) nếu bạn nghĩ bạn có câu trả lời, bạn có thể chèn nó
Muath

Câu trả lời:


321

Trong IE9, hoàn toàn có thể xảy ra hack theo lời khuyên của @Spudley. Vì bạn đã tùy chỉnh chiều cao và chiều rộng của div và chọn, bạn cần thay đổi div:beforecss để khớp với chiều cao của bạn.

Trong trường hợp nếu là IE10 thì sử dụng dưới css3 là có thể

select::-ms-expand {
    display: none;
}

Tuy nhiên, nếu bạn quan tâm đến plugin jQuery, hãy thử Chosen.jshoặc bạn có thể tạo riêng cho mình trong js.


2
@Moath Howari Tôi đã sửa đổi bạn fiddle, kiểm tra điều này trong IE9 jsfiddle.net/kBWYd/6
Praveen

@PraveenJeganathan Selectbox cũng có một lỗi. Khi chúng ta nhấp vào góc bên phải của danh sách thả xuống, nó không hoạt động. Chúng ta có thể làm một cái gì đó cho điều này?
Manjit Singh

Điều @Praveen là, sau đó bên phải là không thể nhấp.
Tom Roggero

1
@ManjitSingh & Tom Roggero - Điều này khá khó khăn nhưng nếu bạn cần không gian đó có thể nhấp, bạn có thể thay thế display: none;bằng opacity: .01. Sẽ gần như không thể nhìn thấy nhưng nó vẫn có thể nhấp được.
nguyện

1
@MarcRoussel dựa trên fiddle này, điều này có thể được viết như select:hover::-ms-expandtrạng thái di chuột cho phần tử giả như đã đề cập selector:state::pseudo. Tôi không thể thử nghiệm với IE nhưng đáng để thử :)
Praveen

6

Tôi muốn đề xuất giải pháp của tôi mà bạn có thể tìm thấy trong repo GitHub này . Điều này cũng hoạt động cho IE8 và IE9 với một mũi tên tùy chỉnh xuất phát từ phông chữ biểu tượng.

Ví dụ về hành động thả xuống của trình duyệt chéo tùy chỉnh : kiểm tra chúng với tất cả các trình duyệt của bạn để xem tính năng trình duyệt chéo.

Dù sao, hãy bắt đầu với các trình duyệt hiện đại và sau đó chúng ta sẽ thấy giải pháp cho những trình duyệt cũ hơn.

Mũi tên thả xuống cho Chrome, Firefox, Opera, Internet Explorer 10+

Đối với các trình duyệt này, thật dễ dàng để đặt cùng một hình nền cho trình đơn thả xuống để có cùng một mũi tên.

Để làm như vậy, bạn phải đặt lại kiểu mặc định của trình duyệt cho selectthẻ và đặt quy tắc nền mới (như được đề xuất trước đó).

select {
    /* you should keep these firsts rules in place to maintain cross-browser behaviour */
    -webkit-appearance: none;
    -moz-appearance: none;
    -o-appearance: none;
    appearance: none;
    background-image: url('<custom_arrow_image_url_here>');
    background-position: 98% center;
    background-repeat: no-repeat;
    outline: none;
    ...
}

Các appearancequy tắc được đặt thành không để đặt lại các trình duyệt mặc định, nếu bạn muốn có cùng một khía cạnh cho mỗi mũi tên, bạn nên giữ chúng đúng vị trí.

Các backgroundquy tắc trong các ví dụ được đặt với hình ảnh nội tuyến SVG đại diện cho các mũi tên khác nhau. Chúng được định vị 98% từ trái sang để giữ một số lề cho đường viền bên phải (bạn có thể dễ dàng sửa đổi vị trí theo ý muốn).

Để duy trì hành vi trình duyệt chéo chính xác, quy tắc duy nhất khác phải được đặt đúng chỗ là outline. Quy tắc này đặt lại đường viền mặc định xuất hiện (trong một số trình duyệt) khi phần tử được nhấp. Tất cả các quy tắc khác có thể dễ dàng sửa đổi nếu cần.

Mũi tên thả xuống cho Internet Explorer 8 (IE8) và Internet Explorer 9 (IE9) bằng Phông chữ Biểu tượng

Đây là phần khó hơn ... Hoặc có thể không.

Không có quy tắc chuẩn để ẩn các mũi tên mặc định cho các trình duyệt này (như select::-ms-expandcho IE10 +). Giải pháp là ẩn phần thả xuống có chứa mũi tên mặc định và chèn phông chữ biểu tượng mũi tên (hoặc SVG, nếu bạn thích) tương tự như SVG được sử dụng trong các trình duyệt khác (xem selectquy tắc CSS để biết thêm chi tiết về SVG nội tuyến được sử dụng).

Bước đầu tiên là thiết lập một lớp có thể nhận ra trình duyệt: đây là lý do tại sao tôi đã sử dụng IF IF IE có điều kiện ở đầu mã. Các IF này được sử dụng để đính kèm các lớp cụ thể vào htmlthẻ để nhận ra trình duyệt IE cũ hơn.

Sau đó, mọi selectHTML trong phải được bao bọc bởi một div(hoặc bất kỳ thẻ nào có thể bao bọc một phần tử). Tại trình bao bọc này, chỉ cần thêm lớp có chứa phông chữ biểu tượng.

<div class="selectTagWrapper prefix-icon-arrow-down-fill">
    ...
</div>

Nói một cách dễ dàng, trình bao bọc này được sử dụng để mô phỏng selectthẻ.

Để hoạt động như một trình đơn thả xuống, trình bao bọc phải có đường viền, vì chúng ta ẩn đường dẫn xuất phát từ select.

Lưu ý rằng chúng ta không thể sử dụng selectđường viền vì chúng ta phải ẩn mũi tên mặc định kéo dài hơn 25% so với đường bao. Do đó, đường viền bên phải của nó sẽ không hiển thị vì chúng tôi ẩn thêm 25% này theo overflow: hiddenquy tắc được áp dụng cho selectchính nó.

Phông chữ biểu tượng mũi tên tùy chỉnh được đặt trong lớp giả :beforetrong đó quy tắc contentchứa tham chiếu cho mũi tên (trong trường hợp này là dấu ngoặc đơn bên phải).

Chúng tôi cũng đặt mũi tên này ở một vị trí tuyệt đối để căn giữa nó càng nhiều càng tốt (nếu bạn sử dụng các phông chữ biểu tượng khác nhau, hãy nhớ điều chỉnh chúng một cách hợp lý bằng cách thay đổi giá trị trên cùng và bên trái và kích thước phông chữ).

.ie8 .prefix-icon-arrow-down-fill:before,
.ie9 .prefix-icon-arrow-down-fill:before {
    content: ")";
    position: absolute;
    top: 43%;
    left: 93%;
    font-size: 6px;
    ...
}

Bạn có thể dễ dàng tạo và thay thế mũi tên nền hoặc mũi tên phông chữ biểu tượng, với mỗi thứ bạn muốn chỉ cần thay đổi nó trong background-imagequy tắc hoặc tự tạo một tệp phông chữ biểu tượng mới.


4

Trong trường hợp bạn muốn sử dụng lớp và giả lớp:

.simple-control là lớp css của bạn

:disabled là lớp giả

select.simple-control:disabled{
         /*For FireFox*/
        -webkit-appearance: none;
        /*For Chrome*/
        -moz-appearance: none;
}

/*For IE10+*/
select:disabled.simple-control::-ms-expand {
        display: none;
}
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.