{"id":281412,"date":"2016-11-23T13:50:04","date_gmt":"2016-11-23T10:50:04","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=281412"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=281412","title":{"rendered":"Javascript-\u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u0430\u043a \u0432 jQuery, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438"},"content":{"rendered":"<p>\u0427\u0430\u0441\u0442\u043e \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0443 \u0438\u043b\u0438 \u0438\u043d\u0443\u044e \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0437\u043d\u0430\u043a\u043e\u043c\u0443\u044e \u0432\u0435\u0449\u044c, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0441\u044f \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u043a\u043e\u043b\u043b\u0435\u0433. \u0418 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0443 \u043d\u0430\u0441, \u0432\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043e\u0432\u0435\u0442\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f: \u043c\u043e\u043b, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438 \u0442\u0443 \u0438\u043b\u0438 \u0438\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u044c \u0442\u043e\u0442 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0448\u0438 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u0410\u043d\u0433\u0443\u043b\u044f\u0440\u0435 (\u043f\u0440\u043e\u0441\u0442\u043e_\u043d\u0430_\u0410\u043d\u0433\u0443\u043b\u044f\u0440\u0435 ))) ), \u0438 \u043d\u0435 \u043d\u0430\u0434\u043e \u0437\u0430\u0431\u0438\u0432\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c\u0438 \u0432\u0435\u0449\u0430\u043c\u0438.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u0438\u043d\u043e\u0433\u0434\u0430 \u0441\u0442\u043e\u044f\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442 \u043d\u0435 \u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u0434\u0435\u043c\u043e\u043a\u0440\u0430\u0442\u0438\u044e (\u0447\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043e\u043d \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u043f\u0430\u0441\u0430\u0435\u0442). \u041e\u0431 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u044f \u0438 \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0435.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f \u0442\u0430\u043a\u0430\u044f. \u041c\u044b \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u043b\u0430 \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c Javascipt. \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 \u043c\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 (\u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0440\u0430\u0441\u0442\u0432\u043e\u0440\u0435\u043d\u0438\u0435, \u043f\u043b\u0430\u0432\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u043e \u044d\u043a\u0440\u0430\u043d\u0443 \u0438 \u0442.\u043f.)<\/p>\n<p>  \u0421\u0430\u043c\u044b\u043c \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0439\u0442\u0438 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0432 \u0442\u043e\u043c \u0436\u0435 jQuery, \u0438 \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432 \u0441\u0432\u043e\u0451\u043c \u043a\u043e\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e, \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0431\u0435\u0433\u043b\u043e\u043c \u0432\u0437\u0433\u043b\u044f\u0434\u0435 \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043a\u043e\u0434 jQuery \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442 \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0418 \u043f\u043e\u0442\u043e\u043c, \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432\u044b\u0434\u0435\u043b\u0438\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0447\u0442\u043e\u0431\u044b, \u043d\u0435 \u043e\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u043e\u043f\u044b\u0442 \u043a\u043e\u043b\u043b\u0435\u0433, \u0441\u0435\u0441\u0442\u044c \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0430\u043c\u043e\u043c\u0443. \u0421\u0435\u0439\u0447\u0430\u0441, \u043e\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430\u0437\u0430\u0434, \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u044b\u043b \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438.<\/p>\n<p>  <b>\u0418\u0442\u0430\u043a, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435<\/b><\/p>\n<p>  \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f:<\/p>\n<p>  1) \u0410\u043d\u0438\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043b\u044e\u0431\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e<br \/>  2) \u0421\u043f\u0438\u0441\u043e\u043a \u0430\u043d\u0438\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0437\u0430\u0434\u0430\u043d (\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b, \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043e\u0442\u0441\u0442\u0443\u043f\u044b, \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c) <br \/>  3) \u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f)<br \/>  4) \u041f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044e \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u044e\u0431\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043b\u043b\u0431\u044d\u043a<br \/>  5) \u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0440\u0432\u0430\u043d\u0430<\/p>\n<p>  \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0437\u0430 \u043f\u0443\u043d\u043a\u0442\u044b 1-4 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043e\u0434\u043d\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0437\u0430 \u043f\u0443\u043d\u043a\u0442 5 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f. \u0412\u0441\u0435\u0433\u043e \u0434\u0432\u0435 (\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0442\u0440\u0438 \ud83d\ude42 ). \u0414\u0430\u043b\u0435\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0445\u043e\u0434 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0441 \u043a\u0440\u0430\u0442\u043a\u0438\u043c\u0438 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f\u043c\u0438, \u0437\u0430\u0447\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u0442 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u0431\u043b\u043e\u043a \u0438 \u043a\u0430\u043a \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0434\u0430\u043c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440.<\/p>\n<p>  <b>\u041d\u0430\u0447\u043d\u0451\u043c<\/b><\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0441\u043e\u0437\u0434\u0430\u0451\u043c var $ = {d: window.document, w: window}, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043b\u0435\u0437\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0432 window.<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438:<\/p>\n<pre><code class=\"javascript\">$.w.ltAnimate = function (el, props, opts, cb) {});<\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c el \u2014 \u0430\u043d\u0438\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, props \u2014 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, opts \u2014 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438, cb \u2014 \u043a\u043e\u043b\u043b\u0431\u044d\u043a.<\/p>\n<p>  \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0435\u0451 \u043d\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c. \u0414\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c self, \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 id. \u0421\u0440\u0430\u0437\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 1<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\"> var self = this, \tid = new Date().getTime(); \/\/ id \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 self._debug = true; \/\/ \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 if ((typeof el == &quot;string&quot;) && el) el = this.ltElem(el); if ((typeof el != &quot;object&quot;) || !el || (typeof el.nodeType != &quot;number&quot;) || (el.nodeType &gt; 1)) { \tdoFail(&quot;\u041d\u0435\u0442 \u0430\u043d\u0438\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430&quot;); \treturn; }\t \/\/ \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 opts switch (typeof opts) { \tcase &quot;number&quot;: \t\topts = {duration: opts}; \t\tbreak; \tcase &quot;function&quot;: \t\topts = {cbDone: opts}; \t\tbreak; \tcase &quot;object&quot;: \t\tif (!opts) opts = {}; \t\tbreak; \tdefault: \t\topts = {}; } if (typeof cb == &quot;function&quot;) opts.cbDone = cb; \/\/ \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044f var defaultOptions = { \ttick : 30,\t\t\t\t\t\t\t\t\t\/\/ \u043f\u0435\u0440\u0438\u043e\u0434 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445, \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0434\u0435\u0441\u044c \tduration : 1000,\t\t\t\t\t\t \t\/\/ \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \teasing : 'linear',\t\t\t\t\t \t\/\/ \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0430\u0441\u0447\u0451\u0442\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \tcbDone : function() {\t\t\t\t\t\/\/ \u043a\u043e\u043b\u043b\u0431\u044d\u043a \u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u0447\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \t\tif (self._debug) $.w.console.log(&quot;\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f [id: &quot; + id + &quot;] \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0434\u0430\u0447\u043d\u043e&quot;); \t}, \tcbFail : function() {\t\t\t\t\t\t\/\/ \u043a\u043e\u043b\u043b\u0431\u044d\u043a \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \t\tif (self._debug) $.w.console.log(&quot;\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f [id: &quot; + id + &quot;] \u043f\u0440\u043e\u0448\u043b\u0430 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e&quot;); \t} } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <u>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/u>: \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0443\u0434\u043e\u0431\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e doFail.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c, \u0432\u043d\u043e\u0441\u0438\u043c \u0432 \u043c\u0430\u0441\u0441\u0438\u0432:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 2<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\"> \/\/ \u0437\u0430\u043d\u043e\u0441\u0438\u043c \u0432 \u043c\u0430\u0441\u0441\u0438\u0432, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c var instructions = []; for (var key in props) { \tif (!props.hasOwnProperty(key)) continue; \tinstructions.push([key, props[key]]); } \/\/ \u0435\u0441\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0435\u0447\u0435\u0433\u043e, \u0432\u044b\u0434\u0430\u0451\u043c \u043e\u0448\u0438\u0431\u043a\u0443 if (instructions.length === 0) { \tdoFail(&quot;\u041d\u0435 \u0441\u043a\u0430\u0437\u0430\u043d\u043e, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c&quot;); \treturn; } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0414\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u043c\u0438 \u0442\u0430\u043c, \u0433\u0434\u0435 \u044d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e (\u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u043c\u0438):<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 3<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\"> \/\/ \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043e\u043f\u0446\u0438\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 var optionsList = [],  \teasing = {linear: 1, swing:1, quad:1, cubic:1}; for (var key in opts) { \tif (!opts.hasOwnProperty(key)) continue; \tswitch (key) { \t\tcase &quot;duration&quot;:  \t\t\tif (typeof opts[key] != &quot;number&quot;) { \t\t\t\t$.w.console.log(&quot;ltAnimate(): \u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u0414\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u043e\u043c. \u0411\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c&quot;); \t\t\t\tcontinue;  \t\t\t}  \t\t\tbreak; \t\tcase &quot;easing&quot;:  \t\t\tif (typeof easing[opts[key]] == &quot;undefined&quot;) { \t\t\t\t$.w.console.log(&quot;ltAnimate(): \u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 easing. \u0411\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f&quot;); \t\t\t\tcontinue;  \t\t\t} \t\t\tbreak; \t\tcase &quot;cbDone&quot;: \t\tcase &quot;cbFail&quot;: \t\t\tif (typeof opts[key] != &quot;function&quot;) { \t\t\t\t$.w.console.log(&quot;ltAnimate(): \u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u041a\u043e\u043b\u043b\u0431\u044d\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439!&quot;);\t\t\t\t \t\t\t\tcontinue; \t\t\t} \t\t\tbreak; \t\tdefault:\t\t \t\t\t$.w.console.log(&quot;ltAnimate(): \u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043e\u043f\u0446\u0438\u0439!&quot;); \t\t\tcontinue; \t} \toptionsList.push([key, opts[key]]) } \/\/ \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c options \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 defaultOptions var options = defaultOptions; if (optionsList.length) { \tfor (var i=0; i &lt; optionsList.length; i++) { \t\tif (optionsList[i][0] == 'duration') options.duration = optionsList[i][1]; \t\tif (optionsList[i][0] == 'easing') options.easing = optionsList[i][1]; \t\tif (optionsList[i][0] == 'cbDone') options.cbDone = optionsList[i][1]; \t\tif (optionsList[i][0] == 'cbFail') options.cbFail = optionsList[i][1]; \t} } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0438\u0440.<\/p>\n<p>  \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0435. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044d\u0442\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432 \u044d\u0442\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u0435\u0433\u043e \u0432\u0438\u0434\u043e\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c.<\/p>\n<pre><code class=\"javascript\"> \/\/ \u043e\u0431\u044a\u0435\u043a\u0442, \u043a\u0443\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 var startParams = {}; <\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0434\u043e \u043d\u0430\u0441 \u0434\u043e\u0445\u043e\u0434\u0438\u0442, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0435\u0449\u0451 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u043e\u043f\u0438\u0448\u0435\u043c \u0430\u043d\u0438\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 (\u043e \u043d\u0435\u0439 \u0447\u0443\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435). \u0410 \u043f\u043e\u043a\u0430 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u0432\u0430\u0436\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443.<\/p>\n<p>  <b>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439<\/b><\/p>\n<p>  \u0414\u0430, \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u0451 \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 (\u0438 \u0435\u0449\u0451 \u043d\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b \u0435\u0451). \u041d\u0430\u0448\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0443\u043c\u0435\u0442\u044c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0446\u0435\u043f\u044c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u0434\u0430\u043d \u043a\u043e\u0434. \u041a \u043d\u0435\u043c\u0443 \u0435\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0436\u0443 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u044d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 4<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\"> \/\/ \u0435\u0441\u043b\u0438 \u0432\u0442\u043e\u0440\u0430\u044f \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435 if (el.ltAnimateQueue && el.ltAnimateQueue.length &gt; 0) {  \t\/\/ \u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0435\u0440\u0435\u0437 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0435\u0451 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c (\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u0443\u0433\u0430\u0434\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f, \u0442.\u043a. \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0441 \u0443\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430) \tvar animateEnds = 1, \t\t timeNow = new Date().getTime();  \tfor (var i=0; i &lt; el.ltAnimateQueue.length; i++) { \t\tif (i == 0) { \t\t\tanimateEnds = el.ltAnimateQueue[i][1] - timeNow + el.ltAnimateQueue[i][0]; \t\t} else { \t\t\tanimateEnds += el.ltAnimateQueue[i][1]; \t\t} \t}  \t\/\/ \u0437\u0430\u043d\u043e\u0441\u0438\u043c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439 \tel.ltAnimateQueue.push([timeNow + animateEnds, options.duration]);  \t\/\/ \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0438 \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0438\u0441\u044c \u0438 \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u044d\u0442\u0443 \tvar thisTimeout = $.w.setTimeout(function(){ \t\tcheckAnimation(); \t}, animateEnds);  \t\/\/ \u043c\u0430\u0441\u0441\u0438\u0432 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0434\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u043d\u0443\u0436\u0435\u043d \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 ltAnimateStop \tif (!el.ltAnimateTimeouts) { \t\tel.ltAnimateTimeouts = []; \t} \tel.ltAnimateTimeouts.push(thisTimeout);  \/\/ \u043f\u0435\u0440\u0432\u0430\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 } else { \t\/\/ \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0432\u0430\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0435 \tel.ltAnimateQueue = [[new Date().getTime(), options.duration]]; \tstartAnimation(); }   \/\/ \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0438 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u044d\u0442\u0443  function checkAnimation() {  \t\/\/ \u0435\u0441\u043b\u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c  \tif (!el.ltAnimateIsDoing) {  \t\tstartAnimation();  \t} else {  \t\t\/\/ \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c  \t\tfunction _check() {  \t\t\tif (!el.ltAnimateIsDoing) {  \t\t\t\t$.w.clearInterval(_checking);  \t\t\t\tstartAnimation();  \t\t\t}  \t\t}  \t\tvar _checking = $.w.setInterval(_check, 30);  \t}  } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041c\u044b \u0433\u043e\u0442\u043e\u0432\u044b \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u0435\u0451 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 startAnimation(). \u0412\u043e\u0442 \u0442\u0443\u0442-\u0442\u043e, \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435, \u043c\u044b \u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043d\u0430\u0448 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0447\u0435\u0440\u0435\u0437 \u0435\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 (\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0435\u043b\u044c\u0437\u044f, \u0442.\u043a. \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043f\u043e\u043a\u0430 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u043c\u043e\u0433 \u0431\u044b\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0451\u043d):<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 5<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\"> function startAnimation() { \t\/\/ \u0444\u043b\u0430\u0433 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \tel.ltAnimateIsDoing = true;  \t\/\/ \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \tvar startStyles = self.ltStyle(el);  \t\/\/ \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \tstartParams.left = parseInt(startStyles.left); \tstartParams.right = parseInt(startStyles.right); \tstartParams.top = parseInt(startStyles.top) + 0.01; \tstartParams.bottom = parseInt(startStyles.bottom) - 0.01; \tstartParams.width = parseInt(startStyles.width); \tstartParams.height = parseInt(startStyles.height); \tstartParams.opacity = parseFloat(startStyles.opacity); \tstartParams.marginTop = parseInt(startStyles.marginTop); \tstartParams.marginBottom = parseInt(startStyles.marginBottom); \tstartParams.marginLeft = parseInt(startStyles.marginLeft); \tstartParams.marginRight = parseInt(startStyles.marginRight); \tstartParams.parentWidth = parseInt(self.ltStyle(el.parentNode).width); \tstartParams.parentHeight = parseInt(self.ltStyle(el.parentNode).height);  \t\/\/ \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043b\u044f Chrome \u0438 IE \tfor (key in startParams) { \t\tif (key == 'left' && !startParams[key]) { \t\t\t startParams.left = startParams.parentWidth - startParams.right - startParams.width || 0; \t\t} \t\tif (key == 'right' && !startParams[key]) { \t\t\tstartParams.right = startParams.parentWidth - startParams.left - startParams.width || 0; \t\t} \t\tif (key == 'bottom' && !startParams[key]) { \t\t\tstartParams.bottom = startParams.parentHeight - startParams.top - startParams.height || 0; \t\t} \t\tif (key == 'top' && !startParams[key]) { \t\t\tstartParams.top = startParams.parentHeight - startParams.bottom - startParams.height || 0; \t\t} \t} \t\/\/ \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \tel.currentAnimation = new doAnimation({ \t\telement : el, \t\tdelay : defaultOptions.delay \t}); } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0442\u0443\u0442 \u043c\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0430\u0441\u0442 \u043d\u0430\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0442\u0438\u043b\u0435\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430. \u041f\u0430\u043c\u044f\u0442\u0443\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u0448 \u043a\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c JS, \u0430 \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 IE8 (\u0434\u0430-\u0434\u0430, \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0434\u0430\u0451\u0442\u0441\u044f \u0437\u0430 \u0434\u0435\u043d\u044c\u0433\u0438 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u00ab\u044d\u0442\u043e \u043d\u0435 \u043c\u043e\u0434\u043d\u043e\u00bb \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f!), \u0441\u0436\u0438\u043c\u0430\u0435\u043c \u0432\u0441\u0451 \u0432\u043e\u043b\u044e \u0432 \u043a\u0443\u043b\u0430\u043a \u0438 \u0438\u0434\u0451\u043c \u0437\u0430\u0431\u0430\u0440\u044b\u0432\u0430\u0442\u044c \u043e\u0441\u043b\u0438\u043d\u044b\u0435 \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u043a\u0438:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 6<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\"> \/** * \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0441\u0442\u0438\u043b\u0435\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 (\u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0430\u043d \u0442\u043e\u043b\u044c\u043a\u043e el) \u043b\u0438\u0431\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f (\u0432 styleName \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430). * opts - \u043e\u0431\u044a\u0435\u043a\u0442, \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e computed \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u0432\u043d\u043e true. \u0415\u0441\u043b\u0438 \u0434\u0430, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0435\u0441\u043b\u0438 false - \u0438\u043d\u043b\u0430\u0439\u043d\u043e\u0432\u044b\u0439. * \u0415\u0441\u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u043e\u0434\u0430\u043d \u043d\u0435\u044f\u0432\u043d\u043e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0435\u0433 div) \u0438 \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430. * \u0414\u043b\u044f IE8 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 %, auto, thin\/medium\/thick \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0438\u0434. * Opacity \u0434\u043b\u044f IE8 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0438\u0434\u0435 (\u043e\u0442 0 \u0434\u043e 1) * * @param {DOM} el - \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 * @param {string} style - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0438\u043b\u044f, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c * @param {Object} opts - \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 * * @returns {(number|string)} value - \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 *\/ $.w.ltStyle = function(el, styleName, opts) {\t \tif (!opts || typeof opts != 'object' || typeof opts.computed != 'boolean') opts = {computed : true}; \tif (typeof el == 'string') el = this.ltElem(el); \t\/\/ \u0435\u0441\u043b\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043c\u0430\u0441\u0441\u0438\u0432 (NodeList), \u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \tif (!el || !el.nodeType || (el.nodeType != 1)) return ''; \tvar _style; \t\/\/ \u0432 IE8 \u0432\u043c\u0435\u0441\u0442\u043e getComputedStyle \u0435\u0441\u0442\u044c currentStyle \tif (!$.w.getComputedStyle) { \t\tvar __style = el.currentStyle, \t\t\t_style = {}; \t\tfor (var i in __style) { \t\t\t_style[i] = __style[i]; \t\t} \t\t\/\/ \u0441\u0442\u0438\u043b\u0438, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432 IE8 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u043e\u0434\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438: pixelLeft, pixelRight \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 - \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044f \t\tvar pixel = { \t\t\tleft: 1, \t\t\tright: 1, \t\t\twidth: 1, \t\t\theight: 1, \t\t\ttop: 1, \t\t\tbottom: 1 \t\t}; \t\t\/\/ \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0441\u0442\u0438\u043b\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0445\u0430\u043a http:\/\/erik.eae.net\/archives\/2007\/07\/27\/18.54.15\/#comment-102291 \t\tvar other = { \t\t\tpaddingLeft: 1, \t\t\tpaddingRight: 1, \t\t\tpaddingTop: 1, \t\t\tpaddingBottom: 1, \t\t\tmarginLeft: 1, \t\t\tmarginRight: 1, \t\t\tmarginTop: 1, \t\t\tmarginBottom: 1 \t\t}; \t\tvar leftCopy = el.style.left; \t\tvar runtimeLeftCopy = el.runtimeStyle.left; \t\t\/\/ \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0442\u0438\u043b\u0435\u0439 \u0441\u0440\u0430\u0437\u0443 \t\tif (!styleName) { \t\t\t\/\/ \u0442\u043e\u043b\u0449\u0438\u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446 \u0432 IE8 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 \u0432\u0438\u0434\u0435 \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445, \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043c \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0438\u0434 \t\t\tfor (c in _style) { \t\t\t\tif (!_style.hasOwnProperty(c)) continue; \t\t\t\tif (c.indexOf(&quot;border&quot;) !== 0) continue; \t\t\t\tswitch (_style[c]) { \t\t\t\t\tcase &quot;thin&quot;: \t\t\t\t\t\t_style[c] = 2; \t\t\t\t\t\tbreak; \t\t\t\t\tcase &quot;medium&quot;: \t\t\t\t\t\t_style[c] = 4; \t\t\t\t\t\tbreak; \t\t\t\t\tcase &quot;thick&quot;: \t\t\t\t\t\t_style[c] = 6; \t\t\t\t\t\tbreak; \t\t\t\t\tdefault: \t\t\t\t\t\t_style[c] = 0; \t\t\t\t} \t\t\t} \t\t\t\/\/pixel \t\t\tfor (var key in pixel) { \t\t\t\t_style[key] = el.style[&quot;pixel&quot; + key.charAt(0).toUpperCase() + key.replace(key.charAt(0), &quot;&quot;)]; \t\t\t} \t\t\t\/\/ \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0437\u0430\u043c\u0435\u043d\u044b getComputedStyle \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \t\t\tfor (var key in other) { \t\t\t\tel.runtimeStyle.left = el.currentStyle.left; \t\t\t\tel.style.left = _style[key]; \t\t\t\t_style[key] = el.style.pixelLeft; \t\t\t\tel.style.left = leftCopy; \t\t\t\tel.runtimeStyle.left = runtimeLeftCopy; \t\t\t} \t\t\/\/ \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f \t\t} else {\t \t\t\tif (_style[styleName]) { \t\t\t\tif (style.indexOf(&quot;border&quot;) === 0) \t\t\t\t\tswitch (_style[styleName]) { \t\t\t\t\t\tcase &quot;thin&quot;: \t\t\t\t\t\t\t_style[styleName] = 2; \t\t\t\t\t\t\tbreak; \t\t\t\t\t\tcase &quot;medium&quot;: \t\t\t\t\t\t\t_style[styleName] = 4; \t\t\t\t\t\t\tbreak; \t\t\t\t\t\tcase &quot;thick&quot;: \t\t\t\t\t\t\t_style[styleName] = 6; \t\t\t\t\t\t\tbreak; \t\t\t\t\t\tdefault: \t\t\t\t\t\t\t_style[styleName] = 0; \t\t\t\t\t} \t\t\t\t} else { \t\t\t\t\tif (pixel[styleName]) { \t\t\t\t\t\t_style[styleName] = el.style[&quot;pixel&quot; + key.charAt(0).toUpperCase() + key.replace(key.charAt(0), &quot;&quot;)]; \t\t\t\t\t} else { \t\t\t\t\t\tel.runtimeStyle.left = el.currentStyle.left; \t\t\t\t\t\tel.style.left = _style[styleName]; \t\t\t\t\t\t_style[styleName] = el.style.pixelLeft; \t\t\t\t\t\tel.style.left = leftCopy; \t\t\t\t\t\tel.runtimeStyle.left = runtimeLeftCopy; \t\t\t\t\t} \t\t\t\t} \t\t} \t\t\/\/ \u043a\u043e\u0441\u0442\u044b\u043b\u044c \u0434\u043b\u044f opacity IE8 \t\tif (_style.filter.match('alpha')) { \t\t\t_style.opacity = _style.filter.substr(14); \t\t\t_style.opacity = parseInt(_style.opacity.substring(0, _style.opacity.length - 1)) \/ 100; \t\t} else { \t\t\t_style.opacity = 1; \t\t} \t\/\/ \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b \t} else {\t \t\tif (opts.computed) { \t\t\t_style = $.w.getComputedStyle(el, null); \t\t} else {\t\t\t \t\t\t_style = el.style.styleName;\t\t\t \t\t} \t} \tif (!styleName) { \t\treturn _style || ''; \t} else { \t\treturn _style[styleName] || ''; \t} }; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0412\u043e\u0442, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0432\u0441\u0435\u0433\u043e-\u0442\u043e \u0434\u0435\u043b\u043e\u0432: \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0442\u0438\u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430! \u0410\u043d-\u043d\u0435\u0442, \u0438 \u0437\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u0442\u0432\u0430.<\/p>\n<p>  \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0438\u0441\u0430\u043d, \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u044b \u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0432 \u043d\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u0438\u0434. <b>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0438\u0448\u0435\u043c \u043a\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/b> \u041e\u043d \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0437\u0430\u043a\u043b\u044e\u0447\u0451\u043d \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 doAnimation(params) {};<\/p>\n<p>  \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0435\u0451 \u0447\u0430\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u043d\u0438\u0436\u0435, \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u2014 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 (\u00ab\u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c?\u00bb). \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0432\u0441\u0435 \u043f\u043e\u043c\u043d\u044f\u0442, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 (\u0440\u0430\u0437\u043c\u0435\u0440\u044b, \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043e\u0442\u0441\u0442\u0443\u043f\u044b) \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u043c\u0438, \u043d\u043e \u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u043c\u0438:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 7<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\"> \/\/ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 var val = instructions[i][1].toString(); \/\/ \u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0437\u0430\u0434\u0430\u043d \u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445 val.match(\/\\%\/) ? percent = true : percent = false; val = parseFloat(val); var x; switch (instructions[i][0]) { \tcase 'top' : \t\tx = function(factor, val, percent) { \t\t\telement.style.bottom = ''; \t\t\telement.style.top = startParams.top - (startParams.top - (percent ? startParams.parentHeight * val \/ 100 : val))*factor + 'px'; \t\t}; \t\tbreak; \tcase 'bottom' : \t\tx = function(factor, val, percent) { \t\t\telement.style.top = ''; \t\t\telement.style.bottom = startParams.bottom - (startParams.bottom - (percent ? (startParams.parentHeight * val \/ 100) : val))*factor + 'px'; \t\t}; \t\tbreak; \t case 'left' : \t\tx = function(factor, val, percent) { \t\t\telement.style.right = ''; \t\t\telement.style.left = startParams.left - (startParams.left - (percent ? (startParams.parentWidth * val \/ 100) : val))*factor + 'px'; \t\t}; \t\tbreak; \tcase 'right' : \t\tx = function(factor, val, percent) { \t\t\telement.style.left = ''; \t\t\telement.style.right = startParams.right - (startParams.right - (percent ? (startParams.parentWidth * val \/ 100) : val))*factor + 'px'; \t\t}; \t\tbreak; \tcase 'width' : \t\tx = function(factor, val, percent) { \t\t\telement.style.width = startParams.width - (startParams.width - (percent ? (startParams.width * val \/ 100) : val))*factor + 'px'; \t\t}; \t\tbreak; \tcase 'height' : \t\tx = function(factor, val, percent) { \t\t\telement.style.height = startParams.height - (startParams.height - (percent ? (startParams.height * val \/ 100) : val))*factor + 'px'; \t\t}; \t\tbreak; \tcase 'opacity' : \t\tx = function(factor, val, percent) { \t\t\t\/\/ IE8 \t\t\tif (!$.w.getComputedStyle) { \t\t\t\telement.style.filter = 'alpha(opacity=' + (startParams.opacity - (startParams.opacity - (percent ? (val \/ 100) : val))*factor) * 100 + ')'; \t\t\t} else { \t\t\t\telement.style.opacity = startParams.opacity - (startParams.opacity - (percent ? (val \/ 100) : val))*factor; \t\t\t} \t\t} \t\tbreak; \tcase 'marginTop' : \t\tx = function(factor, val, percent) { \t\t\telement.style.marginBottom = 'auto'; \t\t\telement.style.marginTop = startParams.marginTop - (startParams.marginTop - (percent ? (startParams.height * val \/ 100) : val))*factor + 'px'; \t\t}; \t\tbreak; \tcase 'marginBottom' : \t\tx = function(factor, val, percent) { \t\t\telement.style.marginTop = 'auto'; \t\t\telement.style.marginBottom = startParams.marginBottom - (startParams.marginBottom - (percent ? (startParams.height * val \/ 100) : val))*factor + 'px'; \t\t}; \t\tbreak; \tcase 'marginLeft' : \t\tx = function(factor, val, percent) { \t\t\telement.style.marginRight = 'auto'; \t\t\telement.style.marginLeft = startParams.marginLeft - (startParams.marginLeft - (percent ? (startParams.width * val \/ 100) : val))*factor + 'px'; \t\t}; \t\tbreak; \tcase 'marginRight' : \t\tx = function(factor, val, percent) { \t\t\t\telement.style.marginLeft = 'auto'; \t\t\t\telement.style.marginRight = startParams.marginRight - (startParams.marginRight - (percent ? (startParams.width * val \/ 100) : val))*factor + 'px'; \t\t} \t\tbreak; \t\/\/ \u0435\u0441\u043b\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u043c \tdefault : x = function(){}; } \/\/ \u0437\u0430\u043d\u043e\u0441\u0438\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 exec.push([x, val, percent]); }  var eLength = exec.length; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <b>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043c\u044b \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0441\u0435\u0440\u0434\u0446\u0443 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430<\/b><\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0434\u0443\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0442\u0430\u043a\u043e\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f? \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u043b\u044e\u0431\u043e\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0441\u0443\u0442\u044c \u0437\u0430\u043c\u044b\u0441\u0435\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<blockquote><p><i>\u0421\u0430\u043c\u0443\u0440\u0430\u0439, \u0432\u0437\u043c\u0430\u0445\u043d\u0443\u0432\u0448\u0438\u0439 \u043c\u0435\u0447\u043e\u043c<br \/>  \u041f\u043e\u0434\u043e\u0431\u0435\u043d \u0441\u0430\u043c\u0443\u0440\u0430\u044e, \u043d\u0435 \u0432\u0437\u043c\u0430\u0445\u043d\u0443\u0432\u0448\u0435\u043c\u0443 \u043c\u0435\u0447\u043e\u043c,<br \/>  \u041d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0437\u043c\u0430\u0445\u043d\u0443\u0432\u0448\u0438\u0439 \u043c\u0435\u0447\u043e\u043c<\/i><\/p><\/blockquote>\n<p>  \u0412 \u043c\u0438\u0440\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043b\u044e\u0431\u0443\u044e \u043f\u043e\u044d\u0437\u0438\u044e \u0432 \u0446\u0438\u0444\u0440\u0443. \u0422\u043e \u0435\u0441\u0442\u044c, \u0431\u043b\u0438\u0436\u0435 \u043a \u0434\u0435\u043b\u0443, \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0435 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b. <\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0434\u0443\u043c\u0430\u0435\u043c\u0441\u044f \u2014 \u043d\u0443\u0436\u0435\u043d \u043b\u0438 \u043d\u0430\u043c \u00ab\u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442\u00bb? \u041d\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0442 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b. \u041d\u0430 \u0434\u0435\u043b\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0435\u0441\u0442\u044c \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u043e\u0437\u0433\u0430 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432 \u043e\u0434\u043d\u0443 \u0441\u0446\u0435\u043d\u0443. \u041e\u043f\u044b\u0442\u043d\u044b\u043c \u043f\u0443\u0442\u0451\u043c \u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b, \u0447\u0442\u043e 30 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0441\u0430\u043c\u044b\u0439 \u0440\u0430\u0437.<\/p>\n<p>  \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u2014 \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435, \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0432\u043d\u044b\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430. \u0410 \u0437\u0430 \u0440\u0430\u0432\u043d\u044b\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443 \u043d\u0430\u0441 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 setInterval:<\/p>\n<pre><code class=\"javascript\"> el.ltAnimateInterval = $.w.setInterval(function(){     _animating(); }, options.tick); <\/code><\/pre>\n<p>  \u0412\u043e\u0442 \u044d\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430\u0448 \u00ab\u0434\u0432\u0438\u0436\u043e\u043a\u00bb \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438. <\/p>\n<p>  <u>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/u>: \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043a\u0430\u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0432\u0435\u0434\u044c \u043d\u0430\u043c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043d\u0443\u0436\u0435\u043d \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0438\u0437\u0432\u043d\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e (\u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0431\u043d\u0443\u043b\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b).<\/p>\n<p>  \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u0441\u0451 \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 8<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\"> \/\/ jumpToEnd - true\/false - \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435, \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u0439\u0434\u044f \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 function _animating(param, jumpToEnd, callback) { \tcounter++; \t\/\/ \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0442 0 \u0434\u043e 1 \tvar progress = counter \/ animationLength; \t\/\/ \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 stopAnimation \tif (param == animationLength) { \t\t$.w.clearInterval(el.ltAnimateInterval); \t\t\/\/ \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \t\tif (jumpToEnd) _step(getProgress(1));\t\t\t\t \t\t\/\/ \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439 \t\tel.ltAnimateQueue.splice(0, 1); \t\t\/\/ \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0444\u043b\u0430\u0433 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \t\tel.ltAnimateIsDoing = false; \t\t\/\/ \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430, \u0435\u0441\u043b\u0438 \u044f\u0432\u043d\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0430 \t\tif (!callback) { \t\t\ttry { \t\t\t\toptions.cbDone(); \t\t\t} catch(e) { \t\t\t\tdoFail(e); \t\t\t} \t\t} else { \t\t\ttry { \t\t\t\tcallback(); \t\t\t} catch(e) { \t\t\t\tdoFail(e); \t\t\t} \t\t} \t\treturn false; \t} \t\/\/ \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u044b \u0432\u0441\u0435 \u0448\u0430\u0433\u0438 \tif (progress &gt; 1) { \t\t\/\/ \u0434\u0435\u043b\u0430\u0435\u043c \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0448\u0430\u0433, \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u0447\u0443\u0442\u044c \u043d\u0435 \u0434\u043e\u0435\u0437\u0436\u0430\u0435\u0442 \u0434\u043e \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 (progress \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0.99...) \t\t_step(getProgress(1)); \t\t$.w.clearInterval(el.ltAnimateInterval); \t\t\/\/ \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439 \t\tel.ltAnimateQueue.splice(0, 1); \t\t\/\/ \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0444\u043b\u0430\u0433 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \t\tel.ltAnimateIsDoing = false; \t\ttry { \t\t\toptions.cbDone(); \t\t} catch(e) { \t\t\tdoFail(e); \t\t} \t\treturn false; \t} \t_step(getProgress(progress)); } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u043f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0430 \u0431\u043b\u043e\u043a\u0430 \u043a\u043e\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2014 \u044d\u0442\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 (\u0434\u0443\u043c\u0430\u044e, \u043e\u0441\u043e\u0431\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e), \u0430 \u0441\u0430\u043c\u0430 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 _step(getProgress(progress)):<\/p>\n<pre><code class=\"javascript\"> function _step(factor) { \tfor (var i=0; i &lt; eLength; i++) { \t\tvar s = exec[i][0], \t\t\tval = exec[i][1], \t\t\tpercent = exec[i][2]; \t\t\ts(factor, val, percent); \t} } <\/code><\/pre>\n<p>  \u0422\u0443\u0442 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0432\u0441\u0451 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e:<\/p>\n<ul>\n<li>eLength \u043c\u044b \u0443\u0436\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u043b \u0440\u0430\u043d\u0435\u0435 \u2014 \u0434\u043b\u0438\u043d\u0430 \u0441\u043f\u0438\u0441\u043a\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 (\u00ab\u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c?\u00bb)<\/li>\n<li>s \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 (\u0441\u043c. switch (instructions&#8230;) \u0432 doAnimation)<\/li>\n<li>val \u2014 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u0438\u0434\u0451\u0442 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f<\/li>\n<li>percent \u2014 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0437\u0430\u0434\u0430\u043d \u0432 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445 \u0438\u043b\u0438 \u043d\u0435\u0442<\/li>\n<\/ul>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043e factor, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f. \u042d\u0442\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0438\u0439 \u043d\u0430\u043c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 (\u043f\u043e \u043f\u0443\u0442\u0438 \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c\u0443) \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0442\u043e\u0447\u043a\u0430 \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 \u043e\u0442\u0440\u0435\u0437\u043a\u0435 \u043e\u0442 0 \u0434\u043e 1. \u042d\u0442\u043e \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0432\u044b\u0448\u0435:<\/p>\n<pre><code class=\"javascript\"> \/\/ \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0442 0 \u0434\u043e 1 var progress = counter \/ animationLength; <\/code><\/pre>\n<p>  \u0418\u0434\u0442\u0438 \u043f\u043e \u043e\u0442\u0440\u0435\u0437\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0441 \u0440\u0430\u0432\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e, \u043b\u0438\u0431\u043e \u0441\u043b\u0435\u0434\u0443\u044f \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438:<\/p>\n<pre><code class=\"javascript\"> \/\/ \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u0441\u0447\u0451\u0442\u0430, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c function getProgress(p) { \tswitch (options.easing) { \t\tcase 'linear' : return p; break; \t\tcase 'swing' : return 0.5 - Math.cos(p * Math.PI ) \/ 2; break \t\tcase 'quad' : return Math.pow(p, 2); break; \t\tcase 'cubic' : return Math.pow(p, 3); break; \t\tdefault : return p; \t} } <\/code><\/pre>\n<p>  \u041f\u043e-\u0440\u0443\u0441\u0441\u043a\u0438 \u0432\u0441\u0451 \u044d\u0442\u043e \u0437\u0432\u0443\u0447\u0438\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0432\u0430\u0442\u043e, \u0434\u0430 (\u043b\u0438\u0431\u043e \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0443\u043c\u0435\u044e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0439 \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e). \u041d\u043e \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u0432\u0441\u0451 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u0435\u0435, \u043e\u0441\u044c \u0430\u0431\u0441\u0446\u0438\u0441\u0441 \u2014 \u0432\u0440\u0435\u043c\u044f, \u043e\u0441\u044c \u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u2014 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/img-fotki.yandex.ru\/get\/195419\/21671623.16\/0_e639e_4debe1bf_orig\" alt=\"image\"\/><\/p>\n<p>  <b>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u0443\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f:<\/b> \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0432\u043d\u044b\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043c\u044b \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c getProgress, \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u0430\u0434\u0438\u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 (\u043f\u043e \u043f\u0443\u0442\u0438 \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u043a \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439) \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f, \u0430 \u043f\u043e\u0442\u043e\u043c \u0438\u0434\u0451\u043c \u0441 \u044d\u0442\u0438\u043c \u0437\u043d\u0430\u043d\u0438\u0435\u043c \u0432 _step \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430.<\/p>\n<p>  \u0418 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435, \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 doAnimation, \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432\u044b\u0437\u043e\u0432\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 9<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\"> \/\/ \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 el.stopAnimation = function(jumpToEnd, callback) { \t_animating(animationLength, jumpToEnd, callback); \t\/\/ \u043e\u0447\u0438\u0449\u0430\u0435\u043c \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u044b \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \tif (el.ltAnimateTimeouts) { \t\tfor (var i=0; i &lt; el.ltAnimateTimeouts.length; i++) { \t\t\t$.w.clearTimeout(el.ltAnimateTimeouts[i]) \t\t} \t\tel.ltAnimateTimeouts = []; \t} } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0412\u044b\u0437\u043e\u0432 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0441\u0442: \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0433\u043e\u0432\u043e\u0440\u0438\u043c, \u043d\u0443\u0436\u043d\u043e \u043b\u0438 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e, \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043b\u043b\u0431\u044d\u043a.<\/p>\n<p>  \u0414\u043b\u044f \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 10<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\"> \/* * \u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043a\u0430 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438: \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 (true\/false) \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0430 (true\/false), \u0434\u0432\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e *\/ $.w.ltAnimateStop = function(el, jumpToEnd, callback) { \t\/\/ \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \tif (!el.ltAnimateInterval) return false; \tel.stopAnimation(jumpToEnd, callback); }; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041d\u0443 \u0438 \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u2014 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u0448\u0438\u0431\u043e\u043a. \u041e\u043d \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0432 $.w.ltAnimate \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0438\u0437 \u043d\u0435\u0451 \u0436\u0435:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 11<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\"> \/\/ \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a function doFail(text) { \tif (self._debug._enabled) { \t\tif ((typeof text != &quot;string&quot;) || !text) text = &quot;\u0421 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0435\u0439 [id: &quot; + id + &quot;] \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0442\u0430\u043a.&quot;;\t\t\t \t\t$.w.console.log(&quot;ltAnimate(): \u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435! &quot; + text); \t} \tif (opts.cbFail) { \t\ttry { \t\t\topts.cbFail(); \t\t} catch (e) {\t\t \t\t\t$.w.console.log(&quot;ltAnimate(): \u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0430 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 [id: &quot; + id + &quot;, &quot; + e.name + &quot;: &quot; + e.message + &quot;]&quot;); \t\t} \t} } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u2192 <a href=\"http:\/\/codepen.io\/botyaslonim\/pen\/dOWddJ\">\u041f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0433\u043e\u043d\u044f\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u0447\u043a\u0438 \u0441\u0430\u043c\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0437\u0434\u0435\u0441\u044c<\/a><\/p>\n<p>  \u0422\u0430\u043c \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432\u0441\u0435\u0445 \u0442\u0440\u0451\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<p>  _____________________________________<\/p>\n<p>  ps. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043e\u0434 \u043f\u0438\u0441\u0430\u043b\u0441\u044f \u043f\u043e\u043b\u0442\u043e\u0440\u0430 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u0443\u0436\u0435 \u043d\u0430\u0447\u0430\u043b\u0438 \u0441\u0442\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0434\u0430\u0434\u0438\u0442\u0435 \u0432\u043e\u043f\u0440\u043e\u0441, \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0442\u043e\u0447\u043d\u043e \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0438\u043c\u0435\u043b \u0432\u0432\u0438\u0434\u0443, \u043a\u043e\u0433\u0434\u0430 \u043f\u0438\u0441\u0430\u043b \u043a\u043e\u0434.<\/p>\n<p>  \u0411\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u043c. \u0411\u0443\u0434\u0443 \u0440\u0430\u0434 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435\u043c \u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043e\u0431\u0441\u0443\u0434\u0438\u0442\u044c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043e\u0439\u0442\u0438 \u043a \u0437\u0430\u0434\u0430\u0447\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434.<br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/315942\/\"> https:\/\/habrahabr.ru\/post\/315942\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0427\u0430\u0441\u0442\u043e \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0443 \u0438\u043b\u0438 \u0438\u043d\u0443\u044e \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0437\u043d\u0430\u043a\u043e\u043c\u0443\u044e \u0432\u0435\u0449\u044c, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0441\u044f \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u043a\u043e\u043b\u043b\u0435\u0433. \u0418 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0443 \u043d\u0430\u0441, \u0432\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043e\u0432\u0435\u0442\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f: \u043c\u043e\u043b, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438 \u0442\u0443 \u0438\u043b\u0438 \u0438\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u044c \u0442\u043e\u0442 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0448\u0438 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u0410\u043d\u0433\u0443\u043b\u044f\u0440\u0435 (\u043f\u0440\u043e\u0441\u0442\u043e_\u043d\u0430_\u0410\u043d\u0433\u0443\u043b\u044f\u0440\u0435 ))) ), \u0438 \u043d\u0435 \u043d\u0430\u0434\u043e \u0437\u0430\u0431\u0438\u0432\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c\u0438 \u0432\u0435\u0449\u0430\u043c\u0438.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u0438\u043d\u043e\u0433\u0434\u0430 \u0441\u0442\u043e\u044f\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442 \u043d\u0435 \u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u0434\u0435\u043c\u043e\u043a\u0440\u0430\u0442\u0438\u044e (\u0447\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043e\u043d \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u043f\u0430\u0441\u0430\u0435\u0442). \u041e\u0431 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u044f \u0438 \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0435.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-281412","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/281412","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=281412"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/281412\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=281412"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=281412"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=281412"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}