固定元素在滚动时移动到页面顶部 - 仅限CSS

时间:2011-08-23 14:03:04

标签: html css html5 css3 noscript

我希望产生这个页面上的效果:http://jonrohan.me/guide/css/creating-triangles-in-css/ - 但只有CSS,没有JavaScript(这对JavaScript来说是微不足道的。)

我所说的效果如下:

  • 最初,您会看到页眉和文章标题。
  • 滚动页面标题时消失。
  • 文章标题固定在页面顶部,因此您在滚动时始终会看到它。

到目前为止,我所能达到的最好成绩是:
http://jsfiddle.net/nottrobin/2FSvx/
但我不喜欢我的解决方案中固有的<nav>的重复。

有没有人有他们能想到的聪明的CSS / 3技术,以便当你向下滚动<header>消失时,<nav>自然会骑到页面顶部?

1 个答案:

答案 0 :(得分:2)

您的示例存在一些问题,如果我向下或向上滚动网页,有时两个导航会重叠,内容会显示两次并重叠。

据我所知,没有这样的技术只能使用CSS获得相同的效果,需要使用JS。

您只能以静态方式(正常页面流),固定方式(相对于浏览器窗口)或绝对/相对(相对于位置设置为相对的最近父级)使用CSS定位元素。

您不能像使用JavaScript那样“收听”滚动事件,因此您无法相对于滚动量定位元素,也无法实时更改其位置值,因为即使这样您也需要JavaScript。

CSS是一种表示性标记语言,使用CSS规则分配给元素的属性不能在事件基础上更改。

你可以像你一样做,但这意味着更多的标记语言,更多的CSS和更多的维护困难。

您应该使用JS来优化用户的体验,如果用户已禁用JS,他/她将看到正常的页面行为,否则nav元素将保持静止,就像所有其他网站一样。