type | title | description | i18nReady |
---|---|---|---|
tutorial |
Создаем свою собственную Шапку |
Учебное пособие: Создайте свой первый блог на Astro —
Используйте все, что вы узнали до сих пор, чтобы создать шапку с отзывчивой навигацией |
true |
import Box from '/components/tutorial/Box.astro';
import Checklist from '/components/Checklist.astro';
import PreCheck from '/components/tutorial/PreCheck.astro';
import { Steps } from '@astrojs/starlight/components';
import Badge from "/components/Badge.astro"
Поскольку ваш сайт будет просматриваться на разных устройствах, пришло время создать постраничную навигацию, которая сможет реагировать на разные размеры экрана!
- Создать шапку для вашего сайта, которая содержит компонент навигации - Сделать компонент навигации адаптивным 1. Создайте новый компонент Header. Импортируйте и используйте существующий компонент `Navigation.astro` внутри элемента ``, который находится внутри элемента ``.<details>
<summary>Покажите мне код!</summary>
Создайте файл с именем `Header.astro` в `src/components/`
```astro title="src/components/Header.astro"
---
import Navigation from './Navigation.astro';
---
<header>
<nav>
<Navigation />
</nav>
</header>
```
</details>
<details>
<summary>Покажите мне код!</summary>
```astro title="src/pages/index.astro" ins={3,18} del={2,17}
---
import Navigation from '../components/Navigation.astro';
import Header from '../components/Header.astro';
import Footer from '../components/Footer.astro';
import '../styles/global.css';
const pageTitle = "Home Page";
---
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width" />
<meta name="generator" content={Astro.generator} />
<title>{pageTitle}</title>
</head>
<body>
<Navigation />
<Header />
<h1>{pageTitle}</h1>
<Footer />
</body>
</html>
```
</details>
- Проверьте предварительный просмотр в браузере и убедитесь, что ваша шапка отображается на каждой странице. Пока она не выглядит иначе, но если вы проверите предварительный просмотр с помощью инструментов разработчика, вы увидите, что у вас теперь есть элементы, такие как
<header>
и<nav>
вокруг ваших навигационных ссылок.
```astro title="src/components/Navigation.astro" ins={3,7}
---
---
<div class="nav-links">
<a href="/">Home</a>
<a href="/about">About</a>
<a href="/blog">Blog</a>
</div>
```
-
Скопируйте приведенные ниже стили CSS в файл
global.css
. Эти стили:- Стилизируют и позиционируют навигационные ссылки для мобильных устройств
- Включают класс
expanded
, который можно переключать для отображения или скрытия ссылок на мобильных устройствах - Используют
@media
запрос для определения различных стилей для больших размеров экрана
:::tip[Mobile-first дизайн] Начните с определения того, что должно происходить на малых размерах экрана! Маленькие размеры экрана требуют более простых макетов. Затем адаптируйте ваши стили, чтобы учесть более крупные устройства. Если вы сначала спроектируете сложный вариант, потом вам придется потрудиться, чтобы снова сделать его простым. :::
html { background-color: #f1f5f9; font-family: sans-serif; } body { margin: 0 auto; width: 100%; max-width: 80ch; padding: 1rem; line-height: 1.5; } * { box-sizing: border-box; } h1 { margin: 1rem 0; font-size: 2.5rem; } /* стили для навигации */ .nav-links { width: 100%; top: 5rem; left: 48px; background-color: #ff9776; display: none; margin: 0; } .nav-links a { display: block; text-align: center; padding: 10px 0; text-decoration: none; font-size: 1.2rem; font-weight: bold; text-transform: uppercase; } .nav-links a:hover, .nav-links a:focus { background-color: #ff9776; } .expanded { display: unset; } @media screen and (min-width: 636px) { .nav-links { margin-left: 5em; display: block; position: static; width: auto; background: none; } .nav-links a { display: inline-block; padding: 15px 20px; } }
Измените размер окна и посмотрите, какие стили применяются при разной ширине экрана. Теперь ваша шапка адаптивна к размеру экрана с помощью @media
запросов.