javascript - css 三个居中的列
问题描述
我正在尝试使用 bootstrap、css 和 html 来制作一个响应式网页,该网页连续三列。左边是一个文本框,中间是一个按钮,右边是一个表格。
我一直在尝试完成这三个单独的尝试:(要查看第一次尝试的代码,请打开 jsfiddle 和 ctrl+f: <!-- output box 0 -->
)
https://jsfiddle.net/martinradio/adqLpxn5/57/
我最热衷于修复尝试 1,因为它在将页面大小调整为非常薄时具有最佳响应能力
尝试 1 基于此示例代码的方法,框工作但完全居中,我一直在尝试更改中间“复制”框的宽度,如果我可以在保持响应性和宽度的同时使中间框更小外箱,它会工作。我尝试将中间框的样式设置为 10% 的宽度,但没有成功。
尝试 2 Raw bootstrap col and row divs,一行和三个 cols,左框很容易设置宽度:40,但我无法成功设置中间复制按钮的样式。
尝试 3 我的原始代码,树框是我想要的框的完成版本,但我无法让它响应样式。
这三个尝试都是我试图理解和完成一个 css 任务:创建一个包含三列的响应式行:col1 宽度为 45%,col2 宽度为 10%,col3 宽度为 45%
解决方案
我没有时间看你所有的尝试,所以我专注于尝试 2。
考虑到并排放置 3 列的要求,这就是为什么它不起作用的原因:
- 第 1 列
textarea
很好(尽管您不需要设置cols="2"
,因为您已经设置了它的宽度)。textarea 具有浏览器的默认值display:inline
,但由于一些魔法,它的行为就像display:inline-block
考虑它的宽度一样。 - 第 2 列,
button
也很好(这display:inline-block
要归功于引导程序) - 第 3 列,
div
具有浏览器提供的默认值display:block
. 所以它不能在第 2 列的右边。你需要设置display: inline-block
. 它也有,width: 200%
但您的要求是 45%,因此需要相应地设置。
HTML源代码中的内联和空格问题
像上面那样修复第 3 列后,您会注意到这些列仍然不是并排的。相反,即使它们的宽度百分比加起来为 100%,第 3 列仍将独占一行。
为什么是这样?
原因是 HTML源代码中的列之间的空白。在块上下文(包含 div 给出)内,内联标记之间的任意数量的空格 > 0(包括新行)将使浏览器添加一个“空格”。
例子:
<div>
<div style="display:inline-block">[one]</div>
<div style="display:inline-block">[two]</div>
</div>
...结果是:
[one] [two]
^
note the space in between
...因为,在 HTML 源代码中的两个 inline-block 元素之间存在新行和结束标记div (one)
和开始标记之间的三个空格。div (two)
如何解决这个问题?
两种方式:
- 显而易见的一个:删除 HTML 源代码中元素之间的空白。
也就是说,将每列的开始标记紧跟在前一列的结束标记之后。 font-size: 0
在容器元素中设置并为font-size: <some-size>
每一列设置。
这将使列之间的“空间”宽度为 0。
推荐阅读
- swift - tableView中不同产品的多个INApp购买请求
- sql - 在同一列中查找 Datediff
- amazon-web-services - 是否可以向 AWS IoT Analytics 中的管道添加多个通道输入?
- apache-spark - 动态生成用于合并的 spark Sql selectExpr 语句
- java - 如何在使用 java 8 或更高版本编译的 java 7 上运行 Jar
- javascript - 如何访问 li 文本以使用 javascript 创建新列表
- php - 无论如何我可以在单击按钮时插入一条 SQL 语句
- java - 如何编写使用 Azure SDK 的测试?
- reactjs - 如何在材质ui网格中为xs和md不同地对齐内容
- python - 如何在函数中一一加载和处理具有多行的文本文件