CSS - 无法识别网格行
CSS - Grid row not recognized
我的网格有问题。第一次做,很抱歉这个初学者的问题。
这张图(黑色边框)展示了我想要实现的效果:
不幸的是,我已经卡在第一行代码上了:
body {
display: grid;
grid-template-columns: 10% auto 10% 10% 10%;
grid-template-rows: 60px auto; /*Isn't it recognizing my second row?*/
}
.temp {
background-color: black;
grid-column: 1 / 2;
grid-row: 2 / 3;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Max S. Rodenkirchen - Sinn Sehen - FH AC 2022 - bei Eva Vitting</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class = "menu">
</div>
<div class = "temp">
</div>
<div class = "draw">
</div>
<div class = "label">
</div>
<div class = "slider">
</div>
<div class = "check">
</div>
</body>
</html>
温度 class 应该在第二行的左侧。
我的另一个问题可能更高级一些。
正方形区域将是 P5 canvas,它始终是正方形的,并且应始终保持完整的网格行高。
我想知道我是否需要编写这样的代码:
grid-template-columns: auto 60% auto auto auto;
但我很确定我在这里遗漏了一些东西。
希望得到一些帮助 :) 这将用于一个大学项目。
最大值
你的第二行在那里,.temp
div 就在那一行。只是因为 .temp
div 没有内容并且第二行的高度为 auto
该行和其中的 .temp
div 高度为零所以是不可见的。您可以通过添加轮廓和最小高度更容易地看到发生了什么:
body {
display: grid;
grid-template-columns: 10% auto 10% 10% 10%;
grid-template-rows: 60px auto;
}
div {
outline: 1px solid red;
min-height: 20px;
}
.temp {
background-color: black;
grid-column: 1 / 2;
grid-row: 2 / 3;
}
<div class="menu">
</div>
<div class="temp">
</div>
<div class="draw">
</div>
<div class="label">
</div>
<div class="slider">
</div>
<div class="check">
</div>
将顶部菜单从网格中取出似乎更容易,因为它的尺寸似乎与其余元素没有直接关系。
相比之下,大正方形看起来好像是较窄列宽度的 8 倍。
可以通过给大方块aspect-ratio: 1 / 1;
使大方块的高度与其宽度相同
因此我们可以在 1fr 处定义一个单行网格,其中包含 4 列,在 8fr 处定义正方形。
为了使其更容易居中,此代码段将其放在具有弹性的容器中。
* {
margin: 0;
padding: 0;
}
body {
width: 100vw;
}
.menu {
width: 100%;
height: 60px;
}
.outer {
display: flex;
justify-content: center;
margin-top: 1vw;
}
.container {
width: 95%;
display: grid;
grid-template-columns: 1fr 8fr 1fr 1fr 1fr;
grid-template-rows: 1fr;
gap: 1vw;
}
.menu,
.container div {
border: 1px solid black;
box-sizing: border-box;
}
.temp {
grid-row: 1 / 2;
}
.draw {
grid-column: 2 / 3;
aspect-ratio: 1 / 1;
}
.label {
grid-column: 3 / 4;
}
.slider {
grid-column: 4 / 5;
}
.check {
grid-column: 5 / 6;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Max S. Rodenkirchen - Sinn Sehen - FH AC 2022 - bei Eva Vitting</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="menu">
</div>
<div class="outer">
<div class="container">
<div class="temp">
</div>
<div class="draw">
</div>
<div class="label">
</div>
<div class="slider">
</div>
<div class="check">
</div>
</div>
</div>
</body>
</html>
我的网格有问题。第一次做,很抱歉这个初学者的问题。
这张图(黑色边框)展示了我想要实现的效果:
不幸的是,我已经卡在第一行代码上了:
body {
display: grid;
grid-template-columns: 10% auto 10% 10% 10%;
grid-template-rows: 60px auto; /*Isn't it recognizing my second row?*/
}
.temp {
background-color: black;
grid-column: 1 / 2;
grid-row: 2 / 3;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Max S. Rodenkirchen - Sinn Sehen - FH AC 2022 - bei Eva Vitting</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class = "menu">
</div>
<div class = "temp">
</div>
<div class = "draw">
</div>
<div class = "label">
</div>
<div class = "slider">
</div>
<div class = "check">
</div>
</body>
</html>
温度 class 应该在第二行的左侧。
我的另一个问题可能更高级一些。 正方形区域将是 P5 canvas,它始终是正方形的,并且应始终保持完整的网格行高。 我想知道我是否需要编写这样的代码:
grid-template-columns: auto 60% auto auto auto;
但我很确定我在这里遗漏了一些东西。
希望得到一些帮助 :) 这将用于一个大学项目。 最大值
你的第二行在那里,.temp
div 就在那一行。只是因为 .temp
div 没有内容并且第二行的高度为 auto
该行和其中的 .temp
div 高度为零所以是不可见的。您可以通过添加轮廓和最小高度更容易地看到发生了什么:
body {
display: grid;
grid-template-columns: 10% auto 10% 10% 10%;
grid-template-rows: 60px auto;
}
div {
outline: 1px solid red;
min-height: 20px;
}
.temp {
background-color: black;
grid-column: 1 / 2;
grid-row: 2 / 3;
}
<div class="menu">
</div>
<div class="temp">
</div>
<div class="draw">
</div>
<div class="label">
</div>
<div class="slider">
</div>
<div class="check">
</div>
将顶部菜单从网格中取出似乎更容易,因为它的尺寸似乎与其余元素没有直接关系。
相比之下,大正方形看起来好像是较窄列宽度的 8 倍。
可以通过给大方块aspect-ratio: 1 / 1;
因此我们可以在 1fr 处定义一个单行网格,其中包含 4 列,在 8fr 处定义正方形。
为了使其更容易居中,此代码段将其放在具有弹性的容器中。
* {
margin: 0;
padding: 0;
}
body {
width: 100vw;
}
.menu {
width: 100%;
height: 60px;
}
.outer {
display: flex;
justify-content: center;
margin-top: 1vw;
}
.container {
width: 95%;
display: grid;
grid-template-columns: 1fr 8fr 1fr 1fr 1fr;
grid-template-rows: 1fr;
gap: 1vw;
}
.menu,
.container div {
border: 1px solid black;
box-sizing: border-box;
}
.temp {
grid-row: 1 / 2;
}
.draw {
grid-column: 2 / 3;
aspect-ratio: 1 / 1;
}
.label {
grid-column: 3 / 4;
}
.slider {
grid-column: 4 / 5;
}
.check {
grid-column: 5 / 6;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Max S. Rodenkirchen - Sinn Sehen - FH AC 2022 - bei Eva Vitting</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="menu">
</div>
<div class="outer">
<div class="container">
<div class="temp">
</div>
<div class="draw">
</div>
<div class="label">
</div>
<div class="slider">
</div>
<div class="check">
</div>
</div>
</div>
</body>
</html>