- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
哎呀!
我正在尝试为我网站上的菜单添加一些效果。这是我想创建的事件:
1-用户加载页面:菜单距离页面顶部 36px ;
2-用户开始向下滚动以阅读内容;
3-当用户滚动了 36px 时,菜单移动到页面的最顶部并停留在那里;
4-用户继续向下滚动,菜单仍然固定在最顶部;
5-用户向上滚动直到到达顶部小于36px,菜单返回到第一个位置,距离顶部36px。
这很有趣,我刚刚注意到 Stack Overflow 使用一些代码来执行与我编写新问题时页面右侧的“类似问题”框完全相同的操作。如果您想了解概览,只需 start creating a new question并观看它。我试图找出他们在使用什么,但失败了。
为了达到我的效果,我使用了 scrollTop()
jQuery 属性,关联到 scroll()
一。这是代码:
$(document).scroll(function() {
if ($(document).scrollTop() >= 36) {
$('#menu').css({'top': '0px'});
} else {
$('#menu').css({'top': '36px'});
}
});
这适用于 document
,表示页面的整个主体。
现在的问题是我想在 article
中使用它具有 overflow-y :scroll
的元素属性(property)。当我谈论<article>
时元素,我指的是 HTML5 文档中使用的元素(例如 <nav>
、 <aside>
、 <section>
、 <footer>
...)。
结果,JQ在document
中没有找到任何卷轴。这是真的,因为现在整个页面中唯一的滚动条位于 article
内。元素。 body 永远不会移动,这是有意的。
所以我尝试了这个:
$('article').scroll(function() {
if ($('article').scrollTop() >= 36) {
$('#menu').css({'top': '0px'});
} else {
$('#menu').css({'top': '36px'});
}
});
还有这个:
$(document).scroll(function() {
if ($(document).scrollTop() >= 36) {
$('#menu').css({'top': '0px'});
} else {
$('#menu').css({'top': '36px'});
}
});
甚至这个:
$('#insidecontent').scroll(function() {
if ($('#insidecontent').scrollTop() >= 36) {
$('#menu').css({'top': '0px'});
} else {
$('#menu').css({'top': '36px'});
}
});
#insidecontent
是 div
的名称它遵循 article
元素,您稍后将在我将通过 Jsfiddle.net 提供给您的代码中看到。
这不起作用。不是因为article
元素,我使用另一个 jQuery 代码来动态调整高度,这也是焦点 article
没有任何问题。我尝试不用它。
http://jsfiddle.net/fKkML/1/
在这里您可以找到包含第一个版本 ( $(document)
) 和没有 overflow-y: scroll
的完整代码。 ,看看我正在谈论哪种效果。它正在工作,只需在结果框中滚动即可。
http://jsfiddle.net/BCuez/7/
这里是 overflow-y: scroll
的版本打开并 $('article')
,这不起作用。
注意:在第二个链接中,Jsfiddle.net对溢出的处理方式相同,看起来这是整个正文在滚动。但正如你所看到的,效果还是很糟糕。您可以通过创建文件在本地计算机上尝试此代码,您将会看到。
注2:我必须添加margin-top: 70px
至article
在这些演示中,但在真实的完整代码中不需要。
注3:我是 HTML5/CSS3 的“专业”用户,但不是 jQuery,这是我第一次在 Web 的帮助下编写自己的 JQ 代码。我对这个问题非常菜鸟,所以如果您能详细说明您的答案以帮助我正确理解它,我将非常感谢您。
在发布此内容之前,我已经在这里搜索了答案。例如我发现this subject与我的有点相关,但不是真的。我没有找到任何真正可以帮助我或与我的相同的。
非常感谢您给我的帮助。我愿意接受其他方法来获得相同的结果,但这个方法似乎非常接近工作。
最佳答案
我解决了这个问题。
第一个问题是 height
被设置为 auto
因为我有另一个动态改变其大小的 JS 代码。需要定义高度
(px、em、%)。
第二个问题是一开始就缺少window.onload=function(){
。 JSFiddle 自己添加的,我只需在 chrome 中用 F12 检查代码即可。我将它添加到我自己的代码中,它正在工作。
这是您可以自己在自己的代码中使用的最终代码:
jQuery:
window.onload=function(){
$('article').scroll(function () {
if ($('article').scrollTop() >= 36) {
$('#menu').css({
'top': '0px'
});
} else {
$('#menu').css({
'top': '36px'
});
}
});
}
CSS:
article {
width: 100%;
height: 500px;
overflow-y: scroll;
position: relative;
z-index: 0;
}
HTML:
<body>
<ul id="menu">
<li> <a href="#">
Elem1
</a>
</li>
<li> <a href="#">
Elem2
</a>
</li>
<li> <a href="#">
Elem3
</a>
</li>
<li> <a href="#">
Elem4
</a>
</li>
<li> <a href="#">
Elem5
</a>
</li>
</ul>
<article>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eleifend neque in sodales iaculis. Suspendisse porta sodales turpis, ut bibendum justo sagittis at. Vivamus ut laoreet tellus. Integer rutrum vel quam in imperdiet. Cras mattis lacus sem, eu suscipit urna adipiscing et. Etiam convallis, tortor ac gravida luctus, nibh tellus porttitor lorem, vel tempus massa purus sed orci. Donec condimentum dolor velit, convallis auctor velit dapibus sed. Integer commodo ullamcorper libero, in pharetra tortor auctor nec. Donec tristique turpis quis felis posuere feugiat. Fusce molestie elementum gravida. Nulla nec quam et metus gravida ornare eget ac elit. Morbi sit amet massa ornare, euismod dolor fringilla, porttitor felis. Sed mattis orci ante, nec sodales enim varius non. Proin velit justo, ultrices vel mollis id, ultrices a nibh. Aenean lacinia ullamcorper leo, sed adipiscing libero vestibulum nec. Phasellus est erat, tincidunt vel mi non, condimentum vestibulum lacus. Quisque placerat id mauris a hendrerit. Phasellus venenatis eros vel leo blandit, non blandit velit imperdiet. Praesent id erat in risus tristique iaculis a eget orci. Quisque pellentesque hendrerit ante vitae tincidunt. Vivamus placerat nisi purus, a tincidunt ligula elementum ut. Integer in arcu elit. Phasellus facilisis orci sit amet sapien egestas imperdiet. Ut quis risus sodales, rutrum libero rhoncus, tincidunt ipsum. Praesent suscipit eros id lacinia bibendum. Donec erat sem, fringilla et pulvinar nec, aliquet euismod mi.
</article>
</body>
article
是设置overflow-y:scroll
的全部内容。
#menu
是滚动时位置改变的DIV。
>= 36
是 DIV 更改位置之前用户需要滚动的像素数。
第5行0px
是滚动等于或高于36px时DIV的位置。
第9行36px
是滚动在36px以下时DIV的位置。
您可以在 jQuery 代码中添加您想要的每条 CSS 规则。例如,我添加了一行来隐藏同一事件中的某些内容。您还可以添加 animate()
事件。
祝你好运!
关于overflow - 当 DIV 溢出-y :scroll is scrolled 时,使用scrollTop() 移动 DIV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17509201/
我想使用 overflow: scroll(或 auto)完成比屏幕宽的图库预览。在右侧,与最后一张可见图像重叠的阴影应该表示右侧可以看到更多图像。 这是一个 fiddle :http://jsfid
我的网格面板的滚动条有问题。当我滚动到底部并试图再次向上滚动时,滚动条会自动向下滚动,防止我滚动到列表的顶部。。。我试着设置布局“合适”,或给面板一个特定的宽度和高度大小,但这些解决方案都不起作用。。
这段代码的作用是什么? var oldScrollPos = $(window).scrollTop(); $(window).on('scroll.scrolldisabler', fu
..对于这个元素,我会在某个时候烧脑。 10 小时后仍然没有任何消息。 溢出的元素在 Android stock 浏览器(目前在 s3 mini,android 4.1.2 上测试)中没有任何平滑度。
基本上,我想要的是固定标题、卡住 Pane 、表格,例如 http://www.cssplay.co.uk/menu/tablescroll.html 。然而,他的 table 有一个主要弱点。标题不
我在我的一个项目中使用 Twitter Bootstrap,但是我的内容超出了浏览器 View 的问题。通常您会在屏幕右侧看到滚动条,但在我的情况下没有。我在 overflow: hidden; 之后
是否有一个“有效”的解决方案可以使对话框随滚动条滚动,而不是仍然从内部窗口边界的中心固定? 在某些情况下,用户的分辨率可能太小而无法包含对话框,在这种情况下,部分对话框可能会被隐藏。您可能在隐藏部分有
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: hide scrollbar while still able to scroll with mouse/k
我希望能够水平滚动浏览一些文章,但它不起作用。我尝试在内容周围放置一个边框,这样一些内容就会被截断,这样我就可以滚动,但是当我这样做时文章会垂直对齐... 这是我正在使用的代码: HTML:
我已经使用 HSROLL 成功创建了一个组合框,如下所示: HWND find = CreateWindowEx(0, WC_COMBOBOX, _T(""), CBS_DROPDOWN | WS_V
我有一个 定位于 position:fixed .当窗口在水平方向上太小而无法容纳 div 时,不会出现滚动条,div 的右侧会被简单地切断。 如果我更改为 position:absolute,滚动条
我对这两个参数完全感到困惑, es.scroll.size es.scroll.limit 我做了一些测试,仍然不知道。 es.scroll.limit = es.scroll.size * num_
我正在尝试使用 skrollr 构建网站.这是jFiddle link对于我已经尝试过的。但是正如您所见,当 smoothScrolling 设置为 true 时,它不会按预期工作。当设置 smo
最近,我在一个网站上工作,我想在不同的滚动位置拍摄特定的效果。我正在使用 Velocity JS 制作动画。有一个元素我想自动滚动到另一个特定的滚动位置。这可以使用 Velocity JS 轻松实现。
继续追加,您会看到最新的聊天消息出现,但在某个点后它会停止自动向下滚动。我怎样才能解决这个问题?谢谢。 http://jsfiddle.net/VMcsU/ $("#button1").click(f
在我的代码中,y 滚动位置(以像素为单位)是滚动 Pane 的顶部: stage = new Stage(new StretchViewport(480, 800)); Image m
我有一个模态对话框,里面有一个可滚动的 div。 div 设置为 overflow: scroll; 但是,当用户在 div 中一直向下滚动时,弹出窗口后面的内容开始向下滚动。 问题:当弹出窗口打开时
我正在使用 AutoCompleteTextView 让我的 Android 应用程序的用户使用自定义网络服务搜索内容:它按预期工作,但目前我找不到实现“无尽滚动”的方法"在下拉 ListView 上
我在我的应用程序中使用工具栏并使用这个 link我隐藏了工具栏,它按预期完美工作。但是当列表只有一个/两个项目时,不需要滚动工具栏,因为底部有足够的空间。 隐藏工具栏背后的想法是当列表项超出屏幕高度时
我是 Ios 开发的新手,我在导航项中添加了一个 Searchbar我想要实现的是当我向上滚动 tableview我想隐藏 Searchbar 并在向下滚动时显示它 类似于 iPAD/Iphone 上
我是一名优秀的程序员,十分优秀!