作为前端开发人员,在日常的页面制作时,不可避免的会碰上这样那样的问题,这时就需要寻找这些XHTML及CSS常见问题的解决方案。我根据自己的经验和心得挑选和整理了一些XHTML常见问题和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之上了,如: <param name="mode" value="transparent" /> 7、如何使得文字不换行? 定义包含文字的容器为:width:xxx;white-space:nowrap; 8、ie中如何让超出宽度的文字显示为省略号? 定义容器为:overflow:hidden;width:xxx;white-space:nowrap;text-overflow:ellipsis; 9、如何在点文字时也选中checkbox? <input id="test" type="checkbox" value="on" /><label for="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这样的顺序,可以使用LoVe HAte(喜欢讨厌)来记忆 14、单行文本如何垂直居中? height:xxx;line-height:xxx; 高和行高相同即可 15、已知高度的容器如何在页面中水平垂直居中? 今天终于是忙里偷闲,好不容易有点时间更新一下Blog了,却被蜘蛛网似的杂乱无章的引用,留言,评论给搞得不爽,准备等再有时间就把“引用”什么的功能去掉,太多垃圾引用了。 发现好长一段时间或者说一直以来,很多同学都对居中这个话题十分感兴趣,当然这里既有水平居中也包括垂直居中。 相信水平居中大家都已经了解并会使用了,无非就text-align:center这样,还有为了兼容不可或却的margin:auto。 某样功能或效果的实现其实都是依据一定的原理基础上的,有的东西只要明白了它的原理,至于有多少种实现方法和各方法的写法优劣这都会因个人对原理的理解程度不一而有所不同。 扯远了,还是回来聊所谓的垂直居中(要垂直居中的这个东东的高度是即定的)。 16、未知尺寸的图片图如何水平垂直居中? 参阅:http://www.missyuan.com/viewthread.php?tid=470830 17、标准模式和怪异模式下的盒模型区别? 标准模式下:实际宽度 = width + padding + border 怪异模式下:实际宽度 = width - padding - border 18、如何解决IE下的3像素BUG? 参阅:http://www.missyuan.com/viewthread.php?tid=470832 19、如何做1像素细边框的table? 方法1:设置table的border-collapse:collapse; <style type="text/css"> table{border-collapse:collapse;border-color:#000;} td{border-color:#000;} </style> <table cellspacing="0" cellpadding="0" border="1"> <tr> <td>测试</td> <td>测试</td> </tr> </table> 方法2:关键在于设置cellspacine="1",用间隙来作为边框 <style type="text/css"> table{background:#000;} tr{background:#fff;} </style> <table cellspacing="1" cellpadding="0" border="0"> <tr> <td>测试</td> <td>测试</td> </tr> </table> 20、以图换字的几种方法及优劣分析 以图换字,其实是为了保证页面的可读性,这样既有利于搜索引擎,又有利于结构查看。由于这种方式被大多数人所认同,所以方法也越来越多: 方法1:使用text-indent的负值,将内容移出容器; 方法2:使用display:none,将内容隐藏; 方法3:使用padding将文字挤出容器之外,并将超出的部分hidden; 方法4:使用font设置超小字体,达到隐藏内容的目的。 方法1(非常不推荐)看起来蛮简单,但其实有几个不理想的地方,1是比较吃资源;2是在ie5下面会出现滞后背景无法显示;3是内容为超链接时,长长的黑色虚框,让你抓狂。 方法2(不推荐)其实倒也不复杂,只是需要多添加一个标签,比较浪费;且display:none出现的几率太多,对seo也是会有些许影响的。 方法3(推荐)Standard Model下要2层标签才能搞定,不过相对方法1和2还是有优势的,推荐一下。 方法4(强烈推荐)只需要将字体和行高设置为0,然后overflow:hidden就行;不过这样在Safari和Chrome下还是会有1px高的字出现,所以应该再设置一下字体的颜色和背景图相同或相近。以此就同样可以达到隐藏内容的目的,暂时还没发现有什么副作用,强烈推荐。 (责任编辑:admin) |