【问题标题】:css container div not aligning to top of pagecss容器div未与页面顶部对齐
【发布时间】:2011-10-03 22:53:13
【问题描述】:

我有一个两列布局。我有一个#mainContainer div,其中包含以下所有内容(#footer 除外):

  1. 在顶部:一个标题 div (#intro)(包含一个小的渐变图像), 和一个#hero div(包含图片)
  2. 要包含两列:#content div
  3. 在左侧的#content div 内:一个#mainContent div
  4. 在右侧的#content div 内:一个#sideBar div
  5. 在底部(#mainContainer div 之外):底部有一个#footer div (包括像标题 div 这样的渐变图像)

很简单,对吧?但是我无法让#mainContainer div 位于浏览器的顶部(没有空格或所有浏览器在顶部都有 6-8px 的默认边距/填充)并使#footer div 跨越整个底部浏览器窗口的(不在任何 Div 中)。 (忽略页脚中的内联样式)。有人可以帮帮我吗?

更新:添加 HTML

body {
font-family:Arial, Helvetica, sans-serif;
margin:0;
padding:0;
background:#bbb;
text-align:center;
}



#mainContainer {
width:980px;
margin: 0 auto;
background: #fff url(../i/content-box-header-gray.jpg) repeat-x;
text-align:left;
/*height: 700px;*/

}

#intro {
/*top:0;*/
margin: 0;
text-align:left;

}


#hero {
width:960px;
padding-left:10px;
padding-right:10px

}



#content {
width:960px;
padding-left:10px;
padding-right:10px;
}

#mainContent_left {

float:left;
width:640px;
margin:0;
padding-right: 20px;
background:#ccc;
}



#sideBar {
float:left;
width:300px;
margin:0;
/*padding-right: 20px;*/
background:#ffd;
}


#footer {
width:960px;
clear:both;
background:#cc9;
}

HTML:

<title>Descriptions </title>


<link rel="stylesheet" href="css/mainstyles.css" type="text/css" />
</head>

<body>
<div id="mainContainer">

<div id="intro"><h2>introducing</h2></div>

<div id="Hero">
    <ul>
        <li class="name"></li>
        <li class="textJoin">is a member of </li>
        <li class="name"></li>
    </ul>
</div>

<div id="content">
    <div id="mainContent">

        <h3>First Topic title</h3>
        <p>floated left image and text</p>
        <p>Some content</p>
        <p>Some content</p>

        <h3>Second Topic title</h3>
        <p>Some content</p>        
        <p>Image here</p>

        <h3>Third Topic title</h3>
        <p>(floated left image here) Some text</p>

        <h3>Fourth Topic title</h3>
        <p>(floated left image here) Some text</p>>

        <h3>Fifth Topic title</h3>
        <p>(floated left image here) Some text</p>        
        <p>Image here</p>

        <p>(link to FAQ page)</p>

    </div>


    <div id="sideBar">sidebar content
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
    </div>


    <div id="footer_warranty">footer content
        <div id="wf_logos" style="float:left; padding:0 10px 0 0;"><p>contact info</p>
</div>
        <div id="wf_footerCopy" style="float:left; padding:0 10px 0 0;">
<p>some text</p></div>
        <p style="clear:both;" />
    </div>
</div>
<p style="clear:both;" />
</div>

</body>
</html>

【问题讨论】:

  • 你可以创建一个简单的演示@jsfiddle.net 吗?这将有助于更好地了解您到底想要实现什么。
  • 还剩多少间距?一些浏览器会为 body 标签添加边框。
  • Andrej,我不知道如何使用 jsfiddle.net。我添加了 HTML。
  • 你的问题非常广泛,一次涵盖了太多的小问题。使用 jsFiddle 非常简单。我将您的代码剪切并粘贴到此处...只需查看它以了解它是如何完成的。 http://jsfiddle.net/tjfJF/.

标签: css footer


【解决方案1】:

我无法重现您的问题。但是,我为您创建了一个小提琴,其中我还添加了一些 CSS 重置规则,这些规则应该可以解决诸如此类的问题,跨任何和所有浏览器。

您应该始终在启动新网站时使用重置 CSS。这样一来,一切都由您自己决定,您不必“编码”特定的浏览器行为。

我还创建了一些占位符代码,因为您没有提供任何代码。

我希望重置可以解决您的问题。

http://jsfiddle.net/dekket/eERsK/

编辑:

检查这个新的小提琴。出去工作。 http://jsfiddle.net/dekket/6bTkZ/

【讨论】:

  • 谢谢,Patrik,我刚刚添加了 HTML。我不能使用重置,因为网站上已经有重置样式表。我会检查你的代码。我想我在 2 列固定布局的 Dreamweaver 模板中找到了答案。
  • 我完全不同意“当你开始一个新网站时你应该总是使用一个重置CSS”。这是不必要和多余的。 Unnecessary 重置您不使用的元素,redundant 重置元素,当您稍后只需覆盖重置。如果您知道如何在您使用过的所有元素上编写正确的 CSS,为什么还需要这个?
  • @Sparky672 这不是关于“编写正确的 CSS”,因为所有浏览器在默认情况下都会以不同的方式呈现网站。我可以同意,例如,如果您不使用它,则无需重置“dt”标签。但是,您永远不知道以后是否会使用它。就个人而言,我可以找到几乎所有非弃用标签的用途。但是,我猜这只是我。要记住的另一件事:您不知道下一代浏览器将默认具有什么,因此最终简单地“编码足够”可能还不够。我希望这能澄清我对此事的立场:)
  • CSS 做你想做的事情同时我认为重置浏览器的默认值是正确的:#myDiv p {margin:0 0 10px 2px; padding:0 5px; /* etc. etc. */ } 覆盖了浏览器的默认值和 master i>不需要重置。我不是反重置...我是反冗余。
  • @Sparky672,是的,您可以这样做,但我习惯于处理具有成千上万行 CSS 代码的网站,即简写。因此,跟踪浏览器规则的重置位置和方式是不可能的。我相信我们可以在某个论坛上讨论这个问题,而不是在问题的 cmets 部分:)
【解决方案2】:

尝试导入 Meyer 的重置样式表: http://meyerweb.com/eric/tools/css/reset/

【讨论】:

    【解决方案3】:

    尝试将float:leftoverflow:hidden 添加到您的#mainContainer

    【讨论】:

    • 谢谢,卡松。这些规则究竟做了什么?什么会将#mainContainer 放在浏览器的顶部?
    • 这些是css样式#mainContainer {float:left;overflow:hidden}
    【解决方案4】:

    您需要将 html 和 body css 的边距和填充属性设置为 0。

    在您的 css 文件中使用以下内容

    html, body {
    margin: 0;
    padding: 0;
    }
    

    【讨论】:

    • Mike,body 元素已经设置好了。为 html 元素编写规则将被重置文件覆盖。
    • 当然会。但是,如果您不需要整个 css 重置文件,或者如果您想知道哪些元素直接受到影响,那么我的解决方案适合您。
    猜你喜欢
    • 1970-01-01
    • 2013-04-04
    • 2023-03-22
    • 2017-01-28
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    相关资源
    最近更新 更多