我无法使用 CSS 控制动画 svg 边框

Posted

技术标签:

【中文标题】我无法使用 CSS 控制动画 svg 边框【英文标题】:I'm having trouble controlling an animated svg border using CSS 【发布时间】:2017-02-05 09:41:54 【问题描述】:

我一直在尝试为 svg 边框设置动画,我已经做到了这一点

html 
  background: white;

div 
  position: fixed;
  height: 200px;
  width: 605px;
  position: fixed;
  left: 30%

.mainNav 
  position: fixed;
  top: 6;

[class="navBorder"] .outline 
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  stroke: #7272f8;
  stroke-width: 11px;
  fill: none;

.navBorder .outline 
  stroke-dasharray: 2000;
  stroke-dashoffset: 1900;
  -webkit-transition: 0.5s;
  -moz-transition: 0.5s;
  -o-transition: 0.5s;
  transition: 0.5s;

.navBorder:hover .outline 
  stroke-dasharray: 1100 0;
  stroke-dashoffset: 0;
<div>
  <a class="navBorder" target="_blank">
    <svg   xmlns="http://www.w3.org/2000/svg">
      <rect class="outline"   />
    </svg>
  </a>
</div>

http://codepen.io/lorehill/pen/pEPXar

问题是我似乎无法让边框的起始位置位于顶部中心,然后关闭中心底部。

我很困惑试图弄清楚如何计算我需要为起始位置设置 stroke-dasharray 和 stroke-dashoffset 以获得我想要的效果的值。

如果有人能像我 5 岁那样解释它,那就太好了。

谢谢!

【问题讨论】:

我会试一试,谢谢。我希望它左右均匀地旋转,末端在中间。您认为这样可以实现吗? 【参考方案1】:

AFAIK,笔画的起始位置始终是矩形的起始点,该矩形位于 rect 元素的左上角。

我似乎无法让边框的起始位置位于顶部中心,然后关闭中心底部。

我认为您需要 两个 折线元素,尽管您可以在两者上使用相同的类。

svg 
  height: 100px;
  margin: 1em;

.outline 
  fill: lightblue;
  stroke-dasharray: 200;
  stroke-dashoffset: 190;
  -webkit-transition: 0.5s;
  -moz-transition: 0.5s;
  -o-transition: 0.5s;
  transition: 0.5s;

svg:hover .outline 
  stroke-dasharray: 200 0;
  stroke-dashoffset: 0;

   
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 100 100">

  <polyline class="outline" points="50,0 100,0, 100,100 50,100" style="stroke:#660000; stroke-width: 3;" />

  <polyline class="outline" points="50,0 0,0 0,100 50,100" style="stroke:#660000; stroke-width: 3;" />

</svg>

Codepen Demo

【讨论】:

以上是关于我无法使用 CSS 控制动画 svg 边框的主要内容,如果未能解决你的问题,请参考以下文章

使用 css 为我的 svg 文件设置动画时遇到问题

巧用 CSS 实现炫彩三角边框动画

如何使用 JQuery 控制基于 CSS 的 SVG 动画?

svg中不可以使用css 3d动画吗

Web动画SVG 线条动画入门

svg中不可以使用css 3d动画吗?