我需要在CSS网格布局中重叠两张图片而不作弊,而且必须使用CSS网格完成。意味着它应该留在布局单元格中。以下是我正在做的工作: "中间"应该在图片中居中,并且都集中在页面上,分别是" banner" -cell
以下CSS布局应保持原样:
.container {
display: grid;
grid-template-columns: 15% 70% 15%;
grid-template-rows: 20% 20% 20% 20% 20%;
grid-gap: 2px;
grid-template-areas:
'banner banner banner'
'sidebar content fb'
'sidebar content fb'
'sidebar content fb'
'src src src';
}
.banner {
grid-area: banner;
}
我已经尝试过这些方法:
justify-items: center;
justify-content: center;
align-content: center;
align-self: center;
text-align: center;
绝对位置的方法很好,但它完全忽略了网格,因此实际的网格在图片下面。可以在" banner"中应用填充。细胞推下内容,但这是我想避免的那种作弊行为。
我需要这两张照片在这个" banner"中保持重叠。单元格,但由于CSS网格很新,我的选项用完了并没有很多答案。
HTML:
<body class="body">
<div class="container">
<div class="banner">
<img id="skyline" src="Pictures/SkylinePH.jpg">
<img id="logo" src="Pictures/Logo2.png">
</div>
</div>
我非常感谢任何帮助!提前谢谢你:)
答案 0 :(得分:1)
绝对位置的方法很好,但它完全忽略了网格,因此实际的网格在图片下面。
您不需要position: absolute
两个图像 - 您可以拥有较大且位于徽标后面的横幅图像,占据CSS网格单元格中通常会占用的空间。然后你可以绝对定位并将徽标置于其顶部。那会有用吗?
.banner {
position: relative; /* so we can position the logo based on this container */
text-align: center; /* so the skyline image is horizontally centered */
}
#logo {
position: absolute; /* these 4 lines will center the logo */
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
答案 1 :(得分:1)
文字覆盖图片。使用CSS网格布局。
HTML
<div id="container">
<img src="some-image.jpg">
<p>SOME TEXT OVER IMAGE</p>
</div>
CSS
#container{
display: grid;
grid-template-columns: 1fr;
grid-template-rows: repeat(3, 1fr);
}
#container img{
grid-column: 1;
grid-row: 1 / span 3;
width: 100%;
height: 100%;
overflow: hidden;
}
#container p{
grid-column: 1;
grid-row: 2;
align-self: center;
justify-self: center;
z-index: 1;
}
图像上的图像。使用CSS网格布局。
HTML
<div id="container">
<img id="img-1" src="image-1.jpg">
<img id="img-2" src="image-2.jpg">
</div>
CSS
#container{
display: grid;
grid-template-columns: 1fr;
grid-template-rows: repeat(3, 1fr);
}
#container #img-1{
grid-column: 1;
grid-row: 1 / span 3;
width: 100%;
height: 100%;
overflow: hidden;
}
#container #img-2{
grid-column: 1;
grid-row: 2;
align-self: center;
justify-self: center;
z-index: 1;
}
答案 2 :(得分:1)
使用css grid
,不再需要绝对或相对定位。不要忘记在css grid
中,您可以通过给出相同的grid-row
和grid-column
值来叠加网格,然后使用z-index
。相当强大:)希望这有帮助