2012-05-07 67 views
34

Có thể thay đổi màu nền mặc định của tùy chọn danh sách chọn khi di chuột không?Thay đổi Chọn Danh sách Màu nền tùy chọn khi di chuột

HTML:

<select id="select"> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    <option value="3">Three</option> 
</select> 

Tôi đã thử option:hover { background-color: red; }, nhưng nó là không sử dụng. Có ai biết làm thế nào để làm điều này?

+2

Trong một số trình duyệt, có thể ở những trình duyệt khác thì không. Thông thường các phần tử biểu mẫu được hệ điều hành trả về chứ không phải trình duyệt, do đó CSS ​​không phải lúc nào cũng (hoặc thậm chí là 'hiếm khi') được áp dụng. –

+1

trong đó trình duyệt là nó có thể? – vipin8169

Trả lời

9

Lựa chọn/Các yếu tố tùy chọn được hiển thị bởi hệ điều hành, không phải HTML. Bạn không thể thay đổi kiểu cho các thành phần này.

+26

Đây là một câu hỏi khá cũ. Nếu bạn định thêm câu trả lời vào thời điểm này, ít nhất là xây dựng hoặc hỗ trợ nó với một tham chiếu ... –

32

Điều này có thể được thực hiện bằng cách thực hiện một bóng hộp inset. ví dụ:

select.decorated option:hover { 
    box-shadow: 0 0 10px 100px #1882A8 inset; 
} 

Ở đây, .decorated là một lớp được gán cho hộp chọn.

Hy vọng bạn có điểm.

+11

+1 Ý tưởng tuyệt vời! Nhưng 'option: checked' hoạt động tốt hơn' option: hover'. Cả hai dường như chỉ hoạt động trên Firefox. – Oriol

+1

Có điều gì hoạt động trên Chrome không? – GumZ

+1

Cách tiếp cận của tôi chỉ là tạo ra một phần tử hoàn toàn khác, hoạt động giống như yếu tố 'chọn'. Về cơ bản một div với một danh sách bên trong. – Diogo

-5

đây là những gì bạn cần, các combinator con:

select>option:hover 
    { 
     color: #1B517E; 
     cursor: pointer; 
    } 

Hãy thử nó, hoạt động hoàn hảo.

Dưới đây là tài liệu tham khảo: http://www.w3schools.com/css/css_combinators.asp

+1

Trong Firefox, kiểu mặc định là 'option: checked {background-color: -moz-html-cellhighlight! màu: -moz-html-cellhighlighttext! quan trọng; } '. Sau đó, vấn đề là bạn không thể ghi đè lên một tài sản quan trọng nội bộ, ngay cả khi bạn sử dụng! – Oriol

+0

Không hoạt động trong Chrome. – Lev

-2

Tôi nhận ra đây là một câu hỏi cũ, nhưng gần đây tôi đi qua nhu cầu này và đã đưa ra các giải pháp sau đây sử dụng jQuery và CSS:

jQuery('select[name*="lstDestinations"] option').hover(
     function() { 
      jQuery(this).addClass('highlight'); 
     }, function() { 
      jQuery(this).removeClass('highlight'); 
     } 
    ); 

và css :

.highlight { 
    background-color:#333; 
    cursor:pointer; 
} 

Có lẽ điều này sẽ giúp người khác.

+0

Tính năng này không hoạt động, đơn giản chỉ vì nền màu _gets bị ghi đè bởi hệ điều hành. Điều này tương đương với chỉ sử dụng 'option: hover'. Không hoàn toàn mặc dù: kịch bản của bạn bị hỏng nếu tôi bắt đầu sử dụng bàn phím trong khi tôi có con chuột di chuột qua một tùy chọn, do đó, nó không phải là mạnh mẽ. – doppelgreener

4

Thực hiện một hình chữ nhật hộp bóng CSS hoạt động trên Firefox:

select option:checked, 
select option:hover { 
    box-shadow: 0 0 10px 100px #000 inset; 
} 

Kiểm tra tùy chọn mục làm việc trong Chrome:

select:focus > option:checked { 
    background: #000 !important; 
} 
+2

không hoạt động trên chrome – deemi

0

Vấn đề là không thậm chí Javascript không thấy các yếu tố option được bay lượn. Đây chỉ là đặt trọng tâm vào nó như thế nào sẽ không được giải quyết (trong thời gian tới ít nhất) bằng cách sử dụng chỉ CSS:

window.onmouseover = function(e) 
{ 
console.log(e.target.nodeName); 
} 

Các chỉ cách để giải quyết vấn đề này (bên cạnh chờ đợi một thiên niên kỷ cho các nhà cung cấp trình duyệt để khắc phục lỗi, hãy để một mình làm ảnh hưởng đến những gì bạn đang cố gắng làm) là thay thế trình đơn thả xuống bằng HTML/XML của riêng bạn bằng JavaScript. Điều này có thể liên quan đến việc sử dụng phần tử select thay thế bằng phần tử ul và việc sử dụng phần tử radioinput trên mỗi phần tử li.

Các vấn đề liên quan