我有一个相当简单的脚本,用于移动贷款申请网站上的一组滑动面板。面板根据用户信息(如年龄、联合或个人应用程序)以及(对于汽车贷款)GAP 保险选择,显示可供用户使用的不同保险套餐。
滑动对我们来说很好,但我们想添加箭头按钮,也为用户执行滑动功能。这些按钮是为了提醒用户更多的选项位于向左或向右方向,并且单击这些按钮将执行该方向的滑动,就像用户的手指运动一样。这是我不知道如何添加的内容,如果有人有建议,我希望获得一些关于如何使用我们当前的脚本/css 创建它们的指导。我不是想导航到新页面或任何东西,我只是希望滑动功能也由按钮触发。
当前行为允许用户向右滑动通过所有包(1 到 4,取决于上述标准)。如果有已经滑过的包裹,它们可以滑回左侧。
滑动的javascript:
$(function () {
var sliding = startClientX = startPixelOffset = pixelOffset = currentSlide = 0,
slideCount = $('.slide').length;
$('html').live('mousedown touchstart', slideStart);
$('html').live('mouseup touchend', slideEnd);
$('html').live('mousemove touchmove', slide);
function slideStart(event) {
if (event.originalEvent.touches)
event = event.originalEvent.touches[0];
if (sliding == 0) {
sliding = 1;
startClientX = event.clientX;
}
}
function slide(event) {
event.preventDefault();
if (event.originalEvent.touches)
event = event.originalEvent.touches[0];
var deltaSlide = event.clientX - startClientX;
if (sliding == 1 && deltaSlide != 0) {
sliding = 2;
startPixelOffset = pixelOffset;
}
if (sliding == 2) {
var touchPixelRatio = 1;
if ((currentSlide == 0 && event.clientX > startClientX) || (currentSlide == slideCount - 1 && event.clientX < startClientX))
touchPixelRatio = 2;
pixelOffset = startPixelOffset + deltaSlide / touchPixelRatio;
$('#slides').css('-webkit-transform', 'translate3d(' + pixelOffset + 'px,0,0)').removeClass();
}
}
function slideEnd(event) {
if (sliding == 2) {
sliding = 0;
currentSlide = pixelOffset < startPixelOffset ? currentSlide + 1 : currentSlide - 1;
currentSlide = Math.min(Math.max(currentSlide, 0), slideCount - 1);
pixelOffset = currentSlide * -$('body').width();
$('#temp').remove();
$('<style id="temp">#slides.animate{-webkit-transform:translate3d(' + pixelOffset + 'px,0,0)}</style>').appendTo('head');
$('#slides').addClass('animate').css('-webkit-transform', '');
}
}
});
CSS:
html, body {
height: 100%;
}
body {
margin: 0;
overflow: hidden;
background: #333;
}
#slides {
width: 100%; height: 100%;
white-space: nowrap;
font-size: 0;
-webkit-transform: translate3d(0,0,0);
-moz-transform: translate3d(0,0,0);
-ms-transform: translate3d(0,0,0);
-o-transform: translate3d(0,0,0);
transform: translate3d(0,0,0);
}
.slide {
width: 100%; height:auto;
display: inline-block;
background-size: cover;
}
.animate {
-webkit-transition: all .3s ease-out;
-moz-transition: all .3s ease-out;
-ms-transition: all .3s ease-out;
-o-transition: all .3s ease-out;
transition: all .3s ease-out;
}
.slide:nth-child(1) { margin-left: 0px;}
.slide:nth-child(n+2) { margin-left: 20px ;}
MVC 代码,这将显示创建每个滑动面板的部分页面。可以有1-4个。每个“无法选择的幻灯片”都是一个包含定价列表的矩形。
<div id="slides">
@for (int i = 0; i < @Model.Packages.Count; i++)
{
<div class="slide unselectable">
@Html.OurHiddenFor(model => @Model.Packages[i].Id)
@Html.OurPartial("CalculatePackage", @Model.Packages[i])
</div>
}
</div>
感谢您的时间和建议!