Вернёмся на сушу. Переводим ваш блог из дневного режима в ночной, без необходимости острова!
Теперь, когда вы можете создавать «острова» Astro для интерактивных элементов, не забудьте, что вы можете добиться многого, используя только обычный JavaScript и CSS!
Давайте создадим кликабельный иконку, которая позволит вашим пользователям переключаться между светлым и темным режимами, используя еще один тег <script>
для интерактивности… и не отправляя браузеру никакого JavaScript от фреймворка.
Приготовьтесь…
- Создайте интерактивный переключатель темы, используя только JavaScript и CSS
- Отправляйте браузеру как можно меньше JavaScript!
Добавьте и стилизуйте иконку переключения темы
Заголовок раздела Добавьте и стилизуйте иконку переключения темы-
Создайте новый файл по адресу
src/components/ThemeIcon.astro
и вставьте в него следующий код: -
Добавьте иконку в
Header.astro
, чтобы она отображалась на всех страницах. Не забудьте импортировать компонент. -
Посетите предварительный просмотр в браузере по адресу
http://localhost:4321
, чтобы увидеть иконку теперь на всех ваших страницах. Вы можете попробовать нажать на нее, но вы еще не написали скрипт, чтобы сделать ее интерактивной.
Добавьте стили CSS для темной темы
Заголовок раздела Добавьте стили CSS для темной темыВыберите некоторые альтернативные цвета для использования в темном режиме.
-
В
global.css
определите некоторые темные стили. Вы можете выбрать свои собственные или скопировать и вставить:
Добавьте интерактивность на стороне клиента
Заголовок раздела Добавьте интерактивность на стороне клиентаЧтобы добавить интерактивность в компонент Astro, вы можете использовать тег <script>
. Этот скрипт может проверять и устанавливать текущую тему из localStorage
и переключать тему при клике по иконке.
-
Добавьте следующий тег
<script>
вsrc/components/ThemeIcon.astro
после вашего тега<style>
: -
Проверьте предварительный просмотр в браузере по адресу
http://localhost:4321
и нажмите на иконку темы. Убедитесь, что вы можете переключаться между светлым и темным режимами.
Проверьте свои знания
Заголовок раздела Проверьте свои знанияВыберите, какое из следующих утверждений описывает теги Astro <script>
, компоненты UI-фреймворка или оба варианта.
-
Они позволяют включать интерактивные элементы UI на вашем сайте.
-
Они создают статические элементы на вашем сайте, если вы не включаете
client:
, чтобы отправить их JavaScript клиенту и запустить в браузере. -
Они позволяют вам «попробовать» новый фреймворк, не требуя от вас начала совершенно нового проекта с использованием этого стека технологий.
-
Они позволяют вам повторно использовать написанный вами код в других фреймворках, и вы часто можете просто вставить их прямо на свой сайт.
-
Они позволяют вам добавлять интерактивность, не требуя знания или изучения других фреймворков JavaScript.