DIV CSS设计中常见问题及解决办法

开发 前端
作为前端开发人员,在DIV+CSS进行日常的页面制作时,不可避免的会碰上这样那样的问题,这里挑选了其中的一些进行总结归档,希望对大家会有所帮助。

这里和大家分享一下DIV+CSS设计中常见问题的解决办法,比如在web标准下IE无法设置滚动条的颜色问题,只需将设置滚动条颜色的样式定义到html标签选择符上即可,相信本文的介绍能让你有所收获。

DIV+CSS设计中常见问题的解决办法

作为前端开发人员,在日常的页面制作时,不可避免的会碰上这样那样的问题,这里挑选了其中的一些进行总结归档,希望对大家会有所帮助:

1、如何定义高度很小的容器?

在IE6下无法定义小高度的容器,是因为有一个默认的行高。
列举2种解决方案:overflow:hidden|line-height:0

2、图片下方出现几像素的空白间隙?

这个也有多种解决方案,如将img定义为display:block,或定义父容器为font-size:0,个人更推荐使用vertical-align的方式,它的值可以是text-top|text-bottom|middle等

3、IE6双倍margin的BUG?

display:inline

4、文本垂直方向对齐文本输入框?

设置input为vertical-align:middle,textarea也是如此。

5、为什么在web标准下IE无法设置滚动条的颜色?

将设置滚动条颜色的样式定义到html标签选择符上即可

6、如何让层在falsh上显示?

不可以,除了少数几个级别很高的家伙除外。
但可以将flash设置为透明,这时层就会透过falsh显示,近似于覆盖在flash之上了,如:
<paramname="mode"value="transparent"/>

7、如何使得文字不换行?

定义包含文字的容器为:width:xxx;white-space:nowrap;

8、IE中如何让超出宽度的文字显示为省略号?

定义容器为:overflow:hidden;width:xxx;white-space:nowrap;text-overflow:ellipsis;

9、如何在点文字时也选中checkbox?

  1. <inputidinputid="test"type="checkbox"value="on"/> 
  2. <labelforlabelfor="test">测试</label> 

10、一个div为margin-bottom:10px,一个div为margin-top:5px,为什么2个div之间的间距是10px而不是15px?

这种情况浏览器会自动进行margin重叠,只显示较大的margin值
解决方案:只设置其中一个div的margin为15px

11、如何解决IE下当li中出现2个或以上的浮动时,li之间产生的空白间隙?

设置li的vertical-align,值可以为top|text-top|middle|bottom|text-bottom

12、如何使得英文单词不发生词内断行?

word-wrap:break-word;

13、为什么被访问过的链接颜色没有变化?

定义链接的样式时,需要按照:link,:visited,:hover,:active这样的顺序,可以使用LoVeHAte(喜欢讨厌)来记忆#p#

14、单行文本如何垂直居中?

height:xxx;line-height:xxx;高和行高相同即可

15、已知高度的容器如何在页面中水平垂直居中?

参阅:http://blog.doyoe.com/article.asp?id=74p>

16、未知尺寸的图片图如何水平垂直居中?

参阅:http://blog.doyoe.com/article.asp?id=159

17、标准模式和怪异模式下的盒模型区别?

标准模式下:实际宽度=width+padding+border
怪异模式下:实际宽度=width-padding-border

18、如何解决IE下的3像素BUG?

参阅:http://blog.doyoe.com/article.asp?id=68

19、如何做1像素细边框的table?

方法1:设置table的border-collapse:collapse; 

  1. <styletypestyletype="text/css"> 
  2. table{border-collapse:collapse;border-color:#000;}  
  3. td{border-color:#000;}  
  4. </style> 
  5. <tablecellspacingtablecellspacing="0"cellpadding="0"border="1"> 
  6. <tr> 
  7. <td>测试</td> 
  8. <td>测试</td> 
  9. </tr> 
  10. </table> 
  11.  

 方法2:关键在于设置cellspacine="1",用间隙来作为边框

  1. <styletypestyletype="text/css"> 
  2. table{background:#000;}  
  3. tr{background:#fff;}  
  4. </style> 
  5. <tablecellspacingtablecellspacing="1"cellpadding="0"border="0"> 
  6. <tr> 
  7. <td>测试</td> 
  8. <td>测试</td> 
  9. </tr> 
  10. </table> 
  11.  

 20、以图换字的几种方法及优劣分析

以图换字,其实是为了保证页面的可读性,这样既有利于搜索引擎,又有利于结构查看。由于这种方式被大多数人所认同,所以方法也越来越多:

方法1:使用text-indent的负值,将内容移出容器;

方法2:使用display:none,将内容隐藏;

方法3:使用padding将文字挤出容器之外,并将超出的部分hidden;

方法4:使用font设置超小字体,达到隐藏内容的目的。

方法1(非常不推荐)看起来蛮简单,但其实有几个不理想的地方,1是比较吃资源;2是在IE5下面会出现滞后背景无法显示;3是内容为超链接时,长长的黑色虚框,让你抓狂。

方法2(不推荐)其实倒也不复杂,只是需要多添加一个标签,比较浪费;且display:none出现的几率太多,对seo也是会有些许影响的。

方法3(推荐)StandardModel下要2层标签才能搞定,不过相对方法1和2还是有优势的,推荐一下。

方法4(强烈推荐)只需要将字体和行高设置为0,然后overflow:hidden就行;不过这样在Safari和Chrome下还是会有1px高的字出现,所以应该再设置一下字体的颜色和背景图相同或相近。以此就同样可以达到隐藏内容的目的,暂时还没发现有什么副作用,强烈推荐。

21、如何容器透明,内容不透明?

假设在标准模式下有如下结构: 

  1. <divclassdivclass="outer"> 
  2. <pclasspclass="inner">我不要透明</p> 
  3. </div> 

IEonly的方法:在父容器outer被设置为透明后,只需要将子容器inner设置为position:relative;如果需要兼容其它浏览器,则以上的方法不适用,且结构也需改为:

  1. <divclassdivclass="outer"></div> 
  2. <divclassdivclass="inner">我不要透明</div> 
  3.  

然后使用position+z-index搞定位置#p#

22、如何去掉链接的虚线框?

IE下:<ahref="#"onfocus="this.blur();"...>
FF下:a{outline:none;}

23、如何使得页面字体行距始终保持n倍字体大小为基调?

在body内设置line-height:n即可,注,不可以为它加上单位
原因可参阅:http://blog.doyoe.com/article.asp?id=195

24、如何使用标准的方法插入flash?

  1. <divclassdivclass="fla-show"> 
  2. <objecttypeobjecttype="application/x-shockwave-flash"data="*.swf"width="*"height="*"> 
  3. <paramnameparamname="movIE"value="*.swf"/> 
  4. <imgsrcimgsrc="*.jpg"alt="用于不支持flash或屏蔽flash时显示"/> 
  5. </object> 
  6. </div> 
  7.  

25、StandardModel如何让容器可以height:100%?

设置html,body{height:100%;margin:0;}

26、如何使得表格的宽度固定?

设置table为table-layout:fixed;这时表格将使用固定布局算法,多出的内容将不影响表格的宽度

27、如何让min-height兼容IE6?

  1. .min-height{min-height:100px;_height:100px;}  
  2. <divclassdivclass="min-height">我是兼容的min-height</div> 
  3.  

28、如何让鼠标变成手型且兼容所有现代浏览器?

cursor:pointer

29、如何实现IE6下的position:fixed?

参阅:http://blog.doyoe.com/article.asp?id=188

30、IE下如何对StandardMode与QuirksMode进行切换?

IE6以下的浏览器不用触发,直接以QuirksMode呈现页面。

IE6和IE7都可以触发的(在XHTML的DTD申明前加上HTML注释): 

  1. <!--LetIE6andIE7intoquirksmode--> 
  2. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN"  
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
  4.  

IE6的触发(在XHTML的DTD申明前加上XML申明): 

  1. <?xmlversionxmlversion="1.0"encoding="utf-8"?> 
  2. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN"  
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
  4.  

当没有使用DTD声明或者使用HTML4以下(不包括HTML4)的DTD声明时,基本所有的浏览器都是使用QuirksMode呈现。

31、如何给一个元素定义多个不同的css规则?

  1. <styletypestyletype="text/css"> 
  2. .a{color:#f00;}  
  3. .b{background:#eee;}  
  4. </style> 
  5.  
  6. <divclassdivclass="ab">测试</div> 
  7.  

如上例,该元素同时拥有a和b定义的样式规则。
多个规则之间使用空格分开,并且只有class能同时使用多个规则,id不可以

32、如何区别display:none与visibility:hidden?

相同的是display:none与visibility:hidden都可以用来隐藏某个元素;
不同的是display:none在隐藏元素的时候,将其占位空间也去掉;而visibility:hidden只是隐藏了内容而已,其占位空间仍然保留。

33、如何解决按钮在IE7及以下浏览器中随着value增多两边留白也随着增加的问题?

通常情况下,如果value的长度是固定不变的,可以给按钮设定一个固定的width,这是没有问题的,但在大多数情况下,按钮的value大多是可变的,所以给按钮设定width是不够理想的。
解决方法,给按钮加上:#overflow:visible;padding:010px;其中overflow用于清除IE两边的留白,padding用于使得各浏览器的留白一致。

【编辑推荐】

  1. 解读CSS中absolute与relative的区别和联系
  2. CSS样式表特点及嵌入网页的四种途径
  3. 三种方法实现CSS样式表插入
  4. CSS外边距设置属性margin用法
  5. 探究CSS高级语法中选择器分组和CSS继承用法

 

 

责任编辑:佚名 来源: zuomoban.cn
相关推荐

2010-08-17 11:35:46

DIV CSS

2010-08-17 13:36:49

DIV CSS设计

2010-08-31 13:49:12

CSS

2010-08-31 16:09:04

DIV+CSS

2010-09-01 14:51:12

CSSIEFirefox

2011-10-28 10:56:24

jQTouchjQueryiPhone

2012-06-06 12:48:28

Win8 RP版微软

2011-08-22 14:10:51

nagios

2011-04-27 16:04:12

投影机

2011-01-21 14:13:10

2010-09-14 10:00:41

CSS+DIV

2010-08-27 13:51:40

CSS+DIV

2010-08-30 14:37:58

CSS布局

2011-05-12 13:34:57

SQL Server

2010-08-18 15:02:54

IEFirefox兼容

2012-05-30 16:19:11

2010-01-27 12:06:00

UPS常见故障

2019-10-08 16:05:19

Redis数据库系统

2010-08-16 16:49:30

DIV CSS居中

2024-02-21 12:17:00

点赞
收藏

51CTO技术栈公众号