找Bug 篇

原始代码,未做修正:

运行代码框

首页-牛腩新闻揭晓

系统

/*

/*

* 建立

人:牛腩

*/

* { /* 把默认值都配置

为0 */

margin:0;

padding:0;

border-width:0;

}

body {

font-size: 14px;

}

a:link,a:visited {

/* 鼠标未移上去的超链接的样式, 超链接访问后的样式 */

color: #000;

text-decoration: none;

}

a:hover {

/* 鼠标移到超链接上的样式 */

color: #00f;

text-decoration: underline;

}

#top, #search, #main, #footer { /* 公共样式 */

margin: 10px auto 10px auto;

width: 760px;

}

#main { /* 可变内容区域样式 */

}

ul,li { /* 项目列表样式 */

list-style-type:none;

}

li {

text-align: center;

margin: 20px;

}

li a:link, li a:visited {

/* 分类名称样式 */

color: #00f;

text-decoration: underline;

font-weight: bold;

}

li a:hover {

color: #f00;

}

.commonfrm {

/* 框架公共样式 */

border:1px solid #DEDFDE;

float: left;

}

.commonfrm h4 {

/* 框架标题样式 */

color: #fff;

background-color: #7BAEEF;

height: 26px;

line-height: 26px;

padding-left: 10px;

font-size: 14px;

}

.commonfrm table {

width: 100%;

text-align: center;

border-collapse: collapse; /* 细线表格 */

}

.commonfrm table th, .commonfrm table td{

padding: 5px;

}

.commonfrm tr, .commonfrm td {

/* height: 26px !important;

*height: auto !important; ie7 */

/* height:auto; ie6是auto */

}

.commonfrm .th_category { /* 表格中类别名称列的宽度 */

width: 100px;

}

.commonfrm .th_time { /* 表格中揭晓

时间列的宽度 */

width: 150px;

}

.commonfrm .td_category {

color: #999;

}

.commonfrm .td_time {

color: #999;

font-size: 12px;

}

#category {

/* 新闻分类框架 */

width: 180px;

height: 368px !important; height: 378px;

margin-right:5px;

margin-bottom: 10px;

}

#newnews {

/* 最新新闻框架 */

width: 560px;

margin-left: 5px;

margin-bottom: 10px;

}

#hotnews {

/* 热点新闻框架 */

width: 560px;

margin-left: 5px;

margin-bottom: 10px;

}

/*]]>*/

新闻分类

  • 首  页
  • 体育新闻
  • 财经新闻
  • 社会新闻

最新新闻

所属类别 新闻标题 揭晓

时间

[体育新闻] 123456789 2008-2-59
[体育新闻] 123456789 2008-2-59
[体育新闻] 123456789 2008-2-59
[体育新闻] 123456789 2008-2-59
[体育新闻] 123456789 2008-2-59

热点新闻

所属类别 新闻标题 揭晓

时间

[体育新闻] 123456789 2008-2-59
[体育新闻] 123456789 2008-2-59
[体育新闻] 123456789 2008-2-59
[体育新闻] 123456789 2008-2-59
[体育新闻] 123456789 2008-2-59

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

引用:老师帮忙看一下以下网址:http://taotao.wsyren.com/other/test.html想做个全阅读

器兼容的网页还真困难啊(兼容ie6,7,8,opera,ff,chrome),我想让边框上下都对齐的,可是怎幺调也调 不出来,而且我发觉

不仅是ie和firefox有2像素差别的疑问

,opera和firefox也有2像素差别的疑问

,郁闷啊…以上网页在不同阅读

器里看下边都是没有对齐的..

以下为教程

正文内容:

感觉这个页面比较有普遍性,下面就说说我的处理

思路,以及是如何

“重构”(其实这里说重构不太严谨,只是为了方便大家的理解)的,请同学们在看的同时,先自己分析一下这个页面的结构,以及为什么会出疑问

?这样理解会更加深刻一些,那幺现在就开始愉快的标准之路吧。

一、找出BUG之前的准备工作:

我先简要的讲一讲牛腩同学的页面原结构和CSS写法,然后再用我的理解指出不合理的地点

。首先看看这个页面的效果,是一个很多见

的“一行两列”的结构,按照一般的做法,最少须要

三个“盒子”,才能实现初步的效果,但是如何

实现左边的盒子和右边的横向排列呢??要领

有两种:第一,使用

浮动 ; 第二,运用

绝对寻址;牛腩同学这里运用

的是浮动布局,这是很多见

的CSS布局手段。

下面来分析test.html具体的结构和CSS代码,

# main 这个最大的块里面包含了三个子块,并且引用了一个ID和Class,接着配置

了页面整体的宽度和高度,再用margin:10px auto;就实现了页面整体居中,并且和窗口上下都有10px的距离,这是比较多见

的用法,还有一种,可以不用在外面套DIV,只须要

给各个子块定义宽高和margin 一样可以实现页面的整体居中。

#category是左边的列,配置

了宽高,并且运用

了float:left,其中高度有两条属性,那幺阅读

器到底执行那条命令呢?

#category {    height: 368px !important; height: 378px;}

结果是IE7和firefox 阅读

器高度为368px,IE6执行378px,而忽略368px。 因为!important只有IE7和firefox或者符合标准的阅读

器才能分析

,IE6并不是很规范,所以会忽略这条属性,然后定义了margin-right和bottom。用来拉开和其它的块的距离。接着里面包含一个h4的标题和无序列表,相比较

较基本

,也很好理解,各位同学可以自己分析。

#newnews 和 #hotnews 结构相同 ,都是一个标题和一个表格,其中表格用来显示具体的新闻内容,两个块之间也配置

了float:left和width:560px以实现和左边的列#category并排显示在同一行的效果,接着定义margin-left 和 margin-right ,区分出各自的范围。。

三、如何

改良

疑问

到这里,基本上就算处理

了出一些可以优化的地点

1.#newnews 和 #hotnews 外面套一个Div比较好。如图,这样控制起来更加方便,只要浮动 #right。

2. Css部分:

#top, #search, #main, #footer {              margin: 10px auto 10px auto; width: 760px;}

Margin 的排列顺序为 上、右、下、左 ,可以简写为margin : 10px auto ;

#category {     width: 180px;     height: 368px !important; height: 378px;}

可以把 height 改成 height : 368px ;

#category {     margin-right:5px;}

这里定义的是距离右边的列 5px的宽度,但是右边的 #newnews和 #hotnews 定义了margin-left:5px; 意思就是要有10px的间距,可以把#category 的margin-right 直接改为10px 。。然后左边的列就可以不用定义margin-left了。。。

重构篇

四、“重构”的精彩

怎幺样,理解起来不困难吧 ?下面是最精彩的部分了,完全重构这个基本

的页面,如果能用自己的想法自己还原。。那是再好不过的了。。

1. 搭建最基础的结构

首先,请找个你最顺手的编写工具,比如我是用的EditPlus ,然后就开始吧,顺便放上几首轻音乐,不要太紧张了,呵呵。。

先从写多个

Div开始 ,一步一步的把结构合理的搭建出来,如图:

请各位同学留心

一个疑问

,ID的命名是唯一的,代表着这个块在页面只有一个,如果要重复出现,请运用

Class类来定义,还有命名最好有个规范,只要自己看得懂就好,这方面的内容,可以在谷歌上面输入关键词“CSS命名规范”就知道怎幺做了。

我解释一下各块的意思

:其中 #wrapper 是最外的包含容器,你可以理解为和body相当的作用 ,这里有同学会问了,为什幺直接在body里面控制整个页面呢?

我的建议:不要对body 和 html 赋予任何样式,因为这两个标签是“不可控制”的,或者说是“很难控制”的,比如给body定义一个宽度和高度,然后加一个背景色,各位同学可以自己动手试试看。。能控制吗??

#content是正式内容的开始,你也可以不嵌套这个Div,联系

不大,我这里只是方便同学们理解而已。

#leftbar 顾名思义,左边的列。#rightbar当然是右边的列啦,但右边不是有两个块吗??别急,我们再接着写。。

2.一步步的完备

页面整体结构:

上面的图是左列#leftbar的具体内容和结构。。其中定义了一个 .left_subnav,代表左列所包含的子导航条。。导航条一般都是用ul无序列表来搭建的,这种做法是符合Web标准的,所以不用担心,怎幺样。。有了良好的命名习惯是不是看起来更加容易了呢??其它的我就不解释了。。很基本

。。同学们应该自己思考一下,这些标签是什幺意思

。。

这幅图就是 第二列 上半部分的页面结构,这里在新闻的部分我用了释义列表(dl)来做,当然,你改成其它的结构我也没什幺意见,其中dt是标题,有三个标题,所以这里就是三个dt来代表了其中dd嵌套了三个span,因为没有其它合适的标签来表示这里的结构,所以可以用span 。

下半部分的结构是一样的。。这里我就不贴图了。。各位同学可以直接Copy.

3.“地基”已经建好,“装修”正式开始

首先在写css之前,同学们可以用阅读

器,看看这个没有任何渲染的效果,是不是感觉很朴素?但是页面的内容依然完整,可以很好的阅读

?这就是标准的优势。。

(1).通用样式的编写

由于IE和其它的符合标准的阅读

器(比如firefox、Opera)等,对标准和Css的理解不一样,所以我们写css的时候一般都须要

重置阅读

器的默认样式,这样它们才不会给我们“颜色”看 。

这是我写的通用样式:

body,div,dl,dt,dd,ul,li,h3,p{ padding: 0; margin: 0; border: 0; } body{ background:#fff; color:#333; font:12px 宋体,微软雅黑,Arial; }a:link, a:visited{ text-decoration: none; } a:hover{ text-decoration: underline; }h3{background:#7BAEEF;color:#fff;font-size:14px;padding-left:10px;line-height:26px; }

有同学可能会有疑问了,“诶,我经常看见的都是用的通配符 * 来定义啊,这里写的怎幺不一样呢??” 我解释一下:

*  代表选择了所有的标签 ,好比我们要做的网页是一张白纸,现在某些地点

我要刷黑,但是用了*就代表全部都被刷黑了,但是我在打造

的流程

中,又希望有的地点

刷成别的颜色,怎幺办呢?这时又要重新定义样式。而阅读

器的分析

流程

是先刷黑,当你某些地点

要刷红色的时候,就会把黑颜色给清洗掉,然后再刷成红色。。这样就造成了资源的浪费和速度的减慢,虽然这对于小站来说没有什幺大疑问

,但是当你做的站点

属于门户性质的时候,就可以感受到了。

(2) 定义各个块的宽度,和高度

#wrapper{ width:760px; margin:10px auto; } /* 这是外围容器 */       #content{ width:760px; height:378px; } /* 这是内容容器 */       #leftbar{width:180px; height:378px; float:left; border:1px solid #DEDFDE;margin:0 10px 0 0;} /* 这是左列的样式 */        #rightbar{ float:left; width:560px; } /* 这是右列的样式 */

这里我是用的浮动布局,当然,你也可以用别的要领

.具体各个属性代表什幺意思,我就不多说了,同学们可以仔细的查看css手册.

(3) 完备

左列的样式。。

#leftbar{width:180px; height:378px; float:left; border:1px solid #DEDFDE;margin:0 10px 0 0;} /* margin:0 10px 0 0; 代表距离右边的列有10px的空隙 */       ul li{ font-size:14px; list-style:none; text-align:center; margin:20px;}

写完后。。左列的效果应该就出来了,属性都很基本

,请各位同学查找一下css手册,对应着理解。。。

(4) 完备

右列的样式

先定义#rightnews_a和#rightnews_b 的样式,然后再写完里面的细节,请同学们跟着我的思路一步一步的写出来,千万不要手懒,不动手,Css是一种实践性很强的技能

,不动手是很难学会的。。

#rightnews_a{ border:1px solid #DEDFDE; margin:0 0 10px;height:178px; overflow:hidden;} /* overflow:hidden是为了把子内容超出的部分潜藏

*/        #rightnews_b{ border:1px solid #DEDFDE; height:188px; }

(5)完备

右列的细节样式

先定义 dl的样式 ,这里我依然采用的 浮动 来定位,有一点请留心

,一个标签浮动以后,最好给它定义一个合适的宽度。。浮动具体的原理,限于篇幅,就不细讲了,这里主要是提供一种使用

web标准来搭建网页的思路,和让同学们对Css有一个感性的认识,所以我不想颁出一大堆的理论来解释,免得让大家丧失了学习的信心。

#rightbar dl{ text-align:center;}         #rightbar dt{ float:left; font-weight:bold; font-size:14px; line-height:26px;}          #rightbar .t1{ width:100px;padding:0 5px;}         #rightbar .t2{ width:280px;padding:0 5px;}         #rightbar .t3{ width:148px;padding:0 5px;}               #rightbar dd{ line-height:26px;font-size:14px; }                #rightbar .dd1{ width:100px;padding:0 5px;float:left; }                     #rightbar .dd2{ width:280px;padding:0 5px;float:left; }

五,总结:

Web标准的核心思想:

用合适的标签来搭建页面结构:比如页面中的一个段落,就可以用P标签,而不要用div来代替。。导航条可以用ul等,请不要把看起来是什幺的结构,用其它意义的标签来表达,这样是不太合理的。

表现方面的内容 ,请用css来控制,比如:本教程

中的font-size ,background 等,这样就可以实现表现和结构相分离了。

请不要过多的运用

hack ,同学们在看本教程

的时候,有没有发觉

我一个Hack都没有写?是的,标准的本意是不推选

运用

hack的,因为“向后兼容”的可能性非常小,比如你现在可以兼容ie6.7 ff3.0,但是ie8 ,ff4可能就可能会给你的页面找点麻烦了,所以当你要用Hack的时候,不妨换个思路,改改结构,或者改css,能防止

就尽量防止

怎幺样??用Web标准来“重构”一个页面,不是那幺困难吧? 自己动手试试了吗 ? 如果你仔细看了这篇教程

,还是有地点

不理解的话,可以在论坛留言 ,或者电子邮件给我 ,我会尽力帮助你,本人的水平也有限,如果路过的老手

有什幺见解

或者意见,请发封邮件给我 ,不甚感激,最后祝愿大家在“标准”的路上一帆风顺 。My-email: huangpengan@qq.com

本教程

的Word版下载(包括所有源文件)

css布局难,运用 CSS布局到底有多难?[多图]相关推荐

  1. html语言怎么那么难用,css语言难学吗?

    css(Cascading Style Sheets,层叠样式表),它是一种用来表现HTML或XML等文件样式的计算机语言,是用来表示html样式的一种编程语言,是可以做到网页和内容进行分离的一种样式 ...

  2. 黑客内参告诉你一个:设计师用div+css 必须知道的网页布局类型

    今天我在黑客内参受到了很多的留言,很多小伙伴在表示想要建立一个属于自己的站点,让我觉得现在建站是大部分人都比较感兴趣的一个技术吧! 碰巧今天整理以前的笔记发现了一本之前遗留下来的建站笔记,现在我就手打 ...

  3. 拆!对比详解 Flutter Widget 和 CSS,你关心的布局原理都在这儿了

    简介: 这篇文章专门对比 Flutter Widget 的布局原理和 CSS 布局原理的差异,分享在对接过程中会遇到的问题和解决方案,帮大家理一理思路,内容可以分为这几部分:1.CSS 和 Widge ...

  4. 纯CSS实现移动端常见布局——高度和宽度挂钩的秘密

    纯CSS实现移动端常见布局--高度和宽度挂钩的秘密 不踩坑不回头.之前我在一个项目中大量使用css3的calc计算属性.写代码的时候真心不要太爽啊-可是在项目上线之后,才让我崩溃了,原因非常easy, ...

  5. css不换行省略号 没作用,flex布局下,css设置文本不换行时,省略号不显示的解决办法...

    大致是有一个 main 容器是 flex 布局,左边一个 logo 固定宽高,右边 content 动态宽度. a name a info Lorem ipsum dolor sit amet, co ...

  6. CSS进阶之关于网格布局(Grid) 你了解哪些

    CSS 进阶:网格布局(Grid)及其基本属性 网格布局(Grid)是最强大的 CSS 布局方案.起初我也认为 flex 布局就可以完成绝大部分布局场景,但谁不希望用更直观.更简洁的方式来布局自己的网 ...

  7. H5+css : 360商城的首页布局模拟

    H5+css : 360商城的首页布局模拟 因为360商城页面过长,商品分类页面只选择了一个页面做一下实现.且只做了基本的布局和鼠标悬停效果 <!DOCTYPE html> <htm ...

  8. css之前端5种布局方式之table布局、float布局、absolute布局、flexbox布局、grid布局

    1.表格布局(不推荐) 父级容器为display:table 表格 子级容器为display:table-cell 一个单元格 特点:在没有特别设置的情况下,子级是自动平分宽度并填满父级的. tabl ...

  9. html div css盒子,CSS盒子模式一(DIV布局快速入门)_html/css_WEB-ITnose

    中心最新招了几十个人,我也成小旋风了,看来这个山头还得呆几天.毕竟有几十口子人哪,咋能撒手不管啊!我就先发个贴热热身!也希望前几届的师哥师姐多 多指教. 我们在网页设计中常听的属性名:内容(conte ...

最新文章

  1. xml语法规则(一)
  2. eeglab中文教程系列(16)-Time/Frequency decomposition
  3. 【原创】字符串工具类--找出单元字符串
  4. 预训练模型transformers综合总结(一)
  5. Windows保护模式学习笔记(一)—— 段寄存器GDT表
  6. 经典算法题每日演练——第一题 百钱买百鸡
  7. python中queue使用_在python2.6中使用Queue类
  8. 本周ASP.NET英文技术文章推荐[09/30- 07/13]:.NET Framework、JSON、Google Analytics、文件上传、GridView、IIS 7、Web开发...
  9. 关于jTopo的引用
  10. Jquery事件、冒泡、委托与节点
  11. java中的URLConnection
  12. 粒子群算法离散化各代表什么_粒子群优化算法(PSO)之基于离散化的特征选择(FS)(三)...
  13. Chapter 04-Using Conversion Functions and Conditional Expressions-Conditional Expressions
  14. c#解析XML到DATASET及dataset转为xml文件函数
  15. 西门子s7-200解密软件下载_高邮哪里有西门子三菱PLC编程学习班?多久能学会?...
  16. 2019java面试(二)
  17. (完美解决)升级win10,提示VirtualBox 立即卸载此应用,因为它与Windows 10 不兼容
  18. 2021 长安杯 Re
  19. 如何快速推广个人微信公众号?
  20. python中answer是什么意思_用Python实现的quot;石头,剪刀,布quot; - The answer to everything - ITeye博客...

热门文章

  1. c语言函数与指针,C语言指针与函数篇
  2. Batch批量替换hosts
  3. tensorflow学习之tf.assign
  4. 1215 数组的宽度
  5. [Apache]安装中出现的问题
  6. Javascript的继承
  7. SqlMap异常的处理
  8. 思维革命:交换两个变量的值
  9. matlab编译dll vb调用,用matlab的deploytool生成DLL,VB无法调用的问题
  10. IAR 下根据官方库建立 STM32的工程