CSS3 重置iphone瀏覽器按鈕input,select等表單元素的默認樣式

之前寫了一個登錄表單頁面,再iphone上測試遇到了一些奇怪的問題:表單中的input[type="submit"]按鈕在iPhone的safari瀏覽器下會出現圓角的情況;input[type="text"]文本輸入框會有內陰影,這些問題該怎麼處理呢?請看下文

今天在公司寫了一個登錄頁面效果,讓我碰到一個怪異的問題——“表單中的input[type="submit"]和input[type="reset"]按鈕在iPhone的safari瀏覽器下圓角有一個bug”。下面我來簡單的描述一下這個bug的樣子:

初載入頁面後,表單中的input[type="submit"]和input[type="reset"]按鈕渲染成下圖的樣子:

2012122411191049
奇怪的是你點擊以後就會正常:

2012122411191050

或許很多同學會認爲我的樣式代碼沒寫好,那麼想讓大家知道是怎麼一回事,先來看看我寫的代碼:

input[type="submit"]和input[type="reset"]樣式代碼:


複製代碼
代碼如下:
.form-actions input{
width: 30%;
cursor: pointer;
background: rgb(61, 157, 179);
padding: 8px 5px;
font-family: 'BebasNeueRegular','Arial Narrow',Arial,sans-serif;
color: #fff;
font-size: 24px;
margin: 5px;
border: 1px solid rgb(28, 108, 122);
margin-bottom: 10px;
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.5);
border-radius: 3px;
box-shadow:0px 1px 6px 4px rgba(0, 0, 0, 0.07) inset,
0px 0px 0px 3px rgb(254, 254, 254),
0px 5px 3px 3px rgb(210, 210, 210);
-webkit-transition: all 0.2s linear;
transition: all 0.2s linear;
}
.form-actions input:hover{
background: rgb(74, 179, 198);
}
.form-actions input:active,
.form-actions input:focus{
background: rgb(40, 137, 154);
position: relative;
top: 1px;
border: 1px solid rgb(12, 76, 87);
box-shadow: 0px 1px 6px 4px rgba(0, 0, 0, 0.2) inset;
}

這樣的代碼在瀏覽器中瀏覽是完全沒有問題的:

注:請使用safari測試上面代碼。 可是上面的代碼就在iPhone的Safari瀏覽器下出開頭所陳述的問題。一下真不好如何動手解決,因爲從來沒有接觸過,所以就一直沒有碰到過。 但問題出了,就要想辦法解決,於是在GG上搜索“input submit for iPhone”,還真找到了問題所在。 Keir Whitaker 在Styling Submit Buttons for Mobile Safari 中介紹的內容和我碰到的問題可真是一模一樣,按其方法在樣式中加入:

複製代碼
代碼如下:
.form-actions input{ ... -webkit-appearance: none; }

更新到iPhone一看,真爽,問題解決了。

原來問題出在這裏,iPhone上的safari解析input[type="submit"]和input[type="reset"]按鈕會以 蘋果瀏覽器的默認UI渲染,這樣就出現我剛纔那種現像,我們在樣式中明確的設置了button的圓角值,但到iPhone的safari上就不生效了。要 想讓他生效,就需要在樣式中明確的指名:

複製代碼
代碼如下:
.form-actions input{ ... -webkit-appearance: none; }

在不同的“-webkit-appearance”選值情況下,button所渲染的效果是不一樣的,詳細的測試代碼大家可使用safari瀏覽器點擊這 裏。有關於“-webkit-appearance”的詳細介紹,這回算是知道了,最後我建議大家,我們可以直接在“reset.css”樣式文件中加處 這麼一句:

複製代碼
代碼如下:
input[type="submit"], input[type="reset"], input[type="button"], button { -webkit-appearance: none; }

這樣一來就不會爲這樣的問題頭痛了。

如果你還沒有碰到,或者你也在開發移動端web,都希望你記住這個小技巧,因爲當你在製作中碰到這樣的問題時,不會爲此抓破頭皮,能解決你問題。最後希望大家喜歡這篇文章,如果你覺得對你有所幫助,可以推薦給你的朋友,謝謝閱讀。


發佈了63 篇原創文章 · 獲贊 16 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章