【发布时间】:2016-10-25 14:43:51
【问题描述】:
这是我目前的处理方式:
Number.prototype.roundTo = function(nTo) {
nTo = nTo || 10;
return Math.round(this * (1 / nTo)) * nTo;
};
$(function() {
var slides = $('#slider ul').children().length;
var slideWidth = $('#slider').width();
var min = 0;
var max = -((slides - 1) * slideWidth);
console.log("Slides: " + slides + ", Width: " + slideWidth + ", min: 0, max: " + max);
$("#slider ul").width(slides * slideWidth);
$("#slider ul").draggable({
axis: 'x',
drag: function(event, ui) {
if (ui.position.left > min) ui.position.left = min;
if (ui.position.left < max) ui.position.left = max;
},
stop: function(event, ui) {
$(this).animate({
left: (ui.position.left).roundTo(slideWidth)
});
}
});
});
#portfolio {
background: #3aa756;
min-height: 100%;
height: 100%;
}
#portfolio-left {
background: #ccc;
display: inline-block;
min-height: 100vh;
padding-left: 0;
padding-right: 0;
}
#portfolio-right {
background: #ded;
min-height: 100vh;
padding-left: 0;
padding-right: 0;
float: right;
}
#portfolio #slider {
width: 400px;
overflow: hidden;
}
#slider ul {
list-style: none;
margin: 0;
padding: 0;
}
#slider li {
width: 400px;
height: 100vh;
float: left;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.min.js"></script>
<section class="no-padding" id="portfolio">
<div class="col-lg-6 col-sm-6" id="portfolio-left">
</div>
<div class="col-lg-6 col-sm-6" id="portfolio-right">
<div id="slider">
<ul>
<li style="background-color: #F00"></li>
<li style="background-color: #0F0"></li>
<li style="background-color: #00F"></li>
</ul>
</div>
</div>
</section>
本质上,右侧面板是可拖动的。因此,如果您向左或向右拖动,将出现一个新的颜色面板。目前,我正在使用li 来保存不同的面板
<div id="slider">
<ul>
<li style="background-color: #F00"></li>
<li style="background-color: #0F0"></li>
<li style="background-color: #00F"></li>
</ul>
</div>
我现在所追求的有点复杂。上面的每个li 本质上都应该充当更多数据的父级。因此,如果我要采取上述措施,最终可能会更像这样
<div id="slider">
<ul>
<li style="background-color: #F00">
<ul>
<li style="background-color: #CCC"></li>
<li style="background-color: #5CB"></li>
</ul>
</li>
<li style="background-color: #0F0"></li>
<li style="background-color: #00F"></li>
</ul>
</div>
所以从左到右的滑动将控制主要的li 项目。然后,我想要上下滑动来控制 li 父项的子项。因此,如果我到达第一个具有一些子数据的li,向上滑动将显示第一个子 li,另一个向上滑动第二个等。但如果我向右滑动,它将显示第二个父 li。
希望我解释清楚。这样的事情可能吗?
谢谢
【问题讨论】:
-
是的,这是可能的。
标签: jquery jquery-ui draggable