手机设备中可滚动的水平导航
在手机web app开发中会涉及到水平导航,例如:
上面的新闻栏目就是一个水平导航,并且还可以水平滚动,因为一行显示不完.
那么如何实现呢?
先看下实现的效果
PC端浏览器中:
手机中:
在手机上面没有滚动条,因为可以通过手指触屏滚动.
页面代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1.0 ,user-scalable=no">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css">
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script>
<style>
#overflow {
border: 1px solid #000;
overflow-x: scroll;
overflow-y: hidden;
}
#overflow .container div {
float: left;
width: 60px;
float: left;
}
@media only screen and (max-width : 1024px) {
#overflow {width: 480;
height: 60px;}
#overflow .container div{
height: 45px;
}
}
@media only screen and (max-width : 768px) {
#overflow {width: 480;
height: 60px;}
#overflow .container div{
height: 45px;
}
}
@media only screen and (max-width : 480px) {
#overflow {width: 480;
height: 35px;}
#overflow .container div{
height: 20px;
}
}
@media only screen and (max-width : 320px) {
#overflow {width: 320;
height: 35px;}
#overflow .container div{
height: 20px;
}
}
</style>
</head>
<body>
<div data-role="page" id="currentorders">
<header data-role="header" data-position="fixed">
<nav data-role="navbar">
<div id="overflow">
<div class="container">
<div><a href="" class="yellow">item 1</a>
</div>
<div><a href="" class="orange">item 2</a>
</div>
<div><a href="" class="red">item 3</a>
</div>
<div><a href="" class="yellow">item 4</a>
</div>
<div><a href="" class="orange">item 5</a>
</div>
<div><a href="" class="red">item 6</a>
</div>
<div><a href="" class="red">item 7</a>
</div>
<div><a href="" class="red">item 8</a>
</div>
<div><a href="" class="red">item 9</a>
</div>
<div><a href="" class="red">item 10</a>
</div>
<div><a href="" class="red">item 11</a>
</div>
</div>
</div>
</nav>
<div data-role="header">
<h3>这是一个水平导航栏,并且支持水平滚动</h3>
</div>
</header>
<div data-role="content">
这是网页的主体
</div>
</div>
</body>
<script>
$('#currentorders').live("pageshow", function () {
var width = 0;
$('#overflow .container div').each(function () {
width += $(this).outerWidth(true);
});
$('#overflow .container').css('width', width + "px");
})
/*
$("#overflow .container div a").live('touchstart', function () {
var width = 0;
$('#overflow .container div').each(function () {
width += $(this).outerWidth(true);
});
$('#overflow .container').css('width', width + "px");
})
*/
</script>
</html>
应用场景:移动web app
注意:
(1)页面采用HTML5,推荐使用 HTML5 的文档类型申明: <!DOCTYPE html>.
(建议使用 text/html 格式的 HTML。避免使用 XHTML。XHTML 以及它的属性,比如 application/xhtml+xml 在浏览器中的应用支持与优化空间都十分有限)。
(2)采用jquery mobile框架
参阅:http://stackoverflow.com/questions/20851378/horizontal-scrolling-navbar-with-jquery-mobile-and-html5