2012-11-01 36 views
48

Làm cách nào để thay đổi màu của trình giữ chỗ khi lấy nét trường nhập? Tôi sử dụng css này để đặt màu mặc định, nhưng làm cách nào để thay đổi màu trên tiêu điểm?Làm thế nào để thay đổi màu giữ chỗ trên tiêu điểm?

::-webkit-input-placeholder { color: #999; } 

/* Firefox < 19 */ 
:-moz-placeholder { color: #999; } 

/* Firefox > 19 */ 
::-moz-placeholder { color: #999; } 

/* Internet Explorer 10 */ 
:-ms-input-placeholder { color: #999; } 

Trả lời

88

Hãy thử điều này, điều này sẽ làm việc:

input::-webkit-input-placeholder { 
    color: #999; 
} 
input:focus::-webkit-input-placeholder { 
    color: red; 
} 

/* Firefox < 19 */ 
input:-moz-placeholder { 
    color: #999; 
} 
input:focus:-moz-placeholder { 
    color: red; 
} 

/* Firefox > 19 */ 
input::-moz-placeholder { 
    color: #999; 
} 
input:focus::-moz-placeholder { 
    color: red; 
} 

/* Internet Explorer 10 */ 
input:-ms-input-placeholder { 
    color: #999; 
} 
input:focus:-ms-input-placeholder { 
    color: red; 
} 

Dưới đây là một ví dụ: http://jsfiddle.net/XDutj/27/

+0

tại sao không có: -ms-input-placeholder? –

+1

Tôi không có IE để kiểm tra ở trên, nó sẽ là tuyệt vời nếu ai đó có thể kiểm tra nó. AFAIK, IE9 thiếu hỗ trợ trình giữ chỗ: http://caniuse.com/#search=placeholder –

+0

Hoạt động như một sự quyến rũ đối với tôi. Tuy nhiên, không thử nghiệm trên IE. – Sethen

1

Hãy thử điều này:

HTML

<input type='text' placeholder='Enter text' /> 

CSS

input[placeholder]:focus { color: red; } 
+0

kích hoạt không được tập trung. – BoltClock

+0

Có, cảm ơn bạn. –

+2

Điều đó không cần thiết, nhưng tôi nghi ngờ đó là vì, khi kiểm tra kỹ hơn, mã của bạn sẽ tô màu giá trị thực của đầu vào vào tiêu điểm, thay vì chỉ là văn bản giữ chỗ của nó. – BoltClock

1

tôi đã tìm thấy giải pháp này với JQuery:

$('input[type="text"]').each(function(){ 

    $(this).focus(function(){ 
     $(this).addClass('input-focus'); 
    }); 

    $(this).blur(function(){ 
     $(this).removeClass('input-focus'); 
    }); 

    }); 

với css này:

.input-focus::-webkit-input-placeholder { color: #f00; }  
.input-focus:-moz-placeholder { color: #f00; } 
.input-focus:-ms-input-placeholder { color: #f00; } 
+3

Bạn không cần jQuery cho điều này ... – BoltClock

+0

JQuery là đẹp, nhưng phải chết. Tất cả mọi thứ có một sự khởi đầu, có một kết thúc, @DavidePalmieri – Edakos

+0

WTH là bạn trên @BoltClock. Tất nhiên nó cần jQuery ... Nếu bất cứ điều gì nó cần moar jQuery! – PeeHaa

3

Ngoài Pranav câu trả lời tôi tinh chế mã với khả năng tương thích textarea :

::-webkit-input-placeholder { color: #999; } 
:-moz-placeholder { color: #999; } 

:focus::-webkit-input-placeholder { color: #ccc; } 
:focus:-moz-placeholder { color: #ccc; }​ 
+0

Nhìn ở khắp mọi nơi cho việc này. Nó hoạt động. Cảm ơn! – Luke

0

Từ Firefox 19: Lớp giả: -moz-placeholder phù hợp với các phần tử form với thuộc tính placeholder đã bị loại bỏ, và phần tử giả - :: - moz-placeholder đã được thêm vào.

input:focus::-moz-placeholder { color: transparent; } 
1

Sử dụng sao * để chọn tất cả mọi thứ

*::-webkit-input-placeholder { color: #999; } 


*:-moz-placeholder { color: #999; } 


*::-moz-placeholder { color: #999; } 


*:-ms-input-placeholder { color: #999; } 
-1

Bạn có thể tạo ra một thiết kế hoạt hình placeholder vật liệu co lại trên đầu khi lĩnh vực đầu vào là tập trung.

<div class="field"> 
<input type="text" name="user" required><br> 
<label>Enter Username</label> 
</div> 

Về cơ bản, trường nhãn sẽ hoạt động như trình giữ chỗ. Chúng ta có thể làm điều này chỉ bằng cách sử dụng css. Giải thích đây http://www.voidtricks.com/create-material-design-animated-placeholder/

1

Sau đây làm việc cho tôi:

input:focus::-webkit-input-placeholder 
{ 
    color: red; 
} 
Các vấn đề liên quan