首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将svg形状分成两部分正确裁剪?

如何将svg形状分成两部分正确裁剪?
EN

Stack Overflow用户
提问于 2015-07-31 11:22:14
回答 2查看 365关注 0票数 0

我有一个svg标志,想法是-当你点击它的每一半,你应该被重定向到两个不同的页面。因此,我已经把这个标志切割成两个相等的部分,使用插画,以便以后匹配他们在一起。

代码语言:javascript
复制
<div id="lobby">
    <div id="jekyll">
        <a href="#" >
        <img src="lobby/jekyll.svg" alt="dr.Jekyll">
        </a>
    </div>      
    <div id="hyde">
        <a href="#" >
        <img src="lobby/hyde.svg" alt="mr.Hyde">
        </a>
    </div>
</div>

CSS
#jekyll{
    float:left;
    width:50%;

}

#hyde{
    float:right;
    width:50%;

}

但问题是,虽然两幅图像在顶部完全匹配,但它们开始与底部不匹配,我尝试了同样的技术,用不太复杂的图像,同样的事情发生在那里。是否有适当的方法来做到这一点,或者有一种替代方法?http://codepen.io/anon/pen/YXdymZ

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-31 13:12:09

svg文件在它们的img容器中呈现在不同的高度(我的平台上的增量: 3px),尽管svg的视口尺寸相同。

虽然我不能告诉您此行为的原因,但将img高度设置为相同的值可以解决以下问题:

代码语言:javascript
复制
#jekyll img, #hyde img { height: 421px; }

更新

绝对措施不能令人满意。还有另一种解决方案只涉及互补的CSS (在线演示在这里的代码 ):

代码语言:javascript
复制
#jekyll{
    float:left;
    width:50%;
    margin-left: 1px; /* added */
}

#hyde{
    float:right;
    width:calc(50% - 1px); /* added */
}
#hyde img, #jekyll img { margin-left: -1px; } /* added */
票数 0
EN

Stack Overflow用户

发布于 2015-08-01 05:38:59

它们不完全对齐的原因是因为两个SVG viewBoxes没有相同的维度。

因为您只为两个父div提供宽度,所以每个图像的最终高度都是使用viewBox高宽比计算的。

在您的代码页中,给出了两个图像(#lobby的一半)的#lobby宽度,其实际宽度为148.188px。为了简化计算,让我们将其除以148‘s。

要计算每幅图像的高度,浏览器将使用该宽度并根据高宽比进行缩放。

对于jekyll,viewBox的宽度和高度是61.08x163.904。

对于海德,是: 60.699 x 163.904。

因此,计算出的每个高度如下:

代码语言:javascript
复制
Jekyll: 148 * 163.904/61.08  = 397px
  Hide: 148 * 163.904/60.699 = 400px

因此出现了差异。

由于RHS ( hyde )比较窄,并且它在视图框中左对齐,一个简单的修复方法是修改hyde viewbox的宽度值以匹配Jekyll的宽度值。也就是说,将viewBox更改为:

代码语言:javascript
复制
viewBox="481.73 57.015 61.08 163.904"

我还没做过测试,但我认为这应该有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31744972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档