2011-09-17 35 views
11

Tôi có một hộp chọn đơn giản với một optiongroup trong ứng dụng của tôi.Làm thế nào để thay đổi phong cách của một hộp Chọn 'nhãn nhóm chọn lọc

<select> 
    <optgroup label="Swedish Cars"> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
</optgroup> 
    ---- 
    ---- 
    ---- 
</select> 

Khi được hiển thị trong trình duyệt, nhãn nhóm tùy chọn được hiển thị bằng chữ in đậm và in nghiêng; Tôi muốn nó được hiển thị mà không có bất kỳ phong cách nào.

Trả lời

11

Rất tiếc, các hộp chọn là một trong số ít những thứ bạn có thể thêm rất ít phong cách cho CSS. Bạn thường bị giới hạn cách trình duyệt hiển thị nó.

Ví dụ, nó trông như thế này trong chrome:

enter image description here

Và điều này trong Firefox:

enter image description here

+1

Vì vậy, có nghĩa là chúng tôi không thể ghi đè lên các trình duyệt phong cách sử dụng cho nhãn hiển thị optiongroup, trong xe hơi Thụy Điển ảnh chụp màn hình ở trên và xe hơi Mỹ? I wan để hiển thị các nhãn trong trọng lượng phông chữ bình thường cho tất cả các trình duyệt. Tôi muốn hiển thị phông chữ thông thường cho tất cả các trình duyệt. – gnanz

+1

Vâng, bạn không thể làm điều đó với CSS, một phần của chrome của trình duyệt, thật không may. – wesbos

+0

css do Helrik cung cấp cho Firefox – gnanz

0

Bạn có thể tạo kiểu một hộp chọn chỉ sử dụng css, nó đòi hỏi một loại công việc xung quanh:

Đầu tiên, bạn bao quanh nó với một div và cho rằng một lớp học:

<div class="selectStyle"> 
    <select> 
     <option>First Option</option> 
     <option>Second Option</option> 
    </select> 
</div> 

Sau đó, bạn chắc chắn rằng các yếu tố chọn được kiểu một cách nào đó sử dụng css:

.selectStyle select { 
    background: transparent; 
    width: 250px; 
    padding: 4px; 
    font-size: 1em; 
    border: 1px solid #ddd; 
    height: 25px; 
} 

Và bạn tạo kiểu cho div:

.selectStyle { 
    width: 235px; 
    height: 25px; 
    overflow: hidden; 
    background: url(yourArrow.png) no-repeat right #ccc; 
} 
+0

Tôi muốn chỉ chọn kiểu nhãn nhóm là – gnanz

+0

Sau đó, bạn chỉ cần nhắm mục tiêu nhóm: optgroup [label = "Swedish Cars"] –

+0

Gnanz đang nói về thuộc tính nhãn. Đang cụ thể về optgroup không thực sự giải quyết vấn đề của mình. –

11

Trên hầu hết các trình duyệt (thử nghiệm trên IE mới nhất và FF), bạn có thể dễ dàng thay đổi nhãn của nhóm chọn chỉ bằng CSS:

select optgroup{ 
    background:#000; 
    color:#fff; 
    font-style:normal; 
    font-weight:normal; 
    } 

Rõ ràng, bạn có thể đặt bất kỳ tên lớp nào thay vì thẻ html chọn. Bằng cách này, như các câu trả lời khác cho biết, vẫn còn vài tùy chọn CSS để sử dụng với các hộp chọn và nhiều quản trị viên web ghi đè chúng bằng cách sử dụng phương thức do user949847 đưa ra. Nhưng mã này ở trên phải đủ để phù hợp với nhu cầu của bạn.

+0

hoạt động với firefox, vẫn không thể sửa lỗi IE – gnanz

+3

Làm việc trong IE10, FF21, Chrome28 và Opera12 kể từ ngày này. (Xin lỗi, chưa cài đặt Safari!) Lưu ý: Trên hầu hết các trình duyệt được đề cập, toàn bộ phần được tạo kiểu, không chỉ nhãn. –

+0

Nếu bạn áp dụng kiểu cho thẻ 'tùy chọn' cũng như thẻ' optgroup', bạn có thể kiểm soát hiệu quả bản trình bày của nhãn mà không thay đổi bản trình bày tiêu chuẩn của các mục trong danh sách. – jatrim

7

Firefox phong cách nhãn sử dụng quy tắc này:

optgroup:before { 
    content: attr(label); 
    display: block; 
} 

Bạn có thể ghi đè lên nó.

+0

bạn là một huyền thoại. Điều này làm việc một điều trị. Tôi đang đánh dấu bạn ... –

-1

Để có cách tiếp cận khác để phá vỡ các vấn đề với nhóm chọn kiểu dáng, tôi khuyên bạn nên sử dụng các tùy chọn đã tắt.

<option disabled>[group label]</option> 

bạn có thể chụp ảnh tạo kiểu cho ví dụ.

<style> [disabled] { color:#000; background-color:#CCC } </style> 
+0

Tôi nhận thấy rằng điều này không có kiểu trên thiết bị di động. Có cách nào làm được việc này không? – riotgear

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