رابط مرساة للرسوم المتحركة

صورة كبيرة بتنسيق HTML

ستناقش المقالة كيفية ربط عناصر حجم الرسوم المتحركة بصفحة ويب ، وليس كسر كل شيء دفعة واحدة.


إذا كنت قلقًا للغاية بشأن أداء Google Page Speed ​​في تطوير المواقع ، وهو يحترق مقابل كل كيلوبايت إضافي ، فلا يجب عليك الاستمرار في قراءة هذه المقالة.


أولئك الذين لا يخافون من الحجم الكبير ، ويحبون الخطر ، أطلب قطع ؛)


التحدي الأعمال


, .
, . .


, , :


  1. gif . , … ?!


    , , , , (gif 256 ), 19, .

  2. , . APNG. png , IE11 . , (17) . . gif, .

  3. , !?
    , 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> 
    

  4. , . :
    animation-timing-function: steps(…)
    , , .;

( . «sequence» (, )), - – . , , .


, , .




, ( ).


– , , gulp

gulp.spritesmith

, Toptal, Chris Coyier .


. padding- 0, “Choose files” .

! ;
! .

, .


Css sprites مولد

, , , . ( - , , ).


, .
> 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>

CSS
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); //     `url("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


Netgame Entertainment , .

OPTIMUS PRIME .



web .

All Articles