【问题标题】:Troubleshooting: Two CSS elements side-by-side, w/ padding in between故障排除:两个 CSS 元素并排,中间有填充
【发布时间】:2013-12-03 22:19:39
【问题描述】:

我试图让一组页面上的主要文本以两列格式显示,中间有 30 像素的填充。无论用户如何调整窗口大小,我还希望保持每列中的段落以我选择的方式对齐。有人告诉我不要将表格用于任何不是电子表格数据的东西,所以我尝试使用我在这里找到的方法——Make two CSS elements fill their container, side-by-side, with margin。不幸的是,无论出于何种原因,它对我不起作用:“主” div(我试图将其限制为 75% 的宽度,以便“侧” div 可以坐在它旁边)在所有浏览器中都以全宽出现,当我尝试在 Firefox 中“检查元素”时,它甚至根本不显示宽度属性!

这是我一直在尝试使用的改编:

HTML:

<div class="text">
            <div class="main">
                <p> Main body text blahblahblah. </p>
            </div>
            <div class="side">
                <p> Testing side text container setup. </p>
            </div>
</div>

CSS:

.text {
    margin: 20px;
    font-family: Optima, Segoe, "Segoe UI", Candara, Calibri, Arial, sans-serif;
}

.main {
    display: inline-block; 
    clear: both;
    width: 75%
    margin: 0;
    padding-right: 30px;
    border: none;
    box-sizing: border-box;
    -moz-box-sizing:border-box;
    -webkit-box-sizing:border-box;
}

.main > p {
    display: block;
    margin-right: 0;
    margin-left: 0;
    padding: 0;
    border: none;
}

.side {
    display: inline-block;
    width: 25%;
    font-weight: bold;
    margin: 0;
    padding: 0;
    border: none;
    box-sizing: border-box;
    -moz-box-sizing:border-box;
    -webkit-box-sizing:border-box;
}

.side > p {
    display: block;
    margin: 0;
    padding: 0;
    border: none;
}

知道出了什么问题吗?

【问题讨论】:

标签: html css


【解决方案1】:

我使用了与您相同的代码,并引入了一个微小的变化,即inline-block hack。首先你看这个解释,然后是更新的演示。

初始代码:

<div class="text">
    <div class="main">
        <p>Main body text blahblahblah.</p>
    </div>
    <div class="side">
        <p>Testing side text container setup.</p>
    </div>
</div>

有什么问题?

div.maindiv.side 之间有空格。

如何解决?

有很多技巧。我已经使用了 html 评论黑客。您可以在 Chris 的这篇文章中了解其他方法:http://css-tricks.com/fighting-the-space-between-inline-block-elements/

新代码:

<div class="text">
    <div class="main">
        <p>Main body text blahblahblah.</p>
    </div><!--
    notice this
    --><div class="side">
        <p>Testing side text container setup.</p>
    </div>
</div>

现在你看到了demo

【讨论】:

    【解决方案2】:

    我查看了您的代码,发现您的 CSS 中有一个无效行。您用来设置边距的行缺少一个分号,它会抛出一些东西,其中之一就是边距。

    希望对您有所帮助。

    【讨论】:

    • 呃,谢谢!不过,我确实有两个后续问题: 1. 为什么 75-25 设置不起作用?正如另一位用户提到的,我必须降低百分比以考虑边框/等(70-25 工作得很好),但我认为“box-sizing”事情的全部意义在于让我绕过那个. 2. 我的“.side”文本在页面上出现的位置大约比“.main”文本的其余部分低一行。知道为什么吗?如果可能的话,我想将每个“.side”段落的顶部与其对应的“.main”段落的顶部对齐。
    • 回答问题一。 CSS 中的所有内容都与其容器相关。由于您使用 75-25 模型来使用 100% 的容器,CSS 会看到您达到了 100% 的宽度,这意味着我们需要一个新行。因此,任何加起来为 99 的宽度组合都可以。我可能会采用的一种解决方案是将侧类浮动到右侧。它仍然是包含它的 div 的 25%,但会一直被推到页面的边缘。用于此的 CSS 将是 float:right;这也可以帮助您修正格式。
    猜你喜欢
    • 2023-03-11
    • 2013-07-15
    • 2010-11-30
    • 2021-09-11
    • 2012-02-18
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多