let list = $('.class1');
for(let i = 0; i < list.length; i++) {
if(list.eq(i).hasClass('class2')) {
console.log(i);
break;
}
}
let list = $('.class1');
for(let i = 0; i < list.length; i++) {
if(list[i].className.includes('class2')) {
console.log(i);
break;
}
}
$('.class1').each((index, item) => {
if(item.className.includes('class2')) console.log(index)
} );
const elems = [...document.querySelectorAll('.class1')];
const index = elems.findIndex(n => n.classList.contains('class2'));
const elems = document.querySelectorAll('.class1');
let index = elems.length;
while (--index >= 0 && !elems[index].matches('.class2')) ;
const index = Array.prototype.indexOf.call(
document.querySelectorAll('.class1'),
document.querySelector('.class2')
);
clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
const $el = $('.banner');
const baseWidth = $el.width();
$(window).scroll(function() {
$el.width(baseWidth + $(this).scrollTop());
});
const el = document.querySelector('.banner');
const baseWidth = el.offsetWidth;
document.addEventListener('scroll', () => {
el.style.width = `${baseWidth + document.documentElement.scrollTop}px`;
});
let state = true;
document.querySelector('button').addEventListener('click', e => {
state = !state;
document.querySelectorAll('circle').forEach((n, i, a) => {
setTimeout(() => {
n.classList.toggle('st0', state);
e.target.disabled = (state ? a.length - i : i + 1) !== a.length;
}, (state ? a.length - i : i) * 3);
});
});
let state = true;
const button = document.querySelector('button');
const circles = document.querySelectorAll('circle');
button.addEventListener('click', () => {
state = !state;
toggleCircle(0);
});
function toggleCircle(i) {
if (i < circles.length) {
setTimeout(() => {
const index = state ? circles.length - i - 1 : i;
circles[index].classList.toggle('st0', state);
button.disabled = i !== circles.length - 1;
toggleCircle(i + 1);
}, 3);
}
}
let state = true;
const circles = document.querySelectorAll('circle');
document.querySelector('button').addEventListener('click', function() {
this.disabled = true;
state = !state;
let i = 0;
const intervalID = setInterval(() => {
const index = state ? circles.length - i - 1 : i;
circles[index].classList.toggle('st0', state);
if (++i === circles.length) {
this.disabled = false;
clearInterval(intervalID);
}
}, 3);
});
clip-path
:.ribbon {
...
background: #36499A;
-webkit-clip-path: polygon(0% 0%, 100% 0, 75% 50%, 100% 100%, 0 100%, 25% 50%);
clip-path: polygon(0% 0%, 100% 0, 75% 50%, 100% 100%, 0 100%, 25% 50%);
}
svg
в качестве фона.<div class="ribbon">
<div class="bg">
<svg viewBox="0 0 400 200" preserveAspectRatio="none">
<path fill="#36499A" d="M 0,0 400,0 350,100 400,200 0,200 50,100 z"></path>
</svg>
</div>
<div class="inner">
Lorem ipsum dolor sit amet.
</div>
</div>
absolute
:.bg {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
svg {
width: 100%;
height: 100%;
}
<div id="tab-controls">
<button data-tab="tab-1">Tab 1</button>
<button data-tab="tab-2">Tab 2</button>
<button data-tab="tab-3">Tab 3</button>
</div>
<div id="tab-1">
<button id="tab-1-filter-1">Filter 1</button>
<button id="tab-1-filter-2">Filter 2</button>
<button id="tab-1-filter-3">Filter 3</button>
<div clas="tab-content">
<div class="tab-1-element filter-1 filter-2" ></div>
...
</div>
</div>
<script>
$('#tab-1-filter-1').click(e=>{
$('.tab-1-element').hide().filter(':has(.filter-1)').show();
});
</script>
<div class="social">
<a href="#" class="social__icon social__facebook"></a>
<a href="#" class="social__icon social__telegram"></a>
<a href="#" class="social__icon social__youtube"></a>
</div>
.social__facebook {
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4...);
}