CSS - 绝对定位 SVG (IE)
CSS - absolute positioning SVG (IE)
我尝试定位到具有绝对位置的简单 SVG 形状。它似乎在 Firefox 中工作正常,Google Chrome 但在 Internet Explorer 中却不行(我没有任何 mac 可以在 safari 中测试......如果有人可以确认)。三角形底部 SVG 也有一个小问题,它不正确地向右(显然缺少 1px)
有什么问题,如何正确定位 SVG?
Fiddle: http://fiddle.jshell.net/g5zqrdxx/3/
html:
<div class="container">
<div class="triangle-top">
<svg width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 1 1">
<polygon points="0,1 1,0 0,0" />
</svg>
</div>
<div class="triangle-bottom">
<svg width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 1 1">
<polygon points="1,1 1,0 0,1 1" />
</svg>
</div>
</div>
css:
.container {
position: relative;
display: block;
height: 350px;
width: 350px;
background: #444444;
}
.triangle-top {
position: absolute;
display: block;
width: 20%;
left: 0;
top: 0;
}
.triangle-top svg {
position: absolute;
left: 0;
top: 0;
fill: red;
}
.triangle-bottom {
position: absolute;
display: block;
width: 20%;
right: 0;
bottom: 0;
}
.triangle-bottom svg {
position: absolute;
right: 0;
bottom: 0;
fill: green;
}
最后,我使用纯 css 的替代解决方案获得了相同的结果。
http://fiddle.jshell.net/g5zqrdxx/5/
HTML:
<div class="container">
<div class="triangle-top">
<div class="triangle-up-left" style="border-color:red"></div>
</div>
<div class="triangle-bottom">
<div class="triangle-down-right" style="border-color:red"></div>
</div>
</div>
CSS:
.container {
position: relative;
display: block;
height: 350px;
width: 350px;
background: #444444;
}
.triangle-top {
position: absolute;
display: block;
width: 20%;
left: 0;
top: 0;
}
.triangle-bottom {
position: absolute;
display: block;
width: 20%;
right: 0;
bottom: 0;
}
.triangle-up-left {
width: 0;
height: 0;
padding-bottom: 100%;
padding-left: 100%;
overflow: hidden;
}
.triangle-up-left:after {
content: "";
display: block;
width: 0;
height: 0;
margin-left: -500px;
border-bottom: 500px solid transparent;
border-left: 500px solid;
border-left-color: inherit;
}
.triangle-down-right {
width: 100%;
height: 0;
padding-top: 100%;
overflow: hidden;
}
.triangle-down-right:after {
content: "";
display: block;
width: 0;
height: 0;
margin-top:-500px;
border-top: 500px solid transparent;
border-right: 500px solid;
border-right-color: inherit;
}
我尝试定位到具有绝对位置的简单 SVG 形状。它似乎在 Firefox 中工作正常,Google Chrome 但在 Internet Explorer 中却不行(我没有任何 mac 可以在 safari 中测试......如果有人可以确认)。三角形底部 SVG 也有一个小问题,它不正确地向右(显然缺少 1px)
有什么问题,如何正确定位 SVG?
Fiddle: http://fiddle.jshell.net/g5zqrdxx/3/
html:
<div class="container">
<div class="triangle-top">
<svg width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 1 1">
<polygon points="0,1 1,0 0,0" />
</svg>
</div>
<div class="triangle-bottom">
<svg width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 1 1">
<polygon points="1,1 1,0 0,1 1" />
</svg>
</div>
</div>
css:
.container {
position: relative;
display: block;
height: 350px;
width: 350px;
background: #444444;
}
.triangle-top {
position: absolute;
display: block;
width: 20%;
left: 0;
top: 0;
}
.triangle-top svg {
position: absolute;
left: 0;
top: 0;
fill: red;
}
.triangle-bottom {
position: absolute;
display: block;
width: 20%;
right: 0;
bottom: 0;
}
.triangle-bottom svg {
position: absolute;
right: 0;
bottom: 0;
fill: green;
}
最后,我使用纯 css 的替代解决方案获得了相同的结果。
http://fiddle.jshell.net/g5zqrdxx/5/
HTML:
<div class="container">
<div class="triangle-top">
<div class="triangle-up-left" style="border-color:red"></div>
</div>
<div class="triangle-bottom">
<div class="triangle-down-right" style="border-color:red"></div>
</div>
</div>
CSS:
.container {
position: relative;
display: block;
height: 350px;
width: 350px;
background: #444444;
}
.triangle-top {
position: absolute;
display: block;
width: 20%;
left: 0;
top: 0;
}
.triangle-bottom {
position: absolute;
display: block;
width: 20%;
right: 0;
bottom: 0;
}
.triangle-up-left {
width: 0;
height: 0;
padding-bottom: 100%;
padding-left: 100%;
overflow: hidden;
}
.triangle-up-left:after {
content: "";
display: block;
width: 0;
height: 0;
margin-left: -500px;
border-bottom: 500px solid transparent;
border-left: 500px solid;
border-left-color: inherit;
}
.triangle-down-right {
width: 100%;
height: 0;
padding-top: 100%;
overflow: hidden;
}
.triangle-down-right:after {
content: "";
display: block;
width: 0;
height: 0;
margin-top:-500px;
border-top: 500px solid transparent;
border-right: 500px solid;
border-right-color: inherit;
}