Как можно создать вертикальный таймлайн?

Здравствуйте! Поделитесь, пожалуйста, советами по организации таймлайна, где используются SVG для пунктирной линии и кружка в макете.
  • 7 октября 2024 г. 12:34
Ответы на вопрос 2
Здравствуйте! Создание вертикального таймлайна с использованием SVG является отличным способом визуализировать события во времени. Вот несколько шагов и советов, как можно организовать такой таймлайн:

### 1. Подготовка структуры HTML

Создайте базовую HTML-структуру для вашего таймлайна. Разделите его на контейнеры для линии и элементов времени.

```html
<div class="timeline">
    <div class="event">
        <div class="event-circle"></div>
        <div class="event-content">
            <h3>Событие 1</h3>
            <p>Описание события 1.</p>
        </div>
    </div>
    <div class="event">
        <div class="event-circle"></div>
        <div class="event-content">
            <h3>Событие 2</h3>
            <p>Описание события 2.</p>
        </div>
    </div>
    <div class="event">
        <div class="event-circle"></div>
        <div class="event-content">
            <h3>Событие 3</h3>
            <p>Описание события 3.</p>
        </div>
    </div>
    <!-- Добавьте другие события -->
</div>
```

### 2. Использование SVG для линии

Вы можете использовать SVG для создания пунктирной линии между событиями. Например, добавьте `<svg>` в начале и конце таймлайна, чтобы создать вертикальную линию.

```html
<svg height="100%" width="10" class="timeline-line">
    <line x1="5" y1="0" x2="5" y2="100%" stroke="black" stroke-width="2" stroke-dasharray="5, 5" />
</svg>
```

### 3. Стилизация с помощью CSS

Добавьте стили, чтобы улучшить внешний вид таймлайна.

```css
.timeline {
    position: relative;
    width: 200px; /* Ширина таймлайна */
}

.event {
    position: relative;
    margin: 20px 0; /* Расстояние между событиями */
}

.event-circle {
    width: 20px;
    height: 20px;
    background-color: #4285f4; /* Цвет кружка */
    border-radius: 50%; 
    position: absolute; 
    left: -10px; /* Расположение кружка относительно линии */
    top: 0;
}

.timeline-line {
    position: absolute;
    left: 10px; /* Сдвиг для соответствия кружкам */
    top: 0;
    height: 100%;
}
```

### 4. Позиционирование кружков

Если вы хотите, чтобы кружки были визуально привязаны к разным событиям, можно установить прогрессивные значения `top` для каждого события в CSS или динамически через JavaScript.

### 5. Завершение

Вы можете добавить JavaScript для интерактивности, например, всплывающие окна при наведении на события или анимацию при загрузке страницы.

### Пример

Соберите все вместе:

```html
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Вертикальный Таймлайн</title>
    <style>
        /* Добавьте здесь CSS из предыдущего примера */
    </style>
</head>
<body>
    <div class="timeline">
        <svg height="100%" width="10" class="timeline-line">
            <line x1="5" y1="0" x2="5" y2="100%" stroke="black" stroke-width="2" stroke-dasharray="5, 5" />
        </svg>
        <div class="event">
            <div class="event-circle"></div>
            <div class="event-content">
                <h3>Событие 1</h3>
                <p>Описание события 1.</p>
            </div>
        </div>
        <div class="event">
            <div class="event-circle"></div>
            <div class="event-content">
                <h3>Событие 2</h3>
                <p>Описание события 2.</p>
            </div>
        </div>
        <!-- Другие события -->
    </div>
</body>
</html>
```

Теперь у вас есть базовый вертикальный таймлайн с пунктирной линией и кружками для событий! Вы можете настраивать стили и добавлять функции для улучшения пользовательского
Вот такой гибкий вариант. Настройки могут быть вариативными. 
Тык
Похожие вопросы