国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > CSS > 正文

網(wǎng)頁(yè)制作CSS教程:自適應(yīng)圓角

2024-07-11 09:03:29
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

武林網(wǎng)(www.survivalescaperooms.com)文章簡(jiǎn)介:有時(shí)候我們不得不面對(duì)圓角,也很傻很天真的認(rèn)為利用 CSS3 的新特性對(duì)瀏覽器分級(jí)支持是最好解決方案.

前言

有時(shí)候我們不得不面對(duì)圓角,也很傻很天真的認(rèn)為利用 CSS3 的新特性對(duì)瀏覽器分級(jí)支持是最好解決方案,但現(xiàn)實(shí)≠理想…

需求困惑

經(jīng)典的解決方案看起來(lái)像這樣:

<!DOCTYPE html><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type" /><title>傳統(tǒng)方案及bug</title><style>body{margin:100px;background-color:red;}div, p, b{margin:0;padding:0;}b{display:block;}.rc{display:inline-block;#display:inline;#zoom:1;}/* float 效果相同.rc{float:left;} */.rc1, .rc2, .rc .bd{border-style:solid;border-color:black;background-color:yellow;}.rc1, .rc2{height:1px;overflow:hidden;}.rc2, .rc .bd{border-width:0 1px;}.rc1{margin:0 2px;height:0;border-width:1px 0 0;}.rc2{margin:0 1px;}.rc .bd{padding:0 6px;line-height:1.5;}</style></head><body><div class="rc">    <b class="top"><b class="rc1"></b><b class="rc2"></b></b>    <div class="bd">        <p>FML!!!</p>    </div>    <b class="bottom"><b class="rc2"></b><b class="rc1"></b></b></div></body></html>

使 rc float: left 或 display: inline-block 或許能滿足需求,不過(guò) IE 6&7 出現(xiàn) bug:IE6中依然顯示為dispaly:block,而IE7中top 和 bottom縮成一坨,不肯擴(kuò)展開(kāi)來(lái),而在 rc1/rc2/rc3 中插入文字

<b class="rc1">XXX</b>

則只能擴(kuò)展到文字XXX的寬度,無(wú)法與 bd 對(duì)齊!
如果你能搞定,麻煩留言告訴我一下 :)

解決

試了幾個(gè)方法均不通,也搜索不到這個(gè) bug,這時(shí)想到了 Google 系產(chǎn)品的 1px 圓角按鈕:

網(wǎng)頁(yè)制作CSS教程:自適應(yīng)圓角


這是前 Google 視覺(jué)設(shè)計(jì)師 Doug Bowman 的功勞,后轉(zhuǎn)會(huì)到Twitter(AD一下:@ytzong),Doug Bowman 為此寫(xiě)過(guò)一篇博文《Recreating the button》 demo在此。不過(guò)demo 也僅僅是 demo,產(chǎn)品中使用的還是某對(duì)天才工程師夫婦的神作,他們有足夠的時(shí)間來(lái)做這項(xiàng)工作:

The magical inline-block solved everything, except in IE. That’s where the genius of Google engineers came in. They knew how to get tricks working in all browsers, and this technique interested a couple of them enough that they dedicated the time to make it work.

打開(kāi) Gmail,用 firebug 艸艸看了一下,心里暗罵一句:天才就是天才!
寫(xiě)了個(gè)簡(jiǎn)單的 demo(為了演示方便這里采用了盒諧的顏色):

<!DOCTYPE html><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type" /><title>自適應(yīng)圓角</title><style>body{margin:100px;background-color:red;}div, p{margin:0;padding:0;}.div1, .div2, .div3{display:inline-block;#display:inline;#zoom:1;position:relative;border-style:solid;border-color:black;}.div1{border-width:1px;}.div2, .div3{#left:-2px;border-width:0 1px;background-color:yellow;}.div2{margin:0 -2px;}.div3{margin:1px -2px;padding:0 6px;line-height:1.5;}.pointer1, .pointer2{position:absolute;top:7px;width:0;height:0;overflow:hidden;border-top:6px transparent dotted;border-bottom:6px transparent dotted;}.pointer1{left:-9px;border-right:6px black solid;}.pointer2{left:-8px;border-right:6px yellow solid;}</style></head><body><div class="div1"><div class="div2"><div class="div3"><p>FML!!!</p></div></div><div class="pointer1"></div><div class="pointer2"></div></div></body></html>

效果如下:

網(wǎng)頁(yè)制作CSS教程:自適應(yīng)圓角


不僅滿足了需求,代碼量及結(jié)構(gòu)嵌套也很少。

代碼說(shuō)明

可以看出:IE 6&7 bug 眾多的特點(diǎn)在此例中表現(xiàn)的淋漓盡致!

最后的話

阮一峰老師也寫(xiě)過(guò)一篇《制作Gmail式按鈕》,配合強(qiáng)大的 jquery 來(lái)實(shí)現(xiàn)按鈕各種狀態(tài),最后的總結(jié)也很精彩,修改一下下:

雖然這種按鈕(圓角)的視覺(jué)效果比較理想,有很多設(shè)計(jì)上的優(yōu)點(diǎn),但是局限性也很大。一方面,它需要大量的冗余代碼,與語(yǔ)義網(wǎng)的原則相違背…

完美方案還是利用瀏覽器的自身特性提供對(duì)不同的瀏覽器分級(jí)支持,漸進(jìn)增強(qiáng)(比如 IE 下顯示為直角,對(duì)CSS 3支持較好的瀏覽器顯示為圓角),這才是開(kāi)發(fā)效率、可維護(hù)性、語(yǔ)義、性能的最佳平衡。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 治多县| 瑞丽市| 贡山| 临夏县| 隆尧县| 明溪县| 宁乡县| 鹤壁市| 武义县| 宁河县| 揭阳市| 永定县| 深泽县| 阜康市| 肥西县| 华宁县| 黑龙江省| 遵化市| 全椒县| 宣恩县| 泾源县| 石棉县| 阿拉尔市| 江安县| 达州市| 山西省| 常熟市| 东宁县| 东城区| 大姚县| 阳江市| 眉山市| 封开县| 侯马市| 达日县| 利津县| 建阳市| 张家港市| 武川县| 浦城县| 藁城市|