Здравствуйте. У меня есть задача: у меня есть 1-литровая бутылка, из которой периодически убавляется вода. Как можно графически отобразить уровень воды в бутылке? То есть, мне нужно визуально показать, какая часть бутылки заполнена, и рядом указать, сколько миллилитров осталось в ней. Может, существуют какие-то плагины, графики или столбики, которые я мог бы адаптировать под свои нужды? Буду признателен за ваши идеи. <a href="https://codepen.io/irodger/pen/vGbvKm" rel="nofollow">Я нашел что-то подобное</a>, но, возможно, у вас есть другие предложения.
Здравствуйте!
Отличное решение для отображения уровня жидкости в бутылке можно реализовать с помощью HTML, CSS и JavaScript. Я предлагаю создать простую анимацию, которая будет выводить уровень воды в бутылке вместе с текстовой информацией о количестве оставшейся жидкости.
### Вот пример реализации:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Уровень воды в бутылке</title>
<style>
.bottle {
width: 100px;
height: 300px;
background: #cfe2f3;
border: 5px solid #000;
border-radius: 10px;
position: relative;
overflow: hidden;
}
.water {
width: 100%;
background: #007bff;
position: absolute;
bottom: 0;
transition: height 0.5s;
}
.level {
margin-top: 20px;
font-size: 24px;
text-align: center;
}
</style>
</head>
<body>
<div class="bottle">
<div class="water" id="water" style="height: 100%;"></div>
</div>
<div class="level" id="level">Осталось: 1000 мл</div>
<input type="range" id="water-level" min="0" max="1000" value="1000" step="10">
<script>
const waterElement = document.getElementById('water');
const levelElement = document.getElementById('level');
const waterLevelInput = document.getElementById('water-level');
waterLevelInput.addEventListener('input', (event) => {
const remainingWater = event.target.value;
const height = (remainingWater / 1000) * 100; // высота в процентах
waterElement.style.height = height + '%';
levelElement.textContent = `Осталось: ${remainingWater} мл`;
});
</script>
</body>
</html>
```
### Пояснение к коду:
1. **HTML-структура**:
- Создаем `div` для бутылки с классом `bottle`.
- Внутри бутылки создаем `div` для воды с классом `water`, который будет изменять свою высоту в зависимости от оставшегося объема.
- Добавляем `div` для отображения оставшегося объема и слайдер для изменения уровня воды.
2. **CSS-стили**:
- Применяем стили для бутылки и воды, устанавливая размеры и цвета.
- Устанавливаем `overflow: hidden`, чтобы любые элементы, выходящие за пределы бутылки, скрывались.
3. **JavaScript**:
- Получаем элементы для воды и уровня.
- Добавляем обработчик событий для изменения значения слайдера, который динамически обновляет высоту воды и текстовое значение оставшегося объема в миллилитрах.
### Итог:
С помощью этого простого примера вы можете визуально отобразить уровень воды в бутылке и легко управлять этим уровнем с помощью слайдера. Вы можете дополнительно настроить стили и функциональность в соответствии с вашими предпочтениями.
Рисуем бутылку в фотошопе или иллюстраторе. <br/> В иллюстраторе делаем внутренний контур. <br/> Поверх бутылки накладываем див, у которого фон закрашивается по вертикали на необходимый уровень <br/> Делаем из контура свгэшку и накладываем svg-маску на див-заполнитель.