【问题标题】:center a container in an elastic background environment在弹性背景环境中居中容器
【发布时间】:2016-05-16 05:59:59
【问题描述】:

请你检查一下这个example website。如果我很好地阅读了代码(只是看到了),它会使用带有一些 javascript 的表格进行设置,以便居中的容器可以始终保持在中心,并且主体有两个根据屏幕大小扩展的流体颜色背景。

我试图重现这样的东西,但只是使用 css,我很确定我可以但不知道如何。请您给我一些指示/文件以供阅读。

【问题讨论】:

    标签: html css layout fluid-layout


    【解决方案1】:

    i have designed a simple structure here in Jsfiddle,have a look

    标记::

    <div class="wrapper">
       <div class="head_wrapper">
          <div class="left_head">left</div>
          <div class="right_head">right</div>
      </div>
     <div class="body_wrapper">
          <div class="left_body">left</div>
          <div class="right_body">right</div>
     </div>
    </div>
    

    CSS ::

    .wrapper{
    overflow:hidden;
    width:100%;
    display:table;
    }
    .head_wrapper,.body_wrapper{
    overflow:hidden;
    width:100%;
    padding:0px;
    display:table-row;
    }
    .left_head,.left_body,.right_head,.right_body{
    display:table-cell;
    text-align:center;
    vertical-align:middle;
    }
    .left_head{
    background:black;
    height:300px;
    font-size:36px;
    color:white;
    }
    .right_head{
    background:blue;
    height:300px;
    font-size:36px;
    }
    .left_body{
     background:yellow;
    height:800px;
    font-size:36px;
    }
    .right_body{
    background:green;
    height:800px;
    font-size:36px;
    }
    .left_head,.left_body{
    width:70%;
    overflow:hidden;
    }
    

    【讨论】:

    • 很好,但它不能正常工作!如果您尝试缩放 - 和 + 示例站点,则框之间的中间线会更改其位置以使所有内部内容居中,因此它应该根据分辨率更改百分比。我对在没有表格和 javascript 的情况下执行此操作非常悲观。 ://
    【解决方案2】:

    您只是要求在固定宽度的容器上进行水平居中。这很容易完全在 CSS 中完成。只需为您的容器设置(环绕整个网站的元素):

    .container {
        width: 800px;
        margin: 0 auto;
    }
    

    “自动”会自动将左右边距均匀化(上下边没有边距。)

    [编辑:哎呀忘了一点]

    至于色块,您可以使用元素上的背景图像来实现这一点,它的宽度为 1 像素,无论您需要多高。只需将其设置为 repeat-x。

    如果你的两个部分有可能有不同的高度,你可以把它分开,这样:

    1. 一个容器是全宽的,并且具有背景颜色。然后,内部容器将是固定宽度的,具有上述自动边距;
    2. 另一个容器是全宽的,背景颜色较浅。然后,内部容器将是固定宽度的,具有上述自动边距。

    这意味着您的代码将类似于:

    <div class="headercontainer">
        <div class="header> This is my header </div>
    </div>
    <div class="maincontainer">
        <div class="main"> This is rest of my copy. </div>
    </div>
    

    还有你的 CSS:

    .headercontainer { background-color: #222; }
    .maincontainer { background-color: #444; }
    .headercontainer .header, 
    .maincontainer .main { width: 800px;
        margin: 0 auto; }
    

    HTH :)

    【讨论】:

    • 我被 1px 图像所困扰。你能澄清把它放在哪里吗?我想在 .main 类中,但它必须理解所有左侧。并且容器必须与切头对齐!!
    • @il_maniscalco 如果您放置一个 1px 宽的图像来绘制较暗和较亮的背景,您可以将其放在 html 元素上: html { background: url('/images/html-bg.png' ) 重复-x 50% 0;但是你必须将 .headercontainer 的高度固定为图像中较暗背景的高度。更可持续的是我描述的第二种方式,不同部分使用多个容器。
    • 我认为这对我没有帮助,因为这是一个流畅的布局,如果我在背景中放置一个 1px 高的图像,它就不会按照我的需要拉伸......但是我放弃了这个现在的事情,可能我需要使用 javascript 或 js 框架来调整它......
    • 这就是我写的原因,如果您的布局需要可变高度,您应该采用第二种方式。从我写的地方阅读“如果你的两个部分有可能具有不同的高度......”并遵循第二种方法。它应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 2016-04-26
    • 2015-04-14
    • 1970-01-01
    • 2020-02-06
    相关资源
    最近更新 更多