Pixi.js: рдХреИрдирд╡рд╛рд╕ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рддреЗ рд╕рдордп, рдПрдХ рд╕рдлреЗрдж рдкреГрд╖реНрдарднреВрдорд┐ рдЯрд┐рдордЯрд┐рдорд╛рддреА рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рджрд┐рд╕ре░ 2016  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pixijs/pixi.js

рдореИрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХреИрдирд╡рд╛рд╕ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рддрд╛ рд╣реВрдВ, рдЬреИрд╕реЗ:

function resizeCanvas(width, height) {
    game.canvas.width = width;
    game.canvas.height = height;
    game.canvas.style.width = width / game.resolution + 'px';
    game.canvas.style.height = height / game.resolution + 'px';
}

рдФрд░ рдЬрдм рдЧреЗрдо рдмреВрдЯрдЕрдк рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рддрд╛ рд╣реВрдВ:

game.renderer = new PIXI.WebGLRenderer(
    game.canvas.width,
    game.canvas.height,
    {
         view: game.canvas,
         backgroundColor: 0x000000,
     }
);

// recompute viewport size & canvas size with  browser window size 
game.scaler.update();  

// resize  renderer with new size.
game.renderer.resize(game.viewportWidth, game.viewportHeight);

рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдорд╛рдорд▓рд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: рдПрдХ рдЫреЛрдЯреА рдкреАрдПрдирдЬреА рдЫрд╡рд┐ рдмрдирд╛рдПрдВред

рдмреНрд░рд╛рдЙрдЬрд╝рд░: macOS 10.12 . рдХреЗ рд▓рд┐рдП рдХреНрд░реЛрдо 55

рд╕рдлрд╛рд░реА рдареАрдХ рд╣реИред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рдпрд╣ рдХреНрд░реЛрдо рдХрд╛ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдХ рддрд░реАрдХрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж

ЁЯТ╛ v4.x (Legacy)

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдУ рдзрдиреНрдпрд╡рд╛рдж! @mickdekkers рдпрд╣ рдХрдорд╛рд▓ рд╣реИ, рдХреЙрд▓рд┐рдВрдЧ рд░реЗрдВрдбрд░ рддреБрд░рдВрдд рдЗрд╕реЗ ResizeObserver рдХреЙрд▓рдмреИрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рднреА 7 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдЗрд╕ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

    game.renderer.resize(game.viewportWidth - 1, game.viewportHeight);
    setTimeout(function() {
        game.renderer.resize(game.viewportWidth, game.viewportHeight);
    }, 1);

рдпрд╣ рдмрд╣реБрдд рдмрджрд╕реВрд░рдд рд╣реИ я╝М рдореБрдЭреЗ рдЗрд╕рд╕реЗ рдмреЗрд╣рддрд░ рд╕реБрдЭрд╛рд╡ рдХреМрди рджреЗ рд╕рдХрддрд╛ рд╣реИ

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреНрд░реЛрдо рдЯреАрдо рдХреЛ рдХрд░реЗрдВред
рдХреМрди рдХрд░ рд╕рдХрддрд╛ рдерд╛? рдЗрд╕ рдмрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдЕрдВрдЧреНрд░реЗрдЬреА рдмрд╣реБрдд рдХрдордЬреЛрд░ рд╣реИуАВ

рдирдпрд╛ рдХреНрд░реЛрдо рдирд╣реАрдВ рдпрд╣ рдореБрджреНрджрд╛ред

рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдбреЗрд╕реНрдХрдЯреЙрдк рд╕рдлрд╛рд░реА (рдирд╡реАрдирддрдо) рдФрд░ рдПрдЬ рдкрд░ рд╣реЛрддрд╛ рд╣реИред рдкрд┐рдХреНрд╕реА рд╡реА4.3.0ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЫрджреНрдо рдХреЛрдб рдореЗрдВ, рд╣рдо рдХреБрдЫ рдРрд╕рд╛ рдХрд░ рд░рд╣реЗ рдереЗ:

handleWindowDimensionChange(function() {
renderer.resize(window.innerWidth, window.innerHeight)
});

рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдирд╛ рджреЛрдиреЛрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдмрджрд╕реВрд░рдд рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдХреНрд░реЛрдо рдпрд╛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдирд╣реАрдВред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдкрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдореБрдЭреЗ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ (рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореВрд▓ рд░реВрдк рд╕реЗ, рдХреНрд░реЛрдорд┐рдпрдо 56, 58 рдФрд░ 59) рдФрд░ рдкрд┐рдХреНрд╕реА 4.5.5 (рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛) рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдЪрд┐рддреНрд░ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ:

рдореИрдВ рдбреЛрдо рдореЗрдВ рдПрдХ рдХрдВрдЯреЗрдирд░ рддрддреНрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд░реЗрдВрдбрд░рд░ (рд╡реЗрдмрдЬреАрдПрд▓) рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рд░рд╣рд╛ рд╣реВрдВ: рдпрджрд┐ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд╛рдЧреВ рдПрдХ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдпреЛрдЧреНрдп рд╡рд┐рдЬреЗрдЯ рджреНрд╡рд╛рд░рд╛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдХрдВрдЯреЗрдирд░ рддрддреНрд╡ рдЖрдХрд╛рд░ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдЕрдм, рдЕрдЧрд░ рдореИрдВ рд╡рд┐рдВрдбреЛ рдХреЗ resize рдФрд░ рд╡рд┐рдЬреЗрдЯ рдХреЗ рдХрд╕реНрдЯрдо resize рд╣реИрдВрдбрд▓рд░ ( mousemove рдИрд╡реЗрдВрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдореЗрдВ рд░реЗрдВрдбрд░рд░ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рддрд╛ рд╣реВрдВ, рддреЛ рд╕рдм рдареАрдХ рд╣реИ , рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдирдП ResizeObserver рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ

рдЕрд╡рд▓реЛрдХрди рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ:

  • рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ рдкреВрд░реЗ рдХреИрдирд╡рд╛рд╕ рдХреЗ рд╕рд╛рдл рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреА рд╣реИ (рдЬреИрд╕реЗ рдУрдкреА рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╕рдлреЗрдж рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдкрд╛рд░рджрд░реНрд╢реА рд╣реИ): рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬрдм рдореИрдВ рджреЗрд╡-рдЙрдкрдХрд░рдг рдореЗрдВ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХрд░рддрд╛ рд╣реВрдВ: рдХреИрдирд╡рд╛рд╕ рд▓рдЧрднрдЧ рдЦрд╛рд▓реА рд╣реИ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди 100msред
  • рдореИрдВрдиреЗ рдорд╛рдирд╛ рдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░рджрд░реНрд╢рди/рд╕рдордп рдХрд╛ рдореБрджреНрджрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ ResizeObserver рдЕрдзрд┐рдХ рдмрд╛рд░ рдЖрдЧ рд▓рдЧрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ: рдореБрдЭреЗ рджреЛрдиреЛрдВ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рддреБрд▓рдиреАрдп рдЖрд╡реГрддреНрддрд┐ рдорд┐рд▓рддреА рд╣реИред
  • рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рд╕реНрд╡рдпрдВ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЙрд▓ рдХреА рдЖрд╡реГрддреНрддрд┐ renderer.resize рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдорд╛рди рд╣реИ; рдпрд╣ рднреА рдХреЙрд▓ рдХрд┐рд╕реА рднреА рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рджреЗрд░реА рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдордп рдХреЛ рджреЛрд╖ рджреЗрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред
  • рдореЗрд░рд╛ рдЕрдЧрд▓рд╛ рдЕрдиреБрдорд╛рди рдпрд╣ рдерд╛ рдХрд┐ ResizeObserver рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рдорд╛рди рднрд┐рдиреНрди рд╣реИрдВ; рдпрд╣ рдХрдВрдЯреЗрдирд░ рдХреЗ рдХрдВрдЯреЗрдВрдЯ рдмреЙрдХреНрд╕ рдХреЛ рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдирд╣реАрдВ рдмрддрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдмреЙрд░реНрдбрд░ рдпрд╛ рдкреИрдбрд┐рдВрдЧ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдорд╛рди рд╕рдорд╛рди рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рджреЛрдиреЛрдВ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЖрдпрд╛рдореЛрдВ рдХреЛ рдкреВрд░реНрдг рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ рдЧреЛрд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рджреЛрдиреЛрдВ рдЖрдпрд╛рдореЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЖрд╡реГрддреНрддрд┐ рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИрдВред
  • рдЕрдЧрд░ рдореИрдВ рдереНрд░реЙрдЯрд▓ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рд▓рдЧрднрдЧ 500ms рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рддрдХ рдмрдврд╝рд╛ рджреВрдВ рддреЛ рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИ
  • рд╡рд┐рдВрдбреЛ/рд╡рд┐рдЬреЗрдЯ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореБрдЭреЗ getBoundingClientRect() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рдорд╛рдкрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЗрд╕ рдХреЙрд▓ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП (рдлрд┐рд░ рд╕реЗ рдкреЗрдВрдЯ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг) рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ResizeObserver рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдХрд╛рд░рдг рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░рдВрдЧ рдХреА рдХрдореА рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ рдкреИрджрд╛ рдХрд░ рд╕рдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ getBoundingClientRect() рдПрдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЙрд▓ рдЬреЛрдбрд╝рд╛, рд▓реЗрдХрд┐рди рдХреЛрдИ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реБрдЖред

рдореИрдВ рдмрд╣реБрдд рдЪрд┐рдВрддрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рд╣реИ ( ResizeObserver рдмрдЬрд╛рдп рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИред рдореИрдВрдиреЗ autoResize рдФрд░ antialias рднреА рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рд╛ред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдореИрдВ рдФрд░ рдХреНрдпрд╛ рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рдерд╛?

@inukshuk рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╛рдзрд╛рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░рд▓ рд╣реЛ рдЧрдпрд╛: рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдмрд╕ render рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВред

app.renderer.resize(width, height)
// Immediately render because resizing clears the canvas
app.render()

рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ред рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдирд┐рдореЗрд╢рди рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдкрдХреЗ рдЕрдЧрд▓реЗ рдЕрдкрдбреЗрдЯ рд▓реВрдк рддрдХ рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдлреНрд░реЗрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдпрд╣ "рдлреНрд░реАрдЬрд┐рдВрдЧ" рдкреНрд░рднрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд░реЗрдВрдбрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдЕрдкрдбреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред

рдУ рдзрдиреНрдпрд╡рд╛рдж! @mickdekkers рдпрд╣ рдХрдорд╛рд▓ рд╣реИ, рдХреЙрд▓рд┐рдВрдЧ рд░реЗрдВрдбрд░ рддреБрд░рдВрдд рдЗрд╕реЗ ResizeObserver рдХреЙрд▓рдмреИрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдереНрд░реЗрдб рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдХреГрдкрдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕