我有一个Web应用程序,其动态数量的选项卡介于2到20之间。
我目前正在使用Jquery UI的标签插件,但发现它的行为不如理想(即大约12个标签,当它换行时,第二行标签随标签选择而移动,有时跳过3行而不是2。
这是一个双重问题,首先,有人知道如何在选择更改时停止第二行标签跳转。
或者,任何人都知道jQuery的标签插件可以很好地处理多行标签(如果我找不到解决方案,我可能会最终使用ExtJS或类似的东西,但试图保持这个应用程序相当轻量级)。
答案
经过进一步调查后发现这是由我使用的Jquery UI主题引起的,这是有问题的风格:
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: .1em; border-bottom: 0; }
我刚删除了padding-bottom:.1em并解决了问题(线索是第二行元素随着选择的变化而移动)。
答案 0 :(得分:5)
你根本不需要扩展。只需使用浮动LI和无样式的UL。 LI应该正确包装。通常,通过将“”替换为“”来确保同一选项卡中的单词不会换行。
我的自定义标签控件是使用ASP.Net动态构建的,但是标签和隐藏/显示功能都是jQuery。
<div id="tabWrapper">
<ul id="tabContainer">
<li>Tab 1</li>
<li>Tab 2</li>
<li>Tab 3</li>
</ul>
</div>
基本CSS
#tabWrapper
{
border-bottom: solid 1px #676767;
}
#tabContainer
{
padding:0;
margin:0;
position:relative;
z-index: 1;
float:left;
list-style:none;
}
#tabContainer li
{
float:left;
margin:0;
cursor: pointer;
background: f1f1f1;
border-top: solid 1px #676767;
border-left: solid 1px #676767;
border-right: solid 1px #ababab;
margin-bottom: -1px;
}
#tabContainer .selected, #tabContainer .selected:hover
{
background: #fff;
}
答案 1 :(得分:5)
不是技术解决方案,但请注意Nielsen强烈建议不要使用多行标签:
只有一行标签。多 行创建跳转UI元素,其中 破坏空间记忆,从而使 用户无法记住 他们已经访问了哪些标签。 当然,多行也是一个 确定过度复杂的症状: 如果您需要更多的标签而不是适合的标签 单行,您需要简化 你的设计。
答案 2 :(得分:4)
这个问题在jQuery UI问题跟踪器上是described in a bug report。在该错误报告中,我附加了一个补丁,它解决了这个问题,而保留 .u-tabs-nav边框位于非选定选项卡下方。欢呼声。
答案 3 :(得分:2)
我不喜欢在打破第二行时标签的呈现方式,所以我写了一个插件来介绍“看到更多”标签,而不是打破第二行。
答案 4 :(得分:1)
我发现以下内容对多行的可排序标签很有用。我遇到的一个问题是,除非指定了axis: 'x'
,否则标签没有正确点击到位,但在行间拖动时看起来很难看。
我设法通过以下方式改进了这个:
$('#tab-container')
.sortable({
delay : 200,
distance : 20,
axis : 'x'
})
.on('sort sortchange', function() {
$('.ui-sortable-helper').css('top', $('.ui-sortable-placeholder').position().top + 'px');
});
答案 5 :(得分:0)
有许多很好的答案可以用来完全解决问题,但这是我自己的¢2。
为了大大简化问题,您可以根据需要添加<hr>
样式,以分隔选项卡行。在我看来,这看起来也比打开行更好。