tips之CSS動態(tài)實現(xiàn)文本框清除按鈕的隱藏與顯示

原文地址:http://www.zhangxinxu.com/wordpress/?p=4077

當(dāng)前現(xiàn)代瀏覽器中产园,Chrome瀏覽器下type=search的輸入框會有清除按鈕的動態(tài)呈現(xiàn),不過搜索input框尺寸不太好控制(padding無視)马绝;FireFox瀏覽器貌似任何類型的輸入框都無動于衷鞠值;IE10+瀏覽器貌似任何輸入框都會出現(xiàn)清除按鈕附鸽,但是長得略微粗糙了點峰锁,設(shè)計師同學(xué)接受不了诽俯。

貌似不和諧了,咋辦呛占?傳授個新技能,借助HTML以及CSS懦趋,來模擬清除按鈕可動態(tài)呈現(xiàn)的搜索框晾虑。

如下CSS:

.input { padding: 5px; margin: 0; border: 1px solid #beceeb; }
.clear { 
    display: none; position: absolute; 
    width: 16px; height: 16px; margin: 6px 0 0 -20px; 
    background: url(clear.png);
}
.input::-ms-clear { display: none; }
.input:valid + .clear { display: inline; }

如下HTML:輸入任意內(nèi)容:

<input class="input" required><a class="clear"></a>
效果圖

CSS與文本框上清除按鈕顯隱Demo

實現(xiàn)原理
1、HTML部分因為search
類型文本框在Chrome/Opera/Safari下尺寸不好控制仅叫,因此使用缺省的類型(也就是text類型)帜篇;required是必要屬性,配合CSS偽類實現(xiàn)我們的效果诫咱。

2笙隙、CSS部分使用的是:valid
偽類。這是CSS3中新增偽類坎缭,IE10+以及其他現(xiàn)代瀏覽器支持竟痰,表示表單合法。由于HTML中的<input>有HTML5表單驗證屬性required. 于是掏呼,如果文本框沒有內(nèi)容坏快,則不合法;有內(nèi)容憎夷,則合法莽鸿,就會觸發(fā)這里的:valid偽類選擇器。而這里:valid偽類控制后面的清除按鈕顯示拾给,于是就實現(xiàn)了我們想要的效果祥得。
啊,對了蒋得。IE11瀏覽器下不是所有的文本框都有黑色的叉叉嗎级及,會跟這里的自定義清除按鈕重疊,::-ms-clear { display: none; }
這段代碼可以去之~~ (其實额衙,不是偽類不認識创千,而是兄弟選擇器的渲染bug. 通過修改透明度為0→1變化缰雇,鼠標(biāo)hover清除按鈕位置,則按鈕出現(xiàn)或隱藏追驴。尚未發(fā)現(xiàn)什么奇淫技巧修復(fù)這個問題械哟。)

更多偽元素改變表單控件默認樣式可以參考“偽元素改變表單控件默認樣式”一文。

實現(xiàn)的優(yōu)點
此方法相比傳統(tǒng)JS實現(xiàn)的好處在于殿雪,更簡單了暇咆。JS的話還要偵聽輸入事件(input
)等,比較折騰丙曙。CSS的話完全瀏覽器自身事件特性爸业,顯然,高效簡單的多亏镰。

實現(xiàn)的不足
不足在于扯旷,兼容性。IE9-以下的瀏覽器只能點蠟燭了索抓。
不過钧忽,寫寫原型啊,demo逼肯;或者漸進增強使用耸黑;或者移動端開發(fā)等,都可以試試這個新技能篮幢。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末大刊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子三椿,更是在濱河造成了極大的恐慌缺菌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搜锰,死亡現(xiàn)場離奇詭異男翰,居然都是意外死亡,警方通過查閱死者的電腦和手機纽乱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門蛾绎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鸦列,你說我怎么就攤上這事租冠。” “怎么了薯嗤?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵顽爹,是天一觀的道長。 經(jīng)常有香客問我骆姐,道長镜粤,這世上最難降的妖魔是什么捏题? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮肉渴,結(jié)果婚禮上公荧,老公的妹妹穿的比我還像新娘。我一直安慰自己同规,他們只是感情好循狰,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著券勺,像睡著了一般绪钥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上关炼,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天程腹,我揣著相機與錄音,去河邊找鬼儒拂。 笑死寸潦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的侣灶。 我是一名探鬼主播甸祭,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼缕碎,長吁一口氣:“原來是場噩夢啊……” “哼褥影!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起咏雌,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤凡怎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后赊抖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體统倒,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年氛雪,在試婚紗的時候發(fā)現(xiàn)自己被綠了房匆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡报亩,死狀恐怖浴鸿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情弦追,我是刑警寧澤岳链,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站劲件,受9級特大地震影響掸哑,放射性物質(zhì)發(fā)生泄漏约急。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一苗分、第九天 我趴在偏房一處隱蔽的房頂上張望厌蔽。 院中可真熱鬧,春花似錦俭嘁、人聲如沸躺枕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拐云。三九已至,卻和暖如春近她,著一層夾襖步出監(jiān)牢的瞬間叉瘩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工粘捎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留薇缅,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓攒磨,卻偏偏與公主長得像泳桦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子娩缰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案灸撰? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J的外補...
    _Yfling閱讀 13,734評論 1 92
  • 本文轉(zhuǎn)載自:眾成翻譯譯者:為之漫筆鏈接:http://www.zcfy.cc/article/239原文:http...
    極樂君閱讀 7,363評論 1 62
  • 轉(zhuǎn)載請聲明 原文鏈接地址 關(guān)注公眾號獲取更多資訊 第一部分 HTML 第一章 職業(yè)規(guī)劃和前景 職業(yè)方向規(guī)劃定位...
    程序員poetry閱讀 16,524評論 32 459
  • 1.故事內(nèi)涵 這部動漫使用了大量的隱喻符號,其中一個重要的隱喻符號就是移動城堡拼坎。移動城堡是什么意思呢浮毯?在西方文藝作...
    戀家的貓閱讀 2,414評論 9 11
  • 注意力是智力的五個基本因素之一债蓝,是記憶力、觀察力盛龄、想象力饰迹、思維力的準備狀態(tài),所以注意力被人們稱為心靈的門戶...
    晚起畫蛾眉閱讀 423評論 1 4