如何在页面中的CSS中分散三列

时间:2016-05-18 10:23:12

标签: html css

所以我已经查看过关于SE的其他问题以及谷歌的结果,但要么它们都是胶带y(使用魔术数字,即边距或填充中的X像素数量等等,我不喜欢它因为它是不可扩展)或使用某些其他搜索结果中某人的方法说我不应该除非作为最后的手段(如浮动:左)或他们正在做我已经完成的事情,但无论出于何种原因都不起作用。

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>GDb</title>
    <link rel="stylesheet" type="text/css" href="style.css" media="screen">    
</head>
<body>
    <header>
        <nav>
            <ul class="NavBanner">
                <li><a class="Activatable" href="Home.html">Home</a></li>
                <li><a class="Activatable" href="#">Search</a></li>
                <li><a class="Active" href="#">Browse</a></li>
            </ul>
        </nav>
    </header>

    <div class="MainContent">
        <div class="Column">
            <div class="TextContainer">
                <h1>By Genre</h1>
                <h2>Action</h2>
                    <div>
                        <ul>
                            <li>Rainbow Six: Siege</li>
                        </ul>
                    </div>
                <h2>Adventure</h2>
                    <div>
                        <ul>
                            <li>Sunless Sea</li>
                            <li>Alien: Isolation</li>
                        </ul>
                    </div>
                <h2>Strategy</h2>
                    <div>
                        <ul>
                            <li>
                                Stellaris
                            </li>
                        </ul>
                    </div>
                <h2>RPG</h2>
                    <div>
                        <ul>
                            <li>
                                The Witcher 3: Wild Hunt
                            </li>
                        </ul>
                    </div>
            </div>
        </div>

        <div class="Column">
            <div class="TextContainer">
                <h1>By Developer</h1>
                <h2>CD Projekt RED</h2>
                    <div>
                        <ul>
                            <li>
                                The Witcher 3: Wild Hunt
                            </li>
                        </ul>
                    </div>
                <h2>Creative Assembly</h2>
                    <div>
                        <ul>
                            <li>Alien: Isolation</li>
                        </ul>
                    </div>
                <h2>Failbetter Games</h2>
                    <div>
                        <ul>
                            <li>Sunless Sea</li>
                        </ul>
                    </div>
                <h2>Paradox Interactive</h2>
                    <div>
                        <ul>
                            <li>
                                Stellaris
                            </li>
                        </ul>
                    </div>
                <h2>Ubisoft</h2>
                    <div>
                        <ul>
                            <li>Rainbow Six: Siege</li>
                        </ul>
                    </div>
            </div>
        </div>

        <div class="Column">
            <div class="TextContainer">
                <h1>By Year</h1>
                <h2>2016</h2>
                    <div>
                        <ul>
                            <li>Stellaris</li>
                        </ul>
                    </div>
                <h2>2015</h2>
                    <div>
                        <ul>
                            <li>Rainbow Six: Siege</li>
                            <li>Sunless Sea</li>
                            <li>The Witcher 3: Wild Hunt</li>
                        </ul>
                    </div>
                <h2>2014</h2>
                    <div>
                        <ul>
                            <li>Alien: Isolation</li>
                        </ul>
                    </div>
            </div>
        </div>
    </div>
</body>
</html>

CSS:

body
{
    background: -webkit-linear-gradient(top, #b3b3b0, #e3e2dd);
    background-color: #b3b3b0;
    background-repeat: no-repeat;
    background-attachment: fixed;
    background-size: cover;
    margin: 0;
    padding: 0;
}

.NavBanner
{
    list-style-type: none;
    margin: 0;
    padding: 0;
    overflow: hidden;
    background-color: #333;
}

.Activatable
{
    color: white;
    text-decoration: none;
    padding: 14px 16px;
    float: left;
    text-align: center;
}

.Activatable:hover:not(.active)
{
    background-color: #111;
}

.Active
{
    background-color: #4CAF50;
    color: white;
    cursor: default;
    text-decoration: none;
    padding: 14px 16px;
    float: left;
    text-align: center;
}

.MainContent
{
    background-color: whitesmoke;
    box-shadow: 0px 0px 8px rgba(0,0,0,0.7);
    padding: 56px 14px 15px;
    width: 1700px;
    margin: auto;
    position: relative;

}

.Column
{
    text-align: center;
    border: 1px solid #000;
    padding: 10px;
    margin: 0 10px;
    display: inline-block;
    width: 500px;
    vertical-align: top;
}

.TextContainer
{
    display: inline-block;
    text-align: left;
}

我几乎得到了所需的结果,但右列的右侧比左侧列的左侧有更多的空间,因为列不居中。我真的不关心宽度或特定边距,填充或任何列,我只是希望它们具有相同的宽度并且居中,如果这是有道理的。

6 个答案:

答案 0 :(得分:2)

你可以使用flex:

您可以简单地测试将这两个规则添加到您的样式表中:(以下片段自行查看:))

.MainContent {
  display: flex;
}

.Column {
  flex: 1;
}

&#13;
&#13;
body {
  background: -webkit-linear-gradient(top, #b3b3b0, #e3e2dd);
  background-color: #b3b3b0;
  background-repeat: no-repeat;
  background-attachment: fixed;
  background-size: cover;
  margin: 0;
  padding: 0;
}

.NavBanner {
  list-style-type: none;
  margin: 0;
  padding: 0;
  overflow: hidden;
  background-color: #333;
}

.Activatable {
  color: white;
  text-decoration: none;
  padding: 14px 16px;
  float: left;
  text-align: center;
}

.Activatable:hover:not(.active) {
  background-color: #111;
}

.Active {
  background-color: #4CAF50;
  color: white;
  cursor: default;
  text-decoration: none;
  padding: 14px 16px;
  float: left;
  text-align: center;
}

.MainContent {
  background-color: whitesmoke;
  box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.7);
  padding: 56px 14px 15px;
  width: 1700px;
  margin: auto;
  position: relative;
  display: flex;
}

.Column {
  text-align: center;
  border: 1px solid #000;
  padding: 10px;
  margin: 0 10px;
  flex: 1;
  vertical-align: top;
}

.TextContainer {
  display: inline-block;
  text-align: left;
}
&#13;
    <nav>
            <ul class="NavBanner">
                <li><a class="Activatable" href="Home.html">Home</a></li>
                <li><a class="Activatable" href="#">Search</a></li>
                <li><a class="Active" href="#">Browse</a></li>
            </ul>
        </nav>
    </header>

    <div class="MainContent">
        <div class="Column">
            <div class="TextContainer">
                <h1>By Genre</h1>
                <h2>Action</h2>
                    <div>
                        <ul>
                            <li>Rainbow Six: Siege</li>
                        </ul>
                    </div>
                <h2>Adventure</h2>
                    <div>
                        <ul>
                            <li>Sunless Sea</li>
                            <li>Alien: Isolation</li>
                        </ul>
                    </div>
                <h2>Strategy</h2>
                    <div>
                        <ul>
                            <li>
                                Stellaris
                            </li>
                        </ul>
                    </div>
                <h2>RPG</h2>
                    <div>
                        <ul>
                            <li>
                                The Witcher 3: Wild Hunt
                            </li>
                        </ul>
                    </div>
            </div>
        </div>

        <div class="Column">
            <div class="TextContainer">
                <h1>By Developer</h1>
                <h2>CD Projekt RED</h2>
                    <div>
                        <ul>
                            <li>
                                The Witcher 3: Wild Hunt
                            </li>
                        </ul>
                    </div>
                <h2>Creative Assembly</h2>
                    <div>
                        <ul>
                            <li>Alien: Isolation</li>
                        </ul>
                    </div>
                <h2>Failbetter Games</h2>
                    <div>
                        <ul>
                            <li>Sunless Sea</li>
                        </ul>
                    </div>
                <h2>Paradox Interactive</h2>
                    <div>
                        <ul>
                            <li>
                                Stellaris
                            </li>
                        </ul>
                    </div>
                <h2>Ubisoft</h2>
                    <div>
                        <ul>
                            <li>Rainbow Six: Siege</li>
                        </ul>
                    </div>
            </div>
        </div>

        <div class="Column">
            <div class="TextContainer">
                <h1>By Year</h1>
                <h2>2016</h2>
                    <div>
                        <ul>
                            <li>Stellaris</li>
                        </ul>
                    </div>
                <h2>2015</h2>
                    <div>
                        <ul>
                            <li>Rainbow Six: Siege</li>
                            <li>Sunless Sea</li>
                            <li>The Witcher 3: Wild Hunt</li>
                        </ul>
                    </div>
                <h2>2014</h2>
                    <div>
                        <ul>
                            <li>Alien: Isolation</li>
                        </ul>
                    </div>
            </div>
        </div>
    </div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

只需添加display:flex;在父容器中(如果没有那么创建1)并在子元素中放置flex:1;他们将占据父母的全部宽度..

答案 2 :(得分:1)

您的CSS非常接近实现布局所需的内容。

有两个小但重要的变化。

首先,要.MainContent添加规则text-align: center,这将使您的内联块.columns居中。

其次,要使文字正常流动,请将text-align: left添加到.columntext-align继承)。

注意:你可以使用flex,但我(个人)总是犹豫不决,因为目前的浏览器支持(尽管这总是越来越好)。

body {
  background: -webkit-linear-gradient(top, #b3b3b0, #e3e2dd);
  background-color: #b3b3b0;
  background-repeat: no-repeat;
  background-attachment: fixed;
  background-size: cover;
  margin: 0;
  padding: 0;
}
.NavBanner {
  list-style-type: none;
  margin: 0;
  padding: 0;
  overflow: hidden;
  background-color: #333;
}
.Activatable {
  color: white;
  text-decoration: none;
  padding: 14px 16px;
  float: left;
  text-align: center;
}
.Activatable:hover:not(.active) {
  background-color: #111;
}
.Active {
  background-color: #4CAF50;
  color: white;
  cursor: default;
  text-decoration: none;
  padding: 14px 16px;
  float: left;
  text-align: center;
}
.MainContent {
  background-color: whitesmoke;
  box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.7);
  padding: 56px 14px 15px;
  width: 1700px;
  margin: auto;
  position: relative;
  text-align: center;
}
.Column {
  text-align: left;
  border: 1px solid #000;
  padding: 10px;
  margin: 0 10px;
  display: inline-block;
  width: 500px;
  vertical-align: top;
}
.TextContainer {
 }
<header>
  <nav>
    <ul class="NavBanner">
      <li><a class="Activatable" href="Home.html">Home</a>
      </li>
      <li><a class="Activatable" href="#">Search</a>
      </li>
      <li><a class="Active" href="#">Browse</a>
      </li>
    </ul>
  </nav>
</header>

<div class="MainContent">
  <div class="Column">
    <div class="TextContainer">
      <h1>By Genre</h1>
      <h2>Action</h2>
      <div>
        <ul>
          <li>Rainbow Six: Siege</li>
        </ul>
      </div>
      <h2>Adventure</h2>
      <div>
        <ul>
          <li>Sunless Sea</li>
          <li>Alien: Isolation</li>
        </ul>
      </div>
      <h2>Strategy</h2>
      <div>
        <ul>
          <li>
            Stellaris
          </li>
        </ul>
      </div>
      <h2>RPG</h2>
      <div>
        <ul>
          <li>
            The Witcher 3: Wild Hunt
          </li>
        </ul>
      </div>
    </div>
  </div>

  <div class="Column">
    <div class="TextContainer">
      <h1>By Developer</h1>
      <h2>CD Projekt RED</h2>
      <div>
        <ul>
          <li>
            The Witcher 3: Wild Hunt
          </li>
        </ul>
      </div>
      <h2>Creative Assembly</h2>
      <div>
        <ul>
          <li>Alien: Isolation</li>
        </ul>
      </div>
      <h2>Failbetter Games</h2>
      <div>
        <ul>
          <li>Sunless Sea</li>
        </ul>
      </div>
      <h2>Paradox Interactive</h2>
      <div>
        <ul>
          <li>
            Stellaris
          </li>
        </ul>
      </div>
      <h2>Ubisoft</h2>
      <div>
        <ul>
          <li>Rainbow Six: Siege</li>
        </ul>
      </div>
    </div>
  </div>

  <div class="Column">
    <div class="TextContainer">
      <h1>By Year</h1>
      <h2>2016</h2>
      <div>
        <ul>
          <li>Stellaris</li>
        </ul>
      </div>
      <h2>2015</h2>
      <div>
        <ul>
          <li>Rainbow Six: Siege</li>
          <li>Sunless Sea</li>
          <li>The Witcher 3: Wild Hunt</li>
        </ul>
      </div>
      <h2>2014</h2>
      <div>
        <ul>
          <li>Alien: Isolation</li>
        </ul>
      </div>
    </div>
  </div>
</div>

答案 3 :(得分:1)

右边有额外的空间,因为每个列的设置宽度为522px,但容器的宽度为1700px。列对齐左侧,留下134px的空白空间。

一个很好的技巧是在列的容器上使用display: table,在列本身上使用display: table-cell。然后,在每列上设置宽度为33.3333 ...%。这样,列的宽度将自动确定,不需要硬编码。

&#13;
&#13;
body
{
    background: -webkit-linear-gradient(top, #b3b3b0, #e3e2dd);
    background-color: #b3b3b0;
    background-repeat: no-repeat;
    background-attachment: fixed;
    background-size: cover;
    margin: 0;
    padding: 0;
}

.NavBanner
{
    list-style-type: none;
    margin: 0;
    padding: 0;
    overflow: hidden;
    background-color: #333;
}

.Activatable
{
    color: white;
    text-decoration: none;
    padding: 14px 16px;
    float: left;
    text-align: center;
}

.Activatable:hover:not(.active)
{
    background-color: #111;
}

.Active
{
    background-color: #4CAF50;
    color: white;
    cursor: default;
    text-decoration: none;
    padding: 14px 16px;
    float: left;
    text-align: center;
}

.MainContent
{
    background-color: whitesmoke;
    box-shadow: 0px 0px 8px rgba(0,0,0,0.7);
    padding: 15px;
    width: 1700px;
    margin: auto;
    display: table;
}

.Column
{
    padding: 10px;
    display: table-cell;
    vertical-align: top;
    width: 33.333333%;
}

.TextContainer
{
    display: block;
    border: 1px solid #000;
    padding: 0 15px;
}

.TextContainer h1 {
    text-align: center;
}
&#13;
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>GDb</title>
    <link rel="stylesheet" type="text/css" href="style.css" media="screen">    
</head>
<body>
    <header>
        <nav>
            <ul class="NavBanner">
                <li><a class="Activatable" href="Home.html">Home</a></li>
                <li><a class="Activatable" href="#">Search</a></li>
                <li><a class="Active" href="#">Browse</a></li>
            </ul>
        </nav>
    </header>

    <div class="MainContent">
        <div class="Column">
            <div class="TextContainer">
                <h1>By Genre</h1>
                <h2>Action</h2>
                    <div>
                        <ul>
                            <li>Rainbow Six: Siege</li>
                        </ul>
                    </div>
                <h2>Adventure</h2>
                    <div>
                        <ul>
                            <li>Sunless Sea</li>
                            <li>Alien: Isolation</li>
                        </ul>
                    </div>
                <h2>Strategy</h2>
                    <div>
                        <ul>
                            <li>
                                Stellaris
                            </li>
                        </ul>
                    </div>
                <h2>RPG</h2>
                    <div>
                        <ul>
                            <li>
                                The Witcher 3: Wild Hunt
                            </li>
                        </ul>
                    </div>
            </div>
        </div>

        <div class="Column">
            <div class="TextContainer">
                <h1>By Developer</h1>
                <h2>CD Projekt RED</h2>
                    <div>
                        <ul>
                            <li>
                                The Witcher 3: Wild Hunt
                            </li>
                        </ul>
                    </div>
                <h2>Creative Assembly</h2>
                    <div>
                        <ul>
                            <li>Alien: Isolation</li>
                        </ul>
                    </div>
                <h2>Failbetter Games</h2>
                    <div>
                        <ul>
                            <li>Sunless Sea</li>
                        </ul>
                    </div>
                <h2>Paradox Interactive</h2>
                    <div>
                        <ul>
                            <li>
                                Stellaris
                            </li>
                        </ul>
                    </div>
                <h2>Ubisoft</h2>
                    <div>
                        <ul>
                            <li>Rainbow Six: Siege</li>
                        </ul>
                    </div>
            </div>
        </div>

        <div class="Column">
            <div class="TextContainer">
                <h1>By Year</h1>
                <h2>2016</h2>
                    <div>
                        <ul>
                            <li>Stellaris</li>
                        </ul>
                    </div>
                <h2>2015</h2>
                    <div>
                        <ul>
                            <li>Rainbow Six: Siege</li>
                            <li>Sunless Sea</li>
                            <li>The Witcher 3: Wild Hunt</li>
                        </ul>
                    </div>
                <h2>2014</h2>
                    <div>
                        <ul>
                            <li>Alien: Isolation</li>
                        </ul>
                    </div>
            </div>
        </div>
    </div>
</body>
</html>
&#13;
&#13;
&#13;

答案 4 :(得分:0)

你尝试过使用bootstrap吗?

<div class="row">
   <div class="Column col-md-4"></div>
   <div class="Column col-md-4"></div>
   <div class="Column col-md-4"></div>
</div>

答案 5 :(得分:0)

如果你使用bootstrap,只需将bootstrap css文件添加到你的代码和代码中就会很容易: -

 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">