2014-07-02 17 views
6

Làm thế nào tôi có thể thay đổi phông màu của một inputvăn bản hộp mà không ảnh hưởng đến màu sắc placeholder phông chữ trong trình duyệt Internet Explorer 11?Làm thế nào để thiết lập đầu vào màu văn bản, nhưng không giữ chỗ màu, trong IE11

Nếu tôi thay đổi màu sắc của phông chữ trong một đầu vào (Fiddle):

HTML:

<div class="buttonToolbar"> 
    <input type="text" placeholder="e.g. Stackoverflow"><br> 
</div> 

CSS:

.buttonToolbar input { 
    color: Blue; 
} 
:-ms-input-placeholder { /* Internet Explorer 10+ */ 
    font-style: italic; 
    color: GrayText; 
} 
::-webkit-input-placeholder { /* WebKit browsers */ 
    font-style: italic; 
    color: GrayText; 
} 

Các văn bản giữ chỗ là không có còn màu xám-ish mặc định trong Internet Explorer 11:

enter image description here

Nhưng nó không hiển thị như tôi muốn trong Chrome 35:

enter image description here

Bonus nhí

Nếu tôi không tạo kiểu cho input hộp, sau đó hộp đầu vào là không theo kiểu. Thay đổi:

.buttonToolbar input { 
    color: Blue; 
} 

để

.buttonToolbar { 
    color: Blue; 
} 

có nghĩa là văn bản giữ chỗ tại làm những gì nó là vụ phải tới:

enter image description here

nhưng bây giờ màu sắc văn bản không làm những gì nó phải làm:

enter image description here

Điều tôi cần là tìm hiểu cách thay đổi màu giữ chỗ HTML5 của đầu vào bằng CSS.

Bonus Reading

+0

này nghe có vẻ ngớ ngẩn nhưng .. làm bạn có một thẻ meta tuyên bố phiên bản của trình duyệt IE mà người dùng sẽ gặp phải nếu họ đến trên trang web? I.E ' ' Sẽ cung cấp cho bạn IE cập nhật nhất, tôi biết rằng IE 8/9 gặp khó khăn khi hiển thị các thuộc tính HTML5. – BuddhistBeast

+0

@BuddhistBeast Có. Bạn cũng có thể xác nhận trên trang fiddler rằng IE đang ở chế độ * "Edge" *. –

Trả lời

3

Bộ chọn giữ chỗ của bạn cần cụ thể hơn như dưới đây.

.buttonToolbar input { 
    color: Blue; 
} 
.buttonToolbar input:-ms-input-placeholder { /* Internet Explorer 10+ */ 
    font-style: italic; 
    color: GrayText; 
} 
.buttonToolbar input::-webkit-input-placeholder { /* WebKit browsers */ 
    font-style: italic; 
    color: GrayText; 
} 

http://jsfiddle.net/55Sfz/2/

+0

Câu trả lời hay. Và bây giờ tôi thấy cách thêm lớp trước phần tử giả cho nó ưu tiên, như tôi đã đọc trong liên kết từ bài đăng của tôi. Ít nhất tôi nghĩ điều đó có liên quan. – deebs

3

tôi là loại mới này, và câu trả lời này chỉ có thể là một sửa chữa nhanh chóng ... nhưng nếu bạn thêm! Quan trọng sau khi GrayText sau đó nó dường như hoạt động (ít nhất trong IE 10).

color: GrayText !important; 

Đây là fiddle http://jsfiddle.net/uc2Rj/

Nếu bạn không muốn sử dụng! Quan trọng này có thể ít nhất bạn bắt đầu đi đúng hướng giải quyết vấn đề của bạn. Nó có thể là một cái gì đó liên quan đến các yếu tố giả và ưu tiên của các lớp học trên chúng. (Why can't I override existing pseudo-elements?)

+1

Câu trả lời của bạn đã dẫn tôi xuống lỗ thỏ của đặc trưng chọn lọc. Trong khi JeremyCook giải quyết nó theo cách tôi tưởng tượng được dự định, câu trả lời của bạn đã giới thiệu tôi với cái búa/súng quan trọng '! Quan trọng'. Vì vậy, cho rằng bạn nhận được một upvote. –

+0

Cảm ơn bạn - nó chắc chắn đã giúp tôi trong một ràng buộc, ngay cả khi chỉ để kiểm tra nếu CSS đang bị ghi đè ở đâu đó. – deebs

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