function getCurrentOffset(s) {
return s.split(",", 2).map((n) => Number(n.replace(/\D/g, "")));
}
function right2_m() {
const box = document.getElementById("box");
let [left, top] = getCurrentOffset(box.style.transform);
box.style.transform = `translate(${left+30}px,${top}px)`;
}
function bottom2_m() {
const box = document.getElementById("box");
let [left, top] = getCurrentOffset(box.style.transform);
box.style.transform = `translate(${left}px,${top+30}px)`;
}
const els = [
["author", "Author - "],
["name", "Name"],
["currentTime", "00:00"],
["duration", "00:00"],
];
els.forEach(el => {
titleElement.appendChild(
create({
el: "span",
className: el[0],
text: el[1],
})
);
})
const els = [
{ el: "span", className: "author", text: "Author - " },
{ el: "span", className: "name", text: "Name" },
{ el: "span", className: "currentTime", text: "00:00" },
{ el: "span", className: "duration", text: "00:00" },
];
els.forEach( el => titleElement.appendChild( create(el) ) );
function renderTitle (d) {
return `
<div class="title">
<span class="currentTime">${d.time}</span>
<span class="author">${d.author}</span> –
<span class="name">${d.name}</span>
<span class="duration">${d.duration}</span>
</div>
`;
}
xxx.insertAdjacentHTML('beforeend', renderTitle({
author: 'Author - ',
name: 'Name',
time: '00:00',
duration: '00:00',
}));
/*
* Этот файл НЕ используется в сборке.
* Он нужен только для корректного автокомплита в IDE phpStorm.
* Эта IDE почему-то не работает как следует, при указании реально использующегося
* файла концигурации, расположенного не в корне проекта (node_modules/laravel-mix/setup/webpack.config.js)
*/
const path = require('path');
module.exports = {
resolve: {
extensions: ['*', '.wasm', '.mjs', '.js', '.jsx', '.json', '.vue'],
alias: {
'vue$': 'vue/dist/vue.runtime.esm.js',
'@': path.join(__dirname, 'src'),
},
},
};
<div class="hiking__about_item_img">
<img class="img1" src="img/about_hiking/1.png" alt="House and mountains in the background">
<img class="img2" src="img/about_hiking/2.png" alt="Snowy mountains">
</div>
.hiking__about_item_img:not(.toggled) .img2,
.hiking__about_item_img.toggled .img1 {
display: none;
}
document.querySelector('.hiking__about_item_img')?.addEventListener('click', e => {
e.currentTarget.classList.toggle('toggled');
});
Number(Math.pow(2, 4));
str.toLowerCase().includes(s);
const dscrs = document.querySelectorAll('.item__wrapper');
const ratings = document.querySelectorAll('.rating');
dscrs.forEach((wrapper) => {
let dsrc = wrapper.querySelector('.item__dscr');
let rating = wrapper.querySelector('.rating');
dscr.addEventListener('click', function(e) {
dscr.classList.toggle('item__dscr-active');
let active = dscr.classList.contains('item__dscr-active');
ratings.forEach(r => r.classList.remove('active'));
rating.classList.toggle('active', active);
})
})
div p {
pointer-events: none;
}
document.querySelector('div').addEventListener('click', e => {
console.log(e.currentTarget); // Будет див, даже если кликнули на внутренний элемент
});
document.querySelector('div').addEventListener('click', e => {
console.log(e.target.closest('div'));
// Будет НАЙДЕН див, внутри которого, или на нем самом кликнули
});
<input type="hidden" name="e_sale" value="0">
<input type="checkbox" id="e_sale" name="e_sale" value="1">