【发布时间】:2021-01-09 19:25:20
【问题描述】:
我想创建一个包含此类元素的网格:
我的网格目标是什么:
- 最少一列,没有最多列数(用户屏幕可以容纳的数量)。
- 能够设置列和行间距。例如。 1 点。
我的物品目标是什么:
- 能够设置最小和最大宽度,例如300px - 1fr.
- 能够设置填充,例如1 点。
- 项目应由两列组成。
- 能够在两列之间设置间隙,例如1 点。
- 左列具有固定宽度,例如50 像素。
- 右栏应占据剩余的可用宽度。
左列将包含一个固定大小的图像。不会溢出。
我的右栏目标是什么:
- 它应该由两行组成。
- 能够设置两行之间的间隙,例如1 点。
- 底行最多应包含一行文本。如果文本溢出,右侧应该有省略号。
- 上一行最多应该有四行文本。如果文本溢出,最后应该有省略号。
我能够实现的目标:
- 创建项目的主网格。
- 如果项目右栏中的文本没有溢出,则一切都像魅力一样。
问题是当一个项目的右栏中有很多文本时。我无法使正确的列不退出该项目。这是我的主要问题。您能帮我解决这个问题吗?
我当前的代码: https://jsfiddle.net/u9v041zq
我当前的 CSS:
body {
font-family: 'Poppins', sans-serif;
color: white;
background-color: #121212;
margin: 0;
line-height: 20px;
}
#grid-container {
width: 90%;
margin: 0 auto;
margin-top: 20px;
background-color: #222222;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
column-gap: 1em;
row-gap: 1em;
}
.grid-item {
background-color: blue;
padding: 1em;
display: grid;
grid-template-columns: 50px auto;
column-gap: 1em;
}
.grid-item-left {
width: 50px;
height: 100%;
background-color: brown;
}
.grid-item-right {
height: 100%;
background-color: darkcyan;
}
.grid-item-right-top {
background-color: darkgray;
overflow: hidden;
text-overflow: ellipsis;
}
.grid-item-right-bottom {
background-color: darkgreen;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
height: 20px;
line-height: 20px;
}
示例 HTML:
<html>
<head>
<link rel="stylesheet" href="/static/style.css">
</head>
<body>
<div id="grid-container">
<div class="grid-item">
<div class="grid-item-left">
left
</div>
<div class="grid-item-right">
<div class="grid-item-right-top">
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
</div>
<div class="grid-item-right-bottom">
right bottommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
</div>
</div>
</div>
<div class="grid-item">
<div class="grid-item-left">
left
</div>
<div class="grid-item-right">
<div class="grid-item-right-top">
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
</div>
<div class="grid-item-right-bottom">
right bottommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
</div>
</div>
</div>
<div class="grid-item">
<div class="grid-item-left">
left
</div>
<div class="grid-item-right">
<div class="grid-item-right-top">
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
</div>
<div class="grid-item-right-bottom">
right bottommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
</div>
</div>
</div>
<div class="grid-item">
<div class="grid-item-left">
left
</div>
<div class="grid-item-right">
<div class="grid-item-right-top">
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
</div>
<div class="grid-item-right-bottom">
right bottommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
</div>
</div>
</div>
<div class="grid-item">
<div class="grid-item-left">
left
</div>
<div class="grid-item-right">
<div class="grid-item-right-top">
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
</div>
<div class="grid-item-right-bottom">
right bottommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
</div>
</div>
</div>
<div class="grid-item">
<div class="grid-item-left">
left
</div>
<div class="grid-item-right">
<div class="grid-item-right-top">
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
</div>
<div class="grid-item-right-bottom">
right bottommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
</div>
</div>
</div>
<div class="grid-item">
<div class="grid-item-left">
left
</div>
<div class="grid-item-right">
<div class="grid-item-right-top">
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
</div>
<div class="grid-item-right-bottom">
right bottommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
</div>
</div>
</div>
<div class="grid-item">
<div class="grid-item-left">
left
</div>
<div class="grid-item-right">
<div class="grid-item-right-top">
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
</div>
<div class="grid-item-right-bottom">
right bottommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
</div>
</div>
</div>
<div class="grid-item">
<div class="grid-item-left">
left
</div>
<div class="grid-item-right">
<div class="grid-item-right-top">
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
</div>
<div class="grid-item-right-bottom">
right bottommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
</div>
</div>
</div>
<div class="grid-item">
<div class="grid-item-left">
left
</div>
<div class="grid-item-right">
<div class="grid-item-right-top">
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
right top right top right top right top right top right
</div>
<div class="grid-item-right-bottom">
right bottommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
</div>
</div>
</div>
</div>
</body>
</html>
【问题讨论】: