setTimeout(show(i), i * 300);
setTimeout(() => show(i), i * 300);
setTimeout(show.bind(null, i), i * 300);
setTimeout(show, i * 300, i);
function show(x) {
return function() {
// сюда помещаете то, что находится у вас в show сейчас
};
}
const ancestorSelector = 'селектор дальнего родителя';
const descendantSelector = 'селектор потомка';
document.addEventListener('click', ({ target: t }) => {
if (t.matches(descendantSelector)) {
const ancestor = t.closest(ancestorSelector);
if (ancestor) {
ancestor.remove();
}
}
});
document.addEventListener('click', e => {
const descendant = e.target.closest(descendantSelector);
if (descendant) {
const ancestor = descendant.closest(ancestorSelector);
if (ancestor) {
ancestor.remove();
}
}
});
document.addEventListener('click', ({ target: t }) =>
t.matches(descendantSelector) &&
t.closest(ancestorSelector)?.remove()
);
document.addEventListener('click', e => {
e.target.closest(descendantSelector)?.closest(ancestorSelector)?.remove();
});
h1::before {
content: "";
background-image: url(http://via.placeholder.com/50x50);
display: inline-block;
width: 50px;
height: 50px;
}
Если увеличивать width или height, то картинка повторяется.
Как можно отключить повтор?
background-size: cover;
background-position: center;
background-repeat: no-repeat;
<span id="typed"></span>
<div id="actions">
<button data-action="start">play</button>
<button data-action="stop">pause</button>
</div>
const typed = new Typed('#typed', {
typeSpeed: 100,
loop: true,
strings: [
'hello, world!!',
'fuck the world',
'fuck everything',
],
});
document.querySelector('#actions').addEventListener('click', e => {
const { action } = e.target.dataset;
if (action) {
typed[action]();
}
});
const cloud = new Image();
cloud.src = 'https://avatanplus.com/files/resources/mid/56dc1ba4ba1b81534bcbfb9a.png';
(function draw() {
const ctx = document.getElementById('canvas').getContext('2d');
ctx.globalCompositeOperation = 'destination-over';
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = 'rgba(0,0,0,0.4)';
ctx.strokeStyle = 'rgba(0,153,255,0.4)';
ctx.save();
ctx.translate(300, 200);
const time = new Date();
ctx.rotate(Math.sin(time / 500) / 10);
ctx.drawImage(cloud, -300, -200);
ctx.restore();
window.requestAnimationFrame(draw);
})();
locales: ['ru', 'en'], locale: 'ru',
{{ locales[locale]}}
v-for="(value, key) in locales"
@click.prevent="localizee(key)"
$(this).index()
на $('.sub3').index(this)
(за подробностями - в документацию)<tr *ngFor="let monitoring of filteredMonitorings "> <td style="text-align: center">{{ getTotal(filteredMonitorings) }} </td> </tr>
<tr *ngFor="let monitoring of filteredMonitorings ">
<td style="text-align: center">{{ monitoring.count }} </td>
</tr>
<tr>
<td style="text-align: center">{{ getTotal(filteredMonitorings) }} </td>
</tr>
languages: [ 'en', 'ru' ]
<ul>
<li
v-for="lang in languages"
@click="selected = lang"
>
{{ lang }}
</li>
</ul>
store.dispatch('заргузитьДанныеПользователя').then(() => {
new Vue({ ... });
});
created() {
this.$store.dispatch('заргузитьДанныеПользователя');
},
<div v-if="$store.state.данныеПользователя">
контент
</div>
<индикатор-загрузки v-else />
Можно ли сохранять состояние одного компонента с разными входными данными
.div_info
у вас нет - так что его высота равна нулю. А поскольку сам .div_info
является единственным дочерним элементом .midd_wrap
- то и последний также имеет нулевую высоту. Т.е., бэкграунд на самом деле есть, просто вы его не видите. if( slideIndex > sliderItem.length ) {
sliderItem.length
корректным значением, элемента с таким индексом уже нет. Замените >
на ===
. Нормальное ли разделение компонентов
правильно ли делать такие передачи props??