我有三个独立的SVG文件,当它们相互叠加时,它们将创建一个单一的图形。第一个SVG文件是一个红色三角形,第二个是位于三角形内部的蓝色圆圈,第三个是位于三角形底部的紫色矩形(三角形和矩形之间有一点空间)。我的目标是将所有三个SVG文件在页面的中心相互叠加。下面是HTML和CSS代码。
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
.graphic{
height: 100vh;
width: 100vw;
background-color: palegreen;
display: grid;
place-items: center;
position: relative;
}
.triangle{
position: absolute;
}
.circle{
position: absolute;
top:0;
}
.rectangle{
position:relative;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Graphic-center</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="graphic">
<div>
<img src="stackoverflow/SVG/triangle.svg" class="triangle" width="150px"/>
</div>
<div>
<img src="stackoverflow/SVG/circle.svg" class="circle" width="150px"/>
</div>
<div>
<img src="stackoverflow/SVG/rectangle.svg" class="rectangle" width="150px"/>
</div>
</div>
</body>
</html>
正如你在我的CSS中看到的,我尝试使用-position:绝对值;和位置:相对的;-但我仍然不能让它们在页面的中心适当地相互重叠。请记住,一旦SVG文件被正确居中,我将使用@keyframes动画它们,我需要单独动画它们(除非有其他方法),因此每个SVG文件的位置不能固定在页面上(即:我需要能够移动它们)。有人能帮忙吗?先谢谢你了。
3条答案
按热度按时间ax6ht2ek1#
只要把它们都放在同一个网格行和列中。
aydmsdu92#
要居中对齐和覆盖三个SVG文件,可以使用flexbox和绝对定位。以下是HTML和CSS代码的更新版本:
带有类“graphic”的外部div使用flexbox将SVG文件水平和垂直居中对齐。这确保它们被放置在页面的中心。
每个SVG文件的位置都设置为绝对位置,以允许它们彼此重叠。
圆形SVG文件在其父div中使用边距居中:自动并将所有边(顶部、右侧、底部、左侧)设置为0。这使圆在三角形内水平和垂直方向居中。
矩形SVG文件使用bottom属性位于底部。您可以调整“bottom”的值,以增加或减少三角形和矩形之间的间距。
ubby3x7f3#
你可以用简单的HTML来实现。