我的博文可以这样 'position' 吗?
Is it possible to 'position' my blog posts this way?
位置
而不是:
我想通过用其他帖子填充这些“空白”空间来将帖子靠得更近。
这是示例代码:
<!DOCTYPE html>
<html>
<head>
<style>
.my {
background-color: blue;
width: 360px;
padding: 20px;
margin: 5px;
display: inline-block;
/* */
}
</style>
<body>
<div class="my">P1
<p>abcdefghijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P2
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P3
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>yz</div>
<div class="my">P4
<p>abcd</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P5
<p>abcd</p>
<p>hijk</p>
<p>lmno
<p>pq</p>rstuvwx</p>
<p>yz</p>
</div>
<div class="my">P6
<p>abcd</p>
<p>hijk</p>
<p>lmnopq
<p>rst</p>u
<p>v</p>wx</p>
<p>yz</p>
</div>
<div class="my">P7
<p>abcd</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P8
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P9
<p>abcd</p>
<p>hijk</p>
<p>lmno
<p>pq</p>rstuvwx</p>
<p>yz</p>
</div>
</body>
</html>
您可以使用列。
/* Masonry grid */
.masonry {
width: 440px;
column-gap: 10px;
column-fill: initial;
column-count: 3;
}
/* Masonry item */
.masonry .my {
background-color: blue;
width: 120px;
padding: 10px;
margin-bottom: 10px;
display: inline-flex;
vertical-align: top;
justify-content: space-between;
display: inline-block;
}
<div class="masonry">
<div class="my">P1
<p>abcdefghijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P2
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P3
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>yz</div>
<div class="my">P4
<p>abcd</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P5
<p>abcd</p>
<p>hijk</p>
<p>lmno</p>
<p>pq</p>
<p>yz</p>
</div>
<div class="my">P6
<p>abcd</p>
<p>hijk</p>
<p>lmnopq</p>
<p>rst</p>
<p>v</p>
<p>yz</p>
</div>
<div class="my">P7
<p>abcd</p>
<p>hijk</p>
<p>yz</p>
</div>
<div class="my">P8
<p>abcd</p>
<p>yz</p>
</div>
<div class="my">P9
<p>abcd</p>
<p>hijk</p>
<p>lmno</p>
<p>pq</p>
<p>yz</p>
</div>
</div>
您可以使用 display: grid
来获取此布局。通过偏移您的行并在适当的位置重叠,您可以将这些重叠的行分配给每列三个 div,以获得您想要实现的偏移外观。
grid-template-columns:
允许您指定布局中有多少列以及它们将占用父容器的宽度。我使用 fr,它是一个 fraction 单位。每列都是一个分数,因此它们基本上占宽度减去间隙的 33.3%。
grid-template-rows:
是您的布局变得有趣的地方。如您所见,我们的行数比 DOM 中的实际行数多。我们将 excess 行重叠,通过向 grid-template-areas
[=52= 中的每一行添加可变小数额来创建偏移量].
grid-template-areas:
字面上使用选择器布置子元素。这会覆盖 DOM 中元素的位置。因此,无论选择器 1 在您的 HTML 中是否排在第一位,它都会将其放置在 属性.
中的布局位置
grid-area:
放置在子选择器 css 上并将引用其选择器 => ex: .three { grid-area: three; }
。这与父元素上的 grid-template-areas
属性 重合。
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.parent {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 2.5fr 0.5fr 0.8fr 1.6fr 0.4fr 0.3fr 2.1fr 0.4fr 0.4fr;
grid-template-areas: "one two three" "one five three" "one five six" "four five six" "four five nine" "four eight nine" "seven eight nine" "seven . nine" "seven . .";
width: 100%;
height: auto;
}
.box {
background-color: blue;
padding: 1rem;
margin: 2.5px; /* could use "gap" on parent element as well. */
}
.two {
grid-area: two;
}
.three {
grid-area: three;
}
.one {
grid-area: one;
}
.six {
grid-area: six;
}
.five {
grid-area: five;
}
.four {
grid-area: four;
}
.nine {
grid-area: nine;
}
.eight {
grid-area: eight;
}
.seven {
grid-area: seven;
}
<div class="parent">
<div class="one box">P1
<p>abcdefghijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="two box">P2
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="three box">P3
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>yz</div>
<div class="four box">P4
<p>abcd</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="five box">P5
<p>abcd</p>
<p>hijk</p>
<p>lmno
<p>pq</p><p>rstuvwx</p>
<p>yz</p>
</div>
<div class="six box">P6
<p>abcd</p>
<p>hijk</p>
<p>lmnopq
<p>rst</p>u
<p>v</p><p>wx</p>
<p>yz</p>
</div>
<div class="seven box">P7
<p>abcd</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="eight box">P8
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="nine box">P9
<p>abcd</p>
<p>hijk</p>
<p>lmno
<p>pq</p><p>rstuvwx</p>
<p>yz</p>
</div>
</div>
您可以使用 flex-box 和 flex-direction:column;
轻松实现这一点。确保将高度和宽度分配给容器和 flex-wrap:wrap;
。另一件需要注意的事情是,您将无法根据它们的大小自动设置弹性项目,它们将遵循它们包含在 html 代码中的顺序。唯一的原因是我为我的 body 元素使用了固定的高度和宽度,以免影响不同屏幕上的布局。并展示我的意图。
* {
margin: 0px;
padding: 0px;
}
html,
body {
height: 250px;
width: 420px;
}
.container {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
flex-wrap: wrap;
gap: 2px;
align-content: center;
}
.my {
background-color: blue;
width: 100px;
display: inline-block;
}
<body>
<div class="container">
<div class="my">P1
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P2
<p>abcd</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P3
<p>abcd</p>
<p>hijk</p>
<p>abcd</p>
<p>hijk</p>
</div>
<div class="my">P4
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>yz</div>
<div class="my">P5
<p>abcd</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P6
<p>abcd</p>
<p>pq</p>
<p>yz</p>
</div>
<div class="my">P7
<p>abcdu
<p>v</p>
<p>yz</p>
</div>
<div class="my">P8
<p>abcd</p>
<p>hijk</p>
</div>
<div class="my">P9
<p>abcd</p>
<p>abcd</p>
<p>hijk</p>
</div>
<div class="my">P10
<p>abcd</p>
<p>hijk</p>
</div>
<div class="my">P11
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
</div>
</div>
</body>
位置
而不是:
我想通过用其他帖子填充这些“空白”空间来将帖子靠得更近。
这是示例代码:
<!DOCTYPE html>
<html>
<head>
<style>
.my {
background-color: blue;
width: 360px;
padding: 20px;
margin: 5px;
display: inline-block;
/* */
}
</style>
<body>
<div class="my">P1
<p>abcdefghijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P2
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P3
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>yz</div>
<div class="my">P4
<p>abcd</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P5
<p>abcd</p>
<p>hijk</p>
<p>lmno
<p>pq</p>rstuvwx</p>
<p>yz</p>
</div>
<div class="my">P6
<p>abcd</p>
<p>hijk</p>
<p>lmnopq
<p>rst</p>u
<p>v</p>wx</p>
<p>yz</p>
</div>
<div class="my">P7
<p>abcd</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P8
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P9
<p>abcd</p>
<p>hijk</p>
<p>lmno
<p>pq</p>rstuvwx</p>
<p>yz</p>
</div>
</body>
</html>
您可以使用列。
/* Masonry grid */
.masonry {
width: 440px;
column-gap: 10px;
column-fill: initial;
column-count: 3;
}
/* Masonry item */
.masonry .my {
background-color: blue;
width: 120px;
padding: 10px;
margin-bottom: 10px;
display: inline-flex;
vertical-align: top;
justify-content: space-between;
display: inline-block;
}
<div class="masonry">
<div class="my">P1
<p>abcdefghijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P2
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P3
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>yz</div>
<div class="my">P4
<p>abcd</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P5
<p>abcd</p>
<p>hijk</p>
<p>lmno</p>
<p>pq</p>
<p>yz</p>
</div>
<div class="my">P6
<p>abcd</p>
<p>hijk</p>
<p>lmnopq</p>
<p>rst</p>
<p>v</p>
<p>yz</p>
</div>
<div class="my">P7
<p>abcd</p>
<p>hijk</p>
<p>yz</p>
</div>
<div class="my">P8
<p>abcd</p>
<p>yz</p>
</div>
<div class="my">P9
<p>abcd</p>
<p>hijk</p>
<p>lmno</p>
<p>pq</p>
<p>yz</p>
</div>
</div>
您可以使用 display: grid
来获取此布局。通过偏移您的行并在适当的位置重叠,您可以将这些重叠的行分配给每列三个 div,以获得您想要实现的偏移外观。
grid-template-columns:
允许您指定布局中有多少列以及它们将占用父容器的宽度。我使用 fr,它是一个 fraction 单位。每列都是一个分数,因此它们基本上占宽度减去间隙的 33.3%。
grid-template-rows:
是您的布局变得有趣的地方。如您所见,我们的行数比 DOM 中的实际行数多。我们将 excess 行重叠,通过向 grid-template-areas
[=52= 中的每一行添加可变小数额来创建偏移量].
grid-template-areas:
字面上使用选择器布置子元素。这会覆盖 DOM 中元素的位置。因此,无论选择器 1 在您的 HTML 中是否排在第一位,它都会将其放置在 属性.
grid-area:
放置在子选择器 css 上并将引用其选择器 => ex: .three { grid-area: three; }
。这与父元素上的 grid-template-areas
属性 重合。
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.parent {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 2.5fr 0.5fr 0.8fr 1.6fr 0.4fr 0.3fr 2.1fr 0.4fr 0.4fr;
grid-template-areas: "one two three" "one five three" "one five six" "four five six" "four five nine" "four eight nine" "seven eight nine" "seven . nine" "seven . .";
width: 100%;
height: auto;
}
.box {
background-color: blue;
padding: 1rem;
margin: 2.5px; /* could use "gap" on parent element as well. */
}
.two {
grid-area: two;
}
.three {
grid-area: three;
}
.one {
grid-area: one;
}
.six {
grid-area: six;
}
.five {
grid-area: five;
}
.four {
grid-area: four;
}
.nine {
grid-area: nine;
}
.eight {
grid-area: eight;
}
.seven {
grid-area: seven;
}
<div class="parent">
<div class="one box">P1
<p>abcdefghijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="two box">P2
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="three box">P3
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>yz</div>
<div class="four box">P4
<p>abcd</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="five box">P5
<p>abcd</p>
<p>hijk</p>
<p>lmno
<p>pq</p><p>rstuvwx</p>
<p>yz</p>
</div>
<div class="six box">P6
<p>abcd</p>
<p>hijk</p>
<p>lmnopq
<p>rst</p>u
<p>v</p><p>wx</p>
<p>yz</p>
</div>
<div class="seven box">P7
<p>abcd</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="eight box">P8
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="nine box">P9
<p>abcd</p>
<p>hijk</p>
<p>lmno
<p>pq</p><p>rstuvwx</p>
<p>yz</p>
</div>
</div>
您可以使用 flex-box 和 flex-direction:column;
轻松实现这一点。确保将高度和宽度分配给容器和 flex-wrap:wrap;
。另一件需要注意的事情是,您将无法根据它们的大小自动设置弹性项目,它们将遵循它们包含在 html 代码中的顺序。唯一的原因是我为我的 body 元素使用了固定的高度和宽度,以免影响不同屏幕上的布局。并展示我的意图。
* {
margin: 0px;
padding: 0px;
}
html,
body {
height: 250px;
width: 420px;
}
.container {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
flex-wrap: wrap;
gap: 2px;
align-content: center;
}
.my {
background-color: blue;
width: 100px;
display: inline-block;
}
<body>
<div class="container">
<div class="my">P1
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P2
<p>abcd</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P3
<p>abcd</p>
<p>hijk</p>
<p>abcd</p>
<p>hijk</p>
</div>
<div class="my">P4
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>yz</div>
<div class="my">P5
<p>abcd</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
<p>yz</p>
</div>
<div class="my">P6
<p>abcd</p>
<p>pq</p>
<p>yz</p>
</div>
<div class="my">P7
<p>abcdu
<p>v</p>
<p>yz</p>
</div>
<div class="my">P8
<p>abcd</p>
<p>hijk</p>
</div>
<div class="my">P9
<p>abcd</p>
<p>abcd</p>
<p>hijk</p>
</div>
<div class="my">P10
<p>abcd</p>
<p>hijk</p>
</div>
<div class="my">P11
<p>abcd</p>
<p>efg</p>
<p>hijk</p>
<p>lmnopqrstuvwx</p>
</div>
</div>
</body>