我正在建立一个移动网站,客户希望在顶部的菜单栏。菜单非常宽,所以他希望通过左右拖动来水平滚动菜单。app.ft.com具有类似的功能(尽管您必须在iPhone上查看它才能看到它的工作情况)
有没有人知道可以做到这一点的jQuery / jqTouch脚本?我试过scrollTouch,但它只能滚动整个页面,而不仅仅是一个菜单。
发布于 2011-08-04 03:54:18
发布于 2012-04-28 02:46:07
我为jQuery手机写了一个简单的水平导航栏,你可以通过在移动设备上向左或向右拖动它来滚动。这个例子很粗糙,但它会给你一个大概的概念。标记如下:
CSS:
<style type="text/css">
#navBar
{
white-space: nowrap;
height: 55px;
width: 100%;
position: relative;
}
</style>HTML标记:
<div id="navBar">
<div style="left: 0%; width: 40%; float: left; display: inline-block; position: absolute; text-align: center;">
<img src="image.png" alt="Nav1" />
<br />
<span style="font-size: 80%">Nav1</span>
</div>
<div style="left: 40%; width: 40%; float: left; display: inline-block; position: absolute; text-align: center;">
<img src="image.png" alt="Nav2" />
<br />
<span style="font-size: 80%">Nav2</span>
</div>
<div style="left: 80%; width: 40%; float: left; display: inline-block; position: absolute; text-align: center;">
<img src="image.png" alt="Nav3" />
<br />
<span style="font-size: 80%">Nav3</span>
</div>
<div style="left: 120%; width: 40%; float: left; display: inline-block; position: absolute; text-align: center;">
<img src="image.png" alt="Nav4" />
<br />
<span style="font-size: 80%">Nav4</span>
</div>
<div style="left: 160%; width: 40%; float: left; display: inline-block; position: absolute; text-align: center;">
<img src="image.png" alt="Nav5" />
<br />
<span style="font-size: 80%">Nav5</span>
</div>
<div style="left: 200%; width: 40%; float: left; display: inline-block; position: absolute; text-align: center;">
<img src="image.png" alt="Nav6" />
<br />
<span style="font-size: 80%">Nav6</span>
</div>
</div>JavaScript:
<script type="text/javascript" language="javascript">
var bMouseDown = false;
var bMouseUp = true;
var iStartPixelsX = 0;
var iCurrentNavbarPixelsX = 0;
var changePixels = 0;
var leftMostOffsetPixels = 0;
function funcMoveNavBar(pixels) {
$("#navBar").attr("style", "left: " + pixels + "px;");
}
var onOrientationChange = function () {
setTimeout(function () {
funcMoveNavBar(0);
iStartPixelsX = 0;
iCurrentNavbarPixelsX = 0;
changePixels = 0;
leftMostOffsetPixels = $("#navBar div").last().offset().left + $("#navBar div").last().width();
}, 500);
}
$(document).ready(function () {
leftMostOffsetPixels = $("#navBar div").last().offset().left + $("#navBar div").last().width();
if (window.addEventListener) {
window.addEventListener("orientationchange", onOrientationChange, false);
} else if (window.attachEvent) {
window.attachEvent("onorientationchange", onOrientationChange);
}
$("#navBar").bind("vmousedown", function (e) {
bMouseDown = true;
bMouseUp = false;
iStartPixelsX = e.pageX;
});
$("#navBar").bind("vmousemove", function (e) {
if (bMouseDown && !bMouseUp) {
e.preventDefault();
changePixels = (e.pageX - iStartPixelsX) + iCurrentNavbarPixelsX;
funcMoveNavBar(changePixels);
}
});
$("#navBar").bind("vmouseup", function (e) {
bMouseUp = true;
bMouseDown = false;
if (changePixels > 0) {
funcMoveNavBar(0);
changePixels = 0;
iCurrentNavbarPixelsX = 0;
} else if (($("#navBar div").last().offset().left + $("#navBar div").last().width()) < $("#navBar").width()) {
funcMoveNavBar($("#navBar").width() - leftMostOffsetPixels);
iCurrentNavbarPixelsX = $("#navBar").width() - leftMostOffsetPixels;
changePixels = $("#navBar").width() - leftMostOffsetPixels;
} else {
iCurrentNavbarPixelsX = changePixels;
}
});
});
</script>请记住,当在jQuery Mobile中启用AJAX导航时,不推荐使用$(document).ready(),因此您可能需要调整此解决方案以满足您自己的需求。
发布于 2013-06-08 21:13:54
一个只有css的解决方案,利用了移动浏览器不会创建任何滚动条的事实。一些视觉指导和内部的自动宽度将是好的,但并不总是需要的。
使用http://jsfiddle.net/KaGrc/1的JSFiddle
CSS:
#outer {
width: 100%;
overflow: auto;
}
#inner {
width: 800px;
}HTML:
<div id="outer">
<div id="inner">
content1 content2 content3 content4 content5 content6 content7 content8 content9 content10 content11 content12
</div>
</div>https://stackoverflow.com/questions/6932411
复制相似问题