垂直对齐Div中的文本

时间:2015-02-25 23:01:41

标签: html css

我试图创建一个网站,但我有2个部分的麻烦; 1.我无法垂直对齐网站标题,以使其位于div的中间。 2.我试图将菜单表与其正上方的标题div对齐,并使其保持所有浏览器类型。

我试图做不同的事情以使上述两者都起作用,但似乎没有任何效果,并且无法对齐任何一个元素。请有人帮帮我。

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Game Portal</title>
        <style>
            body{
                background-color: black;
            }
            h1.header{
                font-family: "Trebuchet MS", Arial, sans-serif; 
                font-weight: bold; 
                font-size: 30px; 
                color: #fff; 
                text-transform: uppercase; 
            }
            #headerdiv{
                margin: 0px auto; 
                border: 1px solid red; 
                width: 70%; 
                height: 100px;
                padding-top:30px;
            }
            th, td {
                padding: 15px;
                table-layout: fixed;
                width: 180px;
                height: 75px;
                padding: 0px;
                border-right-style: solid;
                border-left-style: solid;
                border-width: 1px;
                border-color: #808080;
                border-collapse: collapse;
            }

            td {
                text-align: center;
                font-family:"Times New Roman", Helvetica, sans-serif; 
                font-size: 15pt;
                border-radius:5px
                height: 100px;
            }
            a{
                color: #808080; 
            }
            #titleSize{
                font-size: 25px;
            }
            #nav {
                line-height:30px;
                background-color:#4D4D4D;
                height:80px;
                width:100%;
            }
        </style>

    </head>
    <body>
        <div id="headerdiv">
            <h1 class="header">game<span id="titleSize">portal</span></h1>
        </div>
        <div id="nav">
            <table style="background-color: #4D4D4D; padding-left: 15%;">
                <tr>
                    <td><a href="">Home</a></td>
                    <td><a href="UnderConstruction.html">Games</a></td>
                    <td><a href="UnderConstruction.html">News</a></td>
                    <td><a href="UnderConstruction.html">Contact Us</a></td>
                </tr>
            <table> 
        </div>

    </body>
</html>

我曾尝试弄乱位置(绝对,固定,相对)以及边距,但似乎没有任何一个元素移动。提前致谢。

3 个答案:

答案 0 :(得分:0)

一种方法是填充:

  #headerdiv{
            width: 200px; 
            margin:0px auto; 
            border: 1px solid red; 
            width: 70%; 
            height: 70px;
            padding-top:30px;
  }

此处height已更改,其余为100已添加到padding-top

答案 1 :(得分:0)

有很多方法可以做到这一点,例如:

http://jsfiddle.net/ovLhjmwb/

例如:容易包含所有子元素的容器(并给它一个宽度)

        .container {
            width: 400px;
            margin: auto;
        }

另外,垂直对齐文本有点难以做到,最简单的方法是使用vertical-align属性(带有表格元素)

        #headerdiv table{
            vertical-align: middle;                
            height: 100%;
            width: 100%;
        }

答案 2 :(得分:0)

所以我想还有更多的问题。例如,使用更多的HTML5标签,而不是那么多的ID或类。保持DOM树尽可能简单。您将获得更好的结构,并且您的xode更具可读性。顺便说一句,我也在我的解决方案中修复了你的问题。

HTML:

<header>
  <h1>Game<span>Portal</span></h1>
</header>
<nav>
  <ul>
    <li><a href="UnderConstruction.html">Home</a></li>
    <li><a href="UnderConstruction.html">Games</a></li>
    <li><a href="UnderConstruction.html">News</a></li>
    <li><a href="UnderConstruction.html">Contact Us</a></li>
  </ul>
</nav>

CSS:

body{
  background: black;
}
header {
  width: 70%;
  display: block;
  margin: 0 auto;
  height: 100px;
  border: 1px solid red;
}
header h1 {
  font-family: "Trebuchet MS", Arial, sans-serif; 
  font-weight: bold; 
  font-size: 30px; 
  line-height: 30px;
  color: white;
  text-transform: uppercase;
  padding-top:13px;
}
header h1 span {
  font-size: 25px;
}
nav {
  width:70%;
  margin:0 auto;
  text-align:left;
  height: 100px;
  background: #4D4D4D;
}
nav ul {
  margin-left:-40px;
}
nav ul li {
  float:left;
  list-style-type:none;
}
nav ul li a{
  color: #808080;
  height: 62px;
  padding:38px 20px 0 20px;
  border-left:1px solid #808080;
  display: block;
  font-size: 15pt;
}