Я пытаюсь создать анимацию развертывания/свертывания разделов, используя это руководство от Google, чтобы обеспечить максимальную производительность. В конце статьи упоминается
Предостережение по поводу этого конкретного варианта: в Chrome текст на экранах с низким разрешением во время анимации размыт из-за ошибок округления из-за масштаб и контрмасштаб текста. Если вас интересуют подробности, есть сообщение об ошибке, которое вы можете отметить и следить за ним.
Пытался вручную исправить ошибки округления кадров, но не повезло.
Скриншот Firefox во время анимации (текст не плавный):
[img]https://i .sstatic.net/V0fBnhot.png[/img]
Снимок экрана Firefox после завершения анимации (мигает, чтобы сгладить текст):
Некоторые наблюдения
На экране MacBook Pro проблем с Chrome вообще нет.
На экране MacBook Pro Firefox — текст плавный во время анимации, но в конце мигает немного жирнее (эта проблема произойдет в Chrome, если вы опустите will-change в анимированных элементах, но, очевидно, это не поможет FFox).
На мониторе с более низким разрешением поведение в значительной степени является то же самое (не плавное во время анимации), но за исключением того, что в Chrome оно остается «не плавным» после окончания анимации, если я ставлю will-change, в противном случае мигание станет плавным.
Поскольку код длиннее, для вашего удобства я также предоставил Codepen, который также встроен сюда.
Я пытаюсь создать анимацию развертывания/свертывания разделов, используя это руководство от Google, чтобы обеспечить максимальную производительность. В конце статьи упоминается
Предостережение по поводу этого конкретного варианта: в Chrome текст на экранах с низким разрешением во время анимации размыт из-за ошибок округления из-за масштаб и контрмасштаб текста. Если вас интересуют подробности, есть сообщение об ошибке, которое вы можете отметить и следить за ним.
Пытался вручную исправить ошибки округления кадров, но не повезло. Скриншот Firefox во время анимации (текст не плавный): [img]https://i .sstatic.net/V0fBnhot.png[/img]
Снимок экрана Firefox после завершения анимации (мигает, чтобы сгладить текст): [img] https://i.sstatic.net/14RfvO3L.png[/img]
[b]Некоторые наблюдения[/b] [list] [*]На экране MacBook Pro проблем с Chrome вообще нет. [*]На экране MacBook Pro Firefox — текст плавный во время анимации, но в конце мигает немного жирнее (эта проблема произойдет в Chrome, если вы опустите will-change в анимированных элементах, но, очевидно, это не поможет FFox). [*]На мониторе с более низким разрешением поведение в значительной степени является то же самое (не плавное во время анимации), но за исключением того, что в Chrome оно остается «не плавным» после окончания анимации, если я ставлю will-change, в противном случае мигание станет плавным. [/list] Поскольку код длиннее, для вашего удобства я также предоставил Codepen, который также встроен сюда.
const sectionEl = el.closest(".expand-collapse-section"); const sectionContent = sectionEl.querySelector(".content"); sectionContent.style.display = "block"; // block to expand, has no effect on collapse (in the end of animation it gets set to none) const index = this._sections.indexOf(sectionEl); const targetContentHeight = sectionContent.offsetHeight + this._contentTopMargin;
for (let i = index + 1; i < this._sections.length; i++) { const curr = this._sections[i]; // don't animate yet translation of adjacent sections, just set initial value for animation curr.classList.add("notransition");
// setting section content to display block pushes the other items by its height as it has transform set, but it still occupies its original height // initial value for animation setTranslation(curr, { height: targetContentHeight, start: true, expand }); } // the rest of the content below the expandable sections const lastSectionSibling = this._sections.slice(-1)[0].nextElementSibling; lastSectionSibling.classList.add("notransition"); setTranslation(lastSectionSibling, { height: targetContentHeight, start: true, expand });
sectionEl.offsetHeight; // needed for Firefox on expand
// sectionEl.offsetHeight; -> not needed in requestAnimationFrame
for (let i = index + 1; i < this._sections.length; i++) { const curr = this._sections[i];
// trigger translation animation of adjacent sections and rest of the content now curr.classList.remove("notransition"); setTranslation(curr, { height: targetContentHeight, start: false, expand }); sectionEl.offsetHeight; // needed for Firefox on expand } lastSectionSibling.classList.remove("notransition"); setTranslation(lastSectionSibling, { height: targetContentHeight, start: false, expand });
if (!expand) { sectionContent.addEventListener("animationend", () => { sectionContent.style.display = "none";
for (let i = index + 1; i < this._sections.length; i++) { const curr = this._sections[i]; // avoid unexpected animations when removing transform inline style in the end of the animation, needs reflow curr.classList.add("notransition"); // could also be set to translateY(0) curr.removeAttribute("style"); // should force reflow here otherwise there will be no net change in notransition class which would animate transform, which we don't want, // we're just removing the unnecessary style attribute sectionEl.offsetHeight; curr.classList.remove("notransition"); }
В основном я работаю над PyCharm, и часто сталкиваюсь с ситуацией, когда было бы намного лучше, если бы я мог свернуть/свернуть все тела методов и оставить только их имена.
На рисунке ниже показан результат, который мне нужен, но я не могу найти...
Итак, я пытался получить изображение закрытия, минимизации и максимизации, копируя их на кнопке с помощью VisualStyleElement, но в каком-то смысле работает только закрытие, другие просто рисуют часть всего изображения. вот код, который я использую...
У меня есть программа на Python, которая открывает новые окна для отображения некоторой информации о программе. У этого окна есть собственная кнопка закрытия, и я сделал ее неизменяемой. Однако кнопки для развертывания и свертывания все еще здесь, и...
Я реализовал функцию свертывания/развертывания с помощью UICollectionViewListCell и источника данных Diffable.
Однако результирующее поведение непредсказуемо. При касании строки она должна расширяться, а другие строки сворачиваться, но это...
Я работаю над проектом Angular 17 с боковой панелью в стиле CSS Tailwind .
Функция развертывания/свертывания работает как и предполагалось, но анимация не такая плавная , как хотелось бы. В анимации наблюдается заметный «скачок», который нарушает...