CSS奇怪的列段空空间

时间:2014-01-21 02:49:30

标签: html css html5 css3

我创建了一个包含3个段落的3列网格。第一段从顶部开始有一个额外的空间而不是另外两个。有人可以帮忙吗?我附上了一张图片,如果它有帮助的话。我仍然是编码的初学者,所以你会注意到我正在做的一些奇怪的事情是不切实际的。

enter image description here

<!doctype html>

<html lang="en">
<head>
<meta charset="utf-8">
    <title>Qualenist</title>
    <link rel="stylesheet" href="stylesheet.css">
</head>
<body> 
    <div class="mainBanner">
        <div class="menuBox"></div>
        <img src="menuBars.png" style="position: absolute; margin-top: 35px; margin-left: 260px;"/>
        <h6><span>already a member?</span> Sign in</h6>
        <h1>Qualenist</h1>
        <h2>Lorem ipsum dolor sit amet & consectetur adipisicing elit</h2>
        <div class="divider"></div>
        <div class="signUpBox"></div>
        <h3>Sign Up</h3>
        <h4>learn more</h4>
        <img src="downArrow.png" style="display: block; margin-left: auto; margin-right: auto; margin-top: -10px"/>
        <div class="whatWeDo">
            <h5>What we do</h5>
            <img src="doSearch.png" style="position: absolute; margin-left: 292px; margin-top: 5px;"/>
            <img src="doGraph.png" style="position: absolute; margin-left: 572px; margin-top: 5px;"/>
            <img src="doPay.png" style="position: absolute; margin-left: 851px; margin-top: 5px;"/>
            <div id="descriptions">
                <p>Lorem ipsum dolor sit amet, consectetur <br>
                adipisicing elit, sed do eiusmod tempor <br>
                incididunt ut labore et dolore magna.</p>

                <p>Lorem ipsum dolor sit amet, consectetur <br>
                adipisicing elit, sed do eiusmod tempor <br>
                incididunt ut labore et dolore magna.</p>

                <p>Lorem ipsum dolor sit amet, consectetur <br>
                adipisicing elit, sed do eiusmod tempor <br>
                incididunt ut labore et dolore magna.</p>
            </div>
    </div>
    <footer class="main-footer">
    </footer> 
</body>
</html>

.mainBanner {
    background-image: url(/Users/omaramin/Documents/Competition/project/mainBanner.png);
    background-repeat: no-repeat;
    position: absolute;
    top: 0;
    left: 0;
    min-width: 100%;
    min-height: 100%;
    font-family: Bariol;
    color: #ffffff;
    border-color: #ffffff;
}

.menuBox {
    width: 35px;
    height: 35px;
    border-style: solid;
    margin-top: 25px;
    margin-left: 252px;
    position: absolute;
    border-width: 1px;
    border-radius: 2px;

}

h6 {
    padding-left: 825px;
    letter-spacing: 1px;
    font-size: 12px;
}

h6 span {
    color: #b3b4b4;
}

h1 {
    text-align: center;
    padding-top: 90px;
    font-size: 36px;
    letter-spacing: 1.5px;
    font-weight: lighter;   
}

h2 {
    text-align: center;
    margin-top: -15px;
    letter-spacing: 1px;
    font-size: 13px;
}

.divider {
    border: 0;
    height: 1px;
    width: 45px;
    margin: auto;
    margin-top: 21px;
    background: #ffffff;
}

.signUpBox {
    width: 150px;
    height: 47px;
    border-style: solid;
    border-width: 1px;
    margin: auto;
    margin-top: 25px;
    border-radius: 2px;
}

h3 {
    text-align: center;
    margin-top: -35px;
    letter-spacing: 1px;
    font-size: 17px;
}

h4 {
    text-align: center;
    margin-top: 115px;
    letter-spacing: 1px;
    font-size: 12px;
}

.whatWeDo {
    margin-top: -20px;
    color: #5c5d5d;
    font-family: Bariol;
}

h5 {
    text-align: center;
    margin-top: 100px;
    letter-spacing: 1px;
    font-size: 25px;
}

#descriptions {
    -moz-column-count: 3;
    -moz-column-gap: 0px;
    -webkit-column-count: 3;
    -webkit-column-gap: 0px;
    font-size: 13px;
    letter-spacing: 1px;
    text-align: center;
    margin-left: 200px;
    margin-right: 200px;
    margin-top: 170px;
    line-height: 20px;
}

7 个答案:

答案 0 :(得分:2)

看起来像段落上的边距。添加:

p {
    margin:0;
}

<强> jsFiddle example

答案 1 :(得分:1)

您需要将其添加到CSS中:

description p {
  -webkit-margin-before: 0;
  -moz-margin-before: 0;
}

某些Firefox浏览器需要moz-margin-before。否则,他们也会看到奇怪的空白。

答案 2 :(得分:1)

这里必须同意@ j08691 ...

http://jsfiddle.net/SinisterSystems/v4n7G/1/

p {
    margin:0;
}

答案 3 :(得分:1)

其他答案很好,工作得很好,但我认为你应该改变你的标记。不是依靠CSS列来布局文本,而是将图像绝对定位到列上方的中心,只需为文本和图像创建三个容器<div>。为容器指定宽度百分比float:left或使用flexbox以并排显示列。

如果图像高度相同,则可以确保文本对齐。

<强> jsFiddle Example

这种方法的另一个好处是,现在您的.column类可以重复使用,并且您不需要使用内联或特殊样式进行定位。

答案 4 :(得分:1)

在我的情况下,我将段落中的一组文本放入列中,因此我希望在每个段落后保留间距。这里的解决方案是从段落标记中删除边距,然后使用填充。

标记:

this.messageForVM2 = ko.observable();

CSS:

<div class="columns">
    <p>Lorem ipsum...</p>
    <p>Lorem ipsum...</p>
    <p>Lorem ipsum...</p>
    <p>Lorem ipsum...</p>
</div>

答案 5 :(得分:0)

  #descriptions p {
        -webkit-margin-before: 0;
        margin: 0;
    }

http://jsfiddle.net/helmutgranda/84jky/3/

答案 6 :(得分:0)

无法在规范中找到它,但这似乎取决于CSS multicol和margin之间的相互作用。正如其他人所提到的,将边际设置为零会使症状消失。

#descriptions > p { margin: 0; }

然而,如果是我,我根本就没有使用CSS multicol,因为文本在cols之间流动,因为浏览器在所有cols中均匀高度,而在这里你可能希望每个描述都保留在自己的框中。 / p>

CSS3列的IE支持也很差:http://caniuse.com/multicolumn

在尝试使用列之前,我已经使用了表CSS属性,内联块,弹性框甚至浮点数。

#descriptions { display: table; }
#descriptions > p { display: table-cell; }

将表标记用于非表格数据通常是一个坏主意,但使用CSS的表格显示属性是完全可以的。