如何在一行中获得三个DIV元素?

时间:2014-04-19 09:02:41

标签: css html

我似乎无法获得第三个" promobox"与其他两个一起来到第一行,它只是进入下一行,但它被设置为一个百分比,所以它不重要。 我试图用另一个论坛的答案解决这个问题,但我根本无法做到。 帮助会很棒。 谢谢你。

<html>
<head>
    <style>
* {
    margin: 0px; padding: 0px; border: 0px;
    }

#container {
    width: 100%; height: 500px;
    max-width: 1440px; min-width: 1024px;
    margin: 0px auto;
    border: 2px solid blue;
    text-align: center;
    }

.bigbox {
    height: 530px;
    background-image: url(images/photos/landscape-1440.jpg);
    background-position: 50% 50%;
    border: 2px solid red;
    }

.promobox {
    width: 25%;
    height: 200px;
    display: inline-block;
    background-position: 50% 0%;
    border: 2px solid green;
    margin: 0px;
    padding: 0px;
    vertical-align: top;
    }

.promobox div {
    height: 200px;
    border-color: #FFF;
    border-style: none;
    }


div {
    text-align: center;
    position: relative;
    }

div a {
    position: absolute;
    bottom: 10px; right: 10px;
    color: #FFF;
    text-shadow: 1px 1px 1px #000;
    }

#pb1 {width: 25%;} 


#pb2 {width: 50%;}

#pb3 {width: 25%}




</style>
</head>
<body bgcolor="white">

    <div id="container">
<div class="bigbox">

<div class="promobox" id="pb1">#</div>
<div class="promobox" id="pb2">#</div>
<div class="promobox" id="pb3">#</div></div></div></body></html>

5 个答案:

答案 0 :(得分:0)

你没有考虑div的边界,因此你将超过100%的宽度。最简单的解决方案是移除边框或总宽度小于或等于98%

e.g。

#pb1 {width: 24%;} 
#pb2 {width: 50%;}
#pb3 {width: 24%}

答案 1 :(得分:0)

你有两个的东西可能会使3个盒子彼此相邻排列。 给定的border:2px solid green;display: inline-block;

使用边框时,你不能让盒子总共有100%。因为边框需要是100%的一部分。

.promobox {
    width: 25%;
    height: 200px;
    float:left;         /*Change the display:inline-block to this */
    background-position: 50% 0%;
    margin: 0px;
    padding: 0px;
    vertical-align: top;
    }

工作 DEMO (没有边框)

答案 2 :(得分:0)

最后我回答了我的评论: DEMO以及下面的修复


在你的HTML中,div之间有空格,一旦white-space你的div为display,它就会生成inline-block

25%+ 50%+ 25%+ 2 white-space + borders超过100%。

边框可以使用box-sizingwhite-space从HTML中删除<!--comment-->或通过CSS设置font-size删除为0并返回16px左右{{1 }}


更新CSS:


.promobox

答案 3 :(得分:0)

试试这个:

<html>
<head>
    <style>
* {
    margin: 0px; padding: 0px; border: 0px;
    }

#container {
    width: 100%; height: 500px;
    max-width: 1440px; min-width: 1024px;
    margin: 0px auto;
    text-align: center;
    }

.bigbox {
    height: 530px;
    background-image: url(images/photos/landscape-1440.jpg);
    background-position: 50% 50%;
    }

.promobox {
    width: 25%;
    height: 200px;
    display: inline-block;
    background-position: 50% 0%;
    margin: 0px;
    padding: 0px;
    vertical-align: top;
    float:left;
    }

.promobox div {
    height: 200px;
    border-color: #FFF;
    border-style: none;
    }


div {
    text-align: center;
    position: relative;
    }

div a {
    position: absolute;
    bottom: 10px; right: 10px;
    color: #FFF;
    text-shadow: 1px 1px 1px #000;
    }

#pb1 {width: 25%;} 


#pb2 {width: 50%;}

#pb3 {width: 25%}




</style>
</head>
<body bgcolor="white">

    <div id="container">
<div class="bigbox">

<div style='background:red' class="promobox" id="pb1">#</div>
<div style='background:green' class="promobox" id="pb2">#</div>
<div style='background:yellow' class="promobox" id="pb3">#</div></div></div></body></html>

答案 4 :(得分:-1)

这是一个连续两个div的工作演示

<div style="text-align:center;">
<div style="border:1px solid #000; display:inline-block;">Div 1</div>
<div style="border:1px solid red; display:inline-block;">Div 2</div>

Demo