如何用CSS3和jQuery创建一个动态的粘性头部

html-css014

如何用CSS3和jQuery创建一个动态的粘性头部,第1张

下面就说一下如何用CSS3和jQuery创建一个粘性元素的设计。

我们将创建一个维持在可视化页面头部的标题,让它在用户向下滚动页面时不会干预正文的内容。

这是一个已经做好的示例,大家可以看看:

1.HTML代码

在HTML中,这个例子是非常简单的,我们只需要的是一个H1和header标签。下面再加一张图片来测试页面滚动的效果。

<header><h1>Sticky Header</h1></header><img src="large-image.jpg" width="782" height="2000" alt="Big Image" />

2.jQuery代码

CSS过渡是处理我们粘头的动画部分的最佳方式。所以我们使用jQuery来检测窗口的滚动位置。 当窗口的滚动位置大于1,这意味着用户向下滚动,那么我们要添加’stycky’类中的header 否则,我们就删除它(如果它存在)。

这些都意味着我们能把头部的样式应用在基于’stycky’的类中。

$(window).scroll(function() {if ($(this).scrollTop() >1){ $('header').addClass("sticky")} else{ $('header').removeClass("sticky")}})

需要注意的一点是,以这种方式使用jQuery的优雅降级(graceful degradation,一开始就构建站点的完整功能,然后针对浏览器测试和修复)如果禁用JavaScript,导航仍然可以工作,但是顶部只会使用非粘性的默认状态样式。

3.CSS代码

我们用CSS来样式化两种不同的状态,默认状态,和粘性状态并在两种状态之间转换。

首先,添加一些简单的样式,改善头部的外观:

header { position : fixed width : 100 % text-align : center font-size : 72 px line-height : 108 px height : 108 px background : #335C7D color : #fff font-family : 'PT SANS“ }

现在到了有趣的部分:当用户向下滚动,’sticky‘类将会被应用,我们现在可以用顶部风格的不同来反映新页面上的优先级。我们还可以设置位置固定,以便当页面滚动时不会改变定位。

还有几件事情我们可能要做:

第一,我们要改变字体大小,以便它使用更少的屏幕空间;

第二改变背景颜色和对齐到左边,这样在视觉上不会过多干扰:

header .sticky { font-size : 24 px line-height : 48 px height : 48 px background : #efc47D text-align : left padding-left : 20 px }

当然,你改变什么样式取决于你想要达到的前端设计。你可以改成任何你喜欢的样式。

如果你现在测试一下,你会看到当我们向下滚动时标题在变化。

现在,头部动态的变化需要我们设置一个过渡,像这样:transition: all 0.4s ease

提供三种自定义导航栏悬浮的方法

在自定义组件中设定css 样式:

利用 position: fixed

利用 position: fixed

给你一个朴素版的导航(包含css和html2部分):

css.css文件

body{

font-size:12px

font-family:Arial,

Helvetica,

sans-serif

margin:0px

padding:0px

color:white

}

ul,li{

margin:0px

padding:0px

}

li{

display:inline

list-style:none

text-align:center

font-weight:bold

float:left

}

a:link{

color:#336601

text-align:center

text-decoration:none

float:left

width:100px

padding:3px

5px

0px

5px

}

a:visited{

color:#336601

text-align:center

text-decoration:none

float:left

padding:3px

5px

0px

5px

width:100px

}

a:hover{

color:white

float:left

padding-left:6px

text-align:center

width:100px

text-decoration:none

background-color:#539D26

}

a:active{

color:white

float:left

padding:3px

3px

0px

20px

width:100px

text-align:center

text-decoration:none

background-color:#539D26

}

#nav{

width:600px

height:30px

border-bottom:0px

padding:0px

5px

position:absolute

z-index:1

left:

198px

top:

25px

}

.list{

line-height:20px

text-align:left

padding:4px

font-weight:normal

}

.menu1{

width:120px

height:auto

margin:6px

4px

0px

0px

border:1px

solid

#9CDD75

background-color:#F1FBEC

color:#336601

padding:6px

0px

0px

cursor:pointer

overflow-y:hidden

filter:Alpha(opacity=70)

-moz-opacity:0.7

}

.menu2{

width:120px

height:18px

margin:6px

4px

0px

0px

background-color:#F5F5F5

color:#999999

border:1px

solid

#EEE8DD

padding:6px

0px

0px

0px

overflow-y:hidden

cursor:pointer

}