ThinkSAAS 固定頂部導(dǎo)航欄完整解決方案

字號:


    ThinkSAAS 默認(rèn)模板下,頂部導(dǎo)航欄都是隨頁面滾動的,不少朋友想修改成新浪微博那種固定在瀏覽器窗口頂部的樣子,其實很簡單。
    第一步,固定頂部導(dǎo)航欄
    其實只需要給導(dǎo)航欄的div增加一個position屬性,編輯/theme/sample-blue/base.css文件,在
    .header{}
    加入
    position: fixed;z-index:999999;
    position實現(xiàn)了固定,z-index 使導(dǎo)航欄不至于被其它頁面元素遮擋。這個步驟實現(xiàn)了基本需求,頂部導(dǎo)航固定在瀏覽器窗口頂部了。
    第二步,細(xì)節(jié)調(diào)整
    完成上一步后,你也許很快就發(fā)現(xiàn),app導(dǎo)航欄會被頂部導(dǎo)航遮擋,所以還需要再調(diào)整下方div的位置或者邊距,我的方法給appnav這個div增加padding,所以編輯base.css文件,在
    .appnav{}
    增加
    padding:40px 0px 0px 0px;
    這樣就解決了app導(dǎo)航欄就不會再被遮擋了,但是未登錄前的首頁會存在問題,因為未登錄前的首頁是沒有appnav這個div的,我的解決辦法是在header之后增加名appnva的空白div,編輯/app/home/html/index.html,在
    {php doAction('home_index_css')}
    之后添加
    <div></div>
    第三步,注意ie6的兼容性
    完成上一步后應(yīng)該沒什么大問題了,但是小編聽說ie6 根本不支持position:fixed,如果在意ie6用戶的話,那可能還有一些工作需要做。
    IE6以上版本的IE瀏覽器及其他主流瀏覽器都是支持“position:fixed”的,但是IE6卻不支持它。幸好,IE6 支持“position:absolute” 和 Internet Explorer 的CSS表達(dá)式(expression)。所以,對于別的瀏覽器,我們可以用“position:fixed” 進(jìn)行固定定位,而對于IE6,我們可以用“position:absolute” 和CSS表達(dá)式,比如:
    .header{
    /* 對于其他瀏覽器 */
    position:fixed;
    top:0px;
    /* 對于 IE6 */
    _position: absolute;
    _top: expression(documentElement.scrollTop + "px");
    }
    采用以上代碼,頂部的導(dǎo)航條,在IE6情況下,確實固定在頂部了,但是,拉動垂直滾動條時,這個導(dǎo)航條有跳動現(xiàn)象,解決此問題的方法是使用“background-attachment:fixed”為body添加一個背景圖片,強(qiáng)制頁面在重畫之前先處理CSS,而且這個圖片可以是虛擬的,比如“background:url(任意名稱)”。
    body {background: url(about:blank); background-attachment: fixed;}
    ie6 兼容代碼來自:http://jdm.jimdo.com/2012/01/24/topnav/,小編已經(jīng)好久沒有使用ie6了,所以這一部分沒有實測。