html - margin 不能正常工作?填充做 margin 的工作?

标签 html css margin padding

我遇到的问题是... 在这个例子中, margin 对我来说不起作用。 填充就像边距一样工作。为什么?

打印屏幕:

enter image description here

为什么?位于 div 元素内的 h3 中的边距将边距放置到此父 div 元素而不是 h3 本身。 填充做 margin 的工作?我不明白这个... 什么?为什么? 边距应将此 h3 元素推离 div 父元素。 为什么它从他上面的其他元素推 div parent?

代码:

<!DOCTYPE html>
<html lang="pl">
<head>

    <meta charset="utf-8">
    <title>Philosophia Blog</title>
    <meta name="description" content="Blog na temat ciekawych publikacji z dziedziny filozofii. Omówienie wybranych tekstów najsłynniejszych autorów!">
    <meta name="keywords" content="filozofia, książki, blog, przemyślenia">
    <meta name="author" content="Mortinez Walles">
    <link rel="stylesheet" href="style.css">
    <meta http-equiv="X-Ua-Compatible" content="IE=edge,chrome=1">
    <!--[if lt IE 9]>
    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
    <![endif]-->
</head>
<style>

#aside {
    width: 315px;
    float: left;
    min-height: 500px;
}
.abox {
    margin: 10px;
    margin-bottom: 20px;
    max-width: 279px;
}
.abox1 {
    height: auto;
    box-shadow: 3px -3px 6px 0px #000000,
    -1px 1px 1px 0px #000000;
}
.abox1-content {
    padding: 10px;
}
#photo {
    width: 80px;
    height:80px;
    float: right;
    background-image: url("zdj.png");
    background-repeat: no-repeat;
    margin: 10px;
    border: 1px solid #000000;
    box-shadow: 1px 1px 2px 0px #000000;
}
.abox2 {
    height: 300px;
    box-shadow: 3px -3px 6px 0px #000000,
    -1px 1px 1px 0px #000000;
}
.abox h3 {
    text-align: center;
    margin: 0px;
    margin-top: 70px;
}
.clear {
    clear: both;
}
</style>

<aside>
        <div id="aside">
            <div class="abox1 abox">
                <div class="abox1-content">
                    <div id="photo"></div>
                    Cześć! Jestem Michał. Dzięki zarabianiu na blogu i rozsądnemu oszczędzaniu stać mnie na wiele. Chcę Ci pokazać jak zadbać o domowy budżet, wychodzić z długów, pomnażać oszczędności i samemu zadbać o godziwą emeryturę. 
                </div>
            <div class="more"><a href="#">Więcej o mnie...</a></div>
            </div>
            <div class="abox1 abox">
                <header>
                    <h3>Pobierz darmowe Materiały</h3>
                </header>
                <div class="abox1-content">
                    Już ponad 67 000 osób zapisało się na mój newsletter (zero spamu! - tylko informacje o nowych artykułach).
                    Zapisz się i otrzymasz zestaw 23 kalkulatorów Excel, które pomogą Ci policzyć koszty mediów, obliczyć raty kredytów, policzyć Twoją wartość netto, sprawdzić opłacalność kantorów internetowych, poznać sposoby kategoryzacji wydatków i wiele innych!
                </div>
            </div>
            <div class="abox1 abox">
            </div>
        </div>
    </aside>
</body>
</html>

最佳答案

您正在体验 CSS collapsing margins .这意味着对于正常文档流中相邻的垂直 block 级元素,只有具有最大边距值的元素的边距将得到尊重,而具有较小边距值的元素的边距将被折叠为零。

如果您检查 h3 元素,您会看到 h3 边距被折叠了。这是 CSS 的一个怪癖。在这种情况下,使用填充将标题向下推似乎是一个很好的解决方案。

enter image description here

padding-top: 70px 而不是 h3 上的 margin-top: 70px 将在这种情况下起作用,但为了更好的可预测性,我将在 h3 元素父 div 上使用填充:

header {
  padding-top: 70px;
}

编辑 如果你想在你的h3 元素上放置一个边框,那么你不能在它上面填充。如前所述,您可以在作为标题父元素的 header 元素上添加填充。我假设你想要这样的东西:enter image description here

下面是我所有代码的片段:

<!DOCTYPE html>
<html lang="pl">
<head>

    <meta charset="utf-8">
    <title>Philosophia Blog</title>
    <meta name="description" content="Blog na temat ciekawych publikacji z dziedziny filozofii. Omówienie wybranych tekstów najsłynniejszych autorów!">
    <meta name="keywords" content="filozofia, książki, blog, przemyślenia">
    <meta name="author" content="Mortinez Walles">
    <link rel="stylesheet" href="style.css">
    <meta http-equiv="X-Ua-Compatible" content="IE=edge,chrome=1">
    <!--[if lt IE 9]>
    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
    <![endif]-->
</head>
<style>

#aside {
    width: 315px;
    float: left;
    min-height: 500px;
}
.abox {
    margin: 10px;
    margin-bottom: 20px;
    max-width: 279px;
}
.abox1 {
    height: auto;
    box-shadow: 3px -3px 6px 0px #000000,
    -1px 1px 1px 0px #000000;
}
.abox1-content {
    padding: 10px;
}
#photo {
    width: 80px;
    height:80px;
    float: right;
    background-image: url("zdj.png");
    background-repeat: no-repeat;
    margin: 10px;
    border: 1px solid #000000;
    box-shadow: 1px 1px 2px 0px #000000;
}
.abox2 {
    height: 300px;
    box-shadow: 3px -3px 6px 0px #000000,
    -1px 1px 1px 0px #000000;
}
.abox h3 {
    text-align: center;
    margin: 0px;
    border: 2px black solid; /* added border */
    /* removed margins */
}
header {
  padding-top: 70px; /*add padding to header to keep border on h1 */
}
.clear {
    clear: both;
}
</style>

<aside>
        <div id="aside">
            <div class="abox1 abox">
                <div class="abox1-content">
                    <div id="photo"></div>
                    Cześć! Jestem Michał. Dzięki zarabianiu na blogu i rozsądnemu oszczędzaniu stać mnie na wiele. Chcę Ci pokazać jak zadbać o domowy budżet, wychodzić z długów, pomnażać oszczędności i samemu zadbać o godziwą emeryturę. 
                </div>
            <div class="more"><a href="#">Więcej o mnie...</a></div>
            </div>
            <div class="abox1 abox">
                <header>
                    <h3>Pobierz darmowe Materiały</h3>
                </header>
                <div class="abox1-content">
                    Już ponad 67 000 osób zapisało się na mój newsletter (zero spamu! - tylko informacje o nowych artykułach).
                    Zapisz się i otrzymasz zestaw 23 kalkulatorów Excel, które pomogą Ci policzyć koszty mediów, obliczyć raty kredytów, policzyć Twoją wartość netto, sprawdzić opłacalność kantorów internetowych, poznać sposoby kategoryzacji wydatków i wiele innych!
                </div>
            </div>
            <div class="abox1 abox">
            </div>
        </div>
    </aside>
</body>
</html>

关于html - margin 不能正常工作?填充做 margin 的工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44033760/

相关文章:

html - 在这种情况下如何计算高度?

HTML:边距自动不适用于导航栏

html - 响应式设计 Div 间距

grid - 如何减少基础网格中项目之间的空间?

javascript - Angular JS 大括号在对象属性名称中的破折号处停止评估

python - 如何在 Selenium 的 XPath 选择器中选择所有子文本但排除标签?

html - 阻止 CSS 定位文本到底部

html - 视差布局和 z-index

javascript - SVG 图案动画和背景淡入淡出问题

html - <main> CSS 不适用于 IE11