Reputation: 41
Im learning more about grids in CSS. I have created a grid of four images and a textbox that describes the images. I cannot get the items to align next to each other. I want to have the textbox on the left side and the images on the right but I cannot get it to align next to each other. The images are slightly on the right but it's sitting low. How can i get the grid images to align next to the textbox? (text on left and images on right)
#grid-container{
width: 600px;
height: 600px;
margin: 0 auto;
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-template-rows: repeat(2, 1fr);
}
#image{
height: 300px;
width: 350px;
}
.grid-item{
width: 300px;
height: 300px;
display: flex;
}
.grid-item:nth-of-type(1){
grid-column: 1 / 2;
grid-row: 1 / 2;
transform: translate(-50px,100px);
}
.grid-item:nth-of-type(2){
grid-column: 1 / 2;
grid-row: 2 / 2;
transform: translate(-0,100px);
}
.grid-item:nth-of-type(3){
grid-column: 2 / 2;
grid-row: 1 / 2;
transform: translate(-10px, -0px);
}
.grid-item:nth-of-type(4){
grid-column: 2 / 2;
grid-row: 2 / 2;
transform: translate(-5px,0px);
}
.overview{
display: flex;
width: 30%;
}
.overview-text{
text-align: center;
}
.flex-box{
display: flex;
}
<!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">
<link rel="stylesheet" href="index.css">
<title>Document</title>
</head>
<body>
<header>
<h1>How to layer and overlap elements</h1>
</header>
<div class="overview">
<div class="overview-text">
<h1>Overview Text</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>
</div>
<div class="flex-box">
<div id = "grid-container">
<div class="grid-item">
<img id = "image" src = "Image">
</div>
<div class="grid-item">
<img id = "image" src = "Image/">
</div>
<div class="grid-item">
<img id = "image" src = "Image/">
</div>
<div class="grid-item">
<img id = "image" src = "Image">
</div>
</div>
</div>
</body>
</html>
Upvotes: 0
Views: 45
Reputation: 10826
You should use the .flex-box
as the container of both text and grid images. I also add margin-left: 100px
to the grid since it has transform that overflows:
#grid-container {
width: 600px;
height: 600px;
margin: 0 auto;
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-template-rows: repeat(2, 1fr);
margin-left: 100px;
}
#image {
height: 300px;
width: 350px;
}
.grid-item {
width: 300px;
height: 300px;
display: flex;
}
.grid-item:nth-of-type(1) {
grid-column: 1 / 2;
grid-row: 1 / 2;
transform: translate(-50px, 100px);
}
.grid-item:nth-of-type(2) {
grid-column: 1 / 2;
grid-row: 2 / 2;
transform: translate(-0, 100px);
}
.grid-item:nth-of-type(3) {
grid-column: 2 / 2;
grid-row: 1 / 2;
transform: translate(-10px, -0px);
}
.grid-item:nth-of-type(4) {
grid-column: 2 / 2;
grid-row: 2 / 2;
transform: translate(-5px, 0px);
}
.overview {
display: flex;
width: 30%;
}
.overview-text {
text-align: center;
}
.flex-box {
display: flex;
justify-content: center;
}
<!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">
<link rel="stylesheet" href="index.css">
<title>Document</title>
</head>
<body>
<header>
<h1>How to layer and overlap elements</h1>
</header>
<div class="flex-box">
<div class="overview">
<div class="overview-text">
<h1>Overview Text</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing
elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>
</div>
<div>
<div id="grid-container">
<div class="grid-item">
<img id="image" src="Image">
</div>
<div class="grid-item">
<img id="image" src="Image/">
</div>
<div class="grid-item">
<img id="image" src="Image/">
</div>
<div class="grid-item">
<img id="image" src="Image">
</div>
</div>
</div>
</div>
</body>
</html>
Upvotes: 1