Доброго времени суток, моя ситуация заключается в чем:
есть переменная settings
и в ней есть настройка - scrollWheel
, а в ней enabled: true
var settings = {
// Scroll wheel.
scrollWheel: {
// If true, enables scrolling via the scroll wheel.
enabled: true,
// Sets the scroll wheel factor. (Ideally) a value between 0 and 1 (lower = slower scroll, higher = faster scroll).
factor: 1
},
}
мне нужно чтобы enabled: true
, при клике на блок с id="card"
менялся на enabled: false
. Надеюсь на вашу помощь, и заранее благодарен.
(function($) {
// Settings.
var settings = {
// Keyboard shortcuts.
keyboardShortcuts: {
// If true, enables scrolling via keyboard shortcuts.
enabled: true,
// Sets the distance to scroll when using the left/right arrow keys.
distance: 50
},
// Scroll wheel.
scrollWheel: {
// If true, enables scrolling via the scroll wheel.
enabled: true,
// Sets the scroll wheel factor. (Ideally) a value between 0 and 1 (lower = slower scroll, higher = faster scroll).
factor: 1
},
// Scroll zones.
scrollZones: {
// If true, enables scrolling via scroll zones on the left/right edges of the scren.
enabled: true,
// Sets the speed at which the page scrolls when a scroll zone is active (higher = faster scroll, lower = slower scroll).
speed: 15
},
// Dragging.
dragging: {
// If true, enables scrolling by dragging the main wrapper with the mouse.
enabled: true,
// Sets the momentum factor. Must be a value between 0 and 1 (lower = less momentum, higher = more momentum, 0 = disable momentum scrolling).
momentum: 0.875,
// Sets the drag threshold (in pixels).
threshold: 10
},
// If set to a valid selector , prevents key/mouse events from bubbling from these elements.
excludeSelector: 'input:focus, select:focus, textarea:focus, audio, video, iframe',
// Link scroll speed.
linkScrollSpeed: 1000
};
// Skel.
skel.breakpoints({
xlarge: '(max-width: 1680px)',
large: '(max-width: 1280px)',
medium: '(max-width: 980px)',
small: '(max-width: 780px)',
xsmall: '(max-width: 480px)',
xxsmall: '(max-width: 360px)',
short: '(min-aspect-ratio: 16/7)',
xshort: '(min-aspect-ratio: 16/6)'
});
// Ready event.
$(function() {
// Vars.
var $window = $(window),
$document = $(document),
$body = $('body'),
$html = $('html'),
$bodyHtml = $('body,html'),
$wrapper = $('#js-content-wrapper');
// Disable animations/transitions until the page has loaded.
$body.addClass('is-loading');
$window.on('load', function() {
window.setTimeout(function() {
$body.removeClass('is-loading');
}, 100);
});
// Tweaks/fixes.
// Mobile: Revert to native scrolling.
if (skel.vars.mobile) {
// Disable all scroll-assist features.
settings.keyboardShortcuts.enabled = false;
settings.scrollWheel.enabled = false;
settings.scrollZones.enabled = false;
settings.dragging.enabled = false;
// Re-enable overflow on body.
$body.css('overflow-x', 'auto');
}
// IE: Various fixes.
if (skel.vars.browser == 'ie') {
// Enable IE mode.
$body.addClass('is-ie');
// Page widths.
$window
.on('load resize', function() {
// Calculate wrapper width.
var w = 0;
$wrapper.children().each(function() {
w += $(this).width();
});
// Apply to page.
$html.css('width', w + 'px');
});
}
// Polyfill: Object fit.
if (!skel.canUse('object-fit')) {
$('.image[data-position]').each(function() {
var $this = $(this),
$img = $this.children('img');
// Apply img as background.
$this
.css('background-image', 'url("' + $img.attr('src') + '")')
.css('background-position', $this.data('position'))
.css('background-size', 'cover')
.css('background-repeat', 'no-repeat');
// Hide img.
$img
.css('opacity', '0');
});
}
// Keyboard shortcuts.
if (settings.keyboardShortcuts.enabled)
(function() {
$wrapper
// Prevent keystrokes inside excluded elements from bubbling.
.on('keypress keyup keydown', settings.excludeSelector, function(event) {
// Stop propagation.
event.stopPropagation();
});
$window
// Keypress event.
.on('keydown', function(event) {
var scrolled = false;
switch (event.keyCode) {
// Left arrow.
case 37:
$document.scrollLeft($document.scrollLeft() - settings.keyboardShortcuts.distance);
scrolled = true;
break;
// Right arrow.
case 39:
$document.scrollLeft($document.scrollLeft() + settings.keyboardShortcuts.distance);
scrolled = true;
break;
// Page Up.
case 33:
$document.scrollLeft($document.scrollLeft() - $window.width() + 100);
scrolled = true;
break;
// Page Down, Space.
case 34:
case 32:
$document.scrollLeft($document.scrollLeft() + $window.width() - 100);
scrolled = true;
break;
// Home.
case 36:
$document.scrollLeft(0);
scrolled = true;
break;
// End.
case 35:
$document.scrollLeft($document.width());
scrolled = true;
break;
}
// Scrolled?
if (scrolled) {
// Prevent default.
event.preventDefault();
event.stopPropagation();
// Stop link scroll.
$bodyHtml.stop();
}
});
})();
// Scroll wheel.
if (settings.scrollWheel.enabled)
(function() {
// Based on code by @miorel + @pieterv of Facebook (thanks guys :)
// github.com/facebook/fixed-data-table/blob/master/src/vendor_upstream/dom/normalizeWheel.js
var normalizeWheel = function(event) {
var pixelStep = 10,
lineHeight = 40,
pageHeight = 800,
sX = 0,
sY = 0,
pX = 0,
pY = 0;
// Legacy.
if ('detail' in event)
sY = event.detail;
else if ('wheelDelta' in event)
sY = event.wheelDelta / -120;
else if ('wheelDeltaY' in event)
sY = event.wheelDeltaY / -120;
if ('wheelDeltaX' in event)
sX = event.wheelDeltaX / -120;
// Side scrolling on FF with DOMMouseScroll.
if ('axis' in event
&& event.axis === event.HORIZONTAL_AXIS) {
sX = sY;
sY = 0;
}
// Calculate.
pX = sX * pixelStep;
pY = sY * pixelStep;
if ('deltaY' in event)
pY = event.deltaY;
if ('deltaX' in event)
pX = event.deltaX;
if ((pX || pY)
&& event.deltaMode) {
if (event.deltaMode == 1) {
pX *= lineHeight;
pY *= lineHeight;
}
else {
pX *= pageHeight;
pY *= pageHeight;
}
}
// Fallback if spin cannot be determined.
if (pX && !sX)
sX = (pX < 1) ? -1 : 1;
if (pY && !sY)
sY = (pY < 1) ? -1 : 1;
// Return.
return {
spinX: sX,
spinY: sY,
pixelX: pX,
pixelY: pY
};
};
// Wheel event.
$body.on('wheel', function(event) {
// Disable on <=small.
if (skel.breakpoint('small').active)
return;
// Prevent default.
event.preventDefault();
event.stopPropagation();
// Stop link scroll.
$bodyHtml.stop();
// Calculate delta, direction.
var n = normalizeWheel(event.originalEvent),
x = (n.pixelX != 0 ? n.pixelX : n.pixelY),
delta = Math.min(Math.abs(x), 150) * settings.scrollWheel.factor,
direction = x > 0 ? 1 : -1;
// Scroll page.
$document.scrollLeft($document.scrollLeft() + (delta * direction));
});
})();
// Scroll zones.
if (settings.scrollZones.enabled)
(function() {
var $left = $('<div class="scrollZone left"></div>'),
$right = $('<div class="scrollZone right"></div>'),
$zones = $left.add($right),
paused = false,
intervalId = null,
direction,
activate = function(d) {
// Disable on <=small.
if (skel.breakpoint('small').active)
return;
// Paused? Bail.
if (paused)
return;
// Stop link scroll.
$bodyHtml.stop();
// Set direction.
direction = d;
// Initialize interval.
clearInterval(intervalId);
intervalId = setInterval(function() {
$document.scrollLeft($document.scrollLeft() + (settings.scrollZones.speed * direction));
}, 25);
},
deactivate = function() {
// Unpause.
paused = false;
// Clear interval.
clearInterval(intervalId);
};
$zones
.appendTo($wrapper)
.on('mouseleave mousedown', function(event) {
deactivate();
});
$left
.css('left', '0')
.on('mouseenter', function(event) {
activate(-1);
});
$right
.css('right', '0')
.on('mouseenter', function(event) {
activate(1);
});
$wrapper
.on('---pauseScrollZone', function(event) {
// Pause.
paused = true;
// Unpause after delay.
setTimeout(function() {
paused = false;
}, 500);
});
})();
// Dragging.
if (settings.dragging.enabled)
(function() {
var dragging = false,
dragged = false,
distance = 0,
startScroll,
momentumIntervalId, velocityIntervalId,
startX, currentX, previousX,
velocity, direction;
$wrapper
// Prevent image drag and drop.
.on('mouseup mousemove mousedown', '.image, img', function(event) {
event.preventDefault();
})
// Prevent mouse events inside excluded elements from bubbling.
.on('mouseup mousemove mousedown', settings.excludeSelector, function(event) {
// Prevent event from bubbling.
event.stopPropagation();
// End drag.
dragging = false;
$wrapper.removeClass('is-dragging');
clearInterval(velocityIntervalId);
clearInterval(momentumIntervalId);
// Pause scroll zone.
$wrapper.triggerHandler('---pauseScrollZone');
})
// Mousedown event.
.on('mousedown', function(event) {
// Disable on <=small.
if (skel.breakpoint('small').active)
return;
// Clear momentum interval.
clearInterval(momentumIntervalId);
// Stop link scroll.
$bodyHtml.stop();
// Start drag.
dragging = true;
$wrapper.addClass('is-dragging');
// Initialize and reset vars.
startScroll = $document.scrollLeft();
startX = event.clientX;
previousX = startX;
currentX = startX;
distance = 0;
direction = 0;
// Initialize velocity interval.
clearInterval(velocityIntervalId);
velocityIntervalId = setInterval(function() {
// Calculate velocity, direction.
velocity = Math.abs(currentX - previousX);
direction = (currentX > previousX ? -1 : 1);
// Update previous X.
previousX = currentX;
}, 50);
})
// Mousemove event.
.on('mousemove', function(event) {
// Not dragging? Bail.
if (!dragging)
return;
// Velocity.
currentX = event.clientX;
// Scroll page.
$document.scrollLeft(startScroll + (startX - currentX));
// Update distance.
distance = Math.abs(startScroll - $document.scrollLeft());
// Distance exceeds threshold? Disable pointer events on all descendents.
if (!dragged
&& distance > settings.dragging.threshold) {
$wrapper.addClass('is-dragged');
dragged = true;
}
})
// Mouseup/mouseleave event.
.on('mouseup mouseleave', function(event) {
var m;
// Not dragging? Bail.
if (!dragging)
return;
// Dragged? Re-enable pointer events on all descendents.
if (dragged) {
setTimeout(function() {
$wrapper.removeClass('is-dragged');
}, 100);
dragged = false;
}
// Distance exceeds threshold? Prevent default.
if (distance > settings.dragging.threshold)
event.preventDefault();
// End drag.
dragging = false;
$wrapper.removeClass('is-dragging');
clearInterval(velocityIntervalId);
clearInterval(momentumIntervalId);
// Pause scroll zone.
$wrapper.triggerHandler('---pauseScrollZone');
// Initialize momentum interval.
if (settings.dragging.momentum > 0) {
m = velocity;
momentumIntervalId = setInterval(function() {
// Scroll page.
$document.scrollLeft($document.scrollLeft() + (m * direction));
// Decrease momentum.
m = m * settings.dragging.momentum;
// Negligible momentum? Clear interval and end.
if (Math.abs(m) < 1)
clearInterval(momentumIntervalId);
}, 15);
}
});
})();
// Link scroll.
$wrapper
.on('mousedown mouseup', 'a[href^="#"]', function(event) {
// Stop propagation.
event.stopPropagation();
})
.on('click', 'a[href^="#"]', function(event) {
var $this = $(this),
href = $this.attr('href'),
$target, x, y;
// Get target.
if (href == '#'
|| ($target = $(href)).length == 0)
return;
// Prevent default.
event.preventDefault();
event.stopPropagation();
// Calculate x, y.
if (skel.breakpoint('small').active) {
x = $target.offset().top - (Math.max(0, $window.height() - $target.outerHeight()) / 2);
y = { scrollTop: x };
}
else {
x = $target.offset().left - (Math.max(0, $window.width() - $target.outerWidth()) / 2);
y = { scrollLeft: x };
}
// Scroll.
$bodyHtml
.stop()
.animate(
y,
settings.linkScrollSpeed,
'swing'
);
});
// Gallery.
$('.gallery')
.on('click', 'a', function(event) {
var $a = $(this),
$gallery = $a.parents('.gallery'),
$modal = $gallery.children('.modal'),
$modalImg = $modal.find('img'),
href = $a.attr('href');
// Not an image? Bail.
if (!href.match(/\.(jpg|gif|png|mp4)$/))
return;
// Prevent default.
event.preventDefault();
event.stopPropagation();
// Locked? Bail.
if ($modal[0]._locked)
return;
// Lock.
$modal[0]._locked = true;
// Set src.
$modalImg.attr('src', href);
// Set visible.
$modal.addClass('visible');
// Focus.
$modal.focus();
// Delay.
setTimeout(function() {
// Unlock.
$modal[0]._locked = false;
}, 600);
})
.on('click', '.modal', function(event) {
var $modal = $(this),
$modalImg = $modal.find('img');
// Locked? Bail.
if ($modal[0]._locked)
return;
// Already hidden? Bail.
if (!$modal.hasClass('visible'))
return;
// Stop propagation.
event.stopPropagation();
// Lock.
$modal[0]._locked = true;
// Clear visible, loaded.
$modal
.removeClass('loaded')
// Delay.
setTimeout(function() {
$modal
.removeClass('visible')
// Pause scroll zone.
$wrapper.triggerHandler('---pauseScrollZone');
setTimeout(function() {
// Clear src.
$modalImg.attr('src', '');
// Unlock.
$modal[0]._locked = false;
// Focus.
$body.focus();
}, 475);
}, 125);
})
.on('keypress', '.modal', function(event) {
var $modal = $(this);
// Escape? Hide modal.
if (event.keyCode == 27)
$modal.trigger('click');
})
.on('mouseup mousedown mousemove', '.modal', function(event) {
// Stop propagation.
event.stopPropagation();
})
.prepend('<div class="modal" tabIndex="-1"><div class="inner"><img src="" /></div></div>')
.find('img')
.on('load', function(event) {
var $modalImg = $(this),
$modal = $modalImg.parents('.modal');
setTimeout(function() {
// No longer visible? Bail.
if (!$modal.hasClass('visible'))
return;
// Set loaded.
$modal.addClass('loaded');
}, 275);
});
});
})(jQuery);
Хочу на сайт установить скрипт, чтобы перед тем как появилась кнопка для скачивания файла, пользователь сначала нажал на кнопку и поделился...
Создайте инпут, в который пользователь вводит дату своего рождения в формате '2014-12-31' (с конкретным годом)По потери фокуса выведите под инпутом...
Пытаюсь обновлять значение переменной, если это строка, то переводить ее в массив c одним индексом