Я работаю над приложением, которое имеет пользовательскую карусель, и есть желание интуитивно перемещать внутреннее содержимое элемента, чтобы он всегда находился в поле зрения, пока элемент не будет действительно вне сферы действия.Sticky Edge - получение края ячейки, внутри карусели
^так как элемент перемещен в левом положении. Какие методы вы бы использовали для обнаружения края для динамического позиционирования значения .unit padding-left? Таким образом, текст внутри этой ячейки всегда доступен для просмотра, даже если элемент начинает перемещаться из положения.
// Последние Fiddle 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