scrollToFollowBtn.addEventListener("click", function() {
scrollToElement(followBlock, 600)
}, false);
function scrollToElement(element, duration) {
var to = element.getBoundingClientRect().top;
var from = window.pageYOffset;
var start = performance.now();
requestAnimationFrame(function animate(time) {
var progress = (time - start) / duration;
1 <= progress && (progress = 1);
window.scrollTo(0, from + (to - from) * progress | 0);
1 > progress && requestAnimationFrame(animate)
})
};
<div class="filters">
<button class="filter" data-filter="isSport">Sport</button>
<button class="filter" data-filter="isFood">Food</button>
<button class="filter" data-filter="isWears">Wears</button>
</div>
<div class="wrapper">
<div class="link link_visible isSport">SPORT</div>
<div class="link link_visible isSport">SPORT</div>
<div class="link link_visible isSport">SPORT</div>
<div class="link link_visible isFood">FOOD</div>
<div class="link link_visible isFood">FOOD</div>
<div class="link link_visible isFood">FOOD</div>
<div class="link link_visible isWears">WEARS</div>
<div class="link link_visible isWears">WEARS</div>
<div class="link link_visible isWears">WEARS</div>
</div>
let filters = document.querySelector('.filters');
let filterButtons = filters.querySelectorAll('.filter');
let wrapper = document.querySelector('.wrapper');
let links = wrapper.querySelectorAll('.link');
filters.addEventListener('click', e => {
if (e.target.dataset.filter) {
if (e.target.classList.contains('filter_active')) {
e.target.classList.remove('filter_active');
links.forEach(item => item.classList.add('link_visible'));
} else {
filterButtons.forEach(btn => btn.classList.remove('filter_active'));
e.target.classList.add('filter_active');
links.forEach(item => {
item.classList.toggle(
'link_visible',
item.classList.contains(e.target.dataset.filter)
);
});
}
}
});
function get_style() {
function f() {
if(i >= bestValues.length) return;
bestValues[i].style.color = "green";
++i;
setTimeout(f, 1000);
}
var i = 0;
f();
}
function get_style() {
for (i = 0; i < bestValues.length; i++) {
(function(i) {
setTimeout(function() { bestValues[i].style.color = "green"; }, 1000 * i);
}(i));
}
}
- Поддержка ES2015 по умолчанию;
- Позволяет использовать разные загрузчики Webpack для разных частей Vue компонента, например, SASS для
<style>
и Jade для<template>
;- Позволяет использовать пользовательские секции во .vue-файлах, применяя к ним пользовательские цепочки загрузчиков
- Обращается со статическими ресурсами, указанными в
<style>
и<template>
, как с зависимостями модуля, и обрабатывает их Webpack загрузчиками;- Может эмулировать scoped CSS для компонентов;
- Поддерживает горячую замену модулей.