最近在学习css的时候会经常用到左右布局。所以会先建立一个div容器,里面添加图形和文本

效果图如下。

html5 自由布局 html5布局图_html

于是第一步会先建立一个div,然后在内部添加两个div。

<div class="item-box">
    <div class="item-box-icon">

    </div>      
    <div class="item-box-text">
        <span>人均在线</span>
        <span>1000</span>
    </div>
</div>

这里说明一下,最外层样式为item-box ,内部两个div,分别为 item-box-icon 和 item-box-text,从字母上也很容易理解,图标和文本。

接下来,我们为每一个div添加样式,为了更加直观一点,我们添加一个边框观察div的情况

<style type="text/css">

        .item-box {
            width: 250px;
            height: 90px;
            background-color: white;
            border: 1px solid red;
        }

        .item-box-icon{ 
            display: inline-block;      
            width: 90px;
            height: 90px;
            background-color:#1aa094 ;
             border: 1px solid red; 
        } 

        .item-box-text{
             border: 1px solid red; 
        }


    </style>

运行第一次效果查看情况。可以看到文本和我们示意图事宜愿为。发现不行。

html5 自由布局 html5布局图_html5 自由布局_02

接下来,我们将.item-box-text 样式 改成 内联块 。默认情况下 div的显示方式为block,会占据整一行位置。因此可以看到因为这里我们的文本区域并没有往右边靠。

.item-box-text{
             border: 1px solid red; 
             display: inline-block;
        }

我们设置了inline-block后查看一下效果。虽然我们已经将div变成了内联块,但离我示意图还是有区别。

html5 自由布局 html5布局图_css_03

为了解决这个问题。我们引入position,将其变成绝对定位。

.item-box-text{
             border: 1px solid red; 
             display: inline-block;
             position: absolute;
        }

再次运行一下,观察效果 。这个时候,文本会依据我们意愿出现了相应的情况。

html5 自由布局 html5布局图_html_04

除此方法,还可以配合 vertical-align:top的方式处理文本让其变成右边布局。

.item-box-text{
             border: 1px solid red; 
             display: inline-block;       
             vertical-align: top;
        }

html5 自由布局 html5布局图_html_05

目前为此这个问题就通过此方法来解决这个问题。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Css 练习</title>
    </head>
    <style type="text/css">

        .item-box {
            width: 250px;
            height: 90px;
            background-color: white;
            box-shadow: 0 1px 1px rgba(0,0,0,0.1);
            border-radius: 2px; 
            margin-bottom: 20px;
            display: inline-block;  

        }

        .item-box-icon{ 
            display: inline-block;      
            width: 90px;
            height: 90px;
            background-color:#1aa094 ;  
        }

        .item-box-text{
           display: inline-block;
           position: absolute;
           padding:5px 10px;
        }

        .item-box-number{
            display: block;
            font-size: 30px;
            font-weight: 600;    
        }
        .container{
            width: 50%;
        }
    </style>
    <body>
        <div class="container">
            <div class="item-box">
                <div class="item-box-icon">

                </div>      
                <div class="item-box-text">
                    <span>人均在线</span>
                    <span class="item-box-number">1000</span>
                </div>
            </div>
            <div class="item-box">
                <div class="item-box-icon">

                </div>      
                <div class="item-box-text">
                    <span>人均在线</span>
                    <span class="item-box-number">1000</span>
                </div>
            </div>

            <div class="item-box">
                <div class="item-box-icon">

                </div>      
                <div class="item-box-text">
                    <span>人均在线</span>
                    <span class="item-box-number">1000</span>
                </div>
            </div>
            <div class="item-box">
                <div class="item-box-icon">

                </div>      
                <div class="item-box-text">
                    <span>人均在线</span>
                    <span class="item-box-number">1000</span>
                </div>
            </div>
        </div>

    </body>
</html>

最后我们编辑一个效果

html5 自由布局 html5布局图_html5 自由布局_06


方法二:使用flex高效布局

事实上,仅仅使用flex的方式就可以将两个div实现区域内左右布局。
这里写代码片.item-box 样式下显示方式修改一下display: flex;

查看浏览器的兼容性:http://caniuse.com/#search=flex

display: -webkit-flex; //webkit浏览器加上。

html5 自由布局 html5布局图_ico_07

这种方式布局下,div的大小会呈现大小一致。


<style type="text/css">

        .item-box {
            width: 250px;
            height: 90px;
            background-color: white;
            border: 1px solid red;
            display: flex;
        }

        .item-box-icon{ 
            width: 90px;
            height: 90px;
            background-color:#1aa094 ;
            border: 1px solid red;  
        } 

        .item-box-text{
             border: 1px solid red; 
        }


    </style>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Css 练习</title>
    </head>
    <style type="text/css">

        .item-box {
            width: 250px;
            height: 90px;
            background-color: white;
            border: 1px solid red;
            display: flex;
        }

        .item-box-icon{ 
            width: 90px;
            height: 90px;
            background-color:#1aa094 ;
            border: 1px solid red;  
        } 

        .item-box-text{
             border: 1px solid red; 
        }


    </style>
    <body>
        <div class="container">
            <div class="item-box">
                <div class="item-box-icon">

                </div>      
                <div class="item-box-text">
                    <span>人均在线</span>
                    <span class="item-box-number">1000</span>
                </div>
            </div>

        </div>

    </body>
</html>