lys*_*ing 24 mobile jquery navbar jquery-mobile
我没有成功地查找变量来更改导航栏中单行中的最大项目数.
我刚开始使用jQuery Mobile,尝试创建一个包含大约7个单字母项目的导航栏.当存在超过5个项目时,导航栏会自动换行,这对我的项目来说是不可取的.
任何人都可以指出我在代码或css中控制这种行为吗?
Phi*_*ord 18
你是对的,jQM将列限制为5.查看代码,这似乎是函数:
/*
* jQuery Mobile Framework : plugin for creating CSS grids
* Copyright (c) jQuery Project
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*/
(function($, undefined ) {
$.fn.grid = function(options){
return this.each(function(){
var o = $.extend({
grid: null
},options);
var $kids = $(this).children(),
gridCols = {solo:1, a:2, b:3, c:4, d:5},
grid = o.grid,
iterator;
if( !grid ){
if( $kids.length <= 5 ){
for(var letter in gridCols){
if(gridCols[letter] == $kids.length){ grid = letter; }
}
}
else{
grid = 'a';
}
}
iterator = gridCols[grid];
$(this).addClass('ui-grid-' + grid);
$kids.filter(':nth-child(' + iterator + 'n+1)').addClass('ui-block-a');
if(iterator > 1){
$kids.filter(':nth-child(' + iterator + 'n+2)').addClass('ui-block-b');
}
if(iterator > 2){
$kids.filter(':nth-child(3n+3)').addClass('ui-block-c');
}
if(iterator > 3){
$kids.filter(':nth-child(4n+4)').addClass('ui-block-d');
}
if(iterator > 4){
$kids.filter(':nth-child(5n+5)').addClass('ui-block-e');
}
});
};
Run Code Online (Sandbox Code Playgroud)
这需要一些工作,但您可以将其扩展到所需的7列布局.您还需要添加自定义CSS来处理新列,因此新函数看起来像这样
/*
* jQuery Mobile Framework : plugin for creating CSS grids
* Copyright (c) jQuery Project
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*/
(function($, undefined ) {
$.fn.grid = function(options){
return this.each(function(){
var o = $.extend({
grid: null
},options);
var $kids = $(this).children(),
gridCols = {solo:1, a:2, b:3, c:4, d:5, e:6, f:7},
grid = o.grid,
iterator;
if( !grid ){
if( $kids.length <= 7 ){
for(var letter in gridCols){
if(gridCols[letter] == $kids.length){ grid = letter; }
}
}
else{
grid = 'a';
}
}
iterator = gridCols[grid];
$(this).addClass('ui-grid-' + grid);
$kids.filter(':nth-child(' + iterator + 'n+1)').addClass('ui-block-a');
if(iterator > 1){
$kids.filter(':nth-child(' + iterator + 'n+2)').addClass('ui-block-b');
}
if(iterator > 2){
$kids.filter(':nth-child(3n+3)').addClass('ui-block-c');
}
if(iterator > 3){
$kids.filter(':nth-child(4n+4)').addClass('ui-block-d');
}
if(iterator > 4){
$kids.filter(':nth-child(5n+5)').addClass('ui-block-e');
}
if(iterator > 5){
$kids.filter(':nth-child(6n+6)').addClass('ui-block-f');
}
if(iterator > 6){
$kids.filter(':nth-child(7n+7)').addClass('ui-block-g');
}
});
};
}); // end
Run Code Online (Sandbox Code Playgroud)
在CSS中:
改变这个:
.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e { margin: 0; padding: 0; border: 0; float: left; min-height:1px;}
Run Code Online (Sandbox Code Playgroud)
对此:
.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e, .ui-block-f, .ui-block-g { margin: 0; padding: 0; border: 0; float: left; min-height:1px;}
Run Code Online (Sandbox Code Playgroud)
并添加这些:
/* grid e: 16/16/16/16/16/16 */
.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e .ui-block-f { width: 16%; }
.ui-grid-d .ui-block-a { clear: left; }
/* grid f: 14/14/14/14/14/14/14 */
.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e .ui-block-f .ui-block-g { width: 14%; }
.ui-grid-d .ui-block-a { clear: left; }
Run Code Online (Sandbox Code Playgroud)
可能还有其他变化,但这些变化是迄今为止突出的变化.
失败尝试使用导航栏的按钮,但它们也相互堆叠:实时链接
Dav*_*age 14
使用jQuery mobile 1.4.0,我所要做的就是创建自己的CSS类:
.mytab {
width: 12.5% !important; /* 12.5% for 8 tabs wide */
clear: none !important; /* Prevent line break caused by ui-block-a */
}
Run Code Online (Sandbox Code Playgroud)
..并将其包含在我的列表中:
<ul id='tabsList'>
<li class="mytab"><a href="#tab1" data-ajax="false">One</a></li>
<li class="mytab"><a href="#tab2" data-ajax="false">Two</a></li>
<li class="mytab"><a href="#tab3" data-ajax="false">Three</a></li>
<li class="mytab"><a href="#tab4" data-ajax="false">Four</a></li>
<li class="mytab"><a href="#tab5" data-ajax="false">Five</a></li>
<li class="mytab"><a href="#tab6" data-ajax="false">Six</a></li>
<li class="mytab"><a href="#tab7" data-ajax="false">Seven</a></li>
<li class="mytab"><a href="#tab8" data-ajax="false">Eight</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
(原来答案有jQuery手机版错了)
小智 5
来自Phill Pafford
"并添加以下内容:......"{css code}
请更改为....(注意:宽度更改为16.65%.此注释已添加,因为StackOverflow不允许进行单字母编辑.)
/* grid e: 16/16/16/16/16/16 */ .ui-grid-e .ui-block-a, .ui-grid-e .ui-block-b, .ui-grid-e .ui-block-c, .ui-grid-e .ui-block-d, .ui-grid-e .ui-block-e, .ui-grid-e .ui-block-f { width: 16.65%; } .ui-grid-e .ui-block-a { clear: left; } /* grid f: 14/14/14/14/14/14/14 */ .ui-grid-f .ui-block-a, .ui-grid-f .ui-block-b, .ui-grid-f .ui-block-c, .ui-grid-f .ui-block-d, .ui-grid-f .ui-block-e, .ui-grid-f .ui-block-f, .ui-grid-f .ui-block-g { width: 14.2857%; } .ui-grid-f .ui-block-a { clear: left; }