рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА рдХрд┐ рдПрдиреАрдореЗрд╢рди рдХреЗ рд╡реЙрд▓реНрдпреВрдо рддрддреНрд╡реЛрдВ рдХреЛ рд╡реЗрдм рдкреЗрдЬ рд╕реЗ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП, рдФрд░ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рддреЛрдбрд╝рд╛ рдЬрд╛рдПред
рдпрджрд┐ рдЖрдк рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ Google рдкреЗрдЬ рд╕реНрдкреАрдб рдХреЗ рдкреНрд░рджрд░реНрд╢рди рд╕реЗ рдмрд╣реБрдд рдЪрд┐рдВрддрд┐рдд рд╣реИрдВ, рдФрд░ рдпрд╣ рд╣рд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдЬрд▓рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдирд╛ рдЬрд╛рд░реА рдирд╣реАрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЬреЛ рдмрдбрд╝реЗ рдЖрдХрд╛рд░ рд╕реЗ рдбрд░рддреЗ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЬреЛрдЦрд┐рдо рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдореИрдВ рдХрдЯреМрддреА рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВ;)
рд╡реНрдпрд╛рдкрд╛рд░ рдЪреБрдиреМрддреА
, .
, . .
, , :
тАФ gif . , тАж ?!
, , , , (gif 256 ), 19, .
, . APNG. png , IE11 . , (17) . . gif, .
- , !?
, mp4 . , , , .
mp4 , , , .
, .
, video.
.
<video class="bl_video" loop="" muted="" autoplay="" poster="poster.jpg">
<source src="topbanner.webm" type="video/webm">
<source src="topbanner.mp4" type="video/mp4; codecs="avc1.42E01E, mp4a.40.2"">
</video>
- , . :
animation-timing-function: steps(тАж)
, , .;
тАФ ( . ┬лsequence┬╗ (, )), - тАУ . , , .
, , .
, ( ).
тАУ , , gulp
gulp.spritesmith, Toptal, Chris Coyier .
. padding- 0, тАЬChoose filesтАЭ .
! ;! ., .
, , , . ( - , , ).
, .
> 5, .
png . (7,92)
, . ( TinyPNG Squoosh)
, gulp-imagemin тАУ
┬л , .┬╗
, , , .
, , . , , 25-40 .
1.2 , .
, , , - . CSS , . .
.toContactForm_leprechaun {
width: 220px;
height: 290px;
box-sizing: border-box;
background: url(../image/leprechaun-sprite.png) 0 50%;
animation: play 3276ms steps(91) infinite;
}
@keyframes play {
to {
background-position: -20020px;
}
}
, , .
1) width height (, width height).
2) тАФ Y.
3) . , .
* .
steps .
, , 30 тАУ 45 .
4) .
= (-1px)* *width .
* , . .
. .
, . , 100, .
body , DOM , .
, .
*, , Performance Google Lighthouse 80 20 .
5G , Neuralink - .
, 91 73. (5,17), , , Squoosh ( - <16300px)
, IE , Safari, ?
. webP
( 2,47 Squoosh , 1,67, , );
* window.navigator.userAgent, png , , .
, , .
рдмреЗрд╢рдХ, рдпрд╣ рддрддреНрд╡ рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рд╕рдЬрд╛рд╡рдЯреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрдВрдд рдХреЗ рдХрд░реАрдм рд░рдЦрддреЗ рд╣реИрдВред рдореИрдВ рдПрдХ рдмрдбрд╝реА рдЫрд╡рд┐ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рднрд╛рд╡ рднреА рдирд╣реАрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ред
рдЗрд╕ рдкреНрд░рднрд╛рд╡ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рд░реИрдкрд░ рдмреНрд▓реЙрдХ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░реЗрдВ: рдХреЛрдИ рдирд╣реАрдВ; рдФрд░ рдХреЗрд╡рд▓ рдЬрдм рдЫрд╡рд┐ рд▓реЛрдб рд╣реЛ рдЧрдИ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд┐рдЦрд╛рдПрдВред рдХреЛрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред
рдПрдЪрдЯреАрдПрдордПрд▓<div class="wrapper">
<div class="myAnimation"></div>
<p> !</p>
</div>
рд╕реАрдПрд╕рдПрд╕body {
margin: 0;
}
.wrapper {
display: none;
padding: 10px;
border: 1px solid #000;
}
.wrapper.active {
display: block;
}
.myAnimation {
display: inline-block;
width: 247px;
height: 187px;
background: url("https://gyazo.com/f5d013014306342a2241f8d3b8fb11ea.png") 50% 50% no-repeat;
}
p {
display: inline-block;
width: 150px;
vertical-align: top;
}
рдЬреЗ рдПрд╕awaitBgImgLoad();
function awaitBgImgLoad() {
var div = document.querySelector('.myAnimation');
var src = window.getComputedStyle(div).backgroundImage;
console.log(src);
src = src.replace(/url\(|\)|"/g,"")
loadAndRun(src, onload);
function onload() {
console.log(" !");
document.querySelector('.wrapper').style.display = "block";
}
}
function loadAndRun(src, resolve, reject) {
var img = new Image();
img.onload = resolve;
img.onerror = reject || function(){
console.log(" " + src)
};
img.src = src;
}
( , ), тА╣headтА║
<link rel="preload" href=" bigAnimationImg.webP" as="image" />
JS, :
<img class="animation-image" width="220" height="290" src="bigAnimationImg.webP" loading="eager" alt="animation"/>
.animation-image{
position:absolute;
top:0;
left:calc(-100%+1px);
}
рдХрд╣реАрдВ рд▓рдВрдЧрд░ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рдордиреЗ, рдореБрдЦреНрдп рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪрддрд░ред, тАЬтАЭ src, background-image . ( img , background-image)
* , , .
Netgame Entertainment .
Netgame Entertainment , .
OPTIMUS PRIME .
web .