[关闭]
@JRuiCoder 2015-12-10T01:53:50.000000Z 字数 12721 阅读 1613

实验教学中心首页重构教程

重构


一.前言和声明

期末网站作业已经开始了,接下来同学们就要踏上充(ku )实(bi)的网站之旅。为了能够让你们能够更好地完成作业,立足于期末网站的要求,写出来这篇实验教学中心网站的首页重构教程。

针对期末网站的要求,对于实验教学中心网站进行一些简化,没有响应式设计,搜索也去掉(没有必要,就那几个页面),去掉SEO方面的meta关键字和描述。
关于Dreamweaver建站和使用的一些小技巧,请参考《Dreamweaver建站技巧和使用技巧》。本文主要讲解代码的组织和管理。

二.建站的流程

建站的基本流程
切片和建站的顺序也可以相反,要对整个项目的流程有一定的了解,合理分配时间。
几个需要注意的地方:需求分析首先要通读几遍老大的《化学多媒体软件设计”期末网站作品规范2015级》,把一些重要的方面分条列出,按照这些要求作为前提进行设计。

三.设计

请参考《网页设计基础教程实验教学中心首页设计篇》

四.重构

1. 前期准备工作

接下来开始是我们的重头戏,HTML结构根据设计稿可划分为6个部分,如图所示
准备工作

先把整个网页结构先搭好,保持整体架构保持不变,这样的话,相当于把一个目标分解为各个小目标,而这些小目标内的出现的错误,也只是在它里面进行修改,不会影响外面的因素,而且也方便定位错误发生的地方。

2.切片

网站完成的效果图
网站完成的效果图
在动手切图之前我们要先分析一下要切哪里,要怎么切。
对于化学实验教学中心这个网站首页而言,我们需要切图的一般有:

  1. 图片
  2. 小图标
  3. 有渐变的部分(虽然可以使用CSS3实现,但是不要求)
  4. 比较特殊的字体,比如书法字体等(常用的中文字体为宋体、微软雅黑)

对于一些比较复杂的图片,比如Slider部分的图片当然是全切,但是对于顶部功能导航条和头部的导航条的背景,由于只是在竖直方向上渐变,我们只需要切宽度为几像素的切片。
切图区域
我们也可以使用辅助工具来帮忙切图,比如Assistor PS,具体的使用方法请查看教程《切图标记利器——Assistor》
ps:切图的时候要小心别切到手。

3.尺寸标注

上面的Assistor PS不仅可以实现切图,也可以实现颜色和尺寸标注,如果我们觉得这个软件要依托Photoshop太麻烦,我们也可以使用像素大厨这款软件,可以实现尺寸快速标注、局域标注、颜色标记的功能。
切图区域

切图区域

4.代码之路

1)概述

一个基本的网页文件结构

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. ···
  7. </head>
  8. <body>
  9. <!--Content-->
  10. </body>
  11. </html>

我们现在要做的是在这个基本结构上开始重现我们的设计稿,本网站首页的基本结构为。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. ···
  7. </head>
  8. <body>
  9. <!--Content-->
  10. </body>
  11. </html>

接下来就是分各个部分讲解,到时再进行汇总。

2)头部文件引入

这部分的主要功能是引入文件:包括css文件和icon,还有一些初始化操作,js文件不建议直接放在头部,因为这样可能会由于js文件执行引起的阻塞使网页没有办法渲染加载网页结构,导致页面显示的是一片空白,用户体验不好。

  1. <head>
  2. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  3. <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
  4. <link rel="shortcut icon" href="http://ce.sysu.edu.cn/ChemExperiment/images/favicon.png" type="image/x-icon">
  5. <link rel="icon" href="http://ce.sysu.edu.cn/ChemExperiment/images/favicon.png" type="image/x-icon">
  6. <link rel="stylesheet" href="http://ce.sysu.edu.cn/Skin/ChemExperiment.css" />
  7. /**************说明文字*******************
  8. 设置浏览器标题栏的小图片
  9. ******************说明文字*******************/
  10. <!--[if lt IE 9]>
  11. <link rel="stylesheet" href="../css/chem-ie8.min.css"/>
  12. <![endif]-->
  13. /**************说明文字*******************
  14. 上面的意思是假如你的浏览器是IE,且版本小于9,就引入这个css文件,下面的也一样,主要是为了兼容性。不过根据期末网站的要求我建议你们要把这些兼容性css文件与主css文件合并到一起。
  15. ******************说明文字*******************/
  16. <!--[if lt IE 8]>
  17. <link rel="stylesheet" href="../css/chem-ie7.min.css"/>
  18. <![endif]-->
  19. <!--[if lt IE 7]>
  20. <link rel="stylesheet" href="../css/chem-ie6.min.css"/>
  21. <![endif]-->
  22. <title>中山大学化学与化学工程学院 >> 化学实验教学中心</title>
  23. </head>

3)CSS初始化

对于CSS初始化,初始化一些标签的默认样式,便于使其在不同浏览器中有一个相同的标准,这样比较容易保持网页在不同浏览器中看到的样式统一。

  1. /* css reset */
  2. body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{padding:0;margin:0;}
  3. img{border:0;}
  4. h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}
  5. input,button,textarea,select{*font-size:100%;}
  6. input{background:transparent;border:none;}
  7. input[type=submit]{cursor:pointer;}
  8. body{font:14px/1.5 Helvetica,Arial,sans-serif;}
  9. ol,ul,li{list-style:none;}
  10. button{border:none;}
  11. table{border-collapse:collapse;border-spacing:0;}
  12. :link,:visited{text-decoration:none;}
  13. :focus{outline:0;}
  14. pre{font-family:"Lucida Console",Consolas,"Courier New",Tahoma;color:#666;text-indent:0;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;}
  15. /* for HTML5 */
  16. article,aside,figure,figcaption,footer,header,hgroup,nav,section,summary{display:block;}
  17. figure{margin:0;}

对于上面这段初始化代码,二话不说,直接复制粘贴在你的css文件最前面(可根据情况删减一些代码)

4)Header部分

Header又分为顶部功能导航条、banner和网站导航条,框架如下。

  1. <div class="headerWrap">
  2. <div class="header_top">
  3. <!--header_top Content-->
  4. </div>
  5. <div class="header_banner">
  6. <!--header_banner Content-->
  7. </div>
  8. <div class="header_nav">
  9. <!--header_nav Content-->
  10. </div>
  11. </div>

到时再把相应组件的代码复制粘贴进相应的位置(复制的时候注意要把闭合标签也要复制进去),下面我们分步讲解一下Header的各个部分。

a.顶部功能导航条

HTML:

  1. <div class="header_top">
  2. <div class="container header_top_container">
  3. <div class="header_top_left">
  4. <a href="http://www.sysu.edu.cn/2012/cn/index.htm" class="header_top_left_link01">
  5. 中大首页
  6. </a>
  7. <a href="http://ce.sysu.edu.cn/">
  8. 化院首页
  9. </a>
  10. </div>
  11. </div>
  12. </div>

相应控制的css:

  1. .header_top { height: 35px; line-height: 35px; background: url(../ChemExperiment/images/header/topLineBg.gif) repeat-x; background-size: 100% 100%; }
  2. .header_top a { color: #525252; }
  3. .header_top_container { height: 40px; }
  4. .header_top_left { float: left; width: auto; }
  5. .header_top_left_link01{ margin-right: 20px; }

为什么要使用三个盒子呢,首先最大的那个盒子,就是类名为“header_top”的盒子是用来保证它的内容区域是占满整个页面的,第二个盒子是用来保证中间主体的显示内容,网页主要的内容都在这一部分,第三个盒子是为了把两个元素给包裹起来,偏于控制位置。这只是一种做法,还有一些其它的方法。这里就用到我之前讲的只切几像素宽的图片,然后通过repeat-x,一直复制,能够加快网页的访问速度。

b.Banner部分
  1. <div class="header_banner">
  2. <div class="container header_banner_container">
  3. <div class="header_banner_logo">
  4. <a href="http://ce.sysu.edu.cn/ChemExperiment/Index.aspx">
  5. <img src="http://ce.sysu.edu.cn/ChemExperiment/images/header/headerLogo.png">
  6. </a>
  7. </div>
  8. </div>
  9. </div>

相应控制的css:

  1. .header_banner { background-color: #f5f5f5; }
  2. .header_banner_logo { float: left; }
  3. .header_banner_container { padding-top: 10px; padding-bottom: 10px; }

跟顶部导航条很类似。

C.栏目导航条Nav

HTML:

  1. <div class="header_nav">
  2. <div class="border_mask_top">
  3. </div>
  4. <div class="container header_nav_container">
  5. <ul class="l1nav floatfix">
  6. <li class="l1item">
  7. <a href="http://ce.sysu.edu.cn/introduction/Index.aspx" title="中心概况">中心概况</a>
  8. </li>
  9. <li class="l1item">
  10. <a href="http://ce.sysu.edu.cn/organStructure/Index.aspx" title="组织架构">组织架构</a>
  11. </li>
  12. <li class="l1item">
  13. <a href="http://ce.sysu.edu.cn/expTeaching/Index.aspx" title="实验教学">实验教学</a>
  14. </li>
  15. <li class="l1item">
  16. <a href="http://ce.sysu.edu.cn/deviceEnviron/Index.aspx" title="设备环境">设备环境</a>
  17. </li>
  18. <li class="l1item">
  19. <a href="http://ce.sysu.edu.cn/labManagement/Index.aspx" title="管理制度">管理制度</a>
  20. </li>
  21. <li class="l1item">
  22. <a href="http://ce.sysu.edu.cn/openExp/Index.aspx" title="开放实验">开放实验</a>
  23. </li>
  24. <li class="l1item">
  25. <a href="http://ce.sysu.edu.cn/inovateFund/Index.aspx" title="创新基金">创新基金</a>
  26. </li>
  27. <li class="l1item">
  28. <a href="http://ce.sysu.edu.cn/studentFeel/Index.aspx" title="学生感言">学生感言</a>
  29. </li>
  30. <li class="l1item">
  31. <a href="http://ce.sysu.edu.cn/teachAchievement/Index.aspx" title="教学成果">教学成果</a>
  32. </li>
  33. <li class="l1item end">
  34. <a href="http://ce.sysu.edu.cn/teachCharacteristic/Index.aspx" title="教学特色">教学特色</a>
  35. </li>
  36. </ul>
  37. </div>
  38. </div>

相应控制的css:

  1. .header_nav { position: relative; background: url(../ChemExperiment/images/header/navBg.gif); border-bottom: 1px solid #fff; }
  2. .border_mask_top { width: 100%; height: 1px; background-color: #fff; position: absolute; top: 1px; }
  3. .header_nav_container { font-size: 16px; height: 46px; }
  4. .l1nav { position: relative; } .l1item { float: left; width: 10%; height: 46px; margin: 0 -1px; text-align: center; background: url(../ChemExperiment/images/header/navLine.png) no-repeat right center; }
  5. .l1item a { display: block; width: 100%; color: #fff; line-height: 46px; }
  6. .l1item:hover { background: url(../ChemExperiment/images/header/navHoverBg05.png) no-repeat; background-size: 100% 100%; background-origin: border-box; }
  7. .l1item:hover .dmenu-box { display: block; }
  8. .end { background-image: none; }

border_mask_top的盒子是一条线,如图所示,能够使导航条的层次感更加明显,采用的是绝对定位的方法position:absolute。绝对定位定位的标准是:如果父级元素有position:relative;属性的话,则根据父元素进行定位。如果父级元素没有的话,定位的依据直接是body标签
绝对定位有top、right、bottom、left四个属性,可以根据情况进行设置,不要求全部都要写。
以上就是Header部分的代码和相应的CSS。

5)Slider部分

slider作为一个滑动展示信息的部分,记住选的图片一定要很精细。
HTML:

  1. <div class="slider js_slider" id="js_slider">
  2. <div class="slider_pre" id="js_slider_pre"></div>
  3. <ul class="slider_list">
  4. <li class="slider_list_item slider_list_item_1 js_slider_now" style="opacity:1"></li>
  5. <li class="slider_list_item slider_list_item_2" style="opacity:0"></li>
  6. <li class="slider_list_item slider_list_item_3" style="opacity:0"></li>
  7. <li class="slider_list_item slider_list_item_4" style="opacity:0"></li>
  8. </ul>
  9. <div class="slider_next" id="js_slider_next"></div>
  10. </div>

相应控制的css:

  1. /*S slider*/
  2. .slider { position: relative; width: 100%; height: 420px; overflow: hidden; }
  3. .slider img { display: table; margin: 0 auto; }
  4. .slider_list { position: absolute; top: 0; bottom: 0; width: 100%; left: 0; overflow: hidden; }
  5. .slider_list_item { position: absolute; width: 100%; height: 100%; background-size: auto 100%; background-position: 50% 50%; background-repeat: no-repeat; overflow: hidden; }
  6. .slider_list_item_1 { background-image: url("../ChemExperiment/images/slider/slider01.jpg"); }
  7. .slider_list_item_2 { background-image: url("../ChemExperiment/images/slider/slider02.jpg"); }
  8. .slider_list_item_3 { background-image: url("../ChemExperiment/images/slider/slider03.jpg"); }
  9. .slider_list_item_4 { background-image: url("../ChemExperiment/images/slider/slider04.jpg"); }
  10. .slider_pre, .slider_next { position: absolute; width: 20%; max-width: 175px; height: 100%; cursor: pointer; z-index: 5; top: 0; }
  11. .slider_pre { left: 0; }
  12. .slider_pre:hover { background: url("../ChemExperiment/images/slider/arl.png") center center no-repeat; }
  13. .slider_next { right: 0; }
  14. .slider_next:hover { background: url("../ChemExperiment/images/slider/arr.png") center center no-repeat; }
  15. .slider:after { position: absolute; display: block; content: ""; left: 0; right: 0; height: 0; bottom: 0; border-bottom: 4px solid #00702a; z-index: 1000; border-bottom: 4px solid #077430; }
  16. /*E slider*/

更加详细的过程请参考《网页设计基础教程_slider的实现》

6)Content部分

HTML:

  1. <!-- S Content -->
  2. <div class="outerMain">
  3. <div class="midMain">
  4. <div class="rightSide">
  5. <!-- S rightSide -->
  6. </div>
  7. <div class="leftSide">
  8. <!-- S leftSide -->
  9. </div>
  10. <div class="friendLinks">
  11. <!-- S friendLinks -->
  12. </div>
  13. </div>
  14. </div>
  15. <!-- E Content-->

Content部分主要分为三个部分,左边栏和右边栏,还有一个友情链接。

a.左边栏和右边栏

左边栏和右边栏之所以要放在一起讲,以为它们之前相互影响,这种两栏布局有几种可以实现的布局,有兴趣深入研究的同学可以参考[《基于浮动的几种布局》][http://ce.sysu.edu.cn/hope/Item/150559.aspx]

b.友情链接

HTML:

  1. <div class="friendLinks">
  2. <ul class="friendLinks_list">
  3. <li class="friendLinks_list_item"><a href="http://172.22.83.58/gducec/"> 省化学实验竞赛</a></li>
  4. <li class="friendLinks_list_item"><a href="http://172.22.83.58/Competition/">中大化学实验竞赛</a></li>
  5. <li class="friendLinks_list_item"><a href="http://172.22.83.58/boya/">博雅教育</a></li>
  6. <li class="friendLinks_list_item"><a href="http://172.22.83.58/ChemExperiment/EHSgltx/">EHS管理体系</a></li>
  7. <li class="friendLinks_list_item"><a href="http://172.22.83.58/ChemExperiment/introduction/1899.html"> 化学实验教学案例</a></li>
  8. <li class="friendLinks_list_item"><a href="http://172.22.83.58/ChemExperiment/chemelab.html"> 化学实验课程网站</a></li>
  9. <li class="friendLinks_list_item"><a href="http://172.22.83.58/centerlab2006/">仪器预约</a></li>
  10. <li class="friendLinks_list_item"><a href="http://172.22.83.58/ChemExperiment/labvideo.html"> 化学实验教学视频</a></li>
  11. </ul>
  12. </div>

相应控制的css:

  1. .friendLinks { overflow: hidden; border-bottom: solid 1px #dedede; border-top: solid 1px #dedede; max-width: 1200px; margin: 25px auto 20px; }
  2. .friendLinks_list { overflow: hidden; height: 30px; background: #f5f5f5; display: inline; }
  3. .friendLinks_list li:hover { background: #eaeaea; }
  4. .friendLinks_list_item { float: left; width: 12.5%; min-width: 50px; height: 30px; line-height: 30px; text-align: center; }
  5. .friendLinks_list_item a { width: 10%; height: 30px; }

有同学可能会感到疑惑,为什么宽度要采用百分比呢?这是设计响应式流体布局时需要一个弹性布局,百分比宽度会随着父元素的宽度大小而发生相应的变化,也就是我们所说的响应式流体布局。但是如果你不做响应式的话,你可以直接量定尺寸,这两种做法都是可以的。

7)Footer部分

HTML:

  1. <div class="footer">
  2. <div class="footer_container">
  3. <div class="footer_copyright">
  4. <div>
  5. <a href="http://www.sysu.edu.cn/">©中山大学</a>
  6. <a href="http://ce.sysu.edu.cn/">化学与化学工程学院</a>
  7. </div>
  8. <div class="footer_copyright_bottom">
  9. <a href="http://ce.sysu.edu.cn/FriendlyLinks/Index.aspx">友情链接</a>
  10. <a href="http://ce.sysu.edu.cn/ContactUs/Index.aspx">联系我们</a>
  11. <a href="http://ce.sysu.edu.cn/SiteMap/Index.aspx">网站地图</a>
  12. <a href="http://172.22.83.58/ChemExperiment/">旧版</a>
  13. </p>
  14. </div>
  15. </div>
  16. <div class="footer_siteInfo">
  17. <div class="pageView">
  18. 总访问量:<span>6649013</span>人次
  19. </div>
  20. <div>
  21. <a href="http://ce.sysu.edu.cn/user/login.aspx" target="blank" style="font-family: sans-serif;"></a>
  22. <a href="http://ce.sysu.edu.cn/hope/">厚朴〖HOPE〗工作室</a>
  23. <a href="http://ce.sysu.edu.cn/admin/login.aspx" target="blank" style="font-family: sans-serif;"></a>&nbsp;设计</span>
  24. </div>
  25. </div>
  26. </div>

8)Script文件引入

  1. <script type="text/javascript" src="http://ce.sysu.edu.cn/ChemExperiment/scripts/jquery.min.js"></script>
  2. <script type="text/javascript" src="http://ce.sysu.edu.cn/ChemExperiment/scripts/chemNew.min.js"></script>
  3. <script type="text/javascript">
  4. var slider;
  5. slider = jQuery.slider("js_slider", "js_slider_pre", "js_slider_next", 3000);
  6. jQuery.sliderHeightCtrl(1200, 556, "js_slider");
  7. jQuery(window).resize(function() {
  8. jQuery.sliderHeightCtrl(1200, 556, "js_slider");
  9. })
  10. // tag change
  11. jQuery(document).ready(function() {
  12. var menuID;
  13. var subID;
  14. var current = 1;
  15. for (i = 1; i <= 3; i++) {
  16. jQuery("#subMenu" + current).show();
  17. jQuery("#menu" + current).addClass("mouseover").addClass("icon1");
  18. jQuery("#menu" + i).mousemove(function() {
  19. menuID = this.id;
  20. delete current;
  21. subID = menuID.charAt(4);
  22. current = subID;
  23. for (i = 1; i <= 3; i++) {
  24. jQuery("#subMenu" + i).hide();
  25. jQuery("#menu" + i).removeClass("mouseover").removeClass("icon" + i);
  26. }
  27. jQuery("#subMenu" + current).show();
  28. jQuery("#menu" + current).addClass("mouseover").addClass("icon" + current);
  29. })
  30. };
  31. })
  32. //change picture
  33. jQuery(document).ready(function() {
  34. jQuery("#menu4").mouseover(function() {
  35. jQuery("#menu4 a").css("color", "#077430");
  36. jQuery("#menu5 a").css("color", "#000");
  37. jQuery("#subMenu4").css("display", "block");
  38. jQuery("#subMenu5").css("display", "none");
  39. });
  40. jQuery("#menu5").mouseover(function() {
  41. jQuery("#menu5 a").css("color", "#077430");
  42. jQuery("#menu4 a").css("color", "#000");
  43. jQuery("#subMenu5").css("display", "block");
  44. jQuery("#subMenu4").css("display", "none");
  45. });
  46. });
  47. </script>

对于JavaScript的直接引入。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注