(一)
一段HTML代码:
- <div class="box">
- <span>您好!</span>
- <span>您好,这是完整不能换行!</span>
- <span>您好,但是box宽的不够宽时,每项能自动换行!</span>
- <span>你好,项内文件超长时不能换行!</span>
- <span>您好,且不能覆盖重叠下一项!</span>
- </div>
要求显示效果如下:
在IE8,chrome,firefox下很容易实现。
- .box{
- width:100%;
- height:auto;
- }
- .box span{
- float:left;
- line-height:20px;
- height:20px;
- border:1px solid red;
- margin:3px 3px 0px 0px;
- }
但是在IE7模式下效果如下:
ie7下,为了填充满box的宽度。在剩余宽度内增加了一个span。但剩余宽度又不足以容下所有内容。只有换行。但因为该span起始位置已经固定。只能在此位置下向下拓展。
因为高度已经设定。多出的文本似乎挤出到外面去了。此时调整宽度后,可能会和第2行的span重叠起来。如下:
我们再看看IE的quirks诡异模式。此模式近似ie7,但会忽略span的高度设定。自动把行高自动调整为内容适应的高度。
新span会在此高度之后换行。这样就不会重叠在一起了。
此时只需要在.box span中增加一个white-space: nowrap;设定不换行。ie7和怪异模式也都会在剩余空间无法容纳span项全部内容时项自动换行了。
此时样式基本做到跨所有主流浏览器(其他微小细节与本文无关 暂忽略)。
(二)
但是,假如第3个span标签内容增加一个强制换行符,修改为如下时:
- <span>您好,但是box宽的不够宽时,<br />每项能自动换行!</span>
我们希望的效果浏览器能支持span内强制换行,但同时内容不能被新的span覆盖。
ie-quirks模式效果:
ie7,ie8,chrome效果接近如下
为了使各浏览器都满足ie-quirks模式效果。我们需要调整。.box span中的的heigh样式
height:auto;
此时所有浏览器效果几乎一致了。
(三)
此时我们需要把父div的边框显示出来。修改了样式
- .box{
- width:100%;
- height:auto;
- border:1px solid gray;
- padding:2px;
- }
我们希望看到的效果是(ie-quirks模式,ie7显示效果如下):
但是在ie8,chrome模式下我们看到的效果确是:
为了满足如上要求。我们需要使用一个新的标签来清除浮动。只有这样 在ie8,chrome等新浏览器下,box才会自动计算真实的高度。
否则box的高度为0。修改html代码如下
- <div class="box">
- <span>您好!</span>
- <span>您好,这是完整不能换行!</span>
- <span>您好,但是box宽的不够宽时,每项能自动换行!</span>
- <span>你好,项内文件超长时不能换行!</span>
- <span>您好,且不能覆盖重叠下一项!</span>
- <div style="clear:both;"></div>
- </div>
(四)
可是面试官告诉我们。你不能动HTML代码。你只有修改CSS样式的权限(以前百度空间。。。等博客不是都有这样的限制么,现在不知道是否还是如此)
没有办法了吗?还是有的。
我们把父元素box 样式中 增加一个浮动。 所有的浏览器在不修改HTML情况下也都能正常显示box的边框了。
- .box{
- width:100%;
- height:auto;
- border:1px solid gray;
- padding:2px;
- float: left;
- }
(五)
可是新问题来了。 父元素box使用了浮动,会影响和他同级的其他元素的显示呢?能不能不修改父元素的浮动属性解决此问题呢。
我们增加一个after伪元素样式。在box后面通过样式添加一个block元素(否则无效),然后设置清楚浮动。详细CSS代码如下:
- .box:after
- {
- content:"";
- display:block;
- clear:both;
- }
并且在html最顶部增加显示DOCTYPE声明
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
至此iequirks模式,ie7,ie8,chrome,firefox等浏览器都兼容了。
完整代码如下:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html>
- <head>
- <style>
- .box{
- width:100%;
- height:auto;
- border:1px solid gray;
- padding:2px;
- }
- .box span{
- float:left;
- line-height:20px;
- height:auto;
- border:1px solid red;
- margin:3px 3px 0px 0px;
- white-space: nowrap;
- }
- .box:after
- {
- content:"";
- display:block;
- clear:both;
- }
- </style>
- </head>
- <body>
- <div class="box">
- <span>您好!</span>
- <span>您好,这是完整不能换行!</span>
- <span>您好,但是box宽的不够宽时,每项能自动换行!</span>
- <span>你好,项内文件超长时不能换行!</span>
- <span>您好,且不能覆盖重叠下一项!</span>
- </div>
- </body>
- </html>
(六)
解决了所有问题了吗?应该没有。还有很多细节存在细微出入,要兼容各种浏览器,要做的事情还很多。
相关推荐
10.1 div 标记与 span 标记 10.2 盒子模型 10.3 元素的定位 10.4 定位实例一:轻轻松松给图片签名 10.5 定位实例二:文字阴影效果 第11章 CSS+div布局方法剖析 11.1 CSS排版观念 ...
10.1 div 标记与 span 标记 10.2 盒子模型 10.3 元素的定位 10.4 定位实例一:轻轻松松给图片签名 10.5 定位实例二:文字阴影效果 第11章 CSS+div布局方法剖析 11.1 CSS排版观念...
div: div是一个块级元素,可以包含段落,表格等内容,用于放置不同的...span是一个内联元素,没有实际意义,它的存在纯粹是为了应用样式,给一段内容加上<span></span>标记可以通过在span上定义样式来设定其内容的样
精通CSS+DIV网页样式与布局 视频教材主要内容 迅雷下载地址: 目录 第1部分 CSS基础知识篇 第1章 CSS的初步体验 1.1 CSS的概念 1.1.1 标记的概念 1.1.2 传统HTML的缺点 1.1.3 CSS的引入 1.1.4...
10.1 div 标记与 span 标记 10.2 盒子模型 10.3 元素的定位 10.4 定位实例一:轻轻松松给图片签名 10.5 定位实例二:文字阴影效果 第11章 CSS+div布局方法剖析 11.1 CSS排版观念 ...
10.1 div 标记与 span 标记 10.2 盒子模型 10.3 元素的定位 10.4 定位实例一:轻轻松松给图片签名 10.5 定位实例二:文字阴影效果 第11章 CSS+div布局方法剖析 11.1 CSS排版观念 ...
10.1 div 标记与 span 标记 10.2 盒子模型 10.3 元素的定位 10.4 定位实例一:轻轻松松给图片签名 10.5 定位实例二:文字阴影效果 第11章 CSS+div布局方法剖析 11.1 CSS排版观念 ...
DIV标签和SPAN标签是将一些内容当成一个整体进行处理,比如,整体隐藏,整体移动。类似一个盒子一样的东西。这样做可以精简代码,提高效率。 不同点: 1、div是将内容放到一个矩形的区块中,随意移动会影响布局。而...
float浮动属性,用于设置标签对象(如:div、span、a、em等html标签)的浮动布局,浮动也就是我们所说标签对象浮动居左靠左(float:left)和浮动居右靠右(float:right)。 float的作用:通过css定义float(浮动)让...
span是一个内联元素,没有实际意义,它的存在纯粹是为了应用样式,给一段内容加上<span></span>标记可以通过在span上定义样式来设定其内容的样式。 二、relative和absolute的区别 relative,CSS中的写法是:...
6.2 div与span 6.3 CSS选择符的命名 6.3.1 大小写敏感 6.3.2 合法字符及组合 6.3.3 命名建议 6.4 CSS文件结构设计与优化 6.4.1 导入结构 6.4.2 结构优化 6.5 使用CSS缩写 6.5.1 font字体缩写 6.5.2 margin与padding...
1: ID用于标识页面单独元素以及持久行的结构性元素 方便JS的调用 类用于标识同一页面可重复定义使用的结构性元素 ID与类的... 3:DIV与SPAN DIV(块级框)用于对块级元素的分组 SPAN(行内框)用于对行内元素分组标识
DIV布局样式.html 设置DIV布局样式。 如何用DIV布局.html 演示如何用DIV布局。 第13章(源代码\第13章) 示例描述:本章演示DIV与SPAN用法。 SPAN基本语法.html SPAN基本语法。 何时该用SPAN....
页面中div与span元素的使用是一个新问题,我们也容易过多的使用它们。必要及合理的使用div可以明显的增强文档的结构性。这也是jb51.net一直提倡的。 如果你审视你的HTML文档,发现有着很多的div与span,那你就得换一...
9.2.4 div和span的区别 199 9.3 div+CSS布局介绍 200 9.3.1 div+CSS布局的优点 200 9.3.2 div+CSS布局的缺点 201 9.3.3 何时使用TABLE 202 9.4 一列布局 203 9.4.1 一列固定宽度 203 9.4.2 一列宽度自适应 204 9.4.3...
篇文章中主要否定了使用div进行布局这种说法,提出div应当用于组织代码结构,现在我们再深入一点,div拥有语义吗?这个问题前段时间在研究群里曾激烈争论过,当时米随随发问:“什么是语义化WEB,div是什么?”小毅...
div > span {} div > p{} 声明块 声明块中实际上就是一个一个CSS声明 声明 每一个CSS声明都是一个样式,实际上就是一个名值对的结构 名和值之间使用:链接 :左边是样式的名字 :右边是样式的...
html语言编写,div或者table布局,css设置样式,javascript设置响应,交互,这就是我最初印象中网页最基础最原始的存在,于是在这里就给css定了性,设置样式:样式嘛,就好像是装修的效果,只有最初的原始状态和装修...