很早以前就看過ytzong的《寬度自我調整的輸入框》這篇文章,感覺很不錯,非常詳實,YUI的柵格決定寬度,內容決定高度確實很實用。
個人認為ytzong的這個方法有兩點非常麻煩:
•<b><b><input type=」text」></b></b>需要套2層b標籤;
•公式:.fluid-input-inner{padding-right:輸入框左邊框 + 輸入框右邊框 + 輸入框左padding + 輸入框右padding}也很麻煩經常忘記。
前段時間在一個專案中真好用到,同事啄米鳥類比了一個寬度自我調整的輸入框,原理和ytzong的大致相同,但是解決了以上兩個麻煩點。 當然也有不足的地方。
看代碼:
< ! DOCTYPE HTML> <html> <head> <meta HTTP-equiv="Content-Type" content="text/html; charset=utf-8"> <style type="text/css"> h2 { margin :0; padding:10px 0; font-size:14px; } .mod-retweet { background:#E4EFF4; border:1px solid #A8D1E0; padding:3px 5px 5px; margin-top:5px; } .mod-retweet .mod-retweet-textarea { background-color: #FFFFFF; border:1px solid #64B2D1; margin-bottom:5px; overflow:hidden; padding:2px; position: relative; zoom:1 } .mod-retweet .mod-retweet-textarea textarea {padding: 0; margin: 0; border:0 none; font-size:12px; height:80px; line-height:1.5em; width:100%; display:block } .mod-retweet .mod-retweet-textarea input { border:0 none; font-size:12px; height:20px; line-height:1.5em; width:100%; } </style > <title>類比寬度自我調整的輸入框</title> </meta></head> <body> <h1>類比寬度自我調整的輸入框</h1> <div class="mod-retweet"> <h2>類比input的自我調整:</h2 > <div class="mod-retweet-textarea"> <input type="text" name="textfield" id="textfield"/> </div> </div> <hr /> <div class=" mod-retweet"> <h2>類比textarea的自我調整:</h2> <div class="mod-retweet-textarea"> <textarea maxlength="500" rows="5" cols="45" name="bookcontent"></textarea > </div> </div> </body> </html>
可以發現一個非常討厭的地方就是:
•textarea 和 input 文本輸入框的邊框是用套在其外層的容器的border來類比的,textarea 和 input 文本輸入框的本身邊框 border:0 none。 這樣webkit下輸入框focus後,輸入框的邊框在類比的邊框裡面,體驗上有點不爽。
•還有一點非常值得注意的是:textarea的padding和margin一定要重置為0,否則在webkit和opera下會有細小的bug。