ShiningDan的博客

网页结构与表现原则

在该笔记中,介绍的是网页制作中,如何从更深层次上理解结构(HTML)与表现(CSS)之间的关系。

结构(HTML)与表现(CSS)相分离的思想

当我们拿到一个网页的设计图的时候,首先观察网页的文字内容和内容模块之间的关系,将重点放在语义化的 HTML 代码上,而不要过多考虑设计图上的样式。当把 HTML 内容编写完成之后,再考虑样式如何实现(增加 div span 等操作),力求在不改变现有结构的基础上,完成现有设计图的效果。

下面的例子是对该思想的具体阐述:

用户发言信息列表制作

下面的例子,显示的是使用三种方法来制作同一样内容以及样式的网页局部。

<html>
    <head>
        <title>初级阶段结构设置</title>
        <meta charset="utf-8">
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            .demo1{
                width: 600px;
                overflow: hidden;
            }
            .demo1 .left img{
                margin-left: 20px;
                width: 40px;
                height: 40px;
            }
            .demo1 .left{
                width: 100px;
                float: left;
            }
            .demo1 .right{
                width: 458px;
                padding: 20px;
                float: right;
                background-color: #9CF;
                border: 1px solid #CCC;
                position: relative;
            }
            .demo1 .right p {
                font-size: 12px;
                line-height: 25px;
            }
            .demo1 .right span{
                position: absolute;
                right: 20px;
                top: 10px;
                font-size: 12px;
            }
            .demo1 .right h6 {
                color: #666;
            }
            .demo2{
                width: 600px;
                overflow: hidden;
            }
            .demo2 img{
                margin-left: 20px;
                width: 40px;
                height: 40px;
                float: left;
            }
            .demo2 .right{
                width: 458px;
                padding: 20px;
                float: right;
                background-color: #9CF;
                border: 1px solid #CCC;
                position: relative;
            }
            .demo2 .right p {
                font-size: 12px;
                line-height: 25px;
            }
            .demo2 .right span{
                position: absolute;
                right: 20px;
                top: 10px;
                font-size: 12px;
            }
            .demo2 .right h6 {
                color: #666;
            }
            .demo3{
                width: 458px;
                padding: 20px;
                background-color: #9CF;
                border: 1px solid #CCC;
                margin-left: 100px;    
                position: relative;           
            }
            .demo3 img{
                width: 40px;
                height: 40px;
                float: left;
                margin: -20px 0 0 -100px;
            }
            .demo3 h6 {
                color: #666;
            }
            .demo3 span{
                position: absolute;
                right: 20px;
                top: 10px;
                font-size: 12px;
            }
            .demo3 p {
                font-size: 12px;
                line-height: 25px;
            }
        </style>
    </head>
    <body>
        <div class="demo1">
            <div class="left">
                <img src="http://ofjjubwp5.bkt.clouddn.com/image/jpg/avatar.jpg">
            </div><div class="right">
                <h6>ShiningDan</h6>
                <p>这是我的个人发言。这是我的个人发言。这是我的个人发言。这是我的个人发言。
                    这是我的个人发言。这是我的个人发言。这是我的个人发言。
                    这是我的个人发言。这是我的个人发言。这是我的个人发言。
                </p>
                <span>10分钟之前</span>
            </div>
        </div>
        <br/>
        <div class="demo2">
            <img src="http://ofjjubwp5.bkt.clouddn.com/image/jpg/avatar.jpg">
            <div class="right">
                <h6>ShiningDan</h6>
                <p>这是我的个人发言。这是我的个人发言。这是我的个人发言。这是我的个人发言。
                    这是我的个人发言。这是我的个人发言。这是我的个人发言。
                    这是我的个人发言。这是我的个人发言。这是我的个人发言。
                </p>
                <span>10分钟之前</span>
            </div>
        </div>
        <br/>
        <div class="demo3">
            <img src="http://ofjjubwp5.bkt.clouddn.com/image/jpg/avatar.jpg">
            <h6>ShiningDan</h6>
            <p>这是我的个人发言。这是我的个人发言。这是我的个人发言。这是我的个人发言。
                这是我的个人发言。这是我的个人发言。这是我的个人发言。
                这是我的个人发言。这是我的个人发言。这是我的个人发言。
            </p>
            <span>10分钟之前</span>
        </div>
    </body>
</html>

显示效果如下:

下面是对三种不同方法的分析:

第一种方法(初级方法):使用了多层 div,将每一部分都定义成一个 div,然后进行样式架构

第二种方法(中级方法):相比第一种方法,少了一个 div,因为即使没有这个 div,也可以成功地把头像放在指定的位置。

第三种方法(高级方法):只使用了一个div,然后通过 css 样式来对内容进行排版,同样达到了一样的效果,但是代码最简单!

这个例子告诉我们,先通过结构去考虑,在编写完结构以后,只通过样式来改变它的布局。而不是像第一种方法,在编写结构的过程中,已经用过 div 的配合考虑了布局在里面。所以我们在开始写 HTML 代码的时候,先把要呈现的内容展示出来,然后通过 CSS 进行布局,直到必须的时候再添加 div 辅助进行布局。