【问题标题】:center right-aligned svg element居中右对齐 svg 元素
【发布时间】:2025-12-10 23:05:01
【问题描述】:

我正在尝试将自定义滚动指示器水平居中。我想以#slideDown div 为中心。我尝试了这段代码,它将滚动指示器靠近中心移动,但不完全正确。

#slideDown{
display: flex;
  justify-content: center;

}

我认为问题出现了,因为我绘制的图像是右对齐的,如下所示:

它应该像这样居中对齐:

知道如何解决这个问题吗?

Scroll indicator HTML

    <div id="slideDown">
    <svg xmlns="http://www.w3.org/2000/svg"  display="block" margin="auto" width="22" height="26" viewBox="-1 -1 22 26" class="arrows arrows-1">
          <g fill="none" fill-rule="evenodd" stroke="#666">
            <path d="M0 0l10 12L20 0" class="a1"></path>
            <path d="M0 12l10 12 10-12" class="a2"></path>
          </g>
        </svg>
    </div>





Scroll indicator CSS:
.arrows {
  padding: 2em;
  -webkit-animation-name: arrowsOpacity;
          animation-name: arrowsOpacity;
  -webkit-animation-duration: 3.5s;
          animation-duration: 3.5s;
  -webkit-animation-iteration-count: 1;
          animation-iteration-count: 1;
  -webkit-animation-timing-function: linear;
          animation-timing-function: linear;
}

.arrows-1 path {
  -webkit-animation-name: arrows-1-anim;
          animation-name: arrows-1-anim;
  -webkit-animation-duration: 2s;
          animation-duration: 2s;
  -webkit-animation-iteration-count: infinite;
          animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;
          animation-timing-function: linear;
}
.arrows-1 path.a1 {
  -webkit-animation-delay: 0s;
          animation-delay: 0s;

}
.arrows-1 path.a2 {
  -webkit-animation-delay: 0.2s;
          animation-delay: 0.2s;
}

@-webkit-keyframes arrowsOpacity {
  0% {
    opacity: 0;
  }
  30% {
    opacity: 0;
  }
  50% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-webkit-keyframes arrows-1-anim {
  0% {
    opacity: 0;
  }
  30% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@keyframes arrows-1-anim {
  0% {
    opacity: 0;
  }
  30% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}


#slideDown{
display: flex;
  justify-content: center;


}

【问题讨论】:

    标签: html css flexbox centering


    【解决方案1】:

    不确定是什么问题,因为我已经粘贴了提供的代码并制作了一个 JSfiddle,它似乎工作正常。看看吧:https://jsfiddle.net/8cvb8bw1/

    也许你的 flexbox 包装了其他元素并破坏了布局?很难说你是否只提供了代码的摘录。

    #slideDown {
      display: flex;
      justify-content: center;
    }
    

    【讨论】:

    • 谢谢。如果您在开发者工具打开的情况下将鼠标悬停在滚动指示器上,您会看到您的滚动条确实在框的中心,而我的是右对齐的。
    • 我添加了一张图片。
    • 那么到底是什么问题?您发布的代码可以正常工作。
    • svg 没有在它的容器中居中。我增加了 svg 的宽度,问题就消失了。