- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的网站有动态标签菜单,一个标签菜单项可能是 2 或 3,也可能是 20+。因此,当导航项超过 10+ 时,会自动下降到第二行,请参阅 here .
我不想要这种效果,我想要在达到导航限制时出现下一个箭头图标,点击它,剩余的菜单项将向左移动。
我试过跟随但没有成功。
HTML
<div class="wrap">
<ul class="nav nav-tabs">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Tab1 example</a></li>
<li><a href="#">Tab2 example</a></li>
<li><a href="#">Tab3 example</a></li>
<li><a href="#">Tab4 example</a></li>
<li><a href="#">Tab5 example</a></li>
<li><a href="#">Tab6 example</a></li>
<li><a href="#">Tab7 example</a></li>
<li><a href="#">Tab8 example</a></li>
<li><a href="#">Tab9 example</a></li>
<li><a href="#">Tab10 example</a></li>
<li><a href="#">Tab11 example</a></li>
<li><a href="#">Tab12 example</a></li>
</ul>
</div>
<button id="goPrev">Prev</button>
<button id="goNext">Next</button>
CSS
.wrap {
overflow: hidden;
position: relative;
white-space: nowrap;
width:1000px;
background: #dad9d9;
border: 1px solid #efefef;
}
.wrap>.nav-tabs {
display: inline-block;
padding:0;
margin:0;
position: relative;
top: 0;
left: 0;
}
.wrap>.nav-tabs>li {
background: #fff;
display: inline-block;
position: relative;
white-space: normal;
float: none;
}
.nav-tabs>li>a {
margin-right: 0;
}
JavaScript/JQuery
var wrap = $(".wrap").width();
var el = $("ul").width();
if (el > wrap) {
$("#goNext").click(function() {
$("ul").stop(true);
if (-parseInt($("ul").css("left")) - wrap < 0) {
$("ul").animate({
"left": "+=-" + wrap
}, "slow")
} else {
$("ul").animate({
"left": "-" + (el - wrap)
}, "slow")
}
});
$("#goPrev").click(function() {
$("ul").stop(true);
if (-parseInt($("ul").css("left")) - wrap > 0) {
$("ul").animate({
"left": "+=" + wrap
}, "slow")
} else {
$("ul").animate({
"left": "0"
}, "slow")
}
});
}
注意:我不想为这个小东西使用任何插件,还要确保 slider 应该是响应式的。
谢谢
最佳答案
只需定义一个全局“currPage”变量。试试这个(参见 jsfiddle):
var menus = $("#menus"), menuWidth = menus.parent().outerWidth();
var menupage = Math.ceil(menus[0].scrollWidth / menuWidth), currPage = 1;
if (menupage > 1) {
$("#goNext").click(function () {
currPage < menupage && menus.stop(true).animate({
"left": -menuWidth * currPage
}, "slow") && currPage++
});
$("#goPrev").click(function () {
currPage > 1 && menus.stop(true).animate({
"left": -menuWidth * (currPage - 2)
}, "slow") && currPage--;
});
$(window).on("resize", function () {
menuWidth = menus.parent().outerWidth();
menupage = Math.ceil(menus[0].scrollWidth / menuWidth);
currPage = Math.ceil(-parseInt(menus.css("left")) / menuWidth) + 1;
});
}
/* Optional theme */
@import url('//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css');
.tab-slider {
padding:0 40px;
}
.tab-slider .btn-icon {
position: absolute;
top: 5px;
}
#goPrev {
left:0;
}
#goNext {
right:0;
}
.wrap {
overflow: hidden;
position: relative;
white-space: nowrap;
width: 100%;
background: #dad9d9;
border: 1px solid #efefef;
font-size: 0;
}
.nav-tabs>li.active>a,
.nav-tabs>li.active>a:focus,
.nav-tabs>li.active>a:hover {
border: 1px solid transparent;
}
.wrap>.nav-tabs {
display: inline-block;
padding: 0;
margin: 0;
position: relative;
top: 0;
left: 0;
}
.wrap>.nav-tabs>li {
background: #fff;
display: inline-block;
position: relative;
white-space: normal;
float: none;
font-size: 14px;
}
.nav-tabs>li>a {
margin-right: 0;
border-radius: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<div class="tab-slider">
<div class="wrap">
<ul class="nav nav-tabs" id="menus">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Tab1 example</a></li>
<li><a href="#">Tab2 example</a></li>
<li><a href="#">Tab3 example</a></li>
<li><a href="#">Tab4 example</a></li>
<li><a href="#">Tab5 example</a></li>
<li><a href="#">Tab6 example</a></li>
<li><a href="#">Tab7 example</a></li>
<li><a href="#">Tab8 example</a></li>
<li><a href="#">Tab9 example</a></li>
<li><a href="#">Tab10 example</a></li>
<li><a href="#">Tab11 example</a></li>
<li><a href="#">Tab13 example</a></li>
<li><a href="#">Tab14 example</a></li>
<li><a href="#">Tab15 example</a></li>
<li><a href="#">Tab16 example</a></li>
<li><a href="#">Tab17 example</a></li>
</ul>
</div>
<button id="goPrev" class="btn btn-default btn-icon"><i class="glyphicon glyphicon-chevron-left"></i></button>
<button id="goNext" class="btn btn-default btn-icon"><i class="glyphicon glyphicon-chevron-right"></i></button>
</div>
注意:我加了一个id menus
给你的<ul class="nav nav-tabs">
关于javascript - 如果达到限制,可移动的动态 Bootstrap Tab 菜单 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38524460/
我想在 iOS 中以编程方式制作二维模型。像这样: 这取自应用 Gomoji . 我用谷歌搜索但没有得到正确的解决方案。这个角色也在移动,所以它可以移动手和腿,同时我想改变手的颜色等。 SpriteK
也许是个愚蠢的问题: C++ 中有没有一种方法可以防止枚举类类型被复制? 最佳答案 没有。枚举是整数。并且整数始终是可复制/可移动的。 您当然可以创建一个从枚举构造的实际类。而那个类(class)可以
看起来 jqGrid 是基于 jQuery 对话框的,是否有可能使其可移动(像对话框一样)?我已经能够将它放在对话框中,但有两个标题栏等看起来很奇怪。我“认为”可以向其中添加必要的类以使其可移动,但我
我正在尝试创建一个交互式待办事项列表,我在其中将文本输入文本框,单击一个按钮,它会在下面添加项目。到目前为止,我已经成功地使用按钮将项目添加到我的列表中,但我无法通过单击一次删除一个项目,这是我希望能
是否可以创建一个可移动的 QGraphicsItem,它可以用鼠标右键而不是左键移动? 我唯一能通过搜索找到的是一个线程 which suggests using QGraphicsItem::set
我一直在尝试拼凑一个项目,该项目包含一个在侧面滚动的 Collection View ,当点击一个单元格时,它将向场景添加一个新的 ImageView 。我希望这张新图片可以拖动。 我的代码当前显示
是否有任何允许重新排序它们的 Angular JS 选项卡指令(如浏览器的选项卡) 如果不是开始实现会很棒 使用 angular-ui-bootstap 如何使它们可重新排序
我已经向 Mac App Store 提交了一个帮助应用程序(使用 LSUIElement)。我的错误印象是 App Store 安装过程会为辅助应用程序放置一个停靠栏图标。 我如何创建一个用户可以删
我有一个设置错误的表(作为应用程序表,但创建了一个维护 View ),但它应该是一个自定义表,以便我们能够传输表的条目。 到目前为止,我更改了表格的类型和可维护性,现在它是 C 类型(自定义),可以不
您好,我在我的网站上使用谷歌地图。我想在保持 map 可移动的同时使用图像为其覆盖(用户可以四处拖动和缩放) 到目前为止我做了什么: 我创建了 map ,然后我使用伪 :before 元素来调用我想作
我想制作一些有趣的可移动 div。我有以下代码: dragElement(document.getElementById("draggable_shortcut")); functio
我正在使用 FloatingActionButton在我的应用程序中。有时,它会与基本内容重叠,所以我想制作它以便用户可以将 FAB 拖到一边。 本身不需要拖放功能。它只需要是可移动的。文档没有提到这
我想制作一个具有自定义外观的安装程序,并通过将 BorderStyle 设置为 bsNone 来禁用标题栏。 现在我无法再移动窗口了。我环顾四周,找到了 Delphi 的解决方案: http://ww
我有两种纹理:背景和蒙版。我需要使掩码的输出定义显示的表单背景。非常重要的部分是 mask 的尺寸需要小于背景我将在运行时移动它以显示背景的部分。 项目在 WP7 上,所以数量有限 BlendStat
我的摩托罗拉手机有 12GB 内部存储和可移动 SD 卡功能。 在 DDMS 文件资源管理器中,我的内部手机存储 (12GB) 挂载为 sdcard,我的可移动 sdcard 挂载为 sdcard-e
如何获取所有驱动器的列表以及相应的驱动器类型(可移动、本地磁盘或 cd-rom、dvd-rom 等)? 最佳答案 通过这段代码你可以获得所有驱动器及其类型描述 File[] paths; FileSy
我正在尝试打印驱动器盘符及其系统类型。在此程序中,它将硬盘驱动器打印为逻辑驱动器,将 cd 驱动器打印为 cd 驱动器,将存储卡打印为可移动驱动器。当我插入外部硬盘和 pendrive (sandis
我正在使用 Angular2 及其 Material Design( https://material.angular.io ) 创建一个小型网络应用程序,我在其中使用 MdDialog 来使用以下代
std::vector> foo; //populate foo. 自从新标准以来 vector 是可移动的,但不幸的是他们还没有使可选的可移动:( 有没有制作可选可移动的计划? 上面的 vector
我是一名优秀的程序员,十分优秀!