Özel bir atlıkarınca olan bir uygulama üzerinde çalışıyorum ve bir öğenin iç içeriğini sezgisel olarak hareket ettirmek için istenen bir öğe bulunana kadar her zaman görünmesini sağlayın. gerçekten kapsam dışı. .item sol konumda hareket ettirildiği gibiYapışkan Kenar - bir hücrenin kenarını almak, bir atlıkarınca içinde
^. .unit dolgu-sol değerini dinamik olarak konumlandırmak için kenarı tespit etmek için hangi teknikleri kullanırsınız? Böylece, öğe hücrenin konumunun dışına çıkmaya başlamasına rağmen, bu hücrenin içindeki metin her zaman görüntülenebilir.
// Son Fiddle sizin belirli soruyu cevaplamak için, sana requestAnimationFrame kullanarak daha iyi olacağını düşünüyorum bu beni biraz üzüyor için jquery kullanarak ... ama 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);
});
bu harika adam - ve eğer hiç bir şey kalmadan bitiyorsa o? –
@TheOldCounty Neyi kastettiğinizi anlamıyorum - * çözmeyi başarabiliyor musunuz? * – Bhumika107
Diğer slaydı ile çakışmayacak şekilde bloğu kenara yapıştırdım. Şunu kontrol et - https://jsfiddle.net/Bhumika107/ydt22LLf/6/ – Bhumika107