input中加入搜索圖標


      剛吃了一份宮保雞丁刀削面,幸福感滿滿,寫篇博客消耗一下熱量。

      今天工作遇到的一個問題是在input輸入框中加入圖標,當輸入內容后,圖標和提示語一起隱藏,類似於placeholder的功能。如淘寶頁面,效果如下:

      剛開始我以為是使用了placeholder,想了半天也不知道怎么把圖標引入placeholder里面去,索興打開淘寶頁面,按下鍵盤上F12,跟隨我一起來探索淘寶前端工程師不為人知的秘密吧,吼吼。

      當然,我們不需要做的那么復雜,只要實現最基礎的功能即可。我發現placeholder只是個假象,大神們用的label標簽顯示提示語,交互效果應該是用js實現的,步驟如下:

1. HTML代碼:

<div class="box">
    <label for="q" id="q_label">請輸入關鍵字</label>
    <input id="q"  type="text">
    <i class="am-icon-search search" id="q_i"></i>
</
div>

      其實結構非常簡單,最外層放一個div盒子,里面放三個元素:一個label,一個input,一個i標簽。使用for屬性將label與input綁定,label用來顯示字符串,i標簽引入圖標,input干好本職工作就行了——提供輸入框。我這里是用的amazeUI框架的圖標,所以用i標簽引入,如果你直接使用圖片,用img當然也沒有問題。

      好了,結構搭好了,下面就是css大顯身手的時候了。

2. CSS代碼 :

/**
  *放置input的div盒子
  *1.此處應我的項目需要,加了些特別的設置,如字體、背景色等,按需添加;
  *2.內層input不加邊框,看起來效果會自然一點,所以外層div設置了邊框和圓角
*/ .box{ background-color: #ffffff; border: 1px solid #eeeeee; border-radius: 6px; font-size: 14px; text-align: center; } /** *label標簽樣式 放在.box下,不至於影響其他的label *采取絕對定位,位置根據需求確定 */ .box label{ z-index: 2; position: absolute; left: 50%; margin-left: -8%; color: #B2B2B2; top: 4.8rem; font-weight: normal; } /** *input標簽樣式 *寬度適應外層div *隱藏邊框 *這里有個小技巧,height與line-height值相等,可保證文字垂直居中;但我發現文字比圖標略偏下,進行了微調; */ .box input{ text-indent: 10px; height: 1.8rem; line-height: 1.9rem; width: 100%; border: none; outline: none; } /** *圖標樣式 *絕對定位,自定義顏色 */ .box i{ position: absolute; top: 4.8rem; left: 50%; margin-left: -15%; color: #B2B2B2; }

      做好這些,效果就已經能粗來了,看圖說話

      至此,功能實現。既然已經寫到這里了,順便把js語句一並呈上吧。

3. JS代碼:

/**
 * Created by lixj on 2015/8/14.
 *  js判斷input輸入框中是否有值,以此來判斷是否隱藏默認提示信息
* 使用keyup事件
*/ $(function() { $('#q').on('keyup',function() { var len = document.getElementById('q').value; if(len == ''){ $('#q_label').show(); $('#q_i').show(); }else{ $('#q_label').hide(); $('#q_i').hide(); } }); })

 

      歐啦!周末愉快!!下班回家!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM