Я работаю над пользовательским интерфейсом книжной полки в Next.js, используя Framer Motion для анимации и Tailwind CSS для стилизации. Каждая книга представляет собой интерактивный элемент li с функциями наведения и щелчка. Проблема, с которой я столкнулся, заключается в том, что когда я нажимаю на книгу, происходит странная анимация «растягивания», и я не могу понять, почему. Поведение:
При наведении на книгу она слегка приподнимается (translate-y).
При нажатии , выбранная книга развернется и отобразится подробная информация.
Однако при нажатии книга неожиданно «растягивается» или меняет размер, прежде чем принять окончательное состояние.
Вот текущее состояние состояние проблемы: веб-сайт
Код:
Вот соответствующий код:
Элемент motion.li использует макет Framer Motion, который может
вызывать эффект растяжения.
Компонент Image динамически
вычисляет свой размер с помощью naturalWidth и naturalHeight. Может ли этот
перерасчет способствовать возникновению проблемы?
Классы перехода и
преобразования Tailwind (translate-y,transition-all и т. д.) могут быть
конфликтует с макетом Framer Motion.
Что я пробовал:
Удаление макета из motion.li, но это нарушает анимацию.
Отключение всех классов перехода Tailwind — это не решило проблему.
Жесткое кодирование ширины и высоты изображения вместо вычисления их динамически — это уменьшило, но не устранило эффект растяжения.
Вопрос:
Почему происходит растягивающаяся анимация, когда книга нажали?
Как предотвратить странный эффект изменения размера/растяжения, сохранив при этом анимацию при наведении и выборе без изменений?
Будем очень признательны за любые идеи о том, как Tailwind CSS и Framer Motion могут взаимодействовать (или конфликтовать). Дайте мне знать, если потребуется дополнительный контекст или код!
Я работаю над пользовательским интерфейсом книжной полки в Next.js, используя Framer Motion для анимации и Tailwind CSS для стилизации. Каждая книга представляет собой интерактивный элемент li с функциями наведения и щелчка. Проблема, с которой я столкнулся, заключается в том, что когда я нажимаю на книгу, происходит странная анимация «растягивания», и я не могу понять, почему. [b]Поведение: [list] [*]При наведении на книгу она слегка приподнимается (translate-y). [*]При нажатии , выбранная книга развернется и отобразится подробная информация. [*]Однако при нажатии книга неожиданно «растягивается» или меняет размер, прежде чем принять окончательное состояние. [/list] Вот текущее состояние состояние проблемы: веб-сайт Код[/b]: Вот соответствующий код: [code]// Book.js import { motion } from "framer-motion"; import Image from "next/image"; import { useState } from "react";
[/code] [b]Наблюдения[/b]: [list] [*]Элемент motion.li использует макет Framer Motion, который может вызывать эффект растяжения. [*]Компонент Image динамически вычисляет свой размер с помощью naturalWidth и naturalHeight. Может ли этот перерасчет способствовать возникновению проблемы? [*]Классы перехода и преобразования Tailwind (translate-y,transition-all и т. д.) могут быть конфликтует с макетом Framer Motion. [/list] [b]Что я пробовал:[/b] [list] [*]Удаление макета из motion.li, но это нарушает анимацию. [*]Отключение всех классов перехода Tailwind — это не решило проблему. [*]Жесткое кодирование ширины и высоты изображения вместо вычисления их динамически — это уменьшило, но не устранило эффект растяжения. [/list] [b]Вопрос[/b]: [list] [*]Почему происходит растягивающаяся анимация, когда книга нажали? [*]Как предотвратить странный эффект изменения размера/растяжения, сохранив при этом анимацию при наведении и выборе без изменений? [/list] Будем очень признательны за любые идеи о том, как Tailwind CSS и Framer Motion могут взаимодействовать (или конфликтовать). Дайте мне знать, если потребуется дополнительный контекст или код!