我有一个固定大小<div>
,其中包含块。通过单击+
,用户可以添加其他框(理论上无限量)。
当&#34;盒子的数量&#34;超过<div>
容器的宽度我希望用户能够向左和/或向右滚动以查看所有框。
目前我正在寻找一个起点,因为我之前没有实现过这样的功能。
有JQuery示例,但我想尽可能避免使用JQuery。
请协助。
答案 0 :(得分:2)
根据我的评论并建议您使用KendoUI ScrollView并发现您错过了选项itemsPerPage
,我会稍微修改一下KendoUI演示,告诉您如何使用它。
如果要在每个页面上显示多个项目,只需在窗口小部件的初始化中定义所需的项目数。例如:
$("#scrollview").kendoMobileScrollView({
dataSource: dataSource,
contentHeight: 150,
itemsPerPage: 4,
enablePager: false,
template: kendo.template($("#template").html())
});
您还可以定义一个模板,用于定义如何呈现每个页面。例如:
<script id="template" type="text/x-kendo-template">
<table>
<tr>
# for (var i = 0; i < data.length; i++) { #
<td>
<img src="#: data[i].image_url #"/>
</td>
# } #
</tr>
</table>
</script>
当你把所有人放在一起时,你有:http://jsfiddle.net/OnaBai/5M9Vw/
答案 1 :(得分:0)
我找到了一个相当简单的算法来处理左/右滚动。
通过一些工作,我应该可以在没有JQuery的情况下使用它。
JFiddle示例是here。
<强> HTML 强>
<div class="mtabArrowLeft">«</div>
<div class="menuTabs">
<div class="img-reel">
<input class="menutabBTN" name="" type="button" value="a" />
<input class="menutabBTN" name="" type="button" value="b" />
<input class="menutabBTN" name="" type="button" value="c" />
<input class="menutabBTN" name="" type="button" value="d" />
<input class="menutabBTN" name="" type="button" value="e" />
<input class="menutabBTN" name="" type="button" value="f"/>
</div>
</div>
<div class="mtabArrowRight">»</div>
<强>的JavaScript 强>
$(function() {
var imageWidth = 71;
var reelSize = 4;
var imageSum = $('.img-reel input').size();
var imageReelWidth = imageWidth * imageSum;
$('.img-reel').css({'width' : imageReelWidth});
rotate = function(){
var trigger = $btn.attr('class');
var image_reelPosition = (trigger=='mtabArrowLeft') ? -imageWidth : imageWidth;
var reel_currentPosition = $('.img-reel').css('left').replace('px','');
var pos = reel_currentPosition-image_reelPosition;
var maxPos = (imageSum-reelSize)*-imageWidth;
//console.log('pos='+pos+', max='+maxPos);
if(pos>=maxPos && pos<=0){
$('.img-reel').animate({left:pos},300);
$('.mtabArrowLeft,.mtabArrowRight').fadeTo(250,1);
//console.log('move');
if(pos==maxPos){$('.mtabArrowRight').fadeTo(250,0.2);}
else if(pos==0){$('.mtabArrowLeft').fadeTo(250,0.2);}
}
};
if (imageSum > 4) {
$('.mtabArrowLeft,.mtabArrowRight').click(function(){
$btn = $(this);
rotate();
return false;
});
}
else {
$('.mtabArrowLeft,.mtabArrowRight').fadeTo(0,0.2).click(function(){return false});
}
})
CSS
html,body,h1,h2,h3,h4,h5,p,ul,li,form,button { margin:0; padding:0 }
body { margin:20px; font:normal 62.5% tahoma }
p { margin:20px; }
.menuTabs {
float: left;
width: 284px;
overflow:hidden;
position:relative;
height:50px;
}
.img-reel { position:absolute; left:0; top:0; height:50px; }
.mtabArrowLeft {
float: left;
height: 25px;
width: 35px;
margin-left: 15px;
margin-right: 4px;
cursor:pointer;
font-size:20px;
}
.mtabArrowRight {
float: left;
height: 25px;
width: 35px;
margin-left: 15px;
margin-right: 15px;
cursor:pointer;
font-size:20px;
}
.mtabArrowLeft, .mtabArrowRight { color:#fff; font-weight:bold; background:red; text-indent:12px; border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px; line-height:21px }
.menutabBTN {
float: left;
height: 25px;
width: 65px;
margin-right: 3px;
margin-left: 3px;
padding: 0px;
border-top-width: 0px;
border-right-width: 0px;
border-bottom-width: 0px;
border-left-width: 0px;
font-family: Tahoma, Geneva, sans-serif;
font-size: 12px;
color: #000;
text-align: center;
line-height: 25px;
}