Развертываются треугольники разной формы и размера? - PullRequest
0 голосов
/ 02 сентября 2018

Я пытаюсь создать разворачивающуюся анимацию, используя CSS3.

По сути, я пытаюсь развернуть 3 треугольника за другим, и треугольники имеют разные размеры и формы, но все они образуют одно изображение.

Я не уверен, возможно ли это вообще, но я до сих пор придумал это:

http://jsfiddle.net/wvm15yL4/27/

И это мой код:

@keyframes flip {
   0%       { transform: rotate3d( 0.5, 0.866, 0,  90deg); 
              opacity: 0;}
   0.1%     { transform: rotate3d( 0.5, 0.866, 0,  90deg); 
              opacity: 1;}
  14%       { transform: rotate3d( 0.5, 0.866, 0,   0deg); }
  50%       { transform: rotate3d(-0.5, 0.866, 0,   0deg); }
  63.99%    { transform: rotate3d(-0.5, 0.866, 0, -90deg); 
              opacity: 1;}
  64%, 100% { transform: rotate3d(-0.5, 0.866, 0, -90deg); 
              opacity: 0}
}

.folding-hex {
  height: 69.28px;
  width: 80px;
  position: relative;
  margin: 0 auto;
  transform-origin: 0 0;
  transform: translateX(40px) rotate(30deg); }

.rotator {
    transform-origin: 20px 37.64px;

}
.rotator:nth-child(1) {
    transform: rotate(0deg); 
}
.rotator:nth-child(2) {
    transform: rotate(60deg); 
}
.rotator:nth-child(3) {
    transform: rotate(120deg); 
}
.rotator:nth-child(4) {
    transform: rotate(180deg); 
}
.rotator:nth-child(5) {
    transform: rotate(240deg); 
}
.rotator:nth-child(6) {
    transform: rotate(300deg); 
}

.triangle {
    position: absolute;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 34.64px 20px 0;
    transform-origin: 20px 37.64px;
    border-color: #E50C4E transparent; 
    animation: flip 3s linear infinite;
}

.rotator:nth-child(2) .triangle {
    border-color: #b5093d transparent; 
    animation-delay: -2.5s;
}
.rotator:nth-child(3) .triangle {
    border-color: #b5093d transparent; 
    animation-delay: -2.0s;
}
.rotator:nth-child(4) .triangle {
    animation-delay: -1.5s;
}

.rotator:nth-child(5) .triangle {
    border-color: #f8799f transparent; 
    animation-delay: -1.0s;
}
.rotator:nth-child(6) .triangle {
    border-color: #f8799f transparent; 
    animation-delay: -0.5s;
}

Как вы можете видеть, он в настоящее время оживляет, но не разворачивает треугольники.

Может кто-нибудь дать совет по этому вопросу?

Заранее спасибо.

EDIT:

В основном, пытаясь развернуть треугольники, как это:

http://jsfiddle.net/wvm15yL4/28/

1 Ответ

0 голосов
/ 02 сентября 2018

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

Вот упрощенный пример, который нужно развернуть:

.unfold {
  margin: 150px;
  position: relative;
  width:100px;
}
.unfold svg {
  position:absolute;
  bottom:0;
  stroke:blue;
  stroke-width:2px;
  fill:transparent;
  transform-origin:bottom;
  transform:skewY(-10deg);
  transition:1s all;
}
.unfold svg:last-child {
  transform:skewY(-10deg) rotateX(45deg);
}
.unfold:hover svg:first-child {
  transform-origin:bottom;
  transform:skewY(-10deg) rotateX(-140deg);
}
<div class="unfold">
  <svg viewBox="0 0 100 100" ><polygon points="2 2,2 98,98 98" /></svg>
  <svg viewBox="0 0 100 100" ><polygon points="98 2,2 98,98 98" /></svg>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...