2016-03-28 109 views
1

我有一個基本的動畫,我想用SVG做。然而,我不能100%確定如何讓它從中心生成動畫。作爲SVG動畫的新手,我知道如何製作簡單的動畫,但卻無法真正爲我遇到的問題找到確鑿的答案。SVG動畫:從中心畫一條線

/*MAIN ANIMATION*/ 

.line1, 
.line2 { 
    position: absolute; 
    left: 50%; 
    -webkit-transform: translate(-50%, -50%); 
     -ms-transform: translate(-50%, -50%); 
      -o-transform: translate(-50%, -50%); 
       transform: translate(-50%, -50%); 
    -ms-transform: rotate(90deg); /* IE 9 */ 
     -webkit-transform: rotate(90deg); /* Chrome, Safari, Opera */ 
      transform: rotate(90deg); 
} 

.line1 { 
    top: 0px; 
    animation: line1 5s linear forwards; /*ANIMATION NAME AND TIMING*/ 
} 

.line2 { 
    bottom: 0px; 
    animation: line2 5s linear forwards; /*ANIMATION NAME AND TIMING*/ 
} 

.animationText { 
    width: 100%; 
    font-size: 30px; 
    font-weight: normal; 
    text-align: center; 
    position: absolute; 
    left: 50%; 
    top: 50%; 
    -webkit-transform: translate(-50%, -50%); 
     -ms-transform: translate(-50%, -50%); 
      -o-transform: translate(-50%, -50%); 
       transform: translate(-50%, -50%); 
} 

這裏是該行的樣子,此刻小提琴: https://jsfiddle.net/7mastya4/6/

因此,在短期,我想那些線路從中心向外動畫。 我知道如何做標準動畫,但是對SVG來說是新手,並且改變了他們的動畫原點,這對我來說有點新鮮。

感謝您的任何幫助。

+0

你真的不能用動畫CSS行......你需要的路徑... HTTPS://css-tricks.com/svg-line-animation-works/ –

+0

如果你看到小提琴,我已經做出了路徑:) – factordog

+0

不......你有'線'元素...不是'路徑'...但也許它也可以使用線條。 –

回答

2

像這樣的東西?

.animline { 
 
    fill: none; 
 
    stroke: black; 
 
    stroke-width: 2; 
 
    -webkit-animation: expand-from-centre 5s linear forwards; 
 
    animation: expand-from-centre 5s linear forwards; 
 
} 
 

 
@-webkit-keyframes expand-from-centre 
 
{ 
 
    from { 
 
    stroke-dasharray: 0 300; 
 
    stroke-dashoffset: -150; 
 
    } 
 
    
 
    to { 
 
    stroke-dasharray: 300 300; 
 
    stroke-dashoffset: 0; 
 
    } 
 
} 
 

 

 
@keyframes expand-from-centre 
 
{ 
 
    from { 
 
    stroke-dasharray: 0 300; 
 
    stroke-dashoffset: -150; 
 
    } 
 
    
 
    to { 
 
    stroke-dasharray: 300 300; 
 
    stroke-dashoffset: 0; 
 
    } 
 
}
<svg> 
 
    <line class="animline" x1="0" y1="75" x2="300" y2="75"/> 
 
</svg>

+0

哇,非常聰明。我認爲只通過動畫製作這兩個效果是沒有可能的。 – Harry