divcss制作冻结效果悬浮导航百

用了增强用户体验,冻结效果被广为应用,如网站导航,推送广告等等.

常规的导航html代码    divclass=top我是top,我在导航上面/div    divclass=nav      ul        lia首页/a/li        liahref=#国内新闻/a/li        liahref=#国内新闻/a/li        liahref=#国内新闻/a/li        liahref=#国内新闻/a/li      /ul    /div  divclass=cont  我是main我在导航下面  /divcss代码.top{height:40px;background:#fff;}.nav{width:px;height:40px;background:#DDF;}ulli{float:left;padding:px;}ullia{color:#fff;line-height:40px;text-decoration:none;}按照上面的常规的写法,如果页面出现滚动条,我们滚动面页,导航就会被遮住,无法看见.

悬浮导航divclass=top我是top,我在导航上面/div    divclass=nav      ul        lia首页/a/li        liahref=#国内新闻/a/li        liahref=#国内新闻/a/li        liahref=#国内新闻/a/li        liahref=#国内新闻/a/li      /ul    /div  divclass=cont  我是main我在导航下面  /divcss代码.top{height:40px;background:#fff;}.nav{position:fixed;top:0;z-index:;width:px;height:40px;background:#DDF;}    ulli{float:left;padding:px;}    ullia{color:#fff;line-height:40px;text-decoration:none;}

js实现切换悬浮虽然我们实现了导航悬浮效果,但我们给导航添加了position:fixed的css样式之后,不管滚动条滚动的高度是否超过导航的高度,导航都是悬浮的,当滚动条在顶部时,导航会把top遮住.按逻辑来说,当滚动条滚动的高度超过了top的高度,导航才有悬浮效果.如此,我们就要使用js来获取滚动的高度,来切换悬浮效果  window.onload=function(){    varnav=document.getElementById(nav);    window.onscroll=function(){        vartop=document.body.scrollTop?document.body.scrollTop:document.documentElement.scrollTop//w3c,各ie的兼容      if(top=40){              addClass(nav,nav-fixed);      }else{              removeClass(nav,nav-fixed);      }    }  }  functionaddClass(ele,classname){    varoldClass=ele.className;    varpattern=newRegExp((^

\\s)+classname+(\\s

$));    if(!pattern.test(oldClass)){      ele.className+=+classname;    }  }  functionremoveClass(ele,classname){    varoldClass=ele.className;    varpattern=newRegExp((^

\\s)+classname+(\\s

$));    if(pattern.test(oldClass)){      ele.className=ele.className.replace(pattern,);    }  }我们重新编辑导航的css样式.nav{width:px;height:40px;background:#DDF;}.nav-fixed{position:fixed;top:0;z-index:;}

使用此效果出错抖动,滚动条无法下拉当你使用此效果装饰网页时,出现滚动条无法下拉的情况,是因为悬浮元素加入position:fixed样式之后,已经脱离布局,页面的高度不会把悬浮元素的高度计算在内.比如当前例子,浏览器的可视区域的高度为px,内容未超过px,浏览器将不会出现滚动条.我们将top的高度设置为44px,main的高度设置为px,加上导航高度,页面高度超过px,出现滚动条,当滚动条滚动的高度超过44px时,导航脱离布局,导航悬浮,页面高度为px,页面高度为px,不应该出现滚动条,滚动条滚动的高度变为0,悬浮元素回归布局,页面高度又大于px了,因为出现滚动条无法下拉的现象.解决方法:我们只需给悬浮元素外包一层div,并将这个div的高度设置为悬浮元素的高度html代码:  divclass=head    divclass=top我是top,我在导航上面/div    divclass=navid=nav      ul        lia首页/a/li        liahref=#国内新闻/a/li        liahref=#国内新闻/a/li        liahref=#国内新闻/a/li        liahref=#国内新闻/a/li      /ul    /divcss代码    .head.top{height:44px;background:#fff;}    .head.nav{width:px;height:80px;background:#DDF;}

查看原文

产品建议及投诉请联系:shoujibaidu

baidu.


转载请注明:http://www.aierlanlan.com/cyrz/1696.html