css集中项目

时间:2011-03-24 23:39:42

标签: css

  

可能重复:
  css vertical centering

我忘记了将内容放在CSS中是多么困难。

在附加的代码中,我试图垂直对齐Image和TitleText,或者可能是整个“innersection”div,如果这更容易。还尝试在图像向左对齐后剩余的剩余空间内水平对齐TitleText。

<html>
<head>
    <style>*{margin: 0; padding: 0;}</style>
</head>
<body>
    <div id="header" style="position: absolute; top: 0px; height: 8em; width: 100%; background: grey;">
        <div id="titlesection" style="height: 6em; background: green;">
            <div id="innersection" style="margin-top: auto; margin-bottom: auto; background: yellow;">
                <iimg src="images/burgee.jpg" style="vertical-align: center;">
                <span style="width: 100%; margin:0 auto; text-align: center; font-size: xx-large; background: teal;">TitleText</span>
            </div>
        </div>
        <div id="menu" style="position: absolute; bottom : 0px; height: 2em; width: 100%; background: lightblue;">
            menu goes here
        </div>
    </div>
</body>
</html>

几乎就在那里。我不能只是放弃并使用一张桌子,本来就太容易了。

目前下面的代码部分有效,但...... 当我为TitleText使用div时,它会水平居中,但与图像不完全垂直。改为跨度而不是(没有浮动:左)和垂直对齐是正确的,只是因为跨度不跨越标题的整个宽度,文本不再居中。

如此接近但到目前为止!任何人都可以看到如何使这个工作。

谢谢,

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
    <head>
        <style>
            .VCentOuter {
                top: 0; left: 0; width: 100%; height: 100%; position: absolute; display: table
                }
            .VCentInner {
                display: table-cell; vertical-align: middle
                }
            #header{
                height: 17em;
                width: 100%;
                }
            #header img {
                margin: 1em;
                }
            #title{
                width: 100%;
                text-align: center;
                color: Red;
                font: bold italic xx-large "Century Gothic", "sans-serif";
                }
        </style>
    </head>
    <body>
        <div id="header">
            <div class="VCentOuter" style="height: 15em; background: green;">
                <div class="VCentInner" style="background: blue;">
                   <img src="images/burgee.jpg" style="vertical-align: middle; float: left;"/>
                   <div id="title" style="width: 100%; background: pink;">TitleText</div>
<!--
                   <img src="images/burgee.jpg" style="vertical-align: middle"/>
                   <span id="title" style="width: 100%; background: pink;">TitleText</span>
-->
                   </div>
            </div>
        </div>

    </body>
</html>

3 个答案:

答案 0 :(得分:1)

广告垂直居中:您没有指定居中关系..您希望再次居中?页?或者只是父div?无论如何..有很多场景,所以检查这些文章:
In the woods
basics {at jakpsatweb}

编辑:将浮点数添加到img,因此标题以剩余空间为中心,而不是整个块

最新版本:

<html>
<head>
    <style>
        body {margin:0;}
        #header {height:200px; background-color:#EEE;}
        #titlesection {height:170px; background-color:#DDD; position:relative;}
        #innersection {height:60px; background-color:#CCC; position:absolute; top:50%; margin-top:-30px; width:100%;}
        #innersection img {float:left; width:200px; height:60px;}
        #innersection h1 {margin:0; font-size:20px; line-height:60px; text-align:center;}
        #menu {height:30px; margin:0; padding:0;}
        #menu li {float:left; display:block; margin-right:10px;}
    </style>
</head>
<body>
    <div id="header" >
        <div id="titlesection" >
            <div id="innersection" >
                <img src="images/burgee.jpg">
                <h1>Title text</h1>
            </div>
        </div>
        <ul id="menu">
            <li>Menu item</li>
            <li>Second menu item</li>
        </ul>
    </div>
</body>
</html>

由于标题通常是固定的,所以我这样做了。您可以将固定高度设置为标题部分,并将其位置设置为相对。然后,内部结构与图像一样高(在css中设置)。文本的垂直居中是通过使用位置绝对技术完成的,边缘顶部设置为50%(因此标题块的顶部边缘将居中)。现在你只需要它的高度的一半,使其居中关系与父母div(innersection)。
呃..不是一个简单的解释我猜..代码应该更好地解释它:)

答案 1 :(得分:0)

为你想要居中的任何东西制作一个包装。

.wrapper {
  width:960px;
  margin-left:auto;
  margin-right:auto
}

答案 2 :(得分:0)

请查看以下帖子:

CSS: Standard (dynamic) way to centralize an element in the y-axis

我的回答中有一些参考资料可能有用,有些人使用CSS问题发布了x / y居中的可能解决方案。