Все перечисленные ниже методы для выполнения sh были предоставлены Temani, я просто собрал их в одном месте, чтобы их было легче выбирать в зависимости от ваших потребностей.
Решение 1
Это решение воспроизводит эффект точно для Firefox, но может только приблизить эффект для Chrome и Edge, потому что они не поддерживают субпиксельные значения:
html {
height:100%;
/* fallback for Firefox */
background:
radial-gradient(#000 0.5px,transparent 0.5px) 0 0 /3px 3px,
radial-gradient(#000 0.5px,transparent 0.5px) 1px 1px /3px 3px,
radial-gradient(#000 0.5px,transparent 0.5px) 2px 2px /3px 3px,
url(https://i.picsum.photos/id/102/800/800.jpg) center/cover;
/*Chrome and the latest version of Edge*/
background:
conic-gradient(from -90deg at 1px 1px,#000 0 90deg,transparent 0) 0 0 /3px 3px,
conic-gradient(from -90deg at 1px 1px,#000 0 90deg,transparent 0) 1px 1px/3px 3px,
conic-gradient(from -90deg at 1px 1px,#000 0 90deg,transparent 0) 2px 2px/3px 3px,
url(https://i.picsum.photos/id/102/800/800.jpg) center/cover;
}
Это работает на все современные версии Firefox и Chrome, но только самая последняя версия Edge.
Обратите внимание, что самая последняя версия Edge (на основе Chromium и то, что Microsoft называет «новым Microsoft Edge») в настоящее время доступна только в качестве автономной программы установки, которая не имеет был активно выдвинут Microsoft. Поэтому маловероятно, что пользователи вашего сайта будут использовать эту версию Edge на этом этапе, даже если они на Windows 10 и обновлены.
Решение 2
Это точно такой же метод, который используется Bootstrap в pattern-mask-5
, и хотя он работает во всех современных браузерах, он требует использования изображения в дополнение к добавлению контейнер <div>
до разметки:
HTML:
<div class="bg-container">
</div>
CSS:
.bg-container {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: url(local/img.png); /* download the image here: https://i.ibb.co/C0MjrsJ/05.png and link to it */
}
Решение 3
Решение, опубликованное Temani здесь , безусловно, является самым чистым и наиболее кросс-браузерным решением этой проблемы.
html {
height:100%;
background:
url('data:image/svg+xml;utf8,<svg viewBox="0 0 3 3" xmlns="http://www.w3.org/2000/svg"><rect width="1" height="1" /></svg>') 0 0 /3px 3px,
url('data:image/svg+xml;utf8,<svg viewBox="0 0 3 3" xmlns="http://www.w3.org/2000/svg"><rect width="1" height="1" /></svg>') 1px 1px/3px 3px,
url('data:image/svg+xml;utf8,<svg viewBox="0 0 3 3" xmlns="http://www.w3.org/2000/svg"><rect width="1" height="1" /></svg>') 2px 2px/3px 3px,
url(https://i.picsum.photos/id/102/800/800.jpg) center/cover;
}
Он использует SVG и поэтому не требует внешних изображений и работает во всех современных браузерах.