我正在研究具有自定義旋轉木馬的應用程序,並且希望直觀地移動項目的內部內容,使其始終處於視圖中,直到項目爲止真正超出了範圍。粘性邊緣 - 獲取單元格的邊緣,在旋轉木馬內
^以便將.item移到左側位置。你會使用什麼技術來檢測邊緣以動態定位.unit填充左值?因此,即使項目開始移出位置,該單元格內的文本也始終可見。
//最新小提琴 https://jsfiddle.net/atg5m6ym/3124/
$(document).ready(function() {
//console.log("ready!");
function isElementInViewport (el) {
//special bonus for those using jQuery
if (typeof jQuery === "function" && el instanceof jQuery) {
el = el[0];
}
var rect = el.getBoundingClientRect();
return (
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */
rect.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */
);
}
var currentPadding = 0;
var newPadd = 0;
function compensatePadding() {
var itemLeft = Math.abs(parseInt($('.caroseul').offset().left));
console.log("itemLeft", itemLeft)
newPadd = Math.abs(itemLeft);
$('.stick .unit').css("padding-left", newPadd + "px");
}
var unitWidth = $('.unit').width();
console.log("unitWidth", unitWidth);
function onVisibilityChange(el, callback) {
var old_visible;
return function() {
var visible = isElementInViewport(el);
if (visible != old_visible) {
old_visible = visible;
if (typeof callback == 'function') {
callback();
}
}
}
}
function checkVisible() {
console.log("checkvisible");
var labelGroups = $('.caroseul .item .wraps');
var length = labelGroups.length;
for (i = 0; i < length; i++) {
var isItemLabelInView = isElementInViewport(labelGroups[i]);
if(!isItemLabelInView){
$(labelGroups[i]).closest(".item").addClass("stick");
}
else{
$(labelGroups[i]).closest(".item").removeClass("stick");
//reset moved items
$('.unit').css("padding-left", 0);
}
console.log(" labelGroups[i]", labelGroups[i]);
console.log("isItemLabelInView", isItemLabelInView);
}
compensatePadding();
}
$('.container').on('scroll', checkVisible);
});
這是偉大的人 - 如果說到最後沒有剩餘空間---你能夠解除它? –
@TheOldCounty我不明白你的意思是什麼 - *你能夠解除它嗎?* – Bhumika107
我已經在邊緣卡住了這個塊,以便它不會與其他幻燈片重疊。檢查 - https://jsfiddle.net/Bhumika107/ydt22LLf/6/ – Bhumika107