编写网站首页主体布局

课后整理 2021-2-25

下面详细介绍网站首页的主体内容样式设计过程。

【操作步骤】

第1步,设计网站首页(index.html )的主体布局。

网站首页主体部分HTML结构如下:

<div id="content">
    <div class="janeshop">
        <div id="jnCatalog"></div>
        <div id="jnImageroll"></div>
        <div id="jnNotice"></div>
        <div id="jnBrand"></div>
    </div>
</div>

第2步,可以使用float浮动方式来达到布局需求,CSS代码如下所示:

/* 主体样式 */
#content {
    clear: left;
    margin: 0 auto;
    position: relative;
    width: 990px;
}
.janeshop {
    height: 560px;
    overflow: hidden;
    padding: 10px 0;
}
/* 商品分类 */
#jnCatalog {
    float: left;
    height: 560px;
    margin: 0 11px 0 0;
    overflow: hidden;
    width: 187px;
}
/* 大屏广告 */
#jnImageroll {
    float: left;
    height: 320px;
    margin: 0 11px 0 0;
    overflow: hidden;
    position: relative;
    width: 550px;
}
/* 最新动态 */
#jnNotice {
    float: left;
    height: 321px;
    overflow: hidden;
    width: 230px;
}
/* 品牌活动 */
#jnBrand {
    float: left;
    height: 230px;
    margin: 10px 0 0;
    overflow: hidden;
    width: 790px;
}

第3步,往主体结构里面放置HTML代码来充实网页,从而达到前面的设计图效果。首先从左边开始。在前面的设计图中,左侧有一个模块,即“商品分类”。“商品分类”的HTML结构如下:

<!--主体开始-->
<div id="content">
    <div class="janeshop"> 
        <!-- 商品分类 start -->
        <div id="jnCatalog">
            <h2 title="商品分类">商品分类</h2>
            <div class="jnCatainfo">
                <h3>推荐品牌</h3>
                <ul>
                    <li><a href="#nogo" >耐克</a></li>
                    <li><a href="#nogo" class="promoted">阿迪达斯</a></li>
                    <li><a href="#nogo" >达芙妮</a></li>
                    <li><a href="#nogo" >李宁</a></li>
                    <li><a href="#nogo" >安踏</a></li>
                    <li><a href="#nogo" >奥康</a></li>
                    <li><a href="#nogo" class="promoted">骆驼</a></li>
                    <li><a href="#nogo" >特步</a></li>
                </ul>
                <br class="clear" />
                ……后面代码重复省略

第4步,为这个模块添加相应的样式,使之能达到需求。在“商品分类”模块中,有部分商品是热销产品,那么需要为这些元素添加高亮(hot)样式,代码如下所示:

#jnCatalog h2 {
    height: 30px;
    line-height: 30px;
    color: #fff;
    font-size: 12px;
    text-indent: 13px;
    background-color: #6E6E6E;
}
.jnCatainfo {
    border: 1px solid #6E6E6E;
    border-style: none solid solid;
    border-width: 0 1px 1px;
    height: 524px;
    overflow: hidden;
    padding: 5px 10px 0;
    width: 165px;
}
.jnCatainfo h3 {
    border-bottom: 1px solid #EEEEEE;
    height: 24px;
    line-height: 24px;
    width: 164px;
}
.jnCatainfo ul {
    float: left;
    padding: 0 2px 8px;
}
.jnCatainfo li {
    color: #AEADAE;
    float: left;
    height: 24px;
    line-height: 24px;
    width: 79px;
    overflow: hidden;
    position: relative;
}
.jnCatainfo li a { color: #444444; }
.jnCatainfo li a:hover {
    color: #008CD7;
    text-decoration: none;
}
.jnCatainfo li a.promoted { color: #F9044E; }
.jnCatainfo li .hot {
    background: url("../images/hot.gif") no-repeat scroll 0 0 transparent;
    height: 16px;
    position: absolute;
    top: 0;
    width: 21px;
}

应用样式后,页面呈现效果如图1所示。

图1 左侧主体内容设计效果

第5步,左侧完成后,接下来完成首页主体内容的右侧部分的布局。从前面的设计图中可以知道,右侧部分分为上下两个部分,而上面部分又分为左右两个部分。我们先来完成上面的部分,它们的HTML结构如下:

<!-- 大屏广告 start -->
<div id="jnImageroll"></div>
<!-- 最新动态 start -->
<div id="jnNotice">
    <div id="jnMiaosha"></div>
    <div id="jnNoticeInfo">
        <h2 title="最新动态">最新动态</h2>
        <ul></ul>
        <br class="clear" />
    </div>
</div>

第6步,在“大屏广告”部分,我们先为它设置固定的高度和宽度,然后使用overflow:hidden来隐藏溢出的部分,接下来为它添加position:relative属性,然后为里面的img元素分别添加position absolute属性。CSS代码如下:

/* 大屏广告 */
#jnImageroll {
    float: left;
    height: 320px;
    margin: 0 11px 0 0;
    overflow: hidden;
    position: relative;
    width: 550px;
}
#jnImageroll img {
    position: absolute;
    left: 0;
    top: 0;
}

第7步,对“大屏广告”下方的缩略图设置样式。可以使用position:absolute和bottom:0的方式让缩略图处于最下方,然后使用float: left的方式让缩略图以水平方式排列。CSS代码如下:

#jnImageroll div {
    bottom: 0;
    overflow: hidden;
    position: absolute;
    float: left;
}
#jnImageroll div a {
    background-color: #444444;
    color: #FFFFFF;
    display: inline-block;
    float: left;
    height: 32px;
    margin-right: 1px;
    overflow: hidden;
    padding: 5px 15px;
    text-align: center;
    width: 79px;
}
#jnImageroll div a:hover { text-decoration: none; }
#jnImageroll div a em {
    cursor: pointer;
    display: block;
    height: 16px;
    overflow: hidden;
    width: 79px;
}
#jnImageroll .last {
    margin: 0;
    width: 80px;
}
#jnImageroll a.chos {
    background: url("../images/adindex.gif") no-repeat center 39px #37A7D7;
    color: #FFFFFF;
}

应用样式后,网页呈现如图2所示的效果。

图2 大屏广告设计效果

第8步,“最新动态”部分由于也都是一些列表元素,所以布局可以借鉴之前模块的样式设计。CSS代码如下:

/* 最新动态 */
#jnNotice {
    float: left;
    height: 321px;
    overflow: hidden;
    width: 230px;
}
#jnMiaosha {
    float: left;
    height: 176px;
    margin-bottom: 10px;
    overflow: hidden;
    width: 230px;
}
.JS_css3 img {
    -webkit-transition: 1s all;
    -moz-transition: 1s all;
    -o-transition: 1s all;
    transition: 1s all;
}
.JS_css3:hover img {
    -webkit-transform: rotate(720deg);
    -moz-transform: rotate(720deg);
    -o-transform: rotate(720deg);
    transform: rotate(720deg);
}
#jnNoticeInfo {
    float: left;
    border: 1px solid #DFDFDF;
    height: 133px;
    overflow: hidden;
    width: 228px;
}
#jnNoticeInfo h2 {
    height: 23px;
    line-height: 23px;
    border-bottom: 1px solid #DFDFDF;
    text-indent: 12px;
}
#jnNoticeInfo ul {
    float: left;
    padding: 6px 2px 0 12px;
}
#jnNoticeInfo li {
    height: 20px;
    line-height: 20px;
    overflow: hidden;
}
#jnNoticeInfo li a { color: #666666; }
#jnNoticeInfo li a:hover {
    color: #008CD7;
    text-decoration: none;
}

应用样式后,网页呈现如图3所示的效果。

图3 最新动态设计效果

第9步,在首页还有最后一块内容,那就是“品牌活动”部分。它的HTML代码如下所示:

<!-- 品牌活动 start -->
<div id="jnBrand">
    <div id="jnBrandTab">
        <h2 title="品牌活动">品牌活动</h2>
        <ul></ul>
    </div>
    <div id="jnBrandContent">
        <div id="jnBrandList">
            <ul></ul>
        </div>
    </div>
</div>

第10步,从代码可知,“品牌活动”部分分为jnBrandTab和jnBrandContent两部分。jnBrandTab是品牌活动分类,而jnBrandContent则是品牌活动的内容。jnBrandTab部分的CSS代码如下所示:

/* 品牌活动 */
#jnBrand {
    float: left;
    height: 230px;
    margin: 10px 0 0;
    overflow: hidden;
    width: 790px;
}
#jnBrandTab {
    border-bottom: 1px solid #E4E4E4;
    height: 29px;
    position: relative;
    width: 790px;
    float: left;
}
#jnBrandTab h2 {
    height: 29px;
    line-height: 29px;
    left: 0;
    position: absolute;
    width: 100px;
}
#jnBrandTab ul {
    position: absolute;
    right: 0;
    top: 10px;
}
#jnBrandTab li {
    float: left;
    margin: 0 10px 0 0;
}
#jnBrandTab li a {
    background-color: #E4E4E4;
    color: #000000;
    display: inline-block;
    height: 20px;
    line-height: 20px;
    padding: 0 10px;
}
#jnBrandTab .chos {
    background: url("../images/chos.gif") no-repeat scroll 50% bottom transparent;
    padding-bottom: 3px;
}
#jnBrandTab .chos a {
    background-color: #FA5889;
    color: #FFFFFF;
    outline: 0 none;
}

第11步,jnBrandContent的内容比较多,但宽度有限,所以可以使用overflow:hidden来隐藏多余的部分。在后面的内容里,.我们将通过脚本来显示多余的部分。CSS代码如下所示:

#jnBrandContent {
    float: left;
    height: 188px;
    overflow: hidden;
    margin: 8px 5px;
    width: 790px;
    position: relative;
}
#jnBrandList {
    position: absolute;
    left: 0;
    top: 0;
    width: 3200px;
}
#jnBrandContent li {
    float: left;
    height: 188px;
    overflow: hidden;
    padding: 0 5px;
    position: relative;
    width: 185px;
}
#jnBrandContent li img {
    left: 5px;
    position: absolute;
    top: 0;
}
#jnBrandContent li span {
    background-color: #EFEFEF;
    bottom: 0;
    color: #666666;
    display: inline-block;
    font-size: 14px;
    height: 24px;
    line-height: 24px;
    overflow: hidden;
    position: absolute;
    text-align: center;
    width: 183px;
}
#jnBrandContent li a { color: #666666; }
#jnBrandContent li a:hover {
    color: #008CD7;
    text-decoration: none;
}

应用样式后,网页呈现如果4所示的效果。

图4 品牌活动设计效果