我正在構建具有航點的自定義嚮導窗體。一些有趣的事情正在發生,我無法想象出我的生活。使用waypoints.js控制水平滾動
我的示例CODEPEN顯示了嚮導過程的2頁向您展示我的意思。
當您點擊向前操作按鈕(在嚮導的第一頁中搜索)時,航點將從右側滑動並顯示下一頁或屏幕。如果我點擊後退動作按鈕,則會前後反覆。這是行得通的。
我看到的問題是與最初的水平滾動條。它在頁面加載時顯示,這是一個問題,因爲用戶可以通過拖動滾動條滾動到下一個屏幕。我想給它一個overflow-x
但它並沒有解決這個問題。有趣的是,如果我點擊搜索按鈕並且航點滑動,滾動條就會消失,併爲我帶來理想的效果!是什麼賦予了?
我建立了CODEPEN儘可能接近真實環境,這樣你們就可以捕獲與其他元素的任何衝突,而不是隔離問題。
下面是相關的代碼,以防萬一:
HTML:
<div id="content" class="content">
<div class="row page">
<!-- First page content here -->
</div>
<div class="row page2">
<!-- Second page content here -->
</div>
</div>
CSS:
.page, .page2 {
position: absolute;
top: 20px;
left: 10px;
width: 100%;
-webkit-transition: -webkit-transform 0.8s;
transition: -webkit-transform 0.8s;
transition: transform 0.8s;
transition: transform 0.8s, -webkit-transform 0.8s
}
.page {
-webkit-transform: translateX(0%);
transform: translateX(0%)
}
.show-page2 .page {
-webkit-transform: translateX(-100%);
transform: translateX(-100%)
}
.page2 {
-webkit-transform: translateX(100%);
transform: translateX(100%)
}
.show-page2 .page2 {
-webkit-transform: translateX(0%);
transform: translateX(0%)
}
JS:
(function() {
var body = $('#content'),
nav = $('.btn-waypoint'),
panels = $('#content');
nav.on('click', function (e) {
e.preventDefault();
var dest = $(this).data('panel-link');
body
.removeClass(function (index, css) {
// remove only classes start with show-
// http://stackoverflow.com/questions/2644299/jquery-removeclass-wildcard
return (css.match(/\bshow-\S+/g) || []).join(' ');
})
.addClass('show-' + dest);
});
}());
我試圖解決這個問題的最接近的解決方法是,在頁面加載時使頁面display:none
消除滾動條,然後使它在按鈕單擊時可見。這幾乎做到了,除了在航點滑動效果和CSS淡入淡出效果之間出現時髦外觀。下面是該代碼:
JS
$(document).ready(function() {
$('.page2').css('display', 'none');
$('[data-panel-link]').on('click', function(){
$('.page2').css('display', 'block');
});
});
這裏是鏈接到我的CODEPEN
提前感謝!
我看不出差別 – JGallardo