цифры мешают нажимать на места, а z-index изменить не получается
clip-path: polygon(53% 0, 100% 0, 100% 49%, 100% 100%, 53% 100%, 52% 49%, 0 49%, 0 0);
document.querySelectorAll('.button').forEach(button => {
button.addEventListener('click', () => {
button.toggleClass('active');
});
});
document.querySelectorAll('.button').forEach(button => {
button.addEventListener('click', event => {
event.target.toggleClass('active');
// Или так, если есть вложенные элементы
// event.target.closest('.button').toggleClass('active');
});
});
event.target
– это кликнутый элемент.document.addEventListener('click', ({ target }) => {
if (!target.classList.contains('button')) return; // не тот клик
target.classList.toggle('active');
});
const isEmpty = obj => Object.keys(obj).length <= 2;
console.log( isEmpty({ a: "AAA" }) ? 'object is empty' : 'object is full of properties' );
// выведет "object is empty"
console.log( isEmpty({ a: "AAA", b: "BB", c: "C" }) ? 'object is empty' : 'object is full of properties' );
// выведет "object is full of properties"
<script>
function onEntry(entry) {
entry.forEach(change => {
if (change.isIntersecting) {
change.target.classList.add('element-show');
}
});
}
let options = {
threshold: [0.5] };
let observer = new IntersectionObserver(onEntry, options);
let elements = document.querySelectorAll('.element-animation');
for (let elm of elements) {
observer.observe(elm);
}
</script>
.element-animation{
top: 0px;
opacity: 0;
position: relative;
}
.element-animation.element-show{
position: relative;
top: -20px;
opacity: 1;
transition-duration: 1.4s;
}
this
.logger()
в вашем примере, this === window
.`
:$('#bombfire').html(`
<svg>...</svg>
`);
Только в обратных "бэк-тиках" можно текст разбивать на строки. Подробнее про строки и кавычки.const str = ' \
line 1 \
line 2 \
';
reduce()
в копилку:const zip = (arr1, arr2) => arr1.reduce(
(acc, head, i) => (acc.push({ ...arr2[i], head }), acc),
[]
);
zip(mass1, mass2)
/* [
{ t1: "aa", p1: "lot", head: "zn1" },
{ t1: "ab", p1: "kot", head: "zn2" },
{ t1: "ac", p1: "mot", head: "zn3" },
] */
map()
тут больше подходит:mass1.map((head, i) => ({ head, ...mass2[i] }))
let mass1 = ["zn1", "zn2", "zn3"]
let mass2 = [
{t1: "aa", p1: "lot"},
{t1: "ab", p1: "kot"},
{t1: "ac", p1: "mot"}
]
let mass3 = []
for (let i = 0; i < mass1.length; i++) {
mass3.push(
Object.assign(mass2[i], {head: mass1[i]})
)
}
[...new Map(arr.map((item) => [item["key"], item])).values()]
const uniqueIds = [];
arr.filter(element => {
const isDuplicate = uniqueIds.includes(element.key);
if (!isDuplicate) {
uniqueIds.push(element.key);
return true;
}
return false;
});
Object.values(
arr.reduce( (c, e) => {
if (!c[e.key]) c[e.key] = e;
return c;
}, {})
);
const unique = (arr, key) => {
const keys = new Set();
return arr.filter(el => !keys.has(el[key]) && keys.add(el[key]));
};
unique(arr, 'key')