Простой, но функциональный лайтбокс для React.
Краткое введение 🧐
Все началось, когда я работал над одним из своих проектов с использованием React. У клиента была страница блога, и он хотел добавить лайтбоксы к изображениям в сообщениях блога. Проблема заключалась в том, что данные были получены из серверной части, и я не мог контролировать содержание каждого сообщения.
Я проверил в Интернете какой-то световой короб для React, но они работали так, что мне приходилось заранее объявлять изображения в массиве, объекте и т. Д., Но что, если вы не знаете, какой контент вы получите, и вы просто хотите добавить световой короб к изображениям в контенте? 😞
Моя идея 💡
Simple React Lightbox дает вам возможность добавить функциональность светового окна к набору изображений, независимо от того, определяете ли вы их сами или получаете их из внешнего источника (API, серверная часть и т. д.). Просто используйте предоставленный компонент, чтобы обернуть ваше приложение, определите свои параметры (если хотите), а затем используйте компонент «SRLWrapper», обернув его вокруг содержимого, в котором вы имеете или ожидаете ваши изображения 😮!
Упаковано с функциями 📦
С момента выхода первой версии я добавил массу новых полезных функций. Самый последний из них включает:
- Проверка изображения (если у вас есть битое изображение, оно будет проигнорировано световым окном).
- Поддержка NextJS и Gatsby и поддержка изображений Gatsby.
- Наблюдаемый, чтобы проверить, загружены ли другие изображения (например, из API).
- Обратные вызовы помогут вам в случае, если пользователю нужно получить статус светового окна, включая подсчет количества изображений, которые он содержит, какой слайд выбран и какие слайды идут до и после текущего.
- Новые и переработанные параметры, чтобы сделать ваш код более чистым и читаемым, а также упростить использование светового окна.
- Крючки! Один для открытия лайтбокса (из первого изображения или прохождения и указателя) и один для закрытия лайтбокса.
- Пользовательские подписи!
- Многое другое…
Установить
// With npm npm install --save simple-react-lightbox // or with Yarn yarn add simple-react-lightbox
использование
Я предоставил вам демонстрацию CodeSandbox, с которой вы можете поиграть, или вы можете просто следовать приведенным ниже инструкциям. Как вариант, вы можете поиграть с демоверсией на официальном сайте https://www.simple-react-lightbox.dev/.
инструкции
Прежде всего, вам нужно «обернуть» ваше приложение React основным компонентом, чтобы оно могло создавать контекст. Приведенный ниже пример позволит вам использовать Simple React Lightbox везде, где это необходимо в вашем приложении:
import React from "react"; import MyComponent from "./components/MyComponent"; import SimpleReactLightbox from "simple-react-lightbox"; // Import Simple React Lightbox function App() { return ( <div className="App"> <SimpleReactLightbox> <MyComponent /> // Your App logic (Components, Router etc...) </SimpleReactLightbox> </div> ); } export default App;
Затем вы хотите импортировать и использовать компонент SRLWrapper везде, где вы ожидаете контент с изображениями, на которые вы хотите добавить функциональность лайтбокса. Обратите внимание на {}
, поскольку это именованный экспорт. Подпись к изображениям будет генерироваться из атрибута image« alt »!
import React from "react"; import { SRLWrapper } from "simple-react-lightbox"; // Import SRLWrapper function MyComponent() { return ( <div className="MyComponent"> <SRLWrapper> // This will be your content with the images. It can be anything. Content defined by yourself, content fetched from an API, data from a graphQL query... anything :) </SRLWrapper> </div> ); } export default MyComponent;
Вот и все 🥳 Поскольку мы не передаем никаких параметров, у вас должен быть рабочий световой блок с параметрами по умолчанию, как на изображении ниже:
Пользовательская галерея
По многочисленным просьбам я добавил возможность использовать световой короб более традиционным способом. Если вы хотите создать галерею, в которой миниатюры заключены в ссылку, указывающую на полноразмерное изображение, теперь вы можете это сделать. (Вы можете проверить пример страницы Галерея со ссылками на демо CodeSandbox).
Просто оберните свои изображения (в идеале миниатюры) в ссылку с data-attribute="SRL"
. Как обычно, атрибут alt
для изображений будет использоваться в качестве заголовка, если он объявлен.
import React from "react"; import { SRLWrapper } from "simple-react-lightbox"; // Import SRLWrapper function MyComponent() { return ( <div className="MyComponent"> <SRLWrapper> <a href="link/to/the/full/width/image.jpg" data-attribute="SRL"> <img src="src/for/the/thumbnail/image.jpg" alt="Umbrella" /> </a> <a href="link/to/the/full/width/image_two.jpg" data-attribute="SRL"> <img src="src/for/the/thumbnail/image_two.jpg" alt="Umbrella" /> </a> // More images... </SRLWrapper> </div> ); } export default MyComponent;
Параметры
Я знаю, что вы думаете.
«Это круто, но стиль лайтбокса не соответствует моему проекту. Хотя это нормально. Я буду использовать ваши классы и заменю все своими собственными стилями… »
⚠️ ПОДОЖДИТЕ! ⚠️ Несмотря на то, что я определил имена классов для каждой части светового окна, я предоставил все параметры, необходимые для настройки светового окна, чтобы вам не пришлось добавлять какую-либо дополнительную логику. Вы можете настроить все! Проверьте, как добавить параметры в параметры репозитория GitHub.
Вот и все! Надеюсь, вам понравится лайтбокс Simple React, и вы продолжите следить за проектом, так как я планирую добавить больше функций в будущем.