Chrome рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рддреНрд╡рд░рдг

рдкрд░рд┐рдЪрдп


рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП, рд╡реЗрдм рдкреЗрдЬ рдХрд╛ рдореВрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ DOM рд╣реИред рдЬрдмрдХрд┐ рд╕реНрдХреНрд░реАрди рдкрд░ рдЗрд╕ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рдПрдХ рдЫрд╡рд┐ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдмрд╛рдж рдореЗрдВ рд░реЗрдВрдбрд░рд┐рдВрдЧ) рдЕрдХреНрд╕рд░ рдЧрд▓рддрдлрд╣рдореА рдХреЗ рдШреВрдВрдШрдЯ рдореЗрдВ рдврдВрдХ рдЬрд╛рддреА рд╣реИред рд╣рд╛рд▓ рдХреЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ GPU рдХреЗ рдХрдВрдзреЛрдВ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ: рдЬрд┐рд╕реЗ "рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рддреНрд╡рд░рдг" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо Canvas2D рдФрд░ WebGL рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдирд┐рдпрдорд┐рдд рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рддрд┐рдкрд╛рджрди рджреЗрдЦреЗрдВрдЧреЗред рдпрд╣ рдЖрд▓реЗрдЦ Chrome рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╡реЗрдм рд╕рд╛рдордЧреНрд░реА рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛рддреЗ рд╕рдордп рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рддреНрд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдореВрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред


рдЪреЗрддрд╛рд╡рдиреА

рдпрд╣рд╛рдВ рд╣рдо рдХреЗрд╡рд▓ WebKit рдЗрдВрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдХреНрд░реЛрдорд┐рдпрдо рдореЗрдВ рдЗрд╕рдХреЗ рдХрд╛рдВрдЯреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛрдВрдЧреЗред рдпрд╣ рдЖрд▓реЗрдЦ рдХреНрд░реЛрдо рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдорд╛рдирдХреЛрдВ рдореЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХреБрдЫ рднреА рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрди рд╕реВрдХреНрд╖реНрдорддрд╛рдУрдВ рдХреЛ рдЬрд╛рдирдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдареАрдХ-рдард╛рдХ рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдХреНрд░реЛрдо рдореЗрдВ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЗрдВрдЬрди рддреЗрдЬреА рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИред рдФрд░ рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рд╕рдм рдХреБрдЫ рдЫрд╣ рдорд╣реАрдиреЗ рдореЗрдВ рд╕рдЪ рд╣реЛрдЧрд╛ред

рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдлрд┐рд▓рд╣рд╛рд▓ рдХреНрд░реЛрдо рджреЛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рддрдВрддреНрд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рдкреБрд░рд╛рдирд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ред рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рд╕рднреА рдкреГрд╖реНрдареЛрдВ рдХреЛ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдХреНрд░реЛрдо, рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдХреНрд░реЛрдо рдФрд░ рдХреНрд░реЛрдо рдореЗрдВ рддреНрд╡рд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред MacOS рдФрд░ Linux рдкрд░, рдХреЗрд╡рд▓ рдХрдВрдкреЛрдЬрд┐рд╢рди рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ рд╡рд╛рд▓реЗ рдкреЗрдЬ рдЗрд╕ рдореЛрдб рдореЗрдВ рдЖрддреЗ рд╣реИрдВ (рд╣рдо рдиреАрдЪреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ), рд▓реЗрдХрд┐рди рд╡реЗ рдЗрд╕реЗ рдмрд╣реБрдд рдЬрд▓реНрдж рдареАрдХ рдХрд░ рджреЗрдВрдЧреЗред

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

DOM рд╕реЗ рд╕реНрдХреНрд░реАрди рддрдХ рдХрд╛ рд░рд╛рд╕реНрддрд╛


рдкрд░рддреЗрдВ рдЕрд╡рдзрд╛рд░рдгрд╛

рдЬрдм рдкреГрд╖реНрда рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓реЛрдб рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рд░ рдХреЛрдИ DOM рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдкреГрд╖реНрда рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реАрдзреЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рджреБрд░реНрдЧрдо рд░реВрдкрд╛рдВрддрд░реЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддреА рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рдд рд╣реИред

Chrome рдореЗрдВ рдкрд░рддреЗрдВ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреА рд╣реЛрддреА рд╣реИрдВ: RenderLayers, рдЬрд┐рд╕рдореЗрдВ DOM рдЙрдкрдкреНрд░рдХрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ GraphicsLayers, рдЬрд┐рдирдореЗрдВ рдкрд┐рдЫрд▓реЗ рдЙрдкрдкреНрд░рдХрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВред рдЕрдм рдмрд╛рдж рд╡рд╛рд▓реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЧреНрд░рд╛рдлрд┐рдХ рд▓реЗрдпрд░реНрд╕ рд╡рд╣реА рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ GPU рдкрд░ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЬрд╣рд╛рдВ рднреА "рд▓реЗрдпрд░" рд╢рдмреНрдж рд╣реЛрддрд╛ рд╣реИ, рдореЗрд░рд╛ рдорддрд▓рдм рдЧреНрд░рд╛рдлрд┐рдХ рд▓реЗрдпрд░ рд╣реИред

рдЪрд▓реЛ GPU рд╢рдмреНрджрд╛рд╡рд▓реА рдкрд░ рдереЛрдбрд╝рд╛ рдЦреБрджрд╛рдИ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдмрдирд╛рд╡рдЯ рдХреНрдпрд╛ рд╣реИ?
рдЗрд╕реЗ рдЧреНрд░рд╛рдлрд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ (рдмрд┐рдЯрдореИрдк) рдХреЗ рдмрд┐рдЯрдореИрдк рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪреЗрдВ, рдЬрд┐рд╕реЗ рдореБрдЦреНрдп рдореЗрдореЛрд░реА (рд░реИрдо) рд╕реЗ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдкреНрд░реЛрд╕реЗрд╕рд░ (рд╡реАрдЖрд░рдПрдПрдо) рдХреА рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдХреЛрдИ рдмрдирд╛рд╡рдЯ GPU рдХреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рдкрдбрд╝рддреА рд╣реИ, рддреЛ рд╡рд╣ рдЗрд╕реЗ рдПрдХ рдмрд╣реБрднреБрдЬ рдЬрд╛рд▓ рдкрд░ рдЦреАрдВрдЪ рд╕рдХрддрд╛ рд╣реИ - рд╡реАрдбрд┐рдпреЛ рдЧреЗрдо рдореЗрдВ, рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рддреНрд░рд┐-рдЖрдпрд╛рдореА рд╡рд╕реНрддреБрдУрдВ рдкрд░ "рддреНрд╡рдЪрд╛" рдХреЛ рдлреИрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Chrome, рдкреГрд╖реНрда рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрдВрд╢реЛрдВ рдХреЛ GPU рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рд╡рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдмрд╛рдж рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд░реНрдЧ рдЧреНрд░рд┐рдб рдкрд░ рдУрд╡рд░рд▓реЗ рдХрд░ рд╕рдХреЗ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЛрдИ рддреНрд░рд┐-рдЖрдпрд╛рдореА рд░реВрдкрд╛рдВрддрд░рдг рдХрд░ рд╕рдХреЗред рдпрд╣ рд╣реИ рдХрд┐ 3D рд╕реАрдПрд╕рдПрд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдкреЗрдЬ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рднреА рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЪреАрдЬреЗрдВред

рдЖрдЗрдП рдкрд░рддреЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред

Chrome рдореЗрдВ рдкрд░рддреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдЙрдкрдХрд░рдг рд╣реИ - рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓рдмрд╛рд░ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд┐рдВрдбреЛ рдХреЗ "рд░реЗрдВрдбрд░рд┐рдВрдЧ" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд┐рдХрд▓реНрдк "рдХрдВрдкреЛрдЬрд╝рд┐рдЯреЗрдб рд▓реЗрдпрд░ рдмреЙрд░реНрдбрд░реНрд╕ рджрд┐рдЦрд╛рдПрдВ"ред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдмрд╕ рдирд╛рд░рдВрдЧреА рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд░рддреЛрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИред рдЪрд▓реЛ рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп рдХреНрд░реЛрдо рдХреИрдирд░реА, рдХреНрд░реЛрдо 27 рдореЗрдВ рд▓рд┐рдП рдЧрдП рдереЗред

рдЙрджрд╛рд╣рд░рдг 1: рд╕рд┐рдВрдЧрд▓ рд▓реЗрдпрд░ рдкреЗрдЬ

<html> <body> <div>I am a strange root.</div> </body> </html> 


рдЫрд╡рд┐

рдЗрд╕ рдкреГрд╖реНрда рдореЗрдВ рдПрдХ рдкрд░рдд рд╣реИред рдиреАрд▓реА рдЧреНрд░рд┐рдб рдЯрд╛рдЗрд▓реНрд╕ рдХреА рд╕реАрдорд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИ - рдкрд░рдд рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдЬреЛ рдХреНрд░реЛрдо рдПрдХ рдмрдбрд╝реА рдкрд░рдд рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ GPU рдкрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЕрдм рд╡реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рд░реБрдЪрд┐ рдХреЗ рдирд╣реАрдВ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг 2 : рдЕрдкрдиреА рдЦреБрдж рдХреА рдкрд░рдд рдореЗрдВ рдПрдХ рддрддреНрд╡

 <html> <body> <div style="-webkit-transform: rotateY(30deg) rotateX(-30deg); width: 200px;"> I am a strange root. </div> </body> </html> 


рдЫрд╡рд┐

3D рд╕реАрдПрд╕рдПрд╕ рдЧреБрдг рдХреЛ рдЙрд╕ рддрддреНрд╡ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдХреЗ рдЬреЛ рдЗрд╕реЗ рдШреБрдорд╛рддрд╛ рд╣реИ, рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХреА рдЕрдкрдиреА рдкрд░рдд рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рд╣реИ: рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рдЗрд╕реЗ рд▓рдкреЗрдЯрдиреЗ рд╡рд╛рд▓реЗ рдирд╛рд░рдВрдЧреА рдлреНрд░реЗрдо рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред (рдпрд╣ рджреВрд╕рд░реЛрдВ рдХреА рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рдд рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)

рд▓реЗрдпрд░рд┐рдВрдЧ рдХреА рд╕реНрдерд┐рддрд┐

рдХреНрдпрд╛ рдЕрдиреНрдп рддрддреНрд╡ рдЖрдкрдХреА рдЦреБрдж рдХреА рдкрд░рдд рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдХреНрд░реЛрдо рдХрд╛ рдЕрдиреБрдорд╛рдиреА рд╡рд┐рдХрд╛рд╕ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕реНрдерд┐рддрд┐ рдПрдХ рдкрд░рдд рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИ:


рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ: рдПрдиреАрдореЗрд╢рди

рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕реАрдПрд╕рдПрд╕ рд░реВрдкрд╛рдВрддрд░рд┐рдд рд╣реЛрдиреЗ рд╕реЗ, рдПрдХ рддрддреНрд╡ рдЕрдкрдиреА рд╣реА рдкрд░рдд рдореЗрдВ рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рдкрд░рддреЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг 3 : рдПрдирд┐рдореЗрдЯреЗрдб рдкрд░рддреЗрдВ

 <html> <head> <style type="text/css"> div { -webkit-animation-duration: 5s; -webkit-animation-name: slide; -webkit-animation-iteration-count: infinite; -webkit-animation-direction: alternate; width: 200px; height: 200px; margin: 100px; background-color: gray; } @-webkit-keyframes slide { from { -webkit-transform: rotate(0deg); } to { -webkit-transform: rotate(120deg); } } </style> </head> <body> <div>I am a strange root.</div> </body> </html> 


рд╕рд░рд▓рддрдо рдорд╛рдорд▓реЗ рдореЗрдВ, Chrome рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдкрд░рдд рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрдирд╛рд╡рдЯ рдХреЗ рд░реВрдк рдореЗрдВ GPU рдкрд░ рднреЗрдЬрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рд╕рд╛рдордЧреНрд░реА рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ: рдкреБрдирд░реНрд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ред рдФрд░ рдЕрдЧрд░ рд░рд┐рд╡рд░рд┐рдВрдЧ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдлреНрд░реЗрдо рджрд░ рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдФрд░ рдПрдиреАрдореЗрд╢рди рдореЗрдВ рджреЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╖реНрдЯрдкреНрд░рдж рджреЛрд╖ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкреИрдирд▓ рдХреЗ рд╕рдордп рдкрд░ рдХреЛрдИ рдкреБрдирд░реНрд╡рд┐рдХрд╛рд╕ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЬрдмрдХрд┐ рдкрд░рдд рдШреВрдорддреА рд╣реИ рдФрд░ рдЬрдо рдЬрд╛рддреА рд╣реИред

рдЫрд╡рд┐

рдЪреЗрддрд╛рд╡рдиреА! repainting

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдкрд░рдд рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕рдХреЗ рдкреБрдирд░реНрд╡рд┐рддрд░рдг рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг 4 : рдкрд░рддреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛

 <html> <head> <style type="text/css"> div { -webkit-animation-duration: 5s; -webkit-animation-name: slide; -webkit-animation-iteration-count: infinite; -webkit-animation-direction: alternate; width: 200px; height: 200px; margin: 100px; background-color: gray; } @-webkit-keyframes slide { from { -webkit-transform: rotate(0deg); } to { -webkit-transform: rotate(120deg); } } </style> </head> <body> <div id="foo">I am a strange root.</div> <input id="paint" type="button" onclick="" value=тАЭrepaintтАЭ> <script> var w = 200; document.getElementById('paint').onclick = function() { document.getElementById('foo').style.width = (w++) + 'px'; } </script> </body> </html> 


рд╣рд░ рдмрд╛рд░ рдЬрдм рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдШреВрдордиреЗ рд╡рд╛рд▓рд╛ рддрддреНрд╡ рдЪреМрдбрд╝рд╛рдИ рдореЗрдВ рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдЗрд╕рд╕реЗ рдкреВрд░реЗ рддрддреНрд╡ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдкрд░рдд рдореЗрдВ рд╣реИред

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

рдЫрд╡рд┐

Redraw рдЗрд╡реЗрдВрдЯ рдХреЛ рдЯрд╛рдЗрдорд▓рд╛рдЗрди рдкрд░ рднреА рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЧрд╣рд░реА рдирдЬрд░ рд░реЗрдбрд╡ рдЗрд╡реЗрдВрдЯреНрд╕ рдХреЗ рджреЛрд╣рд░рд╛рд╡ рдкрд░ рдзреНрдпрд╛рди рджреЗрдЧреА: рдПрдХ рдкрд░рдд рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рдмрдЯрди рд╕реНрдЯреЗрдЯ рдХреЗ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред

рдЫрд╡рд┐

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ Chrome рд╣рдореЗрд╢рд╛ рдкрд░рдд рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдЪрдпрдирд╛рддреНрдордХ рд╣реЛрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рдд рдХреЗ рдХреЗрд╡рд▓ рдЙрди рдЯреБрдХрдбрд╝реЛрдВ (рдиреАрд▓реА рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдмрд╣реБрдд рд╣реА рдЯрд╛рдЗрд▓реЗрдВ) рдХреЛ рд░реАрдбреНрд░рд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдбреЛрдо рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдЖ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреВрд░реА рдкрд░рдд рдкреНрд░рддрд┐ рдХреЗрд╡рд▓ рдПрдХ рддрддреНрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдкреНрд░рддрд┐ рдкрд░рдд рдмрд╣реБрдд рдЕрдзрд┐рдХ рддрддреНрд╡ рд╣реИрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рднреАрдЦ рдорд╛рдБрдЧрддрд╛ рд╣реИ: рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ рдХрд┐ DOM рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрддрд╛рддрд╛ рд╣реИ? рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдбреЛрдо рдЕрдорд╛рдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рд╕реАрдПрд╕рдПрд╕ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рдХрд░ рдФрд░ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рджреГрд╢реНрдпрдорд╛рди рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдХреЗ рдбреЛрдо рдХрд╛ рдЦрд░рд╛рдм рд╣реЛрдирд╛ рд╣реИред рдЯреЛрдиреА рдЬреЗрдВрдЯрд┐рд▓реНрдХреЛрд░ рдиреЗ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдмреНрд▓реЙрдЧ рдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛, рд╕реНрдЯреЙрдпрди рд╕реНрдЯреЙрдпрдиреЛрдлрд╝ рдиреЗ рднреА рдПрдХ рдмрд╣реБрдд рд╡рд┐рд╕реНрддреГрдд рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдирдИ рдЪреАрдЬ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд┐рдирд╛ рдлрд┐рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рддрдХ рд╕реАрдорд┐рдд рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рд╡реАрдбрд┐рдпреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рдЪрдирд╛ред

рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛: рд╕реНрдХреНрд░реАрди рдкрд░ DOM


рддреЛ рдХреНрд░реЛрдо рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдЫрд╡рд┐ рдореЗрдВ рдбреЛрдо рдХреЛ рдХреИрд╕реЗ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИ? рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдгреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
  1. рдЙрдкрд░реЛрдХреНрдд рдорд╛рдирджрдВрдбреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП, DOM рдХреЛ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд▓реЗрдпрд░реНрд╕ рдореЗрдВ рддреЛрдбрд╝рддрд╛ рд╣реИ
  2. рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рдд рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЦреАрдВрдЪрддрд╛ рд╣реИ
  3. рдЙрдирдХреЗ GPU рдХреЛ рдмрдирд╛рд╡рдЯ рдХреЗ рд░реВрдк рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИ
  4. рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдкрд░, рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рдореЗрдВ рд╕рднреА рдкрд░рддреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ


рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкреГрд╖реНрда рдХрд╛ рдкрд╣рд▓рд╛ рдлреНрд░реЗрдо рдЦреАрдВрдЪрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдЕрдЧрд▓реЗ рдлреНрд░реЗрдо рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рдУрд╡рд░рд╣реЗрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ:


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

рд╡рд╣ рд╕рдм рд╣реИ!

Source: https://habr.com/ru/post/In202358/


All Articles