рдкреЛрд╕реНрдЯ рдФрд░ рдкреВрд░реНрд╡ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реАрдПрд╕рдПрд╕

рдирдорд╕реНрдХрд╛рд░ рдкрд╛рдардХред рд▓реЗрдЖрдЙрдЯ рд╕реАрдЦрдиреЗ рдХреЗ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рдкрд░, рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╕реАрдПрд╕рдПрд╕ рд╕реАрдЦрд╛ рд╣реИ рдФрд░ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдлрд┐рд░ рдЖрдк рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗред рд╕рд╛рд╡рдзрд╛рдиреА, рдмрд╣реБрдд рдХреЛрдбред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░реЛрдВ рдФрд░ рдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд░ (рдУрдВ?) рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реВрдВрдЧрд╛ред

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

рдЪрд▓реЛ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░реЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

preprocessors


рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рдкреВрд░реНрд╡рдкреНрд░рдХреНрд░рдордХ рдХреНрдпрд╛ рд╣реИ? рд╡рд┐рдХреНрдХреА рдЬрд╡рд╛рдм рдЬрд╛рдирддрд╛ рд╣реИред

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

рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреНрдпрд╛ рд╣реИрдВ? рдХрдИ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: Sass (.sass, .scss), рдХрдо ( .less ) рдФрд░ рд╕реНрдЯрд╛рдЗрд▓рд┐рд╕ (.stylus)ред
рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, PostCSS (рдпрд╛ рдЗрд╕рдХреЗ рд╕реБрдЧрд░рдПрд╕рдПрд╕ рдкрд╛рд░реНрд╕рд░ рдФрд░ PreCSS рдкреНрд▓рдЧрдЗрди) рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдХрд╣реВрдБрдЧрд╛ рдХрд┐ рд╣рд╛рдБ, PostCSS рдХреЗрд╡рд▓ рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд╣реАрдВ рд╣реИред

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

рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ


рдЪрд░


//style.scss $color: #fff; span { color: $color; background: $color; } //style.css span { color: #fff; background: #fff; } 

рдЪрд░реЛрдВ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЕрддрд┐ рдХрдард┐рди рд╣реИред рдЕрдм рдЖрдк рд░рдВрдЧреЛрдВ рдХреЛ рд╕рд╛рд░реНрдердХ рдирд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВ ($ рдЯрдорд╛рдЯрд░: рдЖрд░рдЬреАрдмреА (255,99,71)), рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рди рдХрд░реЗрдВ, рдмрд▓реНрдХрд┐ рдЪрд░ (рдКрдВрдЪрд╛рдИ: $ body_height - $ footer_height) рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдХрдИ рддрд░реНрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдЪрд░ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреИрди рдЖрдИ рдпреВрдЬрд╝ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЖрдИрдИ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ (рдФрд░ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ)ред

рдШреЛрдВрд╕рд▓рд╛ рдХрд░рдиреЗ рдХреА рдХреНрд░рд┐рдпрд╛


 //style.scss .chat-area { width: 40%; &__button { // & -    (   & = .chat-area) display: inline-block; height:36px; width: 10px; } a { color: red; } } //style.css .chat-area { width: 40%; } .chat-area__button { display: inline-block; height:36px; width: 10px; } .chat-area a { color: red; } 

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

hagfish


 //style.scss @mixin border-radius($radius) { -webkit-border-radius: $radius; -moz-border-radius: $radius; -ms-border-radius: $radius; border-radius: $radius; } .box { @include border-radius(10px); } //style.css .box { -webkit-border-radius: 10px; -moz-border-radius: 10px; -ms-border-radius: 10px; border-radius: 10px; } 

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

рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдп


 //style.scss $color: #202020; h1, h2 { color: lighten($color, 40%); } //style.css h1, h2 { color: #868686; } 

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

рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛


рдкреНрд░рддрд┐рд░реВрдкрдХрддрд╛


рдорд╛рдирдХ рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрд░реЛрдз рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдорд╣рдВрдЧрд╛ рдСрдкрд░реЗрд╢рди рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдпрд╛рдд рддреБрд░рдВрдд рдЖрдпрд╛рддрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рднреА рдкрд╛рда рдХреЛ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рдП, рд╣реИ рдирд╛?

рдПрдХ рд░рд╛рд╕реНрддрд╛ рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп, рдкрд╣рд▓реЗ рд╕реЗ рдХреЛрдИ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдирд╣реАрдВ рдереЗ, рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╣рд▓ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рднреА рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ
  /*   */ /*   */ /*  */ /*   */ /*  */ /*   */ /*   */ 

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ
  /*   */ /*   */ /*  */ /*   */ /*  */ /*   */ /*   */ /* -  */ /*   */ /*  -  */ /*    */ /*   */ /*  */ /*    */ /*    */ /*    */ 



рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рд╣реИрдВ рдФрд░ рд╡реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдВрдЧреЗред рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдорд╛рдирдХ рдЖрдпрд╛рдд рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдм рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдкреВрдЫрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдпрд╛рдд рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ред

 //style.scss @import "selector1"; @import "selector2"; //selector1.scss span { color: white; } //selector2.scss div { color: gold; } //style.css div { color: gold; } span { color: white; } 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рд╕реНрдЯреЗрдЯрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз - рдПрдХ рдЬрд╡рд╛рдмред

рд╡рд┐рд░рд╛рд╕рдд


<рдХрдЯрд╛рдХреНрд╖> рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдИ рд╡рд┐рд░рд╛рд╕рдд рдирд╣реАрдВ рд╣реИ, рдРрд╕рд╛ рдХреИрд╕реЗ? </ рд╡реНрдпрдВрдЧреНрдп>ред рдЕрдм рддрдерд╛рдХрдерд┐рдд "рдЯреЗрдореНрдкрд▓реЗрдЯ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ" рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдФрд░ рдЕрдиреНрдп рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЙрдирдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред

 // style.scss %equal-heights { //   height: 100%; } %message { //   padding: 10px; } .success { @extend %message; color: green; } .error { @extend %message; color: red; } // style.css .success, .error { padding: 10px; } .success { color: green; } .error { color: red; } 

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

рд╕реНрд╡рд░реВрдкрдг


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

рд╕рд╛рд╕ рдореЗрдВ 4 рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╛рд░реВрдкрдг рд╣реИрдВред

 //expanded span { color: gold; display: block; } div { color: red; } //nested span { color: gold; display: block; } div { color: red; } //compact span { color: gold; display: block; } div { color: red; } //compressed span{color:gold;display:block}div{color:red} 

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

рдЙрдкрд╕рдВрд╣рд╛рд░


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

postprocessors


рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░реЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд░реЛрдВ рдХреА рдУрд░ рдмрдврд╝рддреЗ рд╣реИрдВред

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

рдореИрдВ рдкреЛрд╕реНрдЯрд╕реАрдПрд╕рдПрд╕ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдПрдХ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╕рдордЭрд╛рдКрдВрдЧрд╛ - рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд░реЛрдВ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐ред

рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ PostCSS рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕реЗ рдЗрдирдкреБрдЯ рдкрд░ рджреА рдЧрдИ рдереАред рдкреНрд▓рдЧрд┐рди рдкреЛрд╕реНрдЯрд╕реАрдПрд╕рдПрд╕ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрдиреЗ рдкрд░ рдмрджрд▓рд╛рд╡ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

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

  • рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреЛ PostCSS рдЗрдирдкреБрдЯ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  • рдкреНрд▓рдЧрдЗрди 1 рдХреБрдЫ рдХрд░рддрд╛ рд╣реИ
  • ...
  • рдкреНрд▓рдЧрдЗрди рдПрди рдХреБрдЫ рдХрд░рддрд╛ рд╣реИ
  • рдкрд░рд┐рдгрд╛рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

PostCSS рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рдореМрдЬреВрдж рдореБрдЦреНрдп рдкреНрд▓рдЧ рдЗрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ

рдкреНрд▓рдЧ-рдЗрди


Autoprefixer


рдпрд╣ рдкреНрд▓рдЧрдЗрди рдЗрддрдирд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди PostCSS рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рдЧрд▓рдд рд╣реИрдВред

 //in.css div { display: flex } //out.css div { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -ms-flexbox; display: flex } 

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

рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЗрдВ


 //in.css @custom-media --med (width <= 50rem); @media (--med) { a:hover { color: color-mod(black alpha(54%)); } } //out.css @media (max-width: 50rem) { a:hover { color: rgba(0, 0, 0, 0.54); } } 

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

рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓


рдпреЗ рд╕рднреА BEM рдЖрдкрдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЕрднреА рднреА рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ? рддрдм PostCSS рдПрдХ рдЕрд▓рдЧ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

 //in.css .name { color: gray; } //out.css .Logo__name__SVK0g { color: gray; } 

CSS рдореЙрдбреНрдпреВрд▓ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреИрдЯрд░реНрди (рд╕рдм рдХреБрдЫ рдЕрдиреБрдХреВрд▓рди рдпреЛрдЧреНрдп рд╣реИ) рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдмрджрд▓рддрд╛ рд╣реИред рдЕрдм рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдХреНрд╖рд╛ рдХреЗ рдирд╛рдо рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рддреЛ рддрддреНрд╡реЛрдВ рдХреЛ рдХреИрд╕реЗ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдП? PostCSS, Webpack рдФрд░ ES6 рдХреЛ рдорд┐рд▓рд╛рдХрд░ рдореИрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреА рдкреЗрд╢рдХрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

 import './style.css'; //  import styles from './style.css'; //  

рдЕрдм рд╣рдо рди рдХреЗрд╡рд▓ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдШрдЯрдХ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ) рдФрд░ рдЙрди рдорд╛рдиреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЬреЛ рд╣рдо рдкрд╣рд▓реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХрд╛ рдЖрдпрд╛рдд рдХрд░рдирд╛ред рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдХреБрдВрдЬреА рдореВрд▓ рдЪрдпрдирдХрд░реНрддрд╛ рд╣реЛрдВрдЧреЗ, рдФрд░ рдорд╛рди рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдЕрд░реНрдерд╛рддреН, рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╢реИрд▓рд┐рдпрд╛рдБ ['рдирд╛рдо'] = 'Logo__name__SVK0g'ред

рдХрдо


 //in.css .icon { size: 48px; } .canvas { color: #abccfc #212231; } //out.css .icon { width: 48px; height: 48px; } .canvas { color: #abccfc; background-color: #212231; } 

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

рдСрдЯреЛ рд░реАрд╕реЗрдЯ


 //in.css div { margin: 10px; } a { color: blue; } //out.css div, a { all: initial; } div { margin: 10px; } a { color: blue; } 

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

 //out.css div, a { margin: 0; padding: 0; } div { margin: 10px; } a { color: blue; } 

рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛ рдерд╛ рдХрд┐ рдкреЛрд╕реНрдЯрд╕реАрдПрд╕рдПрд╕ рдХреЗрд╡рд▓ рдПрдХ рдкреЛрд╕реНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд╣реАрдВ рд╣реИ?

PostCSS - рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░?


рдПрдХ рдкрд╛рд░реНрд╕рд░ рдФрд░ рдПрдХ рдкреНрд▓рдЧрдЗрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЖрдк PostCSS рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди рд░рд╛рдп рдмрджрд▓ рджреЗрдВрдЧреЗред

SugarSS


 //in.sss .parent color: white .parent > .child color: black //out.css .parent { color: white } .parent > .child { color: black } 

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

рдЖрдкрдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдХрд┐ рдЕрдЧрд▓рд╛ рдкреНрд▓рдЧрдЗрди рдХреНрдпрд╛ рдЬреЛрдбрд╝реЗрдЧрд╛?

PreCSS


 //in.sss $color: black .parent .child color: $color //  SugarSS $color: black; .parent { .child { color: $color } } //out.css .parent .child { color: black } 

PreCSS рд╕рд┐рд░реНрдл рдЙрди рдкреВрд░реНрд╡рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдмрд╣реБрдд рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред

рдФрд░ рдЕрдм PostCSS рдПрдХ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?

Stylelint


рдХрд╛рдлреА рдкрд╣рд▓реЗ рд╣реА рд╕реНрдЯрд╛рдЗрд▓рд▓рд┐рдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред рд╡рд╣ рдЗрд╕ рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВ рдЖ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рд╕реАрдПрд╕рдПрд╕рд╕реА рдлрд╛рдЗрд▓реЛрдВ рдХреА рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдкрд╛рд░реНрд╕рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЛрд╕реНрдЯрд╕реАрдПрд╕рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реА рдлрд╛рдЗрд▓ рд╣реИред

 a { color: rgb(1, 1, 1) } div { color: rgb(0, 0, 0) } 

рд╡рд░реНрддрдорд╛рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ:

  2:21 Expected a trailing semicolon declaration-block-trailing-semicolon 6:21 Expected a trailing semicolon declaration-block-trailing-semicolon 7:1 Unexpected missing end-of-source newline no-missing-end-of-source-newline 

рдЗрд╕ рдЙрдкрдХрд░рдг рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ overestimate рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

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


Preprocessors рдмрд╣реБрдд рд╕реА рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ CSS рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рд╣реА рдирд┐рдпрдорд┐рдд рд╕реАрдПрд╕рдПрд╕ рдкрд░ рд▓реМрдЯреЗрдВрдЧреЗред

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

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

рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреЗрд╡рд▓ PostCSS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ред рд▓реЗрдЖрдЙрдЯ рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдХреЛ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? PreCSS рдкреНрд▓рдЧрдЗрди рдФрд░ SugarSS рдкрд╛рд░реНрд╕рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрдЧрддрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? Autoprefixer рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрдЧрддрддрд╛ рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдореЗрдВ рд▓рдкреЗрдЯреА рдЧрдИ рдереА рдФрд░ рдпрд╣ рдбреЗрд╕реНрдХрдЯреЙрдк рдмрди рдЧрдИ рдереА)? рдмрд╕ Autoprefixer рдХреА рд╕реНрдерд╛рдкрдирд╛ рд░рджреНрдж рдХрд░реЗрдВ! рдкреЛрд╕реНрдЯрд╕реАрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ, рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЬреЛ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрд░реВрд░рдд рд╣реИред

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


All Articles