задний план
в этой статьеРуководство по трендам в дизайне 2018 годаЯ нашел хорошее меню, поэтому хотел реализовать его с помощью апплета WeChat.
Первая анимация
перейти к делу
ВышеNav
базовыйflexмакет плюсpaddingНет необходимости говорить больше, верно?
Следует отметить, что стиль заполнителя ввода в апплете WeChat написан на
placeholder-styleв или использоватьplaceholder-class
нижнее меню
- Каждая маленькая карта следует
flexмакет, настройкиwidth: 50%,не забудьflex-wrap: wrap - Внутренняя часть каждой маленькой карточки одинакова
flexРазметка и установка центра по вертикали, подумав об этом или научно-популярных:
.main-view-item{
display: flex;
justify-content: center;
align-items: center;
width: 50%;
}
flex чертовски прост в использовании
Фотографии внутри взяты изiconfontЯ взял сверху, и время на настройку этих цветов в десятки раз больше, чем время моего макета. …
анимация
Анимация апплета Wechat может использовать только JS, обычные методы недоступны, приходите к мозговому штурму
Соблюдая направление сгиба каждой карты, добавьте начальныйrotateЧтобы сделать его обратным, я определил здесь два класса.
.rotateX90{
transform: rotateX(-90deg);
}
.rotateY90{
transform: rotateY(-90deg);
}
Итак, вы не можете видеть карту, а затем добавить событие щелчка в кнопку меню, чтобы изменить поворот карты (динамически изменить класс), просто Ojbk, вот так
<view class='main-view-item rotateX90 item1 {{item1Style}}' animation='{{item1}}'></view>
На практике следует использовать
wx:forВыполнить циклический рендеринг
var duration = 150
var item1 = wx.createAnimation({
duration: duration,
transformOrigin: '0 0 0'
})
item1.rotateX(90).step()
this.setData({
item1: item1,
item1Style: 'item1Style'
})
Обратите внимание на регулировку здесьtransformOriginдля управления направлением складывания для следующих карт вcreateAnimationдобавлено вdelayполе (разницаdurationарифметическая последовательность)
Разве это не легко, а?
Что касается сворачивания меню, код аналогичен расширению, только наоборот, но порядок некоторых раскрытий такой же, как иtransformOriginСледует отметить, что вот код для его вставки:
var duration = 150
var item3 = wx.createAnimation({
duration: duration,
transformOrigin: '100% 100% 0',
delay: duration * 2
})
item1.rotateX(90).step()
this.setData({
item3: item3,
item3Style: ''
})
Также яdataВ нем установлены две переменныеisShowа такжеisShowingчтобы определить, расширяется ли меню или расширяется, чтобы управлять событием клика, почти так
handleClick(){
if(this.data.isShowing)
return;
else if(!this.data.isShow)
this.showMenu()
else
this.hideMenu()
}
После завершения анимацииisShowа такжеisShowingПросто внесите изменения
Добро пожаловать, друзья, у которых есть лучшие идеи для обсуждения~