深入淺出CSS3 background-clip,background-origin和border-image教程

來源:互聯網
上載者:User

核心提示:最近在準備一個下學期參加比賽的概念網站,希望能用到CSS3的新特性,比如background的background-clip或background-origin或border-image。但僅僅是依靠w3schools上的文檔和說明發現很多臆想中的效果都實現不了。

很久以前 Roger Johansson 就在他的 blog 上做了一個 用樣式控製表單元素 的測試 , 告訴我們企圖用樣式控製表單元素是一件不可能的事情using CSS to style form controls to look exactly the same across browsers and platforms is impossible
甚至 css2.1 規範中也沒有明確這方面的規定 , 而是打算將它 fix in future
CSS 2 . 1 does not define which properties apply to form controls and frames, or how CSS can be used to style them. User agents may apply CSS properties to these elements. Authors are recommended to treat such support as experimental. A future level of CSS may specify this further.

所以如果想要讓表單元素在各個瀏覽器下完全一致 , 最好的解決方案莫過於完全不理會作業系統的樣式 , 用自訂的 ui 風格 , 就像 bing 或 Google 的 Jazz UI 那樣


 

然而 , 這會導致介面和使用者的系統格格不入 , 目前 google 主要還是針對瀏覽器做了些特殊處理 , 如 webkit 下用 gradient 使得按鈕看上去好些
 

mac 下 webkit 的按鈕不好控制


 

本文將就輸入框高度的問題進行調研 , 尋找更好的解決方案
輸入框高度
首先 , 這個調研的一個主要原因是 , 搜尋結果頁打算進入標準模式 , 這會導致盒模型的變化 , 造成輸入框高度和原來不一樣 , 所以為了和線上效果保持一致 , 我們需要找到一個最佳的解決方案
有同學可能會不解 , 有那麼難麼 ? 設定一個 height 不就解決了麼 ?
<input type= "text" style= "height:28px" />
然而 , 經測試發現這裡面的細節問題還是還挺多 , 由於資源有限 , 這裡只測試了主要的瀏覽器和平台 , 包括目前主要用到的 5 個瀏覽器
·         IE6(xp)
·         IE7(xp)
·         IE8(win7)
·         Firefox 3.5(xp)
·         Firefox 3.5(win7)
·         Firefox 3.5(mac 10.6.2)
·         Firefox 3.5(ubuntu 10.4)
·         Chrome 5(xp)
·         Chrome 5(win7)
·         Chrome 5(mac 10.6.2)
·         Chrome 5(ubuntu 10.4)
通過設定 height 的方式
我們的目標是和目前搜尋方塊大小保持一致 , 既 28px
首先測試的是最簡單的 height, 先看目前線上的方案 ( 簡單起見就直接寫到 style 中了 )
<input type= "text" style= "font: 16px arial; height: 1.78em; padding-top:2px" />
從樣式上推導 , 由於盒模型問題 , 在 IE 下的大小將是 1.78 * 16 = 28px, 而 Firefox 等瀏覽器應該是 1.78 * 16 + 2px + border-width * 2 = 30 + ? px
測試結果是
瀏覽器  height + padding-top + padding-bottom + border-top-width + border-bottom-width 
IE6(xp)  21 + 2 + 1 + 2 + 2 = 28 
IE7(xp)  21 + 2 + 1 + 2 + 2 = 28 
IE8(win7)  21 + 2 + 1 + 2 + 2 = 28 
Firefox 3.5(xp)  21 + 2 + 1 + 2 + 2 = 28 
Firefox 3.5(win7)  23 + 2 + 1 + 1 + 1 = 28 
Firefox 3.5(mac 10.6.2)  19 + 2 + 1 + 3 + 3 = 28 
Firefox 3.5(ubuntu 10.04)  19 + 2 + 1 + 3 + 3 = 28 
Chrome 5(xp)  21 + 2 + 1 + 2 + 2 = 28 
Chrome 5(win7)  21 + 2 + 1 + 2 + 2 = 28 
Chrome 5(mac 10.6.2)  21 + 2 + 1 + 2 + 2 = 28 
Chrome 5(ubuntu 10.04)  21 + 2 + 1 + 2 + 2 = 28 

效果相當理想 , 所有瀏覽器都是 28px, 看來即使是 Firefox 和 Chrom 在 quirks 模式下的 input 都沒有遵循盒模型 , 所以線上的輸入框高度在各個瀏覽器下很完美地保持一致
然而如果是在 standards 模式下 , 結果則是
瀏覽器  height + padding-top + padding-bottom + border-top-width + border-bottom-width 
IE6(xp)  28 + 2 + 1 + 2 + 2 = 35 
IE7(xp)  28 + 2 + 1 + 2 + 2 = 35 
IE8(win7)  28 + 2 + 1 + 2 + 2 = 35 
Firefox 3.5(xp)  28 + 2 + 1 + 2 + 2 = 35 
Firefox 3.5(win7)  28 + 2 + 1 + 1 + 1 = 32 
Firefox 3.5(mac 10.6.2)  28 + 2 + 1 + 3 + 3 = 37 
Firefox 3.5(ubuntu 10.04)  28 + 2 + 1 + 3 + 3 = 37 
Chrome 5(xp)  28 + 2 + 1 + 2 + 2 = 35 
Chrome 5(win7)  28 + 2 + 1 + 2 + 2 = 35 
Chrome 5(mac 10.6.2)  28 + 2 + 1 + 2 + 2 = 35 
Chrome 5(ubuntu 10.04)  28 + 2 + 1 + 2 + 2 = 35 

1 2 下一頁 >全文閱讀 提示:試試"← →"鍵,翻頁更方便哦!

[1] [2]  下一頁



相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。