1. JavaScript / Говнокод #23219

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    var effects = {
    	linear: function(t) {
    		return t;
    	},
    
    	easeInQuad: function(t) {
    		return t * t;
    	},
    
    	easeOutQuad: function(t) {
    		return -t * (t - 2);
    	},
    
    	easeInOutQuad: function(t) {
    		if ((t /= 0.5) < 1) {
    			return 0.5 * t * t;
    		}
    		return -0.5 * ((--t) * (t - 2) - 1);
    	},
    
    	easeInCubic: function(t) {
    		return t * t * t;
    	},
    
    	easeOutCubic: function(t) {
    		return (t = t - 1) * t * t + 1;
    	},
    
    	easeInOutCubic: function(t) {
    		if ((t /= 0.5) < 1) {
    			return 0.5 * t * t * t;
    		}
    		return 0.5 * ((t -= 2) * t * t + 2);
    	},
    
    	easeInQuart: function(t) {
    		return t * t * t * t;
    	},
    
    	easeOutQuart: function(t) {
    		return -((t = t - 1) * t * t * t - 1);
    	},
    
    	easeInOutQuart: function(t) {
    		if ((t /= 0.5) < 1) {
    			return 0.5 * t * t * t * t;
    		}
    		return -0.5 * ((t -= 2) * t * t * t - 2);
    	},
    
    	easeInQuint: function(t) {
    		return t * t * t * t * t;
    	},
    
    	easeOutQuint: function(t) {
    		return (t = t - 1) * t * t * t * t + 1;
    	},
    
    	easeInOutQuint: function(t) {
    		if ((t /= 0.5) < 1) {
    			return 0.5 * t * t * t * t * t;
    		}
    		return 0.5 * ((t -= 2) * t * t * t * t + 2);
    	},
    
    	easeInSine: function(t) {
    		return -Math.cos(t * (Math.PI / 2)) + 1;
    	},
    
    	easeOutSine: function(t) {
    		return Math.sin(t * (Math.PI / 2));
    	},
    
    	easeInOutSine: function(t) {
    		return -0.5 * (Math.cos(Math.PI * t) - 1);
    	},
    
    	easeInExpo: function(t) {
    		return (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));
    	},
    
    	easeOutExpo: function(t) {
    		return (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;
    	},
    
    	easeInOutExpo: function(t) {
    		if (t === 0) {
    			return 0;
    		}
    		if (t === 1) {
    			return 1;
    		}
    		if ((t /= 0.5) < 1) {
    			return 0.5 * Math.pow(2, 10 * (t - 1));
    		}
    		return 0.5 * (-Math.pow(2, -10 * --t) + 2);
    },
    ...

    /**
    * Easing functions adapted from Robert Penner's easing equations.
    * @namespace Chart.helpers.easingEffects
    * @see http://www.robertpenner.com/easing/
    */

    В общем это такая специальная параша, чтобы делать гладкую анимацию какой-то х****. Вопрос - на***а вообще нужна эта гладкая анимация, и почему эту х***ю не реализуют как набор неких встроенных в браузер функций чтобы их из этого жабаскрипта вызывать, чтобы эта хрень не тормозила? Меня б**** з****** эти ё***** сайты, обвешанные какой-то б******* х***** на жабаскрипте которая прыгает по всему экрану, кому вообще пришла в голову идея сделать подобную хрень? Поубивал бы этих е***** фронтендщиков с их х****й

    http://easings.net/ru вот еще про эту хуиту.

    Запостил: j123123, 26 Июля 2017

    Комментарии (13) RSS

    • И да, ссылка на гитхаб:
      https://github.com/chartjs/Chart.js/blob/717e8d950ac5e0473bc11c1890cde3b53651a8cb/src/helpers/helpers.easing.js
      Ответить
    • > кому вообще пришла в голову идея сделать подобную хрень?

      помните самую главную фичу древнейших версий винворда? которой в 90х оффис всегда рекламировался? еще до jquery/marqueе херни, существовал "WordArt" в ВинВорде, и типичный документ писаный нормальным типичным человеком выглядел как новогодняя ёлка. и когда добавили часто-запрашиваемую поддержку анимацию - то все еще и моргало и блестело.

      другими словами: ну нравится людям.
      Ответить
    • > и почему эту х***ю не реализуют как набор неких встроенных в браузер функций
      так есть же css transition всякие
      Ответить
      • тогда зачем это пишут в JS коде?
        Ответить
        • может legacy, для поддержки старых браузеров которые не умеют в CSS3
          Ответить
          • Нет. Это говно пишут в том числе и для браузеров, умеющих в CSS3.

            Некоторых дизайнеров с особо изощрённым вкусом не устраивают стандартные функции переходов, вшитые в CSS3, поэтому они изобретают грабли с настраиваемым телескопическим черенком свои функции.
            Ответить
    • Кстати вот зачем это (t -= 2) вот тут?
      return 0.5 * ((t -= 2) * t * t + 2);

      Почему не
      return 0.5 * ((t - 2) * t * t + 2);

      ?

      Это типа оптимизация такая? И нет ли тут UB?
      или тут
      return -0.5 * ((--t) * (t - 2) - 1);
      Ответить
      • это тебе не сишечка-хуишечка, и не кресты-хуесты
        Ответить
      • Менять в правой части значение переменной и тут же её ещё раз использовать — это аналог знаменитого i++ + ++i.

        Хотя с другой стороны тут же не постдекремент...
        Ответить
    • Этот код изначально писался для Флеша, ActionScript 2. Когда еще анимации на ХТМЛе делали в програме Фаирворкс, и называли их ДиХТМЛ (со слоями).
      Имя автора навсегда утеряно, скорее всего кто-то из сотрудников Макромедии. Спеннер тут ни при чем, он просто это спиздил из исходников к Флаш МХ 2004.

      Предположу, что используют их в ХТМЛе (если легитимно), то при работе с, например, канвасом, где КССы недоступны.
      Ответить
      • с хуя ли утеряно, это Роберт Пеннер.
        Ответить
      • > Спеннер тут ни при чем, он просто это спиздил из исходников к Флаш МХ 2004.

        а, недочитал. где почитать пруфы?

        гугл говорит, что ещё в 2003 они были известны под его фамилией http://www.timotheegroleau.com/presentations/20030920_dynamic_motion/ слайд 6
        Ответить
        • Да забей. Нахуй тебе возвращаться в 2000 год.
          Ответить

    Добавить комментарий