рд╕реАрдПрд╕рдПрд╕ рдкреЗрдВрдЯ рдПрдкреАрдЖрдИ

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



CSS Paint API рдХреНрдпрд╛ рд╣реИ?


рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рдПрдкреАрдЖрдИ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдирдП рд╕реЗрдЯ рдХрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реАрдПрд╕рдПрд╕ рд╣реБрдбрд┐рдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЙрдмрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЖрдВрддрд░рд┐рдХ рд╕реАрдПрд╕рдПрд╕ рддрдВрддреНрд░реЛрдВ рдореЗрдВ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рд╕реАрдПрд╕рдПрд╕ рдкреЗрдВрдЯ рдПрдкреАрдЖрдИ рдЖрдкрдХреЛ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ paint() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ, рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдЬреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдЫрд╡рд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг background-image рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЖрдк рд╕рд┐рд╕реНрдЯрдо url() рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд▓рд┐рдВрдХ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП url() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 area { background-image: url('assets/myimage.jpg'); } 

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

рд╕реАрдПрд╕рдПрд╕ рдкреЗрдВрдЯ рдПрдкреАрдЖрдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ


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

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

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

рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рд╕рдм CSS Houdini рдХреЗ рд░реВрдк рдореЗрдВ рдЬреНрдЮрд╛рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдПрдХ рдмрдбрд╝реЗ рд╕рдореВрд╣ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдпрд╣рд╛рдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ: "CSS-TAG Houdini рдЯрд╛рд╕реНрдХ рдлреЛрд░реНрд╕ (CSS Houdini) рдХрд╛ рд▓рдХреНрд╖реНрдп рд╕рдВрдпреБрдХреНрдд рд░реВрдк рд╕реЗ рдРрд╕реЗ рддрдВрддреНрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬреЛ рд╡реЗрдм рдкреЗрдЬреЛрдВ рдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рд▓реЗрдЖрдЙрдЯ рдмрдирд╛рдиреЗ рдХреА рддрдХрдиреАрдХ рд╕реЗ рд░рд╣рд╕реНрдп рдХреЛ рддреЛрдбрд╝рддреЗ рд╣реИрдВред"

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

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

рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реАрдПрд╕рдПрд╕ рдкреЗрдВрдЯ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди


рдХреНрдпрд╛ рдореИрдВ рдЖрдЬ рд╕реАрдПрд╕рдПрд╕ рдкреЗрдВрдЯ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рд╣рдо рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЙрддреНрддрд░ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ API рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк caniuse.com рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реАрдПрд╕рдПрд╕ рдкреЗрдВрдЯ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди (рдЬреБрд▓рд╛рдИ 2018)

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

рдЪрд░рдг # 1: рд╕реАрдПрд╕рдПрд╕


рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╕реАрдПрд╕рдПрд╕ рдкреЗрдВрдЯ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЬреЗрдЯ рдЬреЗрдПрд╕ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╡рд░реНрдХрд▓реЗрдЯ рдХреЛ рдПрдХ рдирд╛рдо рджреЗрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред awesomePattern рдЗрд╕реЗ awesomePattern рдХрд╣рддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕реАрдПрд╕рдПрд╕ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 section { background-image: url('fallback.png'); background-image: paint(awesomePattern); }; 

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

рдЪрд░рдг # 2: рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ


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

 CSS.paintWorklet.addModule('patternWorklet.js'); 

рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдлрд┐рд░ рд╕реЗ, рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ patternWorklet.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИред

patternWorklet.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ patternWorklet.js рд╣рдореЗрдВ patternWorklet.js рдХреЗ рд╡рд░реНрдЧ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 registerPaint('awesomePattern', Shape); 

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

рдЕрдЧрд▓рд╛, рд╣рдо ECMAScript 2015 рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╡рд░реНрдЧ рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдЧрд╛ред рдЪреВрдВрдХрд┐ рдпрд╣ рд╡рд░реНрдЧ рдЕрдм рд╢реНрд░рдорд┐рдХ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рддрдВрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕рдореЗрдВ рд╕реНрд╡рддрдГ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗред

 class Shape { paint(ctx, geom, properties) {   ctx.strokeStyle = 'white';   ctx.lineWidth = 4;   ctx.beginPath();   ctx.arc( 200, 200, 50, 0, 2*Math.PI);   ctx.stroke();   ctx.closePath(); } } 

paint() рдХреЙрд▓рдмреИрдХ рдореЗрдВ ctx , geom рдФрд░ properties рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВред ctx рдкреИрд░рд╛рдореАрдЯрд░ 2D рдкреНрд░рддрд┐рдкрд╛рджрди рд╕рдВрджрд░реНрдн рдХреЗ рд╕рдорд╛рди рд╣реИ рдЬрд┐рд╕реЗ <canvas> рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ <canvas> ред рдЦреИрд░, рдпрд╣ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ <canvas> рдЖрдкрдХреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реАрдПрд╕рдПрд╕ рдкреЗрдВрдЯ рдПрдкреАрдЖрдИ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдорддрднреЗрджреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, ctx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЙрд╕реА рдЧреНрд░рд╛рдлрд┐рдХ рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ <canvas> рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, arc() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдПрдХ рд╕рд░реНрдХрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред

arc() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рджрд┐рдП рдЧрдП рдкрд╣рд▓реЗ рджреЛ рдорд╛рди рддрддреНрд╡ рдХреЗ рдКрдкрд░реА рдмрд╛рдПрдБ рдХреЛрдиреЗ рдореЗрдВ рд╕реНрдерд┐рдд рдореВрд▓ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖, рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ, рд╕рд░реНрдХрд▓ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рдПрдХреНрд╕ рдФрд░ рд╡рд╛рдИ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рд░реНрдХрд▓ рддрддреНрд╡ рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рд╣реЛред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, geom рдкреИрд░рд╛рдореАрдЯрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрд╣ PaintSize рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдЫрд╡рд┐ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЗрд╕рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо width рдФрд░ height рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣реА рд╡рд╣ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рд╕рд░реНрдХрд▓ рдХреЛ рдХреЗрдВрджреНрд░ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рдЗрд╕ рдХреЛрдб рдкрд░ рдЖрддреЗ рд╣реИрдВ:

 class Shape { paint(ctx, geom, properties) {     let x = geom.width/2;   let y = geom.height/2;   ctx.strokeStyle = 'white';   ctx.lineWidth = 4;   ctx.beginPath();   ctx.arc(x, y, 50, 0, 2*Math.PI);   ctx.stroke();   ctx.closePath();   } } registerPaint('awesomePattern', Shape); 

рдЖрдк CodePen рдкрд░ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдЦреНрддреА рд╕реЗ, рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдпрд╣ рдХреЛрдб рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред


рд╕реАрдПрд╕рдПрд╕ рдкреЗрдВрдЯ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╕рд░реНрдХрд▓

рдпрд╣ рд╕рдм рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдЖрдЗрдП, рд╕рд╛рдорд╛рдиреНрдп рд╕рд░реНрдХрд▓ рдХреЗ рдмрдЬрд╛рдп, рдХреБрдЫ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдмрдирд╛рдПрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП - рдРрд╕реЗ рддрд╛рд░рд╛рдВрдХрди - css-tricks.com рд╡реЗрдмрд╕рд╛рдЗрдЯ рд▓реЛрдЧреЛред


Asterisk CSS Paint API рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдпрд╣рд╛рдВ рдПрдХ рдХреЛрдбрдкреИрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЬрдм рдЖрдк рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЬреЗрдПрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ drawStar() рд╡рд┐рдзрд┐ рдФрд░ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ рдЬреЛ <canvas> рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдЪрд░рдг # 3: рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕ рдЧреБрдг


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

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

рд╣рдо рдЕрдкрдиреЗ рд╕реАрдПрд╕рдПрд╕-рдХреЛрдб рдореЗрдВ --star-scale рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЫрд╡рд┐ рдЖрдХрд╛рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдФрд░ --star-color рд╕рдВрдкрддреНрддрд┐, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзреЗ CSS рдореЗрдВ рд▓реЛрдЧреЛ рд░рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛ рд╣реИ:

 section { --star-scale: 2; --star-color: hsla(200, 50%, 50%, 1); background-image: paint(awesomePattern) }; 

рдЕрдм рд╡рд╛рдкрд╕ рд╡рд░реНрдХрдХреНрд▓реЙрде рдХреА рдХреНрд▓рд╛рд╕ рдореЗрдВред рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ inputProperties рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рд╕рднреА CSS рдЧреБрдгреЛрдВ рдФрд░ рдЙрдирдХреЗ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рдорд╛рдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

 static get inputProperties() { return ['--star-scale','--star-color']; } 

рдЕрдм рдЖрдк paint() рд╡рд┐рдзрд┐ рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 const size = parseInt(properties.get('--shape-size').toString()); 

рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХреЛрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рд╕реАрдПрд╕рдПрд╕ рдХреЛрдб рдореЗрдВ, --star-scale рдпрд╛ --start-color рдХреЗ рдореВрд▓реНрдп рдХреЛ --star-scale --start-color , рддреЛ рдпрд╣ рддреБрд░рдВрдд рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдЫрд╡рд┐ --start-color ред

рдЫрд╡рд┐

рд╕рдорд╛рдкреНрдд рдЫрд╡рд┐ рдкрд░ рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕ рдЧреБрдгреЛрдВ рдХрд╛ рдкреНрд░рднрд╛рд╡

рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЙрд╕реА рдХреЛрдбрдкреИрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдордиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ред

рд╡реИрд╕реЗ, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдирдП рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рддрддреНрд╡реЛрдВ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рд╕рд╛рдорд╛рдиреНрдп рд╕реАрдПрд╕рдПрд╕ рдЧреБрдг, рдЬреИрд╕реЗ рдХрд┐ background-size рдФрд░ background-repeat , рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рд╣реА рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдирд╣реАрдВ рдЦреЛрдИ рд╣реИред

рдкрд░рд┐рдгрд╛рдо


CSS Paint API рдПрдХ рдмрд╣реБрдд рд╣реА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рддрдХрдиреАрдХ рд╣реИ рдЬрд┐рд╕рдХреА рдХреНрд╖рдорддрд╛ рдкреГрд╖реНрдарднреВрдорд┐ рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИред

рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рддрддреНрд╡ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реАрдорд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣реА рд╣реИ, рдпрд╛ рджреЛрд╣рд░реА рд╣реИред рд╢рд╛рдпрдж рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЖрдорддреМрд░ рдкрд░ рдЫрджреНрдо рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ ::before рдпрд╛ ::after рдпрд╛ рд╢рд╛рдпрдж рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ box-shadow ред рд╕реАрдПрд╕рдПрд╕ рдкреЗрдВрдЯ рдПрдкреАрдЖрдИ рдФрд░ border-image рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрдорд╛рдПрдВ (рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ) рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред

CSS Paint API рдПрдХ рд╕рд╛рде рдХрдИ рд╢рд╛рдирджрд╛рд░ рдлреАрдЪрд░ рд▓рд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд╡рд┐рдЧреЗрдЯреНрд╕, ECMAScript 2015 рдХреНрд▓рд╛рд╕реЗрд╕ рдФрд░ <canvas> рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рдЖрдзрд╛рд░рд┐рдд рдЫрд╡рд┐ рдкреНрд░рдмрдВрдзрди рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдИрд╡реЗрдВрдЯ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХрд╕реНрдЯрдо рдЧреБрдгреЛрдВ рдХреЗ рдЕрджреНрдпрддрди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЫрд╡рд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдЬрд╣рд╛рдБ click рдЗрд╡реЗрдВрдЯ requestAnimationFrame рдореЗрдВ рдЧреБрдгреЛрдВ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддреА рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рд╣рд░ рдмрд╛рд░ рдПрдиреАрдореЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдЖрдк рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рднреА рдорд╛рдЙрд╕ рдХрд░реНрд╕рд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХред

рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдпрд╣ рд╕рдм рдереЛрдбрд╝рд╛ рднреНрд░рд╛рдордХ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЗрдП рд╣рдо рд╣реМрджрд┐рдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдХреБрдЫ рдЕрдиреНрдп рд╣рд┐рд╕реНрд╕реЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рд╣рдо рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ:

  • CSS рд▓реЗрдЖрдЙрдЯ API рдбреЗрд╡рд▓рдкрд░ рдХреЛ display: layout('myCustomLayout') рдЬреИрд╕реЗ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ display: layout('myCustomLayout') ред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЪрд┐рдирд╛рдИ-рд╢реИрд▓реА рдХреЗ рд▓реЗрдЖрдЙрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рд╕реАрдорд╛ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд╣реИред
  • CSS рдЧреБрдг рдФрд░ рдорд╛рди API рдЖрдкрдХреЛ рдХрд╕реНрдЯрдо рдЧреБрдг рдкреНрд░рдХрд╛рд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
  • CSS рдПрдирд┐рдореЗрд╢рди рд╡рд░реНрдХрд▓реЗрдЯ рдПрдкреАрдЖрдИ рдореБрдЦреНрдп рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдкрд░реЗ рдПрдирд┐рдореЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдСрдкрд░реЗрд╢рдВрд╕ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рддрд╛ рд╣реИ , рдЬрд┐рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд┐рдХрдиреА рдПрдирд┐рдореЗрд╢рди рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рд╕реАрдПрд╕рдПрд╕ рдкреЗрдВрдЯ рдПрдкреАрдЖрдИ рдПрдкреНрд▓реАрдХреЗрд╢рди рдХреЗ рдХреМрди рд╕реЗ рдХреНрд╖реЗрддреНрд░ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддреЗ рд╣реИрдВ?

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


All Articles