Некоторое время назад друг представил очень красивый веб-сайтwww.species-in-pieces.com/
F12 посмотрел на структуру DOM и обнаружил, что автор просто объединил клип-путь и переходные функции CSS3 для достижения очень мощного эффекта, а детали каждого перехода и животного хорошо выполняются.
Затем я сделал демонстрацию в соответствии с моим собственным пониманием, и упаковывали основную часть JS. Заинтересованные друзья могут общаться друг с другом.
Фотографии в демо взяты изwww.behance.net/tomandersЯ только что сделал нижнюю обработку
Адрес предварительного просмотра:Screwknot.GitHub.io/arni-cli путь…
Адрес источника:GitHub.com/screwknot/press…
Процесс реализации
Начните с простого преобразования clip-path
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>simple move</title>
<style>
.polygon{
width: 600px;
height: 300px;
background-color: black;
clip-path: polygon(20% 30%, 0 70%, 40% 70%);
animation: move 1s infinite alternate;
}
@keyframes move {
to {
background-color: grey;
clip-path: polygon(80% 70%, 100% 30%, 60% 30%);
}
}
</style>
</head>
<body>
<div class="polygon"></div>
</body>
</html>
Это базовая анимация, необходимая для демонстрации.деформация + обесцвечивание, что касается того, как построить красивые графические изменения, то это требует немного воображения и дизайнерских способностей
дизайн
Сначала нам нужно разработать удовлетворительный шаблон нижней стороны, обратите внимание на контроль количества треугольников, чем меньше, тем лучше, чем меньше, тем лучше.
Далее координаты и значения цвета каждого треугольника необходимо преобразовать в формат данных. Я не могу найти очень эффективный метод преобразования в настоящее время.После маркировки с помощью программного обеспечения для маркировки я вручную ввожу его, и, наконец, рисую 3 части, и все кончено. Так что чем меньше треугольников, тем меньше, тем лучше, чем меньше, тем лучше.
Или, если у вас есть хороший способ представить его, пожалуйста, дайте мне знать.
Теперь, когда приготовления завершены, самый болезненный этап позади.
по меньшей мере
Основная идея реализации кода заключается в следующем
- Каждое животное состоит из36Треугольники разных цветов соединены вместе, поэтому надо36div для отображения
- Каждое изменение переназначает свойство clip-path 36 div.
- Каждый div устанавливает свойство перехода, чтобы переход происходил автоматически.
Просто несколько строк кода выкладываться не будут, если интересно, переместитеgithub
Тем не менее, я хотел бы представить, как использовать упакованные плагины.
Установить
CDN
<script src="https://unpkg.com/ani-clipath/dist/ani-clipath.min.js">
NPM
npm install --save ani-clipath
использовать
Вам нужно настроить контейнер DOM и настроить егоwidthа такжеheight
<style>
.shapes{
width: 800px;
height: 600px;
}
</style>
...
<div class="shapes"></div>
Инициализировать экземпляр и передать параметры
параметр | Типы | иллюстрировать |
---|---|---|
el | String | Привязать DOM-контейнер |
speed | Number | Контролируйте скорость изменений |
delay | Number | Задержка смены управления |
shapes | Array | Координаты низкоуровневой графики |
Использовать переключатель общедоступного метода
метод | иллюстрировать |
---|---|
next() | Переключить следующий рисунок |
previous() | переключиться на предыдущую графику |
<script>
var aniClipath = new AniClipath({
el: '.shapes',
speed: 1000,
delay: 30,
shapes: data
})
setInterval(function(){
aniClipath.next()
},3000)
</script>
Формат данных свойства shape
var data = [
第 1 个低边图形
[
// 基本图形参数
{
// 颜色
c: '#1A1A1A',
// polygon坐标
p: [ { x: '50%', y: '30%' }, { x: '30%', y: '70%' }, { x: '70%', y: '70%' }]
}
...
],
第 2 个低边图形
[
{
c: '#E6E6E6',
p: [ { x: '50%', y: '70%' }, { x: '30%', y: '30%' }, { x: '70%', y: '30%' }]
}
...
]
...
第 n 个低边图形
]
Вот и все, добро пожаловать, звезда.