HTML5 рдЯрдЪрд╕реНрдХреНрд░реАрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдЯрдмреЙрдХреНрд╕ рдмрдирд╛рдирд╛

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



рдЖрд╡рд╢реНрдпрдХ рдЬреНрдЮрд╛рди: рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рд╕реАрдПрд╕рдПрд╕, рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдПрдбрд╡рд╛рдВрд╕реНрдб рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ: Android рдпрд╛ iOS рдбрд┐рд╡рд╛рдЗрд╕
рд╕рдордп рдмрд┐рддрд╛рдпрд╛: 2-3 рдШрдВрдЯреЗ
рд╕реНрд░реЛрдд рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
рдбреЗрдореЛ рджреЗрдЦреЗрдВ


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

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

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

рддреБрд▓рдирд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ 1998 рдХреЗ рдЖрд╕рдкрд╛рд╕ рдбреЗрд╕реНрдХрдЯреЙрдк рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо рд╕реНрдкрд░реНрд╢ рдбрд┐рд╡рд╛рдЗрд╕ рддреБрд▓рдиреАрдп рд╣реИрдВред рдЙрдирдХреЗ рдкрд╛рд╕ рдЖрдорддреМрд░ рдкрд░ рд▓рдЧрднрдЧ 256 рдПрдордмреА рд░реИрдо, рдореВрд▓ рдЖрдИрдореИрдХ рдХреЗ рд╕рд╛рде рд╕реАрдкреАрдпреВ рдкреНрд░рджрд░реНрд╢рди рд╣реЛрддрд╛ рд╣реИред рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ "рд╕рд┐рд░реНрдл рдХрд╛рдо" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЬреЛ рддрд░реАрдХреЗ рдЕрдкрдирд╛рддреЗ рд╣реИрдВ, рд╡реЗ рдореЛрдмрд╛рдЗрд▓ рдлреЛрди рдФрд░ рдЯреИрдмрд▓реЗрдЯ рдкрд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдХреНрд░реАрди рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред IOS рдФрд░ Android 3.0+ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░-рддреНрд╡рд░рд┐рдд рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╣реИрдВред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╕рднреНрдп рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рднрджреНрджрд╛ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

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

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

рдХрдерд┐рдд рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рдЙрджрд╛рд╣рд░рдг TiVo рд╣реИред рддреЗрд░рд╣ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдЬрдм рдкрд╣рд▓рд╛ TiVo рдЖрдпрд╛, рддреЛ рд╡реЗ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдзреАрдореЗ рдереЗ (16 MB RAM рдФрд░ 54 MHz CPU!)ред рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдкрд░ рдХреБрдЫ рджрдмрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХреБрдЫ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рджрд░реНрджрдирд╛рдХ рд░реВрдк рд╕реЗ рд▓рдВрдмрд╛ рд╣реЛ рд╕рдХрддрд╛ рдерд╛, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдЖрдкрдиреЗ рдХреБрдЫ рдЦреЗрд▓рдирд╛ рдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд┐рд╕реА рдиреЗ рдХрднреА рдпрд╣ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рдХреА рдХрд┐ TiVo рдзреАрдорд╛ рд╣реИред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдзреНрд╡рдирд┐ рдХреЗ рдХрд╛рд░рдг рд╣реИред TiVo рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╕рдмрд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣рд┐рд╕реНрд╕рд╛ рд╡рд╣ рдорд╛рдзреБрд░реНрдп рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдмрдЯрди рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИред рд╡рд╣ рдзреНрд╡рдирд┐ рддреБрд░рдиреНрдд рдмрдЬрд╛рдИред TiVo рдХреЗ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдиреЗ рд╕рд╛рдЙрдВрдб рд▓реЛрдб рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдХрд░ рджрд┐рдпрд╛, рддрд╛рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛ, рдпреВрдЬрд░ рдХреЛ рдкрддрд╛ рдЪрд▓реЗ рдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рдбреЗрдб рдирд╣реАрдВ рд╣реИред рдЗрд╕ рд╢реЙрд░реНрдЯ рдЯреНрдпреВрди рдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрддрд╛рдпрд╛ рдХрд┐ рдЙрдирдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕реБрдирд╛ рдЧрдпрд╛ рдерд╛ред
рдиреЗрдЯ рдкрд░, рд╣рдордиреЗ рдПрдХ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдПрдХ рд╕реНрдкрд┐рдирд░ред рдХреНрд▓рд┐рдХ рдХреЗ рдмрд╛рдж, рд╕реНрдкрд┐рдирд░ рддреБрд░рдВрдд рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрд╕реЗ рд╕реБрдирд╛ рд╣реИред рдореЛрдмрд╛рдЗрд▓ рдлреЛрди рдореЗрдВ, рд╣рдореЗрдВ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдЙрдкрдХрд░рдг


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

рд▓рд╛рдЗрдЯрдмреЙрдХреНрд╕ рдирд┐рд░реНрдорд╛рдг


рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП рд╣рдо рдХрдИ рдердВрдмрдиреЗрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдкреЗрдЬ рдмрдирд╛рдПрдВрдЧреЗред рдердВрдмрдиреЗрд▓ рдкрд░ (рдпрд╛ рдЙрдВрдЧрд▓реА рд╕реЗ рдЫреВрдХрд░) рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ рд▓рд╛рдЗрдЯрдмреЙрдХреНрд╕ рд▓реЙрдиреНрдЪ рд╣реЛрдЧрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рд▓рд╛рдЗрдЯрдмреЙрдХреНрд╕ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреА рдЙрдВрдЧрд▓реА рд╕реЗ рдЫрд╡рд┐ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░ рд▓рд╛рдЗрдЯрдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рдХреЛ рд╕реНрдкрд░реНрд╢ рдХрд░реЗрдЧрд╛ред

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

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

рд╢реБрд░реБрдЖрдд


рдирд┐рдореНрди рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдБ:
lightbox/
reset.css
slides.css
slides.html
slides.js




рдЯреЗрдореНрдкрд▓реЗрдЯ


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

рдореИрдВ CSS рдХреЛ рд╢реВрдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Eric Meyer рд╕реЗ reset.css рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдХреЛ рднреА рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдпрд╣ рдкреИрдорд╛рдиреЗ рдкрд░ рди рд╣реЛред

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

JS рдХреА рддрд░рдл, рдореИрдВ zepto.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, jQuery рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╣рд▓реНрдХрд╛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдоред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрд┐рд╕реА рднреА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдЧрддрд┐ рджреЗрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреЗрд╕реНрдЪрд░ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

 <div class="main"> <div class="welcome"> <h1>Welcome to an amazing carousel!</h1> <p>This is an example of a nice touch interface</p> </div> <div class="carousel"> <ul> <li> <a href="http://www.flickr.com/photos/protohiro/6664939239/in/photostream/"> <img data-full-height="427" data-full-width="640" src="http://farm8.staticflickr.com/7142/6664939239_7a6c846ec9_s.jpg"> </a> </li> <li> <a href="http://www.flickr.com/photos/protohiro/6664957519/in/photostream"> <img data-full-height="424" data-full-width="640" src="http://farm8.staticflickr.com/7001/6664957519_582f716e38_s.jpg"> </a> </li> <li> <a href="http://www.flickr.com/photos/protohiro/6664955215/in/photostream"> <img data-full-height="640" data-full-width="427" src="http://farm8.staticflickr.com/7019/6664955215_d49f2a0b18_s.jpg"> </a> </li> <li> <a href="http://www.flickr.com/photos/protohiro/6664952047/in/photostream"> <img data-full-height="426" data-full-width="640" src="http://farm8.staticflickr.com/7017/6664952047_6955870ecb_s.jpg"> </a> </li> <li> <a href="http://www.flickr.com/photos/protohiro/6664948305/in/photostream"> <img data-full-height="428" data-full-width="640" src="http://farm8.staticflickr.com/7149/6664948305_fb5a6276e5_s.jpg"> </a> </li> </ul> </div> </div> </body> <script src="zepto.min.js" type="text/javascript" charset="utf-8"></script> <script src="slides.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript" charset="utf-8"> //this code initializes the lightbox and shows it when the user //clicks on a slide $(document).ready(function(){ var lightbox = new saw.Lightbox('.carousel'); $(document).on('click', 'a', function(e){ e.preventDefault(); lightbox.show(this.href); }); }); </script> </html> 


рдердВрдмрдиреЗрд▓ рд╕реНрдЯрд╛рдЗрд▓


рдЕрдм рдХреБрдЫ рдЕрдЪреНрдЫреЗ рдЫреЛрдЯреЗ рдердВрдмрдиреЗрд▓ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рджреГрд╢реНрдп рдкреНрд░рднрд╛рд╡ рдЬреЛрдбрд╝реЗрдВ:

 html { background: #f1eee4; font-family: georgia; color: #7d7f94; } h1 { color: #ba4a00; } .welcome { text-align: center; text-shadow: 1px 1px 1px #fff; } .welcome h1 { font-size: 20px; font-weight: bold; } .welcome { -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */ -moz-box-sizing: border-box; /* Firefox, other Gecko */ box-sizing: border-box; /* Opera/IE 8+ */ margin:5px; padding:10px; box-shadow: 2px 2px 5px rgba(0,0,0,0.5); border-radius: 5px; } .carousel { margin:5px; } .carousel ul li { height: 70px; width: 70px; margin: 5px; overflow: hidden; display: block; float: left; border-radius: 5px; box-shadow: 1px 1px 2px rgba(0,0,0,0.5), -1px -1px 2px rgba(255,255,255,1); } 


рдореБрдЦреНрдп рд▓рд╛рдЗрдЯрдмреЙрдХреНрд╕


рд▓рд╛рдЗрдЯрдмреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рдо рдХрд░рдиреЗ рдЪрд╛рд╣рд┐рдП:


рд╕реЗрд╡рд╛ рдХрд╛рд░реНрдп

рдмрд╛рд░-рдмрд╛рд░ "-webkit-transform" рдФрд░ "Translate3d" рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рдХреБрдЫ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдмрдирд╛рдКрдВрдЧрд╛ рддрд╛рдХрд┐ рд╡реЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдВред

 function prefixify(str) { var ua = window.navigator.userAgent; if(ua.indexOf('WebKit') !== -1) { return '-webkit-' + str; } if(ua.indexOf('Opera') !== -1) { return '-o-' + str; } if(ua.indexOf('Gecko') !== -1) { return '-moz-' + str; } return str; } function setPosition(node, left) { // node.css('left', left +'px'); node.css(prefixify('transform'), "translate3d("+left+"px, 0, 0)"); } function addTransitions(node){ node.css(prefixify('transition'), prefixify('transform') + ' .25s ease-in-out'); node[0].addEventListener('webkitTransitionEnd', function(e){ window.setTimeout(function(){ $(e.target).css('-webkit-transition', 'none'); }, 0) }) } function cleanTransitions(node){ node.css(prefixify('transition'), 'none'); } 


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

рдкреНрд░рд╛рд░рдВрдн

рд▓рд╛рдЗрдЯрдмреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдПрдХ рдмреНрд▓реЙрдХ рдЪрдпрдирдХрд░реНрддрд╛ рдХреЛ рдЗрд╕рдХреЗ рдПрдХрдорд╛рддреНрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИред

 //clean namespacing window.saw = (function($){ //the lightbox constructor function Lightbox (selector) { var container_node = $(selector), wrapper, chromeBuilt, currentSlide = 0, slideData =[], boundingBox = [0,0], slideMap = {}; function init(){ //init function } return { show: show, hide: hide }; } return { Lightbox:Lightbox }; }($)); 


Init рдлрд╝рдВрдХреНрд╢рди рд╕рднреА рд▓реА рдЯреИрдЧреНрд╕ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рддрд╛ рд╣реИ, рдердВрдмрдиреЗрд▓ рдкрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реНрд▓рд╛рдЗрдбрдбрд╛рдЯрд╛ рд╕рд░рдгреА рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓рд┐рдЦрддрд╛ рд╣реИред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдореИрдВ рдПрдХ "рд╕реНрд▓рд╛рдЗрдбрдкреИрдб" рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реВрдВ рдЬреЛ "рд╕реНрд▓рд╛рдЗрдбрдбрд╛рдЯрд╛" рд╕рд░рдгреА рдореЗрдВ "href" рдердВрдмрдиреЗрд▓ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдпрд╣ рдореБрдЭреЗ рд╕рд░рдгреА рдореЗрдВ рд╕рднреА рдбреЗрдЯрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрдХреНрд░ рдХрд░рдиреЗ рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде DOM рдХреЛ рд╕рдЬрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

 function init(){ var slides = container_node.find('li'); slides.each(function(i, el){ var thisSlide = {}, thisImg = $(el).find('img'); thisSlide.url = thisImg.attr('src'); thisSlide.height = thisImg.attr('data-full-height'); thisSlide.width = thisImg.attr('data-full-width'); thisSlide.link = $(el).find('a').attr('href'); //push the slide info into the slideData array while recording the array index in the slideMap object. slideMap[thisSlide.link] = slideData.push(thisSlide) - 1; }); } 


рд╢реЗрд╖ рдЖрд░рдВрднреАрдХрд░рдг "рд╢реЛ" рд╡рд┐рдзрд┐ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред

 //this is the function called from the inline script function show(startSlide){ if(!chromeBuilt){ buildChrome(); attachEvents(); } wrapper.show(); //keep track of the viewport size boundingBox = [ window.innerWidth, window.innerHeight ]; goTo(slideMap[startSlide]); } 


рд╢реИрд▓ рдирд┐рд░реНрдорд╛рдг

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

 var wrapperTemplate = function(){ return '<div class="slidewrap">'+ '<div class="controls"><a class="prev" href="#">prev</a> | <a class="next" href="#">next</a></div>'+ '</div>'; } function buildChrome(){ wrapper = $(wrapperTemplate()).addClass('slidewrap'); $('body').append(wrapper); chromeBuilt = true; } 


рд╢реЗрд▓ рдмрдирд╛рдиреЗ рдореЗрдВ рдЕрдВрддрд┐рдо рдЪрд░рдг рдЕрдЧрд▓реЗ рдФрд░ рдкрд┐рдЫрд▓реЗ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдирд╛ рд╣реИ:

 function handleClicks(e){ e.preventDefault(); var targ = $(e.target); if(targ.hasClass('next')) { goTo(currentSlide + 1); } else if(targ.hasClass('prev')){ goTo(currentSlide - 1); } else { hide(); } } function attachEvents(){ wrapper.on('click', handleClicks, false); } 


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

рд╕реНрд▓рд╛рдЗрдб рдирд┐рд░реНрдорд╛рдг

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

 //for the slides, takes a "slide" object function slideTemplate(slide){ return '<div class="slide"><span>'+slide.id+'</span><div style="background-image:url('+slide.url.replace(/_s|_q/, '_z')+')"></div></div>'; } 


рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ (рдХрдо рд╕реЗ рдХрдо рдЕрднреА рдХреЗ рд▓рд┐рдП) рдореЛрдмрд╛рдЗрд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдзрд┐рдХ рдзреАрд░реЗ-рдзреАрд░реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВред рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЧрддрд┐ рдЖрдорддреМрд░ рдкрд░ рдкрд╕рдВрдж рдХреА рдЬрд╛рддреА рд╣реИред рдкрд╣реБрдВрдЪ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ ARIA рднреВрдорд┐рдХрд╛ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

 function buildSlide (slideNum) { var thisSlide, s, img, scaleFactor = 1, w, h; if(!slideData[slideNum] || slideData[slideNum].node){ return false; } var thisSlide = slideData[slideNum]; var s = $(slideTemplate(thisSlide)); var img = s.children('div'); //image is too big! scale it! if(thisSlide.width > boundingBox[0] || thisSlide.height > boundingBox[1]){ if(thisSlide.width > thisSlide.height) { scaleFactor = boundingBox[0]/thisSlide.width; } else { scaleFactor = boundingBox[1]/thisSlide.height; } w = Math.round(thisSlide.width * scaleFactor); h = Math.round(thisSlide.height * scaleFactor); img.css('height', h + 'px'); img.css('width', w + 'px'); }else{ img.css('height', thisSlide.height + 'px'); img.css('width', thisSlide.width + 'px'); } thisSlide.node = s; wrapper.append(s); //put the new slide into the start poisition setPosition(s, boundingBox[0]); return s; } 




рдЧреЛрдЯреЛ

"GoTo" рд╡реНрдпреВрдкреЛрд░реНрдЯ рдореЗрдВ рдЕрдиреБрд░реЛрдзрд┐рдд рдФрд░ рдЖрд╕рдиреНрди рд╕реНрд▓рд╛рдЗрдбреНрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

 function goTo(slideNum){ var thisSlide; //if the slide we are looking for doesn't exist, lets just go //back to the current slide. This has the handy effect of providing //"snap back" feedback when gesturing, the slide will just animate //back into position if(!slideData[slideNum]){ return; } thisSlide = slideData[slideNum]; //build adjacent slides buildSlide(slideNum); buildSlide(slideNum + 1); buildSlide(slideNum - 1); //make it fancy addTransitions(thisSlide.node); //put the current slide into position setPosition(thisSlide.node, 0); //slide the adjacent slides away if(slideData[slideNum - 1] && slideData[slideNum-1].node){ addTransitions(slideData[slideNum - 1 ].node); setPosition( slideData[slideNum - 1 ].node , (0 - boundingBox[0]) ); } if(slideData[slideNum + 1] && slideData[slideNum + 1].node){ addTransitions(slideData[slideNum + 1 ].node); setPosition(slideData[slideNum + 1 ].node, boundingBox[0] ); } //update the state currentSlide = slideNum; } 


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

рдЗрд╢рд╛рд░рд╛ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛


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



рд╕реНрдкрд░реНрд╢ рдШрдЯрдирд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг

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

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

 function attachTouchEvents() { var bd = document.querySelector('html'); bd.addEventListener('touchmove', handleTouchEvents); bd.addEventListener('touchstart', handleTouchEvents); bd.addEventListener('touchend', handleTouchEvents); } 


рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ TouchEvent рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЯрдЪрд╕реНрдЯрд╛рд░реНрдЯ рдФрд░ рдЯрдЪрдореЛрд╡ рдЗрд╡реЗрдВрдЯ рдореЗрдВ рдЯрдЪ рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдЯрдЪ рд╕рд░рдгреА рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред рдЕрдкрдиреА рдЙрдВрдЧрд▓реА рдХреЛ рд╕реНрд▓рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: "рдХреНрд▓рд╛рдЗрдВрдЯрдПрдХреНрд╕"ред рдЗрд╕рдореЗрдВ рдкреГрд╖реНрда рдХреЗ рдКрдкрд░реА рдмрд╛рдПрдВ рдХреЛрдиреЗ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдкрд░реНрд╢ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдорд╛рди рд╣реЛрддрд╛ рд╣реИред

iOS рдбрд┐рд╡рд╛рдЗрд╕ рдПрдХ рд╕рд╛рде рдЧреНрдпрд╛рд░рд╣ рдЯрдЪ рддрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред Android (рдЖрдЗрд╕рдХреНрд░реАрдо рд╕реИрдВрдбрд╡рд┐рдЪ рд╕реЗ рдкрд╣рд▓реЗ) рдХреЗрд╡рд▓ рдПрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдкрд░реНрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЗрд╢рд╛рд░реЗ рдЖрдкрдХреЛ рдХрдИ рд╕реНрдкрд░реНрд╢реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдлрд╝рдВрдХреНрд╢рди "рд╣реИрдВрдбрд▓рдЯреНрд╡реЗрдВрдЯ"

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рд╣рд░ рдХрдИ рдЪрд░ рдХреЛ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 var startPos, endPos, lastPos; 


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд╛рдЦрд╛ рдПрдХ рдШрдЯрдирд╛ рд╡рд╕реНрддреБ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ:

 function handleTouchEvents(e){ var direction = 0; //you could also use a switch statement if(e.type == 'touchstart') { } else if(e.type == 'touchmove' ) { } else if(e.type == 'touchend) { } 


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

 if(e.type == 'touchstart') { //record the start clientX startPos = e.touches[0].clientX; //lastPos is startPos at the beginning lastPos = startPos; //we'll keep track of direction as a signed integer. // -1 is left, 1 is right and 0 is staying still direction = 0; //now we clean off the transtions if(slideData[currentSlide] && slideData[currentSlide].node){ cleanTransitions(slideData[currentSlide].node); } if(slideData[currentSlide + 1] && slideData[currentSlide + 1].node){ cleanTransitions(slideData[currentSlide + 1].node); } if(slideData[currentSlide - 1] && slideData[currentSlide -1].node){ cleanTransitions(slideData[currentSlide -1].node); } } else if(e.type == 'touchmove' ) { 


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

 }else if(e.type == 'touchmove'){ e.preventDefault(); //figure out the direction if(lastPos > startPos){ direction = -1; }else{ direction = 1; } //make sure the slide exists if(slideData[currentSlide]){ //move the current slide into position setPosition(slideData[currentSlide].node, e.touches[0].clientX - startPos); //make sure the next or previous slide exits if(direction !== 0 && slideData[currentSlide + direction]){ //move the next or previous slide. if(direction < 0){ //I want to move the next slide into the right position, which is the same as the //current slide, minus the width of the viewport (each slide is as wide as the viewport) setPosition(slideData[currentSlide + direction].node, (e.touches[0].clientX - startPos) - boundingBox[0]); }else if(direction > 0){ setPosition(slideData[currentSlide + direction].node, (e.touches[0].clientX - startPos) + boundingBox[0]); } } } //save the last position, we need it for touch end lastPos = e.touches[0].clientX; }else if(e.type == 'touchend'){ 


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



 }else if(e.type == 'touchend'){ //figure out if we have moved left or right beyond a threshold //(50 pixels in this case) if(lastPos - startPos > 50){ goTo(currentSlide-1); } else if(lastPos - startPos < -50){ goTo(currentSlide+1); }else{ //we are not advancing, so we need to "snap back" to the previous position addTransitions(slideData[currentSlide].node); setPosition(slideData[currentSlide].node, 0); if(slideData[currentSlide + 1] && slideData[currentSlide + 1].node){ addTransitions(slideData[currentSlide + 1]); setPosition(slideData[currentSlide + 1].node, boundingBox[0]); } if(slideData[currentSlide - 1] && slideData[currentSlide - 1].node){ addTransitions(slideData[currentSlide - 1]); setPosition(slideData[currentSlide - 1].node, 0 - boundingBox[0]); } } } 


рдЕрдм рд╕рднреА рдореВрд▓ рддрддреНрд╡ рдпрдерд╛рд╡рдд рд╣реИрдВред рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯрдЪ рд▓рд╛рдЗрдЯрдмреЙрдХреНрд╕ рд╣реИ!

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

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


All Articles