рд╕реАрдПрд╕рдПрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдШрдЯрдирд╛: рдЪрд┐рдкрдЪрд┐рдкрд╛

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


рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпрд╛рдВ рдкрд╛рдИ рд╣реИрдВред рдпрд╣рд╛рдБ рд╡реЗ рд╣реИрдВ:


  1. рдЗрд╕рд╕реЗ рдЕрддрд┐рдХреНрд░рдордг рдЯреВрдЯрддрд╛ рд╣реИред sticky-change рдШрдЯрдирд╛ рд╣реЗрдбрд░ рддрддреНрд╡ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рд╣реЗрдбрд░ рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рд╕реЗрдВрдЯрд┐рдирд▓реНрд╕ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдФрд░ рдЗрд╕реЗ position: relative рдмрдирд╛рдирд╛)ред
  2. рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рд░рдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рд╕реБрд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрдирдХрд╛ рдХрдиреЗрдХреНрд╢рди рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ --default-padding рдЕрдзрд┐рдХ --default-padding , рдЬреЛ рд╢реАрд░реНрд╖-рдкреНрд░рд╣рд░реА рдХреА рдКрдВрдЪрд╛рдИ рд╣реИред
  3. рдЖрдк рдПрдХ рд▓реЗрдЦ рдХреЗ рдмреАрдЪ рдореЗрдВ рдмреНрд▓реЙрдХ рдХреЛ рдЯреНрд░реИрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдЖрдЗрдП рдЗрд╕реЗ рд╕реБрдзрд╛рд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ!


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


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


рдпрд╣рд╛рдБ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ:


  1. рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЪрд┐рдкрдЪрд┐рдкрд╛ рдкрдХреНрд╖ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╣рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
  2. рдкрд╣рд▓реЗ рдкреНрд░рд╣рд░реА top рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░реЗрдВ top рдмрд░рд╛рдмрд░ рд▓реЗрдХрд┐рди рд░рд┐рд╡рд░реНрд╕ рд╕рд╛рдЗрди рдорд╛рдЗрдирд╕ 1 рдХреЗ рд╕рд╛рдеред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЗ рд╣реЗрдбрд░ рдореЗрдВ top: 10px -11px , рддреЛ рдкреНрд░рд╣рд░реА рд╣реЗрдбрд░ рдХреЛ -11px рд╕реЗрдЯ рдХрд░реЗрдВред рдЖрдк top: calc(-1px + -1 * var( -- header-sticky-top)) рдЬреИрд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ top: calc(-1px + -1 * var( -- header-sticky-top)) рдпрд╛ рдпрджрд┐ рдЖрдк рд╢реАрд░реНрд╖ рд╢реАрд░реНрд╖ рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рддреЛ рдмрд╕ -1px рд╕реЗрдЯ рдХрд░реЗрдВред
  3. рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЕрдиреНрдп рдкреНрд░рд╣рд░реА рдЬреЛрдбрд╝реЗрдВред
  4. рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде рдкреНрд░рд╣рд░реА рдЪреМрд░рд╛рд╣реЗ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВред
  5. рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣реИрдбрд░ рдЕрдЯрдХ рдЧрдпрд╛ рд╣реИ, рдЕрдЧрд░ рд╕реЗрдВрдЯрд┐рдирд▓ рдЪреМрд░рд╛рд╣рд╛ рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рд╣реИред isIntersecting = true , intersectionRatio = 0 , рдФрд░ intersectionRect.top = rootBounds.top
  6. рдЕрдиреНрдп рдкрдХреНрд╖, рдмрд╕ рдКрдкрд░ рдХреЗ рдмрдЬрд╛рдп рдиреАрдЪреЗ, рдмрд╛рдПрдВ рдпрд╛ рджрд╛рдПрдВ рджреЗрдЦрддреЗ рд╣реИрдВред
  7. visibility: hidden рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВ visibility: hidden рдФрд░ pointer-events: none рдкреНрд░рд╣рд░реА рддрдХ pointer-events: none ред

рдпрд╣рд╛рдБ рдбреЗрдореЛ рдФрд░ рд╕реНрд░реЛрддреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ

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


All Articles