<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA & XML & JAVASCRIPT & AJAX & CSS

    Web 2.0 技術儲備............

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      77 隨筆 :: 17 文章 :: 116 評論 :: 0 Trackbacks

    http://www.blueidea.com/tech/web/2006/3231.asp

    之前看到很多人一直都問這個問題,不過當時我沒當一回事,因為在 CSS 中要垂直居中,多數是在有高度的情況下,或者容器高度不定的情況下才用,看上去比較舒服,而且實現的方法也不少,不一定要拘泥于和 table 布局一樣。不過最近有人問了幾個例子,看來對此的需求還不少。現在就把我經驗拿出來分享一下,希望大家鼓鼓掌。

    首先,要有一個概念:凡是 table 布局可以實現的,CSS 一定可以實現。CSS 可以實現的,table 未必能做到。

    現在來幾個例子:

    一、單行內容的居中
    只考慮單行是最簡單的,無論是否給容器固定高度,只要給容器設置 line-heightheight,并使兩值相等,再加上 over-flow: hidden 就可以了

    .middle-demo-1{
    height: 4em;
    line-height: 4em;
    overflow: hidden;
    }

    優點:
    1. 同時支持塊級和內聯極元素
    2. 支持所有瀏覽器
    缺點:
    1. 只能顯示一行
    2. IE中不支持<img>等的居中
    要注意的是:
    1. 使用相對高度定義你的 height 和 line-height
    2. 不想毀了你的布局的話,overflow: hidden 一定要
    為什么?
    請比較以下兩個例子:


    [Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]

    上一個高度是用的絕對單位px,并且沒有隱藏溢出,下一個高度用的單位是相對單位em,并且隱藏了溢出。如果你的瀏覽器支持放大字體,那么盡情地放大字體,看看會出現什么效果。

    二、多行內容居中,且容器高度可變
    也很簡單,給出一致的 padding-bottom 和 padding-top 就行

    .middle-demo-2{
    padding-top: 24px;
    padding-bottom: 24px;
    }

    優點:
    1. 同時支持塊級和內聯極元素
    2. 支持非文本內容
    3. 支持所有瀏覽器
    缺點:
    容器不能固定高度

    三、把容器當作表格單元
    CSS 提供一系列diplay屬性值,包括 display: table, display: table-row, display: table-cell 等,能把元素當作表格單元來顯示。這是再加上 vertical-align: middle, 就和表格中的 valign="center" 一樣了。

    .middle-demo-3{
    display: table-cell;
    height: 300px;
    vertical-align: middle;
    }

    可惜IE不支持這些屬性,不過在其他瀏覽器上顯示效果非常完美。
    要注意的是:和一個合法的<td>元素必須在<table>里一樣,display: table-cell 元素必須作為 display: table 的元素的子孫出現。

    優點:
    不用說了吧,就是表格,效果和表格一模一樣
    缺點:
    IE下無效

    四、以毒攻毒!用 IE 的 bug 解決 IE 中的絕對居中
    先不得不說一句,IE 真的是個很爛的瀏覽器,CSS1中的定義都不支持,害得要我們轉個大圈子來造居中。不過就像我說的,凡是 table 布局可以實現的,CSS 一定可以實現,即使在 IE 里也不例外。我研究 IE layout 模式多年,還是找出了一個可以在 IE 中絕對居中的方法。這個方法就是基于 IE layout 的 bug,也可以算以毒攻毒。至于原理,不要問我,這是獨門秘學,何況三言兩語也講不清楚,只要好用就行

    .middle-demo-4{
    height: 300px;
    position: relative;
    }
    .middle-demo-4 div{
    position: absolute;
    top: 50%;
    left: 0;
    }
    .middle-demo-4 div div{
    position: relative;
    top: -50%;
    left: 0;
    }

    五、整合三和四,寫出支持所有瀏覽器的垂直居中容器!
    思路是利用 IE 和 非IE 瀏覽器的 CSS hack, 整合三和四的CSS,寫出兼容主流瀏覽器的垂直居中容器。具體代碼就不給出了,大家權當作練習練習。例子可以在下面的附錄中找到。
    最終實測支持的瀏覽器:IE6+, Mozilla 1.7, Netscape Navigator 8, Opera 8.0+, Firefox 1.0+ 和 Safari 1.0+IE5 下需要加上對合適模型的補正。
    推測支持的瀏覽器:Mozilla 1.5+, Netscape Navigator 7+, Opera 7+
    未測試瀏覽器:Konqueror

    最后附上自己寫的,所有居中布局的范例網頁,大家不明白可以參考。


    [Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]

    posted on 2006-03-16 23:07 Web 2.0 技術資源 閱讀(653) 評論(0)  編輯  收藏 所屬分類: CSS
    主站蜘蛛池模板: 亚洲精品福利视频| 婷婷综合缴情亚洲狠狠尤物| 午夜亚洲AV日韩AV无码大全| AAAAA级少妇高潮大片免费看| 亚洲av无码乱码在线观看野外| 国产成人精品久久亚洲高清不卡| 国产精品视频免费一区二区| 色老板亚洲视频免在线观| 久久不见久久见免费影院| 国产精品无码亚洲精品2021| 亚洲视频在线免费| 成在人线av无码免费高潮喷水 | 日本三级2019在线观看免费| 亚洲视频欧洲视频| 久久精品免费一区二区喷潮| 久久久久久久久无码精品亚洲日韩| mm1313亚洲精品无码又大又粗 | 亚洲性69影院在线观看| 9久9久女女免费精品视频在线观看| 亚洲一卡2卡3卡4卡5卡6卡| 国产一级大片免费看| 在线看片免费人成视频久网下载| 久久久无码精品亚洲日韩按摩 | 无码不卡亚洲成?人片| 你懂的在线免费观看| 亚洲精品资源在线| 国产免费拔擦拔擦8x| 天黑黑影院在线观看视频高清免费 | 免费人成网站在线观看不卡| 亚洲成a人片77777群色| 日本免费一区二区三区最新| 久久不见久久见免费影院www日本 久久WWW免费人成—看片 | 色偷偷亚洲第一综合| 亚洲爆乳精品无码一区二区三区| 国产大片91精品免费观看不卡| 国产精品亚洲av色欲三区| 久久亚洲精品成人777大小说| 免费看片免费播放| 黄页免费在线观看| 亚洲av永久无码一区二区三区| 亚洲高清专区日韩精品|