рд╕реАрдПрд╕рдПрд╕ Houdini рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓

рд╢реБрдн рджрд┐рди, рджреЛрд╕реНрддреЛрдВ!

рдПрдХ рд╣реМрджрд┐рдиреА рдХреНрдпрд╛ рд╣реИ?


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

рд╣реМрджрд┐рдиреА рдореЗрдВ рджреЛ рдПрдкреАрдЖрдИ рд╕рдореВрд╣ рд╣реЛрддреЗ рд╣реИрдВ - рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдПрдкреАрдЖрдИ рдФрд░ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдПрдкреАрдЖрдИред

рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдПрдкреАрдЖрдИ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рд╢реИрд▓реА - рд▓реЗрдЖрдЙрдЯ - рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ - рд░рдЪрдирд╛) рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВред рдЗрд╕ рд╕рдореВрд╣ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

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

рдирд┐рдореНрди-рд╕реНрддрд░реАрдп API рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп API рдХреЗ рд▓рд┐рдП рдиреАрдВрд╡ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдЯрд╛рдЗрдк рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдореЙрдбрд▓ рдПрдкреАрдЖрдИ
  • рдХрд╕реНрдЯрдо рдЧреБрдг рдФрд░ рдорд╛рди API
  • рдлрд╝реЙрдиреНрдЯ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдПрдкреАрдЖрдИ
  • Worklets

рд╕реАрдПрд╕рдПрд╕ рднрд╡рд┐рд╖реНрдп


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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рдВрдЧрддрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЦреБрд▓реЗ рд╕реАрдПрд╕рдПрд╕ рдХрд╛рд░реНрдпрдкрддреНрд░рдХреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ (TOM) рдПрдкреАрдЖрдИ


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

selectedElement.style.fontSize = newFontSize + 'px' // newFontSize = 20
console.log(selectedElement.style.fontSize) // 20px

TOM, CSS рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП JS рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдХреЗ рдЕрдзрд┐рдХ рдЕрд░реНрдердкреВрд░реНрдг рдЕрд░реНрде рджреЗрддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рджрд░реНрд╢рди, рд╕реНрдерд┐рд░рддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреЛрдб рд╕рдорд░реНрдерди рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддрд╛ рд╣реИред CSS рдорд╛рдиреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ CSSUnitValue рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореВрд▓реНрдп рдФрд░ "рдорд╛рдк рдХреА рдЗрдХрд╛рдИ" рд╕рдВрдкрддреНрддрд┐ рд╣реЛрддреА рд╣реИред

{
  value: 20,
  unit: 'px'
}

рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  • рдХрдореНрдкреНрдпреВрдЯреЗрдб рд╕реНрдЯрд╛рдЗрд▓ рдореИрдк (): рдкрд░рд┐рдХрд▓рд┐рдд (рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд╣реАрдВ) рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдпрд╛ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рд╡рд┐рд╢реЗрд╖рддрд╛ рд╢реИрд▓реА: рдЗрдирд▓рд╛рдЗрди рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдПрдХ рдЖрдЗрдЯрдо рдкреНрд░реЙрдкрд░реНрдЯреА рд╣реИред

//       ( )
selectedElement.computedStyleMap().get('font-size') // { value: 20, unit: 'px' }

//   
selectedElement.attributeStyleMap.set('font-size', CSS.em(2))
selectedElement. attributeStyleMap.set('color', 'blue')

//    
selectedElement.computedStyleMap().get('font-size') // { value: 20, unit: 'px' }

//    
selectedElement.attributeStyleMap.get('font-size') // { value: 2, unit: 'em' }

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

рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рдПрдкреАрдЖрдИ рдореЗрдВ рди рдХреЗрд╡рд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпрд╛рдВ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

  • рд╕реНрдкрд╖реНрдЯ: рд╕рднреА рдЗрдирд▓рд╛рдЗрди рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ
  • рд╣рдЯрд╛рдПрдВ: рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реАрдПрд╕рдПрд╕ рд╕рдВрдкрддреНрддрд┐ рдФрд░ рдЙрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ
  • рд╣реИ: рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдкрддреНрддрд┐ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╣реА / рдЧрд▓рдд рд░рд┐рдЯрд░реНрди
  • рдкрд░рд┐рд╢рд┐рд╖реНрдЯ: рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдореВрд▓реНрдп рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рдХрдИ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ

рдЦреЛрдЬ


let selectedElement = document.getElementById('example')

if(selectedElement.attributeStyleMap){
  // ...
}

if(selectedElement.computedStyleMap){
  // ...
}

рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╕реНрдерд┐рддрд┐


рдХрд╛рд░реНрдп рдорд╕реМрджрд╛ : рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рд╕рд╣рдпреЛрдЧ


рдХреНрд░реЛрдордзрд╛рд░рдУрдкреЗрд░рд╛рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕рд╕рдлрд╛рд░реА
рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рддрджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рддрджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рддрд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВрдЖрдВрд╢рд┐рдХ рд╕рдорд░реНрдерди

рдХрд╕реНрдЯрдо рдЧреБрдг рдФрд░ рдорд╛рди API


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

CSS.registerProperty({
  name: '--colorPrimary',
  syntax: '<color>',
  inherits: false,
  initialValue: 'blue',
})

рдирд┐рдореНрди рдЧреБрдгреЛрдВ рд╡рд╛рд▓реА рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  • рдирд╛рдо: рдХрд╕реНрдЯрдо рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо
  • рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕: рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рди рд╣реИрдВ: <color>, <рдкреВрд░реНрдгрд╛рдВрдХ>, <рд╕рдВрдЦреНрдпрд╛>, <рд▓рдВрдмрд╛рдИ>, <рдкреНрд░рддрд┐рд╢рдд>, рдЖрджрд┐ред
  • рдЖрд░рдВрднрд┐рдХ рдореВрд▓реНрдп: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди (рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕рд╛рде рд╣реА рд╕рд╛рде рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрдиреЗ рдкрд░)

рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, <color> рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рдХрд╕реНрдЯрдо рд╕рдВрдкрддреНрддрд┐ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рдЧрдИ рдереАред рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдврд╛рд▓ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдирд┐рдпрдорд┐рдд рд╕реАрдПрд╕рдПрд╕ рдврд╛рд▓ рд╕рдВрдХреНрд░рдордгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рдВрдХреНрд░рдордг рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

.gradient-box {
  background: linear-gradient(45deg, rgba(255, 255, 255, 1) 0% var(--colorPrimary) 60%);
  transition: --colorPrimary 0.5s ease;
  ...
}

.gradient-box:hover {
  --colorPrimary: red;
  ...
}

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдврд╛рд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред рдЗрд╕реАрд▓рд┐рдП рд╣рдордиреЗ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ <color> рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ред Houdini рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ, рдЬрдм рдЖрдк рдордБрдбрд░рд╛рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдХреНрд░рдорд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛ред рдХреНрд░рдорд┐рдХ рд╕реНрдерд┐рддрд┐, рдкреНрд░рддрд┐рд╢рдд рдореЗрдВ рдорд╛рдкрд╛, рд╕реАрдПрд╕рдПрд╕ рдХрд╕реНрдЯрдо рд╕рдВрдкрддреНрддрд┐ (<рдкреНрд░рддрд┐рд╢рдд> рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдВрднрд╡рддрдГ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕реАрдзреЗ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо рд╕рдВрдкрддреНрддрд┐ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред

@property --colorPrimary {
  syntax: '<color>';
  inherits: false;
  initial-value: blue;
}

рдЙрджрд╛рд╣рд░рдг


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



рдЦреЛрдЬ


if(CSS.registeredProperty) {
  // ...
}

рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╕реНрдерд┐рддрд┐


рдХрд╛рд░реНрдп рдорд╕реМрджрд╛ : рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рд╕рд╣рдпреЛрдЧ


рдХреНрд░реЛрдордзрд╛рд░рдУрдкреЗрд░рд╛рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕рд╕рдлрд╛рд░реА
рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рддрджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рддрджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рддрд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВрд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ

рдлрд╝реЙрдиреНрдЯ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдПрдкреАрдЖрдИ


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

рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╕реНрдерд┐рддрд┐


рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ : рдорд╕реМрджрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рд╣реБрдЖред

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред

Vorkleta


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдкреАрдЖрдИ рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрдкрддреНрд░рдХреЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Vorklets рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рд╣реИрдВ рдЬреЛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЪрд▓рддреА рд╣реИрдВ рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд JS рдХреЛрдб рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрддреА рд╣реИрдВред рд╡реЗ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЗрдВрдЬрди рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди (2 рдпрд╛ рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдгреЛрдВ) рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдореБрдЦреНрдп рдереНрд░реЗрдб рдХреЛ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ рддрдХ рд╕реАрдорд┐рдд рдкрд╣реБрдВрдЪ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рдмреБрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред Vorklets рдХреЗрд╡рд▓ HTTPS (рдЙрддреНрдкрд╛рджрди рдореЗрдВ) рдпрд╛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ (рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Houdini рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЗрдВрдЬрди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд░реНрдХрд▓реЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдкреЗрдВрдЯ рд╡рд░реНрдХрд▓реЗрдЯ - рдкреЗрдВрдЯ рдПрдкреАрдЖрдИ
  • рдПрдирд┐рдореЗрд╢рди рд╡рд░реНрдХрд▓реЗрдЯ - рдПрдирд┐рдореЗрд╢рди рдПрдкреАрдЖрдИ
  • рд▓реЗрдЖрдЙрдЯ рд╡рд░реНрдХрд▓реЗрдЯ - рд▓реЗрдЖрдЙрдЯ рдПрдкреАрдЖрдИ

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


рдкреЗрдВрдЯ рдПрдкреАрдЖрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ 2D рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЙрдиреНрд╕реЗрдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рддрддреНрд╡ рдХреА рдкреГрд╖реНрдарднреВрдорд┐, рд╕реАрдорд╛рдУрдВ рдпрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдПрд╕ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдХреИрдирд╡рд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдПрдХ рд╕рдмрд╕реЗрдЯ рд╣реИред рдкреЗрдВрдЯ рдПрдкреАрдЖрдИ рдкреЗрдВрдЯ рд╡рд░реНрдХрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдРрд╕реА рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рд╕реАрдПрд╕рдПрд╕ рдЪрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди)ред рдХреИрдирд╡рд╛рд╕ рдПрдкреАрдЖрдИ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд▓реЛрдЧ рдкреЗрдВрдЯ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдШрд░ рдкрд░ рд╕рд╣реА рдорд╣рд╕реВрд╕ рдХрд░реЗрдВрдЧреЗред

рдкреЗрдВрдЯ рд╡рд░реНрдХрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдореЗрдВ рдХрдИ рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВ:

  1. рд░рдЬрд┐рд╕реНрдЯрд░рдкреЗрдВрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХрд╛рд░реНрдпрдкрддреНрд░рдХ рд▓рд┐рдЦреЗрдВ рдФрд░ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ
  2. HTML рдпрд╛ JS рдореЗрдВ CSS.paintWorklet.addModule рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╕реНрдерд▓ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ
  3. рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдкреЗрдВрдЯ () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рд╕рд╛рде рдореЗрдВ рд╡реЙрдХрд▓реЗрдЯ рдФрд░ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХрд╛ рдирд╛рдо рджреЗрдВ

рдЖрдЗрдП registerPaint рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреЗрдЦреЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреЗрдВрдЯ рд╡рд░реНрдХрд▓реЗрдЯ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдФрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

registerPaint('paintWorkletExample', class {
  static get inputProperties() { return ['--myVariable']; }
  static get inputArguments() { return ['<color>']; }
  static get contextOptions() { return {alpha: true} }

  paint(ctx, size, properties, args) {
    // ...
  }
})

RegisterPaint рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдирд┐рдореНрди рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ:

  • inputProperties: рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдЬреЛ рд╡рд░реНрдХрд▓реЗрдЯ рджреЗрдЦ рд░рд╣реА рд╣реИред рдпрд╣ рд╕рд░рдгреА рдХрд╛рд░реНрдпрд╕реНрдерд▓ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИред
  • inputArguments: рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдЬрд┐рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░реА CSS рдкрд░ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  • рд╕рдВрджрд░реНрдн: рд░рдВрдЧ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ред рдпрджрд┐ рдЧрд▓рдд рд╣реИ, рддреЛ рд╕рднреА рд░рдВрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрд╛рд░рджрд░реНрд╢реА рд╣реЛрдВрдЧреЗ
  • рдкреЗрдВрдЯ: рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реНрдХ рд▓реЗ рд░рд╣рд╛ рд╣реИ:

    • ctx: рдПрдХ 2D рдбреНрд░рд╛рдЗрдВрдЧ рд╕рдВрджрд░реНрдн рдЬреЛ рдХрд┐ рдХреИрдирд╡рд╕ рдПрдкреАрдЖрдИ рдХреЗ 2D рдХреИрдирд╡рд╛рд╕ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИ
    • рдЖрдХрд╛рд░: рддрддреНрд╡ рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБред рдорд╛рди рд▓реЗрдЖрдЙрдЯ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред рдХреИрдирд╡рд╛рд╕ рдХрд╛ рдЖрдХрд╛рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдЗрдЯрдо рдЖрдХрд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реИ
    • рдЧреБрдг: inputProperties рдореЗрдВ рдирд┐рд╣рд┐рдд рдЪрд░
    • рдЖрд░реНрдЧреНрд╕: рдкреЗрдВрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА

рдХрд╛рд░реНрдпрдкрддреНрд░рдХ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ HTML рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

CSS.paintWorklet.addModule('path/to/worklet/file.js')

Vorklets рдХреЛ рдХрд┐рд╕реА рднреА рдмрд╛рд╣рд░реА рд╕реНрд░реЛрдд (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, CDN) рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдореЙрдбреНрдпреВрд▓рд░ рдФрд░ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдмрдирд╛рддрд╛ рд╣реИред

CSS.paintWorklet.addModule('https://url/to/worklet/file.js')

рд╡рд░реНрдХрд▓реЗрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ "рдкреЗрдВрдЯ" рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди, рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ, vorklet рдХрд╛ рдкрдВрдЬреАрдХреГрдд рдирд╛рдо рдФрд░ inputArguments рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рднреА рддрд░реНрдХреЛрдВ рдХреЛ рд▓реЗрддрд╛ рд╣реИред рдЗрд╕ рдХреНрд╖рдг рд╕реЗ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрд╕реНрдерд▓ рдкрд░ рдХрдм рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХреМрди рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░рд┐рдпрд╛рдПрдВ рд╕реАрдПрд╕рдПрд╕ рдХрд╕реНрдЯрдо рдЧреБрдгреЛрдВ рдХреЗ рдХреБрдЫ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИрдВред

.example-element {
  // paintWorkletExample -  
  // blue - ,  
  background: paint(paintWorkletExample, blue);
}

рдЙрджрд╛рд╣рд░рдг


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



рдЦреЛрдЬ


if(тАШpaintWorkletтАЩ in CSS){
  // тАж
}

@supports(background: paint(paintWorkletExample)){
  // тАж
}

рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╕реНрдерд┐рддрд┐


рд╕рд┐рдлрд╛рд░рд┐рд╢ : рдПрдХ рд╕реНрдерд┐рд░ рдХрд╛рдордХрд╛рдЬреА рдорд╕реМрджрд╛, рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ред

рд╕рд╣рдпреЛрдЧ


рдХреНрд░реЛрдордзрд╛рд░рдУрдкреЗрд░рд╛рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕рд╕рдлрд╛рд░реА
рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рддрджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рддрджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рддрд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВрд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ

рдПрдирд┐рдореЗрд╢рди рдПрдкреАрдЖрдИ


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

рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╕реНрдерд▓ рдХреА рддрд░рд╣, рдПрдХ рдХрд╕рд░рдд рдПрдиреАрдореЗрд╢рди рдХреЛ рдкрд╣рд▓реЗ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

registerAnimation(тАШanimationWorkletExampleтАЩ, class {
  constructor(options){
    // тАж
  }
  animate(currentTime, effect){
    // тАж
  }
})

рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рджреЛ рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

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

    • рд╡рд░реНрддрдорд╛рди рд╕рдордп: рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдордпрд░реЗрдЦрд╛ рдкрд░ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк
    • рдкреНрд░рднрд╛рд╡: рдПрдиреАрдореЗрд╢рди рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдкреНрд░рднрд╛рд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА

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

//   
await CSS.animationWorklet.addModule(тАШpath/to/worklet/file.jsтАЩ)

//    
const elementExample = document.getElementById(тАШelement-exampleтАЩ)

//  
const effectExample = new KeyframeEffect(
  elementExample, //  
  [ // тАж ], //  
  { // тАж } //  - , ,    ..
)

//        
new WorkletAnimation(
  тАШanimationWorkletExampleтАЩ //  
  effectExample, //  
  document.timeline, //  
  {},  //   
).play()

рд╕рдордп рдХрд╛ рдЯрд┐рдХрдЯ


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

рдкреНрд░рднрд╛рд╡реЛрдВ рдХрд╛ рд╕рдордп рдЯрд┐рдХрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ (рдПрдХ рдПрдиреАрдореЗрд╢рди 4 рд╕реЗрдХрдВрдб рддрдХ рдФрд░ рдмрд┐рдирд╛ рджреЗрд░реА рдХреЗ):

рд╕рдордп рдХрд╛ рдЯрд┐рдХрдЯрдПрдиреАрдореЗрд╢рди рдлреНрд░реЗрдо
0msрдкрд╣рд▓рд╛ рдлреНрд░реЗрдо - рдПрдиреАрдореЗрд╢рди рдХреА рд╢реБрд░реБрдЖрдд
2000msрджреВрд╕рд░рд╛ рдлреНрд░реЗрдо - рдПрдиреАрдореЗрд╢рди рдХреЗ рдмреАрдЪ рдореЗрдВ
4000msрдЕрдВрддрд┐рдо рдлреНрд░реЗрдо - рдПрдиреАрдореЗрд╢рди рдХрд╛ рдЕрдВрдд рдпрд╛ рдкрд╣рд▓реЗ рдлреНрд░реЗрдо рдкрд░ рд░реАрд╕реЗрдЯ

3000.ms (1000ms рдХреА рджреЗрд░реА рдХреЗ рд▓рд┐рдП) рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде effect.localTime рд╕рдордпрд░реЗрдЦрд╛ рдкрд░ рдФрд╕рдд рдлреНрд░реЗрдо (1000ms рджреЗрд░реА + 2000ms рдФрд╕рдд рдлреНрд░реЗрдо) рдкрд░ рдПрдиреАрдореЗрд╢рди рдХреЛ рдмрд╛рдВрдзрддрд╛ рд╣реИред 7000ms рдФрд░ 11000ms рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рд╕рдорд╛рди рдкреНрд░рднрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдПрдиреАрдореЗрд╢рди рд╣рд░ 4000ms рдХреЛ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИред

animate(currentTime, effect){
  effect.localTime = 3000 // 1000ms  + 2000ms  
}

Effect.localTime рдХреЗ рдирд┐рд░рдВрддрд░ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде, рдПрдиреАрдореЗрд╢рди рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлреНрд░реЗрдо рдкрд░ рд▓реЙрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, effect.localTime рдХрд╛ рдорд╛рди рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдорд╛рди рд╡рд░реНрддрдорд╛рди рд╕рдордп рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣рд╛рдБ рд▓реАрдирд┐рдпрд░ рдПрдирд┐рдореЗрд╢рди рдХреЛрдб рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

animate(currentTime, effect){
  effect.localTime = currentTime // y = x  
}

рд╕рдордпрд░реЗрдЦрд╛ (document.timeline)рд╕рдордп рдХреА рдореЛрд╣рд░рдврд╛рдВрдЪрд╛
startTime + 0ms (рдмреАрддрд╛ рд╣реБрдЖ рд╕рдордп)startTime + 0msрд╕рдмрд╕реЗ рдкрд╣рд▓рд╛
startTime + 1000ms (рдмреАрддрд╛ рд╣реБрдЖ рд╕рдордп)startTime + 1000ms (рджреЗрд░реА) + 0msрд╕рдмрд╕реЗ рдкрд╣рд▓рд╛
startTime + 3000ms (рдмреАрддрд╛ рд╣реБрдЖ рд╕рдордп)startTime + 1000ms (рджреЗрд░реА) + 2000msрдордзреНрдп
startTime + 5000ms (рдмреАрддрд╛ рд╣реБрдЖ рд╕рдордп)startTime + 1000ms (рджреЗрд░реА) + 4000msрдкрд╣рд▓реЗ рдЕрдВрддрд┐рдо
startTime + 7000ms (рдмреАрддрд╛ рд╣реБрдЖ рд╕рдордп)startTime + 1000ms (рджреЗрд░реА) + 6000msрдордзреНрдп
startTime + 9000ms (рдмреАрддрд╛ рд╣реБрдЖ рд╕рдордп)startTime + 1000ms (рджреЗрд░реА) + 8000msрдкрд╣рд▓реЗ рдЕрдВрддрд┐рдо

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

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

const scrollTimelineExample = new ScrollTimeline({
  scrollSource: scrollElement, // ,     
  orientation: тАШverticalтАЩ, //  
  startScrollOffset: тАШ200pxтАЩ, //  
  endScrollOffset: тАШ800pxтАЩ, //  
  timeRange: 1200, //  
  fill: тАШforwardsтАЩ //  
})

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

рдЙрджрд╛рд╣рд░рдг


рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдЧреИрд░-рд░реЗрдЦреАрдп рдПрдиреАрдореЗрд╢рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд╣рд╛рдВ рдФрд░ рдкреАрдЫреЗ рдПрдХ рд╣реА рд╕рдордп рд░реЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЧреЙрд╕рд┐рдпрди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ред рдпрд╣рд╛рдБ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рджреЗрдЦреЗрдВ ред



рдЦреЛрдЬ


if(CSS.animationWorklet){
  // тАж
}

рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╕реНрдерд┐рддрд┐


рдкрд╣рд▓рд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рдордХрд╛рдЬреА рдорд╕реМрджрд╛ : рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЕрдзреАрдиред

рд╕рд╣рдпреЛрдЧ


рдХреНрд░реЛрдордзрд╛рд░рдУрдкреЗрд░рд╛рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕рд╕рдлрд╛рд░реА
рдЖрдВрд╢рд┐рдХ рд╕рдорд░реНрдердирдЖрдВрд╢рд┐рдХ рд╕рдорд░реНрдердирдЖрдВрд╢рд┐рдХ рд╕рдорд░реНрдердирд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВрд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ

рд▓реЗрдЖрдЙрдЯ рдПрдкреАрдЖрдИ


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

рдкрд╣рд▓реЗ рдЪреАрдЬреЛрдВ рдХреЛ рдкрд╣рд▓реЗ, рдПрдХ рдХрд╛рд░реНрдпрдкрддреНрд░рдХ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

registerLayout(тАШexampleLayoutтАЩ, class{
  static get inputProperties() { return [тАШ--example-variableтАЩ] }

  static get childrenInputProperties() { return [тАШ--exampleChildVariableтАЩ] }

  static get layoutOptions(){
    return {
      childDisplay: тАШnormalтАЩ,
      sizing: тАШblock-likeтАЩ
    }
  }

  intrinsicSizes(children, edges, styleMap){
    // тАж
  }

  layout(children, edges, constraints, styleMap, breakToken){
    // тАж
  }
})

рдХрд┐рд╕реА рдХрд╛рд░реНрдпрдкрддреНрд░рдХ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • inputProperties: рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕ рдЧреБрдгреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдЬреЛ рд╡рд░реНрдХрд▓реЗрдЯ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЬреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рд╣реЛрддреА рд╣реИ, рд╡рд╣ рддрддреНрд╡ рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд▓реЗрдЖрдЙрдЯ рд░реЗрдВрдбрд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╕рд░рдгреА рд▓реЗрдЖрдЙрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИ
  • childrenInputProperties: рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕ рдЧреБрдгреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдЬреЛ рд╡рд┐рдЬреЗрдЯ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЬреЛ рд╡рдВрд╢рдЬ рдХреА рд╣реЛрддреА рд╣реИ
  • LayoutOptions: рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЖрдЙрдЯ рдЧреБрдгреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:

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

    • рдмрдЪреНрдЪреЗ: рдЙрд╕ рддрддреНрд╡ рдХрд╛ рдмрдЪреНрдЪрд╛ рдЬреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрдЬ рд▓реЗрдЖрдЙрдЯ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛
    • рдХрд┐рдирд╛рд░реЛрдВ: рдХрдВрдЯреЗрдирд░ рд╕реАрдорд╛рдУрдВ
    • styleMap: рдЯрд╛рдЗрдк рдХрдВрдЯреЗрдирд░ рд╢реИрд▓реА рд╡рд╕реНрддреБ рдореЙрдбрд▓
  • рд▓реЗрдЖрдЙрдЯ: рд▓реЗрдЖрдЙрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп:

    • рдмрдЪреНрдЪреЗ: рдмрд╛рд▓ рддрддреНрд╡
    • рдХрд┐рдирд╛рд░реЛрдВ: рд╕реАрдорд╛рдУрдВ
    • рдмрд╛рдзрд╛рдУрдВ: рдореВрд▓ рд▓реЗрдЖрдЙрдЯ рджреНрд╡рд╛рд░рд╛ рд▓рдЧрд╛рдП рдЧрдП рдмрд╛рдзрд╛рдУрдВ
    • styleMap: рдЯрд╛рдЗрдк рдХрдВрдЯреЗрдирд░ рд╢реИрд▓реА рд╡рд╕реНрддреБ рдореЙрдбрд▓
    • breakToken: рдкреЗрдЬрд┐рдВрдЧ рдпрд╛ рдкреНрд░рд┐рдВрдЯ рд▓реЗрдЖрдЙрдЯ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд▓рд┐рдП рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╡рд░реНрдХрд▓реЗрдЯ рдХреЛ HTML рдпрд╛ JS рдлрд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред

CSS.layoutWorklet.addModule(тАШpath/to/worklet/file.jsтАЩ)

рд╣рдо рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдХрд▓реЗрдЯ рдХрд╛ рд▓рд┐рдВрдХ рдмрдирд╛рддреЗ рд╣реИрдВред

.example-element {
  display: layout(exampleLayout)
}

рд▓реЗрдЖрдЙрдЯ рдПрдкреАрдЖрдИ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ


рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ exampleLayout рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдерд╛ред

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

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

рдЙрджрд╛рд╣рд░рдг


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



рдЦреЛрдЬ


if(CSS.layoutWorklet){
  // тАж
}

рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╕реНрдерд┐рддрд┐


рдкрд╣рд▓рд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рдордХрд╛рдЬреА рдорд╕реМрджрд╛ : рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЕрдзреАрдиред

рд╕рд╣рдпреЛрдЧ


рдХреНрд░реЛрдордзрд╛рд░рдУрдкреЗрд░рд╛рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕рд╕рдлрд╛рд░реА
рдЖрдВрд╢рд┐рдХ рд╕рдорд░реНрдердирдЖрдВрд╢рд┐рдХ рд╕рдорд░реНрдердирдЖрдВрд╢рд┐рдХ рд╕рдорд░реНрдердирд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВрд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ

рд╣реМрджрд┐рдиреА рдФрд░ рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рд╕реБрдзрд╛рд░


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

рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рд╕рдорд░реНрдерди рдХреА рдкрд╣рдЪрд╛рди рдХрд░реЗрдВред


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

рдбрд┐рд╕реНрдкреНрд▓реЗ рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП Houdini рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


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

рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирдХ рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╕реНрдЯрдо CSS рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╕реНрдЯрдо рдЧреБрдгреЛрдВ рдФрд░ рдореВрд▓реНрдпреЛрдВ API рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЙрддреНрдкрд╛рджрдХ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рд╕реБрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдЬрд╛рд╡рдЯреА рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реМрджрд┐рдиреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖


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

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

рдореИрдВ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдЬрдм рддрдХ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рд╕рдореБрджрд╛рдп рд╣реБрдбреАрдиреА рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдирдВрдж рдирд╣реАрдВ рд▓реЗ рд╕рдХрддрд╛ред рдпрд╣рд╛рдВ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ:

CSS Houdini Expirements Google Chrome Labs рд╕реЗ
CSS Houdini Houdini рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдкрд░рд┐рдЪрдп


рд╕рдВрджрд░реНрдн


Houdini рд╣реБрдбреАрдиреА рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди
(рдХреНрд░реЛрдо рджреЗрд╡ рд╕рдорд┐рдЯ 2018)
рдПрдиреАрдореЗрд╢рди рд╡рд░реНрдХрд▓реЗрдЯ рдХрд╛ W3C рдбреНрд░рд╛рдлреНрдЯ - Google рдбреЗрд╡рд▓рдкрд░реНрд╕

рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

All Articles