【问题标题】:Padding text with content of grid用网格内容填充文本
【发布时间】:2019-03-28 17:17:47
【问题描述】:

我在 CSS 中使用网格布局,我有一个跨度,底部有一个网格。 我的网格的每个单元格都有一个居中的内容,我想在我的文本的左侧和右侧添加填充,以便与两侧单元格的内容对齐。 我想要一个完整的 css 解决方案,但我不确定它是否可能......

<span>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</span>
<div class="grid-container grid-container--fill">
  <div class="grid-element">
    <div class="inner">
    </div>
  </div>
  <div class="grid-element">
    <div class="inner">
    </div>
  </div>
  <div class="grid-element">
    <div class="inner">
    </div>
  </div>
  <div class="grid-element">
    <div class="inner">
    </div>
  </div>
</div>

如果你想尝试一些东西,这里是一个 jsfiddle: https://jsfiddle.net/s4Lxwrm5/

【问题讨论】:

  • 网格中总是有 4 个元素还是动态的?
  • 目前没有允许这样做的属性(我怀疑需要display:subgrid)。您可能需要重新考虑布局方法。
  • @kukkuz 动态 .. :(
  • 我的正确答案真的会得到反对票吗?

标签: html css css-grid


【解决方案1】:

哥们,你来了:

* {
	padding: 0;
	margin: 0;
	box-sizing: border-box;
}
.container {
	width: 100%;
	height: auto;
	position: relative;
	display: block;
	overflow: auto;

	background-color: grey;
}
	.container-inner {
		width: 100%;
		max-width: 1248px; /* SET YOUR MAX WIDTH */
		height: auto;
		margin: 0 auto;
		padding: 20px; /* SET YOUR PADDING */
		position: relative;
		display: block;
		overflow: auto;

		background-color: orange;
	}
		.text-container {
			width: 100%;
			height: auto;
			margin: 0 auto 20px auto;
			padding-left: calc((100% / 4) / 10); /* WORK OUT THE WIDTH OF ONE GRID BOX BY DIVIDING BY THE NUMBER OF BOXES YOU ARE 'gridding'. THEN DIVIDING BY 10 WILL GIVE YOU THE 10% PADDING THAT I SPECIFY LATER ON IN THE CSS */
			padding-right: calc((100% / 4) / 10); /* WORK OUT THE WIDTH OF ONE GRID BOX BY DIVIDING BY THE NUMBER OF BOXES YOU ARE 'gridding'. THEN DIVIDING BY 10 WILL GIVE YOU THE 10% PADDING THAT I SPECIFY LATER ON IN THE CSS */
			position: relative;
			text-align: justify;

			background-color: red;
		}
		.supporting-boxes {
			width: 100%;
			height: auto;
			position: relative;
			display: grid;
			grid-template-columns: repeat(auto-fill, 25%);

			background-color: green;
		}
			.grid-box {
				width: 80%; /* LEAVING 10% PADDING */
				height: auto;
				min-height: 200px;
				position: relative;
				justify-self: center;

				background-color: purple;
			}
				.box-content {
					width: 100%;
					height: auto;
					text-align: center;

					position: absolute;
					top: 50%;
					left: 50%;
					-ms-transform: translate(-50%, -50%);
					-webkit-transform: translate(-50%, -50%);
					transform: translate(-50%, -50%);

					background-color: pink;
				}
<div class="container">
	<div class="container-inner">
		<div class="text-container">
			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.
		</div>
		<div class="supporting-boxes">
			<div class="grid-box">
				<div class="box-content">
					A
				</div>
			</div>
			<div class="grid-box">
				<div class="box-content">
					B
				</div>
			</div>
			<div class="grid-box">
				<div class="box-content">
					C
				</div>
			</div>
			<div class="grid-box">
				<div class="box-content">
					D
				</div>
			</div>
		</div>
	</div>
</div>

不过,这是非常不稳定的代码,如果您要更改盒子和东西的数量,我们可能需要寻找其他解决方案。

【讨论】:

  • 为什么会有这些div?我如何实际提取您答案背后的原则?读者不必花费大量时间来理解答案或从中提取意义。缩进乱七八糟,到处都是空白,一眼看不出你在做什么。您似乎希望 OP 简单地复制粘贴并保留它。这不是 Stack Overflow 的意义所在,我们希望创建对许多人有价值的内容。
  • 当然 - w3schools.com/tags/tag_div.asp 将解释如何使用 div,我还评论了最相关的 CSS,它有助于将文本居中到网格中内部内容的宽度(回答问题)。压痕没有弄乱,我只是把它隔开。如果在不编辑的情况下复制和粘贴,他们只会得到运行时看到的结果,他们将不得不删除所有背景颜色,插入自己的副本或模板,但他们决定。无论哪种方式,我都使用了通用命名结构,并通过注释给出了正确的答案。
  • 除了居高临下,你真的没有回答我的观点。这个答案不适合帮助其他人。其中没有任何内容可以教您如何解决特定问题。为什么它需要最大宽度。为什么不能是动态的。如果 op 需要四个以上的 div 怎么办?这是您应该在答案中解释的事情,以使其成为高质量的答案。
  • 你在说什么,你……他想知道这是否可能……是的。我已经证明了这一点。在css中解释如果有不同数量的盒子需要改变什么并解释了数学。没有要求有一个最大宽度 - 只需删除它,你就有一个全宽元素。公平地说,如果您正在努力阅读基本的 CSS 和 HTML,您可能不应该四处审核其他人的答案。像其他人一样参考文档。我用的是基本原理,有基本知识的人都会知道。我无法解释每一行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-24
  • 1970-01-01
  • 2012-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多