html - 如何响应地将路径居中到 svg 容器的中心?

标签 html css svg css-transforms

<分区>

我正在尝试将 svg 路径元素响应式地居中到 svg 元素的中心吗?

我已经尝试过 translate(Xpx, Ypx) 但这打破了不同的屏幕分辨率。

这是我的设置,

CSS:

#sky{
   width: 100%;
   height: 200px;
   background-color: skyblue;
}
        
#container{
   display: block;
   margin: 0 auto;
}

HTML:

<svg id="sky">
  <g id="container">
    <path id="cloud" fill="#ffffff" d="M64.407,24.849c-0.013,0-0.026,0.002-0.04,0.002c0.019-0.261,0.04-0.522,0.04-0.788c0-5.944-4.819-10.764-10.763-10.764c-2.383,0-4.577,0.784-6.361,2.094c-2.624-5.62-8.31-9.524-14.922-9.524c-9.1,0-16.477,7.377-16.477,16.477c0,0.896,0.091,1.769,0.229,2.627C10.485,25.758,6.15,30.577,6.15,36.42c0,6.391,5.181,11.572,11.572,11.572h46.685c6.392,0,11.572-5.181,11.572-11.572C75.979,30.029,70.798,24.849,64.407,24.849z"></path>
  </g>
</svg>

参见 JsFiddle

我想要一种适用于不同分辨率的方法,例如 %div

谢谢。

最佳答案

所以我通常不会使用 jQuery 来设置样式,但我相信这是一个异常(exception),因为它不会与我尝试过的任何 CSS 发生冲突。这是我编写的一个小函数,即使您调整页面大小也能使云居中。

jQuery:

function centerCloud() {
  var cloudCenter = $('#sky').outerWidth()/2 - 35;
  $('#cloud').css('transform', 'translate(' + cloudCenter + 'px, 0px)');
}

centerCloud();

$(window).on('resize', function(){
    centerCloud();
});

这是一个working fiddle .

关于html - 如何响应地将路径居中到 svg 容器的中心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34751426/

相关文章:

javascript - 在浏览 HTML 页面时保持音频播放器持续/连续播放

html - 将背景应用于列表

html - 如何让 flexbox 中的元素垂直跨越?

html - css 样式 - 标签中的标签中的标签中的标签

JQuery:如何更改一组中具有特定元素的元素的 CSS

javascript - SVG如何获取鼠标在内部矩阵上的位置

css - 两个div之间出现莫名其妙的空格

javascript - 悬停时的背景位置动画

android - 是否可以使用 ColorStateList 为矢量绘图着色

html/css 六边形,里面有图片