好程式設計師分享placeholder屬性詳解
好程式設計師分享placeholder屬性詳解,HTML5裡新引入很多有趣的新特徵;有些體現在HTML裡,有些是JavaScript API,全部非常的有用。其中我最喜歡的一個特徵就是文字框(INPUT)裡的placeholder屬性。placeholder屬效能夠讓你在文字框裡顯示提示資訊,一旦你在文字框裡輸入了什麼資訊,提示資訊就會隱藏。你以前可能無數次看到這種效果,但那些大部分是用JavaScript裡實現的,而現在,HTML5提供了原生支援,而且效果更好!
HTML程式碼
<input type="text" name="first_name" placeholder="你的姓名..." />
你也看見了,需要做的只是在文字框的宣告標籤上加入placeholder屬性。完全不需要JavaScript來創造這種效果。
檢查瀏覽器是否支援Placeholder屬性
因為placeholder是一種新屬性,很有必要檢查一下你的瀏覽器是否支援它,比如IE6、IE8肯定是不支援的:
1.function hasPlaceholderSupport() {
2. var input = document.createElement('input');
3. return ('placeholder' in input);
4.}
5.
如果使用者的瀏覽器不支援placeholder特徵,你需要藉助MooTools, Dojo, 或其它JavaScript工具來實現它:
1./* mootools ftw! */
2.var firstNameBox = $('first_name'),
3. message = firstNameBox.get('placeholder');
4.firstNameBox.addEvents({
5. focus: function() {
6. if(firstNameBox.value == message) { searchBox.value = ''; }
7. },
8. blur: function() {
9. if(firstNameBox.value == '') { searchBox.value = message; }
10. }
11.});
12.
用CSS美化placeholder
前一篇文章裡我寫了如何用CSS美化滑鼠選擇的文字。在進一步研究時我發現了另外一個有趣的CSS功能:CSS美化INPUT placeholder效果。下面讓我來用簡單的CSS程式碼美化文字框裡的placeholder文字。
CSS程式碼
火狐瀏覽器裡的用法和谷歌瀏覽器裡不太一樣。它們的名稱都很好理解:
1./* all */
2.::-webkit-input-placeholder { color:#f00; }
3.::-moz-placeholder { color:#f00; } /* firefox 19+ */
4.:-ms-input-placeholder { color:#f00; } /* ie */
5.input:-moz-placeholder { color:#f00; }
6.
7./* individual: webkit */
8.#field2::-webkit-input-placeholder { color:#00f; }
9.#field3::-webkit-input-placeholder { color:#090; background:lightgreen; text-transform:uppercase; }
10.#field4::-webkit-input-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }
11.
12./* individual: mozilla */
13.#field2::-moz-placeholder { color:#00f; }
14.#field3::-moz-placeholder { color:#090; background:lightgreen; text-transform:uppercase; }
15.#field4::-moz-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }
16.
你可以控制placeholder文字的字型、顏色和風格。你甚至可以將文字框的placeholder以動畫方式顯示。 美化你的文字框都是些看起來很小的事情,但對於一些互動式的網站來說,成功的關鍵就在於細節。現在IE10裡也只支援placeholder了,相信越來越多的人會使用這種原生