|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- ПлавноОтобразитьСкрыть = function(элемент, настройки = null)
- {
- this.отобразить = () =>
- {
- this.показываем = true;
- элемент.style.display = "block";
- this.преобразования.innerHTML = `
- #${элемент.id}
- {
- opacity: 0;
- animation: ${элемент.id}ПлавноОтобразить 0.4s ease;
- animation-fill-mode: forwards;
- animation-delay: ${this.настройки.задержка}s;
- }
- `;
- };
-
- this.скрыть = () =>
- {
- this.показываем = false;
- this.преобразования.innerHTML = `
- #${элемент.id}
- {
- opacity: ${this.настройки.прозрачность};
- animation: ${элемент.id}ПлавноСкрыть 0.4s ease;
- animation-fill-mode: forwards;
- animation-delay: ${this.настройки.задержка}s;
- }
- `;
- };
-
- this.__задатьНастройкиПоУмолчанию = () =>
- {
- var умолчание = {
- "задержка": 0,
- "прозрачность": 1,
- "отклик": {},
- };
- if (!настройки)
- {
- this.настройки = умолчание;
- }
- else
- {
- this.настройки = настройки;
- }
- for (var ключ in умолчание)
- {
- if (!(ключ in this.настройки))
- {
- this.настройки[ключ] = умолчание[ключ];
- }
- }
- };
-
- this.__создатьКадры = () =>
- {
- this.кадры = document.createElement("style");
- document.head.appendChild(this.кадры);
- this.кадры.innerHTML = `
- @keyframes ${элемент.id}ПлавноОтобразить
- {
- 0%
- {
- opacity: 0;
- }
- 100%
- {
- opacity: ${this.настройки.прозрачность};
- }
- }
- @keyframes ${элемент.id}ПлавноСкрыть
- {
- 0%
- {
- opacity: ${this.настройки.прозрачность};
- }
- 100%
- {
- opacity: 0;
- }
- }
- `;
- };
-
- this.__создатьПреобразования = () =>
- {
- this.преобразования = document.createElement("style");
- document.head.appendChild(this.преобразования);
- };
-
- this.__отслеживатьЗавершениеАнимации = () =>
- {
- this.показываем = true;
- var тут = this;
- элемент.addEventListener(
- "animationend",
- function()
- {
- if (тут.показываем && тут.настройки.отклик.отображение)
- {
- тут.настройки.отклик.отображение();
- }
- else if (!тут.показываем)
- {
- элемент.style.display = "none";
- if (тут.настройки.отклик.скрытие)
- {
- тут.настройки.отклик.скрытие();
- }
- }
- }
- );
- };
-
- // Конструктор.
- this.__задатьНастройкиПоУмолчанию();
- this.__создатьКадры();
- this.__создатьПреобразования();
- this.__отслеживатьЗавершениеАнимации();
- };
-
-
- // Часто используемые варианты в одну строку.
- // 常用的单线变型
- // Frequently used single line variants.
-
- плавноСкрытьИУдалить = (id, настройки = null) =>
- {
- var элемент = $(`#${id}`);
- var плавно = new ПлавноОтобразитьСкрыть(элемент.get(0), настройки);
- плавно.настройки.отклик.скрытие = function() {
- элемент.remove();
- };
- плавно.скрыть();
- };
|