.reduceRight( (f, g) => (() => g(f(...args)))())
.reduceRight( (f, g) => (...args) => g(f(...args)))
А здесь возвращается функция, соответственно она и переходит на следующую итерацию виде аккумулятора f. <div class="circle"></div>
.circle, .circle::before {
width: 300px;
height: 300px;
border-radius: 100%;
}
.circle {
background: red;
position: relative;
}
.circle::before {
content: '';
position: absolute;
left: 30px;
top: -30px;
backgroud: blue;
}
<div itemscope itemtype="http://schema.org/Product">
<span itemprop="name">Название продукта</span>
<span itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
Рейтинг:
<span itemprop="ratingValue">4.5</span> из
<span itemprop="bestRating">5</span>
на основе
<span itemprop="ratingCount">10</span> оценок
</span>
</div>
<article itemscope itemtype="http://schema.org/Article">
<header>
<h1 itemprop="headline">Заголовок статьи</h1>
<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
Рейтинг:
<span itemprop="ratingValue">4.5</span> из
<span itemprop="bestRating">5</span>
на основе
<span itemprop="ratingCount">10</span> оценок
</div>
</header>
<div itemprop="articleBody">
<!-- Текст статьи -->
</div>
</article>
<html>
<head>
<title>Название страницы</title>
<script type="application/ld+json">
{
"@context": "http://schema.org/",
"@type": "Product",
"name": "Название продукта",
"image": "https://example.com/product-image.jpg",
"description": "Описание продукта",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"bestRating": "5",
"ratingCount": "10"
},
"offers": {
"@type": "Offer",
"priceCurrency": "USD",
"price": "19.99",
"availability": "http://schema.org/InStock"
}
}
</script>
</head>
<body>
<!-- Содержимое страницы -->
</body>
</html>
<html>
<head>
<title>Название страницы</title>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "CreativeWork",
"name": "Название статьи",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"bestRating": "5",
"ratingCount": "10"
}
}
</script>
</head>
<body>
<!-- Содержимое страницы -->
</body>
</html>
пропорции 16:9
.whois-video {
aspect-ratio: 16 / 9;
}
<p>Советую <span style="color: red;">погуглить про семантику</span>, тэги отличаются не просто так, есть main, header, footer - так же с текстом, все нужно использовать по мере необходимости, сайт конечно же можно на div-ах написать но это будет "неправильно" для поисковых роботов</p>
<p>Разница в том, что <strong>span</strong> не несёт никакого семантического смысла, а <strong>p</strong> несёт и является параграфом.</p>
.fastSearch input {
width: 600px;
padding: 10px;
font-size: 20px;
/* border: none; */
border: 3px solid #0073C6;
border-radius: 20px 0px 0px 20px;
}
button.fastSearchButtonReset {
border-radius: 0px 20px 20px 0px;
}
.fastSearch {
display: flex;
width: 750px;
height: 60px;
margin: 0 auto;
margin-top: 10px;
/* border: 3px solid #0073C6; */
/* border-radius: 20px; */
overflow: hidden;
}
const boxScroll = document.querySelector('.box__list_scroll');
const boxImgs = document.querySelectorAll('.box__imgs > .box__img');
boxScroll.addEventListener('scroll', event => {
const sh = event.target.scrollHeight;
const h = event.target.offsetHeight;
const y = event.target.scrollTop;
const len = boxImgs.length;
const t = y / (sh - h);
const index = Math.floor((len - 1) * t);
boxImgs.forEach((img, i) => img.classList.toggle('__active', i === index));
});
json.sort(({ image: a }, { image: b }) => (!a && !b ? 0 : !a ? -1 : 1));
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Пример чтения и вывода текстового файла в HTML</title>
</head>
<body>
<div id="content"></div>
<script>
fetch('example.txt')
.then(response => response.text())
.then(text => {
const paragraphs = text.split('\n\n');
const contentElement = document.getElementById('content');
paragraphs.forEach(paragraph => {
const p = document.createElement('p');
p.textContent = paragraph;
contentElement.appendChild(p);
});
});
</script>
</body>
</html>
function Test() {
this.abc = 123;
this.obj = {
try: function() { console.log(this.abc) }
}
return this
}
const t = new Test();
const obj = t.obj.try;
obj.apply(t)