上周天的时候有个学长找我帮忙做三张页面,因为没有数据交换之类的,只是单纯的前端页面,想着好久没做东西, 看书都看烦了,所以就接了也当是练手。之前因为没有系统的看书,所以其实很多问题都考虑的不全面,属于知其然不知其所以然的状态,虽然现在也还有很多要学的东西,但是知道自己的不足总比不知道强吧?而且这也算是一种进步?总之,遇到各种问题,然后我发现问题主要分为两类,一:我自己知识点不够所以不知道怎么解决的,这种问题大多求问度娘或者问大神是可以搞定的;二:属于确实是现阶段技术存在漏洞的,不论是还没能实现的、实现了但存在歧义或冲突的皆在此列。而就我这次做的页面我遇到最大的问题就是浏览器兼容性的问题,有了解决方法的就在此和大家分享,希望能够抛砖引玉,我也能学到更多的知识,谢谢。
正文:
1.遇到问题:当前浏览器为ie7及以下版本
解决思路:用一个div覆盖,让用户不能看到正常页面呈现的内容
实现方法:将正常是显示内容的div的display属性设置为none,将覆盖div的display属性设置为block(PS:在其中可以加入浏览器下载链接,让用户尽快正常浏览页面)
2.遇到问题:ie8中不能实现圆角,因为ie8不能很好的支持css3
解决思路:下载PIE使得ie8支持css3中的圆角
实现方法:这里的实现方法就不细说了,下载然后“behavior: url(path/PIE.htc);”把路径更改了就能够访问了,说一下需要注意的几点问题:
(1)这个引用一定要放在html文件里面,而且路径也是相对于引用的html文件而言的,放在css文件里面不会有效果
(2)如果发现引用成功之后,需要圆角的对象消失了,不要方,去洗个澡出来就好了,亲测
开玩笑的,我确实去洗了个澡但是并没有出现,所以代码出现BUG什么的,求神拜佛到底是没用啊(摊手),从头调了一遍,又去百度了一下,发现问题了,是因为z-index的缘故,但只 设置一个z-index没有效果,哦~原来它的position属性不能是static即默认值,ok,设置position为relative就ok啦,完美的圆角在ie8就实现啦~(在此我真诚的感谢写出PIE的工程师 们确实是因为你们的努力才让我如此轻松的实现了我想要的效果,康桑阿米达~)
3.遇到问题:依然是ie8,不能支持css3中的@media screen and (....)实现响应式布局
解决思路:没办法,谁让它是磨人的小妖精呢?(耸肩)单独写一个js文件获取屏幕宽度,然后再分别添加对应样式
实现方法:“
4.遇到问题:在ie11之前的版本,如果在标签中,则会出现奇怪的蓝色边框
实现方法:给加一个“border:0;”绝对立竿见影
5.遇到问题:因为是前台首页,所以写了图片滚动,ie10以下图片莫名出现多余空隙
实现方法:给加一句“display:block;”效果卓越
6.遇到问题:竖向显示的文字用了“writing-mode:tb-rl;”但是在去朋友的电脑上调时发现居然在我心爱的FF上没效果,不可能啊???然后发现是因为FF4及以下版本没有实现这个属性,这个属性最初是 由ie想出来的(老实说,我当时有点意外呢,毕竟ie在我心中是个孤僻的天才,属于自己搞点小发明但是都属于破坏向的,所以居然这么好用的属性是被ie想出来的,而且FF居然要到了后来才 实现,不得不说对于我是挺意外的)
解决思路:没法,有问题就得想办法解决,那就只能一句一句的用ul li嵌套,然后向右浮动,设置定宽来实现了(老实说在用过writing-mode后这个方法很傻而且效果不好)
实现方法:思路说了,那就直接上代码。
//html部分
//这里的
是为了让标点也能够重起一行
//css部分
ul{ width: 6em;//em是一个相对单位,比px更好,1em = font-size的大小(如果没有设置font-size则由继承值决定) overflow: hidden;//保证布局不会崩掉 list-style: none;//把默认样式去除 } ul li{ float: right;//实现从右向左布局 width: 1em;//定宽保证只显示一个字 margin-left: 0.2em;//保证每个li包含的内容之间有一定的间隔,能够看清楚 word-break:break-word;//告诉浏览器每个字后自动换行 }