水平滚动取决于什么's屏幕
Horizontal scrolling available depending on what's on screen
假设我有一个这样的网页:
<header>...</header>
<body>
<section id="A">...</section>
<section id="B">...</section>
<section id="B2">...</section>
<section id="C">...</section>
</body>
<footer>...</footer>
当部分B被查看时,我希望能够做一个水平滚动来查看部分B2,但是当其他部分在屏幕上时,将没有水平滚动。
你们会怎么做?有没有提示?
谢谢
我希望你能理解我所做的评论:)
结果:http://jsfiddle.net/Tymek/8kvk91kz/
我的<<p> strong> HTML :<head></head>
<body>
<article>
<header>…</header>
<section id="A">…</section>
<div class="wrap">
<div class="pan">
<section id="B">…</section>
<section id="B2">…</section>
</div>
</div>
<section id="C">…</section>
<footer>…</footer>
</article>
</body>
SCSS :
article.fixed {
position: fixed;
top: 0;
left: 0;
right: 0;
}
article {
section {
position: relative;
padding-bottom: 2em;
float: left;
width: 100%;
}
.wrap {
width: 100%;
overflow: hidden;
position: relative;
.pan {
width: 200%; /* <- Space for two sections here */
position: relative;
section {
width: 50%;
}
}
}
footer {
padding-bottom: 1em;
}
}
最后-用jquery编写24行js :
$(document).ready(function(){
var h = $(window).height(),
pan = $(".pan").width()/2,
offset = Math.abs(h - $(".wrap").height()) / 2,
start = $(".wrap").offset().top - offset,
stop = start + pan;
$("body").css("height", $("body").height() + pan + "px");
$("article").addClass("fixed"); // Taking control over scroll
$(window).scroll(function(e){
var scroll = $(this).scrollTop();
if(scroll < start){ // Above horizontal section
$("article").css("margin-top", 0-scroll);
$(".pan").css("margin-left", 0);
} else {
if(scroll <= stop){ // Scrolling horizontally
$("article").css("margin-top", 0-start);
$(".pan").css("margin-left", 0-scroll+start);
} else { // Below horizontal section
$("article").css("margin-top", 0-scroll+pan);
$(".pan").css("margin-left", 0-pan);
}
}
});
});
我重新计算了滚动
您可以使用滚动路径插件为网站使用自定义滚动路径。
这里有一个链接:http://joelb.me/scrollpath/
听起来你想做的是像这样在网格中布局你的部分:
(空白)B2 B
C(空白)
如果是这种情况,你应该为B2添加CSS,使其相对位置在右边,并将B和B2放入
使它们在文档中保持相同的高度。你必须重新排列这些部分,让它正确地流动。见下文.
<section id="A">...</section>
<div>
<section id="B2" style="float:right">...</section>
<section id="B">...</section>
</div>
<section id="C">...</section>
你还必须设置A, B和C部分的宽度,使它们是你的阅读区域的全宽度。这样B2就在阅读区之外,你可以滚动。
注意:水平滚动条将始终存在。如果你在a或c附近,右边会有一个空白区域。如果这还不够好,你需要使用Javascript在需要时隐藏和显示B2部分。
相关文章:
- 如何知道元素在屏幕上是否可见.如果没有,请滚动页面
- 当canvas's的高度超过屏幕's的高度(当滚动条出现时)
- 到达屏幕末端/顶部时自动滚动
- 当用户将鼠标移到屏幕/图表上时,自动滚动将暂停.如果鼠标移动停止,自动滚动将再次恢复
- 移动/触摸屏幕 - 滑动时水平滚动
- 查找's在可见屏幕(视口)的中间,滚动时
- 一页签出滚动到下一页的屏幕底部
- 如何在滚动/调整大小时保持背景图像覆盖屏幕
- 无限滚动可在快速滚动时跳转到屏幕顶部
- 单击滑块可更改屏幕的滚动
- 使用媒体查询在较小的屏幕上仅滚动模态的距离
- 在屏幕顶部附近滚动元素时触发的侦听器
- JavaScript 用于当用户向下滚动屏幕时弹出的建议框
- 如何检查该元素是否在网页屏幕上,当有人滚动到该元素时,我也想要一个触发器
- 如何滚动以在屏幕底部设置 DIV 的底部(监视器)
- 如果没有使用跨浏览器表达式的滚动条,则无法获取屏幕宽度
- 如何根据屏幕宽度控制
- 单击提交按钮后,屏幕向下滚动,不执行任何操作
- jQuery Tools 可滚动:屏幕上有 3 个项目,但一次滚动一个
- 谷歌地图API在移动设备上滑动与屏幕滚动冲突