Сделать элементы скрытыми или отображаемыми для определенных точек останова устройства
В CSS медиазапросы - это распространенный шаблон для установки поведения стиля элемента при создании адаптивного дизайна. Ниже приведен пример в CSS, чтобы установить красный цвет фона тела, когда ширина экрана меньше 600 пикселей.
@media only screen and (max-width: 600px) { body { background-color: red; } }
Когда мы создаем адаптивный дизайн во Framer X, его функция адаптивного макета позволяет нам настроить поведение масштабирования для каждого элемента, чтобы дизайн реагировал в соответствии с размером кадра, в котором он содержится. вы можете управлять поведением элементов, относящихся к определенным точкам останова, прямо на панели дизайна. Чтобы установить правила на основе точек останова, вам нужно будет обратиться к функции переопределения кода или создать компонент кода.
Имитация медиа-запроса с переопределением кода
Учитывая, что вы можете переопределить стиль элемента с помощью переопределений кода. Если вы можете определить размер области просмотра, вы можете установить для видимости элементов значение «Нет». Ниже приведен пример
export const HiddenBelowViewport768: Override = () => { const viewPortWidth = window.innerWidth; if (viewPortWidth < 768) { return { opacity: 0 } } }
Компонент кода медиа-запроса
Другой подход - создать компонент со свойствами медиа-запроса, который позволяет нам устанавливать диапазон точек останова и подключаться к фрейму контента.
Ниже приведен код компонента:
import * as React from "react"; import { PropertyControls, ControlType } from "framer"; type Props = { viewPortMin: number, viewPortMax: number }; export class BreakPointFrame extends React.Component<Props> { render() { const viewPortSize = window.innerWidth; if (viewPortSize > this.props.viewPortMin && viewPortSize < this.props.viewPortMax) { return <div style={style}>{this.props.children}</div>; } else { return null } } static defaultProps: Props = { viewPortMin: 320, viewPortMax: 1200 }; static propertyControls: PropertyControls<Props> = { viewPortMin: { type: ControlType.Number, title: "Min Point" }, viewPortMax: { type: ControlType.Number, title: "Max Point" } }; } const style: React.CSSProperties = { display: "block", background: "rgba(136, 85, 255, 0.1)", };
Вот ссылка на опубликованный компонент, если вы хотите установить и использовать. Https://store.framer.com/package/pchen/breakpoint-frame
Идти дальше
Подход следующего уровня - это фактическое использование медиа-запроса в определении CSS компонента кода. Можно создать более расширенное меню настроек, чтобы задать медиа-запрос, или вы также можете напрямую редактировать поведение в редактировании компонента кода.
Не стесняйтесь комментировать, если у вас есть лучший подход к созданию адаптивного шаблона дизайна, такого как медиа-запрос во Framer X.