рд▓реЗрдЦ рд▓реЗрдЦрдХ: рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯрд┐рди рд╕рдлреЛрдиреЛрд╡рдореИрдВ рдЗрд╕ рддрдХрдиреАрдХреА рдмрдХрд╡рд╛рд╕ рдХреЛ рдкрдврд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ред рдореЗрд░рд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрднреА рдЧрд┐рд░ рдЧрдпрд╛ рд╣реИредCraSSh рдХреНрдпрд╛ рд╣реИ
CraSSh рдПрдХ рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИ рдЬреЛ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдШреЛрд╖рдгрд╛рддреНрдордХ DoS рдкрд░ рд╣рдорд▓рд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐
var()
рдФрд░
calc()
CSS рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдЦрд░рд╛рдм рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
CraSSh рдбреЗрд╕реНрдХрдЯреЙрдк рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд╕рднреА рдкреНрд░рдореБрдЦ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
- WebKit / Blink engine - рдХреНрд░реЛрдо, рдУрдкреЗрд░рд╛, рд╕рдлрд╛рд░реА, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реНрдорд╛рд░реНрдЯ рдЯреАрд╡реА рдФрд░ рд░реЗрдлреНрд░рд┐рдЬрд░реЗрдЯрд░ рдкрд░ рд╕реИрдорд╕рдВрдЧ рдЗрдВрдЯрд░рдиреЗрдЯред
- Android WebView, iOS UIWebView рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдЖрдк рдХрд┐рд╕реА рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдХреНрд░реИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдЧреЗрдХреЛ рдЗрдВрдЬрди рдкрд░ - рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рдВрдЯреЗ, рдЬреИрд╕реЗ рдХрд┐ рдЯреЛрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ред
- рд╕рд░реНрд╡реЛ рдореЗрд░реА рдХрд┐рд╕реА рднреА рдорд╢реАрди рдкрд░ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реБрдЖ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ред
- EdgeHTML рдЗрдВрдЬрди рдкрд░ - рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдмрдврд╝рдд, UWP рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдкрд░ WebView (рдХреНрдпрд╛ рдХреЛрдИ рдЙрдиреНрд╣реЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ?)
IE рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рди рдкрд░ рд╣рдорд▓рд╛ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реНрд╡рдпрдВ рдХреА рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ
(рд╢рд╛рдпрдж рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рд╕реЗ рдирд╖реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рд▓рдЧрднрдЧред) ред
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдХреНрд░реИрдбрд╢ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╕реАрдПрд╕рдПрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрд╛рддреАрдп рд╕рдордп рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рдЪрд░ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдФрд░ рд╡рд┐рд╢рд╛рд▓ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рдеред
рд╣рдорд▓рд╛ рддреАрди рд╕реАрдПрд╕рдПрд╕ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ:
рд╕реАрдПрд╕рдПрд╕ рдЪрд░ ( рдХрд╕реНрдЯрдо рдЧреБрдг рдФрд░ var () )рд╡реЗ рдЖрдкрдХреЛ рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ: рдЪрд░ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ рдФрд░ рдкрдврд╝реЗрдВ:
.variables { --variable: 1px; height: var(--variable); }
рдЪрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗрдмрдХреАрдЯ рдореЗрдВ рдПрдХ
рдмрдЧ рдерд╛ рдЬреЛ рдЕрдирдВрдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рдерд╛) рдпрд╛ рдЫреЛрд░реЛрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рднрд╛рд╡ рдХреИрд▓реНрдХ ()рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдХреИрд▓реНрдХ () рдЖрдкрдХреЛ рдирд┐рдпрдореЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдЕрдВрдХрдЧрдгрд┐рддреАрдп рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
'width: calc(50% - 10px)'
ред
calc()
рдЖрдкрдХреЛ рдЪрд░ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрдиреЗ рдФрд░ рдПрдХ рд╣реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдХрдИ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
.calc { --variable: 1px; height: calc(var(--variable) + var(--variable)); }
рдпрд╣ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ:
- рдкрд┐рдЫрд▓реЗ рдЪрд░ рдХреЗ рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝рдХрд░ рдкреНрд░рддреНрдпреЗрдХ
calc()
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рд░реИрдЦрд┐рдХ рд╡реГрджреНрдзрд┐ рдХрд░реЗрдВ; calc()
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдЪрд░ рдШреЛрд╖рдгрд╛ рдХреЗ рд╕рд╛рде рддреЗрдЬреА рд╕реЗ рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдЬреЛ рдЕрдиреНрдп рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдЪрд░ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреА рд╣реИ:
.calc_multiple { --variable-level-0: 1px; --variable-level-1: calc(var(--variable-level-0) + var(--variable-level-0)); --variable-level-2: calc(var(--variable-level-1) + var(--variable-level-1)); --variable-level-n: calc(var(--variable-level-n-1) + var(--variable-level-n-1)); }
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдШрд╛рддреАрдп рд╕рдордп рдкрд░ рдЧрдгрдирд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдереЛрдбрд╝рд╛ рдЪрд╛рд▓рд╛рдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдмрд╛рд░ рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЬрдЯрд┐рд▓рддрд╛ рд░реИрдЦрд┐рдХ рдХреЛ рдХрдо рдХрд░ рджреЗрддреА рд╣реИред рдЪрд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЪрд░ рдорд╛рдиреЛрдВ рдХреА рдХреИрд╢рд┐рдВрдЧ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдпрджрд┐ рдпрд╣ рд╣реИ
рд╡рд┐рд╖рдо рдЕрд░реНрдерддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдпрд╣
calc()
рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рд╢реЗрд╖ рдЙрд▓реНрд▓реЗрдЦ рдХреЗ рдпреЛрдЧреНрдп рд╣реИред рдПрдХ рд╡рд┐рд╖рдо рдЪрд░ рдореЗрдВ рдкреВрд░реНрдг рдФрд░ рд╕рд╛рдкреЗрдХреНрд╖ рджреЛрдиреЛрдВ рдЗрдХрд╛рдЗрдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВред рд╡рд╣ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА:
- рдПрдХ рдирд┐рд░рдкреЗрдХреНрд╖ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЧрдгрдирд╛ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдЭрд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓рдХреНрд╖реНрдп рддрддреНрд╡ (рдЗрдХрд╛рдЗрдпреЛрдВ
'%'
/ 'em'
) рдХреЗ рдЧреБрдгреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ; - рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдПрдХ рдирд┐рд░рдкреЗрдХреНрд╖ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдЧреЛрд▓рд╛рдХрд╛рд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдЪрдп рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдЕрдЬреАрдм рдЙрдк-рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЬрдЯрд┐рд▓ рд▓реЗрдЖрдЙрдЯ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддреЗ рд╣реИрдВ (рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ 12 рдХреЙрд▓рдо рд╣реИрдВ, рд╕реНрдХреНрд░реАрди рдЪреМрдбрд╝рд╛рдИ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ 1/12? рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВ, рджреЛрд╕реНрдд, рд╡реЗ рдПрдХ рд╕рд╛рде рдЖрдПрдВрдЧреЗ? рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдпрд╛ рдЕрдВрдд рдореЗрдВ рдПрдХ рднрджреНрджрд╛ рдЕрдВрддрд░ рдЫреЛрдбрд╝ рджреЗрдВ)ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕ рдореВрд▓реНрдп рдХреЛ рд╣рд░ рдмрд╛рд░ рдкреБрдирд░реНрдЧрдгрдирд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
.non_cached { --const: calc(50% + 10px); --variable: calc(var(--const) + var(--const)); width: var(--variable); }
рджреВрд╕рд░реЗ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗрд╡рд▓ рдШреВрдордиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рд╡рд┐рд╖рдо рдорд╛рди рдХреЗ рд╕рд╛рде рдиреЗрд╕реНрдЯреЗрдб рд╡реЗрд░рд┐рдПрдмрд▓ рдПрдореНрдмреЗрдб рдХрд░рддреЗ рд╣реИрдВ:
.mixed { --mixed:calc(1% + 1px); --mixed-reference: calc(var(--mixed) + var(--mixed)); --mixed-reference-evaluates-to: calc(1% + 1px + 1% + 1px); --mixed-reference-computes-as: calc(2% + 2px); }
рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рд▓рд╛рдЦреЛрдВ (рдпрд╛ рдЕрд░рдмреЛрдВ) рддрддреНрд╡ рд╣реИрдВ ... рд╕реАрдПрд╕рдПрд╕ рдЗрдВрдЬрди рдХрдИ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рд░реИрдо рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдХрдо рдХрд░рдиреЗ, рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддрд╛рдХрд┐ рдХреБрдЫ рдмрджрд▓рдиреЗ рдкрд░ рдЧреБрдгреЛрдВ рдХреЛ рдЧрд┐рдирд╛ рдЬрд╛ рд╕рдХреЗред рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрддрд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИред
рддреЛ, рдореВрд▓ CraSSh рджреЗрдЦрд╛:
.crassh { --initial-level-0: calc(1vh + 1% + 1px + 1em + 1vw + 1cm); --level-1: calc(var(--initial-level-0) + var(--initial-level-0)); --level-2: calc(var(--level-1) + var(--level-1)); --level-3: calc(var(--level-2) + var(--level-2)); --level-4: calc(var(--level-3) + var(--level-3)); --level-5: calc(var(--level-4) + var(--level-4)); --level-6: calc(var(--level-5) + var(--level-5)); --level-7: calc(var(--level-6) + var(--level-6)); --level-8: calc(var(--level-7) + var(--level-7)); --level-9: calc(var(--level-8) + var(--level-8)); --level-10: calc(var(--level-9) + var(--level-9)); --level-11: calc(var(--level-10) + var(--level-10)); --level-12: calc(var(--level-11) + var(--level-11)); --level-13: calc(var(--level-12) + var(--level-12)); --level-14: calc(var(--level-13) + var(--level-13)); --level-15: calc(var(--level-14) + var(--level-14)); --level-16: calc(var(--level-15) + var(--level-15)); --level-17: calc(var(--level-16) + var(--level-16)); --level-18: calc(var(--level-17) + var(--level-17)); --level-19: calc(var(--level-18) + var(--level-18)); --level-20: calc(var(--level-19) + var(--level-19)); --level-21: calc(var(--level-20) + var(--level-20)); --level-22: calc(var(--level-21) + var(--level-21)); --level-23: calc(var(--level-22) + var(--level-22)); --level-24: calc(var(--level-23) + var(--level-23)); --level-25: calc(var(--level-24) + var(--level-24)); --level-26: calc(var(--level-25) + var(--level-25)); --level-27: calc(var(--level-26) + var(--level-26)); --level-28: calc(var(--level-27) + var(--level-27)); --level-29: calc(var(--level-28) + var(--level-28)); --level-30: calc(var(--level-29) + var(--level-29)); --level-final: calc(var(--level-30) + 1px); border-width: var(--level-final); border-style: solid; }
<div class="crassh"> , CSS CraSSh </div>
рдФрд░ рдпрд╣рд╛рдБ 1000 рд╕реЗ рдХрдо рд╡рд░реНрдгреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд┐рдд рд╕рдВрд╕реНрдХрд░рдг (рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдореАрдбрд┐рдпрд╛рд╡рд┐рдХрд┐) рд╣реИред
<div style="--a:1px;--b:calc(var(--a) + var(--a));--c:calc(var(--b) + var(--b));--d:calc(var(--c) + var(--c));--e:calc(var(--d) + var(--d));--f:calc(var(--e) + var(--e));--g:calc(var(--f) + var(--f));--h:calc(var(--g) + var(--g));--i:calc(var(--h) + var(--h));--j:calc(var(--i) + var(--i));--k:calc(var(--j) + var(--j));--l:calc(var(--k) + var(--k));--m:calc(var(--l) + var(--l));--n:calc(var(--m) + var(--m));--o:calc(var(--n) + var(--n));--p:calc(var(--o) + var(--o));--q:calc(var(--p) + var(--p));--r:calc(var(--q) + var(--q));--s:calc(var(--r) + var(--r));--t:calc(var(--s) + var(--s));--u:calc(var(--t) + var(--t));--v:calc(var(--u) + var(--u));--w:calc(var(--v) + var(--v));--x:calc(var(--w) + var(--w));--y:calc(var(--x) + var(--x));--z:calc(var(--y) + var(--y));--vf:calc(var(--z) + 1px);border-width:var(--vf);border-style:solid;">CraSSh</div>
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдпрд╛ рдмреНрд▓реЙрдЧ рд╕реЗ рджреВрд░ рдПрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдбреНрд░рд╛рдЗрд╡рд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреЛ HTML рддрдХ рдкреВрд░реНрдг рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ Tumblr (
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреНрд░реИрд╢ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг ) рдпрд╛ LiveJournal (
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреНрд░реИрд╢ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг ), CraSSh рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
- рд╕рд╛рдЗрдЯ рдХреЗ рдЙрди рдкреГрд╖реНрдареЛрдВ рдкрд░ UI рдХреЛ рддреЛрдбрд╝реЗрдВ рдЬреЛ рдЖрдкрдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ HTML рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░рджрд╛рди рдХрд┐рдП рдмрд┐рдирд╛, рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ CSS рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдореИрдВ MyAnimeList ( рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреНрд░реИрд╢ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг ) рдХреЛ рддреЛрдбрд╝рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рд░реЗрдбрд┐рдЯ рдЗрд╕ рд╣рдорд▓реЗ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд░реНрд╕рд░ рд╕реАрдПрд╕рдПрд╕ рдЪрд░ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрд▓рдн рд▓реЗрдЦрди рдкреГрд╖реНрдареЛрдВ рдкрд░ UI рдХреЛ рддреЛрдбрд╝реЗрдВ рдЬреЛ рдЖрдкрдХреЛ рдЗрдирд▓рд╛рдЗрди рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ HTML рдЯреИрдЧ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░, рдореЗрд░реЗ рдЦрд╛рддреЗ рдХреЛ рдмрд░реНрдмрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдирд┐рдЬреА рдкреГрд╖реНрда рдкрд░ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛ред рдпрд╣ рд╣рдорд▓рд╛ рдЬреНрдпрд╛рджрд╛рддрд░ рдореАрдбрд┐рдпрд╛рд╡рд┐рдХрд┐ рдЖрдзрд╛рд░рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрдХ рдЯреВрдЯреЗ рд╣реБрдП рдкреГрд╖реНрда рдХреЛ рдпреВрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╣рд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- HTML- рд╕рдХреНрд╖рдо рдИрдореЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдХрд╛рд░рдг
- рдпрд╣ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдИрдореЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдЪрдЯреАрдПрдордПрд▓ рдХреЛ рд╣рдЯрд╛ / рдХрдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдЖрдзреБрдирд┐рдХ рд╕реАрдПрд╕рдПрд╕ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреНрд░реИрдбрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
- CraSSh рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
- Android рдХреЗ рд▓рд┐рдП рд╕реИрдорд╕рдВрдЧ рдореЗрд▓
- CraSSh рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
- рдЖрдЙрдЯрд▓реБрдХ (рд╡реЗрдм)
- Gmail (рд╡реЗрдм)
- Gmail (Android)
- рдпрд╛рд╣реВ (рд╡реЗрдм)
- рдпрд╛рдВрдбреЗрдХреНрд╕ (рд╡реЗрдм)
- рдкреНрд░реЛрдЯреЛрдирдореЗрд▓ (рд╡реЗрдм)
- рдЬреЛрдореНрдмреНрд░рд╛ (рд╡реЗрдм, рдСрдлрд▓рд╛рдЗрди рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди)
- рд╡рд┐рдВрдбреЛрдЬ рдореЗрд▓ (рд╡рд┐рдВрдбреЛрдЬ рдЬрд╛рд╣рд┐рд░ рд╣реИ)
- рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
- рдореИрдХ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрд▓реБрдХ (рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╡реЗрдмрдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)
- рдЕрдиреНрдп рдиреЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
- рдореБрдЭреЗ рд╕рд┐рд░реНрдл рдЗрд╕ рдмрд╛рдд рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдХреНрд░реИрд╕реНрдк рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╕реАрдИрдПрдл / рдлреИрдВрдЯрдордЬреЗрдПрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдмреЙрдЯреНрд╕ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдХреНрд░рдордг рдХреА рдЧрдИ рд╕рд╛рдЗрдЯ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдХреНрд░реИрдбрд╢ рдХреЛрдб рдХреЛ ( рдЬреИрд╕реЗ рдпрд╣рд╛рдВ ) рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреА рд╣реИ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ 403 рддреНрд░реБрдЯрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИред IIRC, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдПрдореНрдмреЗрдбреЗрдб рдЗрдВрдЬрди рдореЗрдВ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП
- рдпрд╣ рд╕рдВрднрд╡рддрдГ рдмреЙрдЯ рдХреЛ рдХреНрд░реИрд╢ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧрд╛ (рдХреЛрдИ рднреА рд╣реЗрдбрд▓рд╛рдЗрдЯ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдпрд╛ рдХреБрдЫ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)
- рдпрд╣ рдбреАрдмрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬрд╡рд╛рдм рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рднреА рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд▓реЙрдЧ рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ
рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдпрд╛рдж рд╣реИ рдХрд┐ рд▓рд┐рдиреБрд╕ рдкреЛрд╕реНрдЯ ?
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдИрдЯреА рд╕реБрд░рдХреНрд╖рд╛ рдХреА рджреБрдирд┐рдпрд╛ рдПрдХ рдирдП рддрд▓ рдкрд░ рдкрд╣реБрдВрдЪ рдЧрдИ рд╣реИред
рдпрджрд┐ рдЖрдк рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рд╡реЗрдХ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
"рдирд╣реАрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рдПрдХ рд╡реЗрд╢реНрдпрд╛ рдирд╣реАрдВ рд╣реВрдБред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ тАЭ
рдЙрд╕рдХреЗ рд╡реНрдпрд╡рд╕рд╛рдп рдХрд╛рд░реНрдб рдкрд░ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рдерд╛ рдХрд┐ рдкреВрд░рд╛ рдЙрджреНрдпреЛрдЧ рд╕рдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИред
рд╕реБрд░рдХреНрд╖рд╛ рд▓реЛрдЧ рдХрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЦреБрдж рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдкрд╕рдВрдж рд╣реИ?
рдореИрдВ рдФрд░ рднреА рдЖрдЧреЗ рдмрдврд╝ рдЧрдпрд╛ рдФрд░ рдПрдХ рдкреВрд░реА рд╕рд╛рдЗрдЯ рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдХрд░ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕реБрдмрд╣ 4 рдмрдЬреЗ рддрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЖрдирдВрдж рдФрд░ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдХреБрдЫ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рдЕрд╡рд╕рд╛рдж рд╕реЗ рдмрдЪрд╛рдП рд░рдЦрддреА рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рд▓рдп рдХреЗ рд╕рд╛рдордиреЗ рдЗрд╕ рд╕реБрдВрджрд░ рдлреБрдЯрдкрд╛рде рдкрд░ рдЧреЛрддрд╛рдЦреЛрд░реА рдХрд░рддреА рд╣реИрдВред - рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдлреНрд░рдВрдЯрдПрдВрдб рд╕реЗ рдирдлрд░рдд рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдХрд┐ рдлреБрд▓рд╕реНрдЯреИрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд░реА рдиреМрдХрд░реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЗрдВ рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рдЖрд░рд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИрдВред
рд╕рдорд╛рди рд╕рд╛рдорд╛рди
рдЕрдм рдореИрдВ рдПрдХ рдЕрджреНрднреБрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рд╣рдореЗрдВ
рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдлреЙрд▓реЛ рдХрд░реЗрдВред
рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рдж