重新创建 3 列 facebook 风格的部分滚动,然后固定位置 CSS
Recreate 3 column facebook style parcial scrolling then fixed position CSS
知道如何实现其 3 列的 Facebook 效果,如果您检查,您可以像往常一样滚动页面,直到右列停止滚动,并且中心滚动继续这样做,右侧的 3er 列如何工作,为什么您可以滚动它直到它固定在页面上.. 我想这是 JavaScript。 对吧?
对于其余元素,我认为标题是固定的,这很清楚,但是 3er 列正在杀死我,因为我需要重新创建一个时间线(使用其他设计),但 3 列的想法相同。
有什么想法吗?我能找到的所有示例,都为 Rigth 列设置了一个固定位置,但在 facebook 中,正如我所说,您可以滚动直到第 3 列固定,我想我不知道,这就是我问的原因。
谢谢
一旦你把它分解成几个步骤,这并不难......
首先,您需要在html
中设置页面模板:
<div class="head">
<!-- HEAD CONTENT GOES HERE -->
</div>
<div class="main">
<div class="left">
<!-- LEFT BAR CONTENT GOES HERE -->
</div
><div class="right">
<!-- RIGHT BAR CONTENT GOES HERE -->
</div>
</div>
然后,您需要按照您希望它的外观设置样式css
:
html, body{
margin:0;
padding:0;
}
.head{
height:30px;
width:100%;
background:#3B5998;
position:fixed;
top:0;
left: 0;
z-index:1000;
}
.main{
padding:30px 10px 5px;
max-width:1200px;
margin:auto;
}
.left{
vertical-align:top;
width:80%;
display:inline-block;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
background:#eee;
}
.right{
vertical-align:top;
width:20%;
display:inline-block;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
background:#ccc;
}
然后,您需要了解完成这项工作所需的条件...
首先,您需要了解:
- 观察窗的高度
- 窗口滚动到的高度
- 右栏的高度
这个想法是让右栏(.right
)与页面的其余部分一起滚动(就像上面的普通html
和css
一样),直到到达.right
的末尾。
从数学上讲,这将在以下情况下发生:
window_height + scroll_height == right_bar_height
现在您知道何时需要开始停止.right
滚动,您可以将其插入 if 语句并添加自定义css
以固定正确的栏。
要将.right
固定在正确的位置,您需要知道:
- 窗口的高度
.right
的高度.right
的宽度.right
在查看窗口中的左偏移量
然后,将css
属性与js
一起应用于正确的位置,以将.right
固定在正确的位置。那就是position
、top
、left
和width
。
- 您可以设置
position: fixed
以便将.right
从页面流中删除。 - 将
left
设置为偏移量和.left
宽度.left
之和 - 将
top
设置为window_height - right_bar_height
但前提是.right
高于窗口 - 将
width
设置为所需的宽度。在这种情况下,20%的.main
然后,您需要在每次页面scrolls
或resizes
时应用上述计算,因此最好将其作为可以在任一事件中调用的函数。
function rightBarControl(){
var windowHeight = $(window).height();
var scrollHeight = $(window).scrollTop();
var rightBarWidth = $('.main').width()*.2 //20% of .main width
var rightBarHeight = $('.right').outerHeight();
var rightBarOffset = $('.left').offset().left + $('.left').outerWidth();
var rightBarTop = 30; //30 because .head is 30px high
if(windowHeight - 30 < rightBarHeight){ //Again including 30 because of .head
rightBarTop = windowHeight - rightBarHeight;
}
if((windowHeight + scrollHeight) >= rightBarHeight){
$('.right').css({
position:'fixed',
left: rightBarOffset,
top: rightBarTop,
width: rightBarWidth
})
}
else{
$('.right').css({
position: 'static',
left: '',
top: '',
width: '20%'
})
}
}
$(window).scroll(rightBarControl); //Run control on window scroll
$(window).resize(rightBarControl); //Run control on window resize
请注意,此用法jquery
因此您需要将其包含在上述脚本之前,如下所示:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
- 滚动然后捕捉到顶部而不是取消捕捉
- 如何用javascript调用函数,然后在滚动事件中调用该函数的特定实例
- 显示最新评论,然后向上滚动以查看较早的评论
- 滚动然后修复到 html 中的顶部标题
- Jquery$(window).scrollTop();方法是滚动到页面的特定位置,然后在页面顶部再次滚动
- 如何创建一个滚动框,然后用javascript添加内容
- 滚动到列表中的特定项目,然后滚动到列表的下一个特定项目
- 如何检查窗口是否已滚动到href,然后在javascript/jQuery中执行函数
- 单击链接滚动到元素,然后向元素添加类
- 打开新窗口,然后滚动到元素
- 滚动到特定元素时触发事件,然后使用 jquery 停止它
- 从底部开始,然后向上滚动
- 单击时显示地图,然后滚动到地图
- 使用图像滚动达到页面中的最大内容,然后应该使用窗口百分比隐藏图像
- 向上滚动,然后向下滚动,然后向上滚动,然后向下滚动
- 重新创建 3 列 facebook 风格的部分滚动,然后固定位置 CSS
- 从垂直滚动到水平滚动,然后返回到垂直滚动
- 完整的背景图像最初是固定的,然后在DIV内容结束时滚动
- 如何使一个元素假位置:固定,使其行为固定,直到某个滚动高度,然后附加
- 当你向下滚动然后向上滚动时如何动画元素