рд╢реАрд░реНрд╖ 5 рдХрд╛рд░рдг рдореБрдЭреЗ рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕ рдЧреБрдг рдХреНрдпреЛрдВ рдкрд╕рдВрдж рд╣реИрдВ

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЛ Stas Melnikov рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦ "рдореЗрд░реЗ рд╢реАрд░реНрд╖ 5 рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рдХрд╕реНрдЯрдо рдЧреБрдг рдХреНрдпреЛрдВ рдкрд╕рдВрдж рд╣реИ" рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ

рд╕реАрдПрд╕рдПрд╕ рдХрд╕реНрдЯрдо рд╕рдВрдкрддреНрддрд┐ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдиреЗ рд╣рдореЗрд╢рд╛ рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕ рдЧреБрдг рдХреНрдпреЛрдВ рдкрд╕рдВрдж рд╣реИрдВред

рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕ рдЧреБрдг рдХреНрдпрд╛ рд╣реИрдВ?


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

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдмрдЯрди рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдмреИрдВрдЧрдиреА рдорд╛рди рдХреЗ рд╕рд╛рде, рд╕рдВрдкрддреНрддрд┐ melnik909BrandColor рдмрдирд╛рдИред

button { --melnik909BrandColor: purple; } 


рд╡рд╛рд░ рд╕рдорд╛рд░реЛрд╣


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

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╕реАрдПрд╕рдПрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╕реНрдЯрдо рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде var рдлрд╝рдВрдХреНрд╢рди рд╕реЗрдЯ рдХрд░реЗрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реАрдорд╛ рдФрд░ рд░рдВрдЧ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП --melnik909BrandColor рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝реАред

 button { --melnik909BrandColor: purple; color: var(--melnik909BrandColor); border: 2px solid var(--melnik909BrandColor); } 

рдХрд╕реНрдЯрдо рдЧреБрдг рд╕реАрдзреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдмрджрд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ


рдПрдХ рдЕрдиреБрднрд╡реА рдкрд╛рдардХ рдЬреЛ рд╕реИрд╕ рдпрд╛ LESS рдЬреИрд╕реЗ рдЯреВрд▓ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ, рд╡рд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ, тАЬStas, рдореБрдЭреЗ CSS custom properties рдХреНрдпреЛрдВ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП? рдореБрдЭреЗ рд╕рд╛рд╕ рдЪрд░ рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдлреА рдХреБрдЫ рдкрддрд╛ рд╣реИ ред тАЭ

рдЪреЗрддрд╛рд╡рдиреА! Sass рдФрд░ LESS рд╡реИрд░рд┐рдПрдмрд▓ CSS рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реЛред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдЪрд░ $ melnik909BrandColor рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рд░рдВрдЧ рдмрдЪрд╛рдпрд╛:

 $melnik909BrandColor: purple; button { color: $melnik909BrandColor; border: 2px solid $melnik909BrandColor; } 

рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж, рдореИрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рджреЗрдЦреВрдВрдЧрд╛:

 button { color: purple; border: 2px solid purple; } 


рдпрд╣ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ Sass рдФрд░ LESS рдЪрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред

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

 button { --melnik909BrandColor: purple; color: var(--melnik909BrandColor); border: 2px solid var(--melnik909BrandColor); } button:hover { --melnik909BrandColor: #27ae60; } 

рдЖрдк рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдФрд░ рдореАрдбрд┐рдпрд╛ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ


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

 body { color: var(--melnik909BrandColor); } @media (max-width: 768px) { body { --melnik909BrandColor: purple; } } @media (min-width: 769px) { body { --melnik909BrandColor: tomato; } } 

Calc рдлрд╝рдВрдХреНрд╢рди рдФрд░ CSS рдХрд╕реНрдЯрдо рдЧреБрдг


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

 .child { width: calc(100% / 4); } .child { width: calc(100% / 3); } 

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

 .child { width: calc(100% / var(--itemsNumber)); } 

рдФрд░ рдореИрдВ рдореВрд▓ рддрддреНрд╡ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реВрдВрдЧрд╛:

 .parent { --itemsNumber: 5; } /* or */ .parent { --itemsNumber: 7; } 

рд╡реЗрдХреНрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЕрдиреБрдХреВрд▓рди


рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдХреНрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ 2 рддрд░реАрдХреЗ рд╣реИрдВред

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЧреБрдг рдЧреБрдгреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдХреЗ рдЧреБрдг рдорд╛рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

 <svg class="svg-with-attr" viewBox="0 0 55.867 55.867"> <path stroke="var(--iconStroke)" stroke-width="var(--iconStrokeWidth)" fill="var(--iconFill)" d="..."> </svg> 

рдЕрдм рд╣рдо рдЧреБрдг рдЧреБрдгреЛрдВ рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рдХреЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

 .svg-with-attr { --iconFill: #eeeeee; --iconStroke: #000000; --iconStrokeWidth: 1px; } 

рдмрд╛рдИрдВ рдУрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдЗрдХрди рд╣реИ, рдФрд░ рджрд╛рдИрдВ рдУрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдЗрдХрди рд╣реИред

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

 body { --iconFill: #ffcc00; --iconStroke: #000000; --iconStrokeWidth: 2px; } .svg-with-props { stroke: var(--iconStroke); stroke-width: var(--iconStrokeWidth); fill: var(--iconFill); } 

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


All Articles