浏览器兼容性之Css篇
本文与上一篇随笔《浏览器兼容性之Javascript篇》有一定关联,下来我会继续不断总结,旨在解决浏览器兼容性,对遇到类似问题的同仁有所帮助,如有更多解决浏览器兼容性的案例还望大家分享一起讨论。
最近公司的BS产品对浏览器兼容性呼声愈来愈多,具体用户事情情况其实不是我关心的问题,总之工作都是都围绕着IE6-IE10(IE11暂时没涉及),Chrome,FireFox三大主流浏览器进行,(顺便吐槽一下Firefox已经算不上主流了),另外360和搜狗浏览器的使用者还是比较多。作为平台维护的我不论在美工方面,还是用户体验方面都需要有所提升才行,不得不面对一堆主流浏览器展开工作,目前遇到的问题有以下几点:滚动条样式;盒子模型的阴影效果;部分控件圆角效果;动画效果;下面就用案例来说明吧。
一、窗体或Dom滚动条样式渲染效果
大多数人都觉得浏览器滚动条样子太过土包了,根据需求不得不美化一下。IE浏览器有几个样式可以设置滚条的样式,但都只是简单的调整颜色之类的,而且这些属性只支持IE浏览器,不兼容webkit内核的浏览器,所以针对webkit还要另辟蹊径了。最后还有一个方案是用javascript、css、图片实现自定义滚动条,下次再论。
针对滚动条,除了样式之外,功能方面也有几点需要注意:有些地方一定不能有滚动条使用overflow:hidden;有些地方只需要纵向滚动条或只需要横向滚动条overflow-x/y:hidden;都需要overflow:auto。
1、滚动条结构图与在线预览效果
图1
在线预览与配置滚动条样式地址:http://www.dengjie.com/temp/scroller.swf
2、IE下设置滚动条样式的属性
scrollbar-arrow-color: color; /*三角箭头的颜色*/ scrollbar-face-color: color; /*立体滚动条的颜色(包括箭头部分的背景色)*/ scrollbar-3dlight-color: color; /*立体滚动条亮边的颜色*/ scrollbar-highlight-color: color; /*滚动条的高亮颜色(左阴影?)*/ scrollbar-shadow-color: color; /*立体滚动条阴影的颜色*/ scrollbar-darkshadow-color: color; /*立体滚动条外阴影的颜色*/ scrollbar-track-color: color; /*立体滚动条背景颜色*/ scrollbar-base-color:color; /*滚动条的基色*/
.ScrollBar {
scrollbar-arrow-color: #000000;
scrollbar-base-color: #71b2dc;
scrollbar-face-color: #71b2dc;
scrollbar-shadow-color: #71b2dc;
scrollbar-highlight-color: #71b2dc;
scrollbar-3dlight-color: #88b8ed;
scrollbar-darkshadow-color: #88b8ed;
scrollbar-track-color:#bde6ff;
}该样式可以引用到任意需要滚动条样式的Box模型中,以下是效果图
图2
3、Chrome下设置滚动条样式的属性
::-webkit-scrollbar 滚动条整体部分,可以设置宽度啥的 ::-webkit-scrollbar-button 滚动条两端的按钮 ::-webkit-scrollbar-track 外层轨道 ::-webkit-scrollbar-track-piece 内层滚动槽 ::-webkit-scrollbar-thumb 滚动的滑块 ::-webkit-scrollbar-corner 边角 ::-webkit-resizer 定义右下角拖动块的样式
/*---webkit 滚动条样式--*/
.ScrollBar::-webkit-scrollbar-thumb{background-color:#71b2dc; height:50px;outline-offset:-1px; outline:1px solid #88b8ed; -webkit-border-radius:0px; }
.ScrollBar::-webkit-scrollbar-thumb:hover{background-color:#bde6ff;height:50px; -webkit-border-radius:0px;}
.ScrollBar::-webkit-scrollbar{width:17px; height:17px;}
.ScrollBar::-webkit-scrollbar-track-piece{;}
.ScrollBar::-webkit-scrollbar-button {width:16px;height:16px;background-color:#bde6ff;outline:1px solid #88b8ed;outline-offset:-1px; font-size:0px;}
.ScrollBar::-webkit-scrollbar-button:vertical:decrement{border-left:8px dashed transparent;border-right:8px dashed transparent; border-bottom:7px solid #000;height:12px;}
.ScrollBar::-webkit-scrollbar-button:vertical:increment{border-left:8px dashed transparent;border-right:8px dashed transparent; border-top:7px solid #000;height:12px;}
.ScrollBar::-webkit-scrollbar-button:horizontal:decrement{border-top:8px dashed transparent;border-bottom:8px dashed transparent; border-right:7px solid #000;width:12px;}
.ScrollBar::-webkit-scrollbar-button:horizontal:increment{border-top:8px dashed transparent;border-bottom:8px dashed transparent; border-left:7px solid #000;width:12px;}
.ScrollBar::-webkit-scrollbar-corner {background-color:#bde6ff;}这里是纯样式,所以没有用图片,其实webkit滚动条样式是可以用图片的,但由于项目自身原因,需要与ie下的效果保持一致,效果图如上图2。
其它预览效果:http://almaer.com/scrollbar/index.html
4、火狐目前没有找到支持滚动条样式的CSS
二、盒子模型的阴影和圆角效果
.box{
/*阴影*/
box-shadow: 3px 3px 5px #ccc; /* IE */
-moz-box-shadow: 3px 3px 5px #ccc; /* firefox */
-webkit-box-shadow: 3px 3px 5px #ccc; /* webkit */
/*圆角*/
border:1px solid #ccc; border-radius: 4px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
}
box-shadow的四个参数:x轴偏移,y轴偏移,模糊值,阴影颜色
如果想四个方向都有阴影效果且用不同颜色渲染,效果见图4,代码如下:
.box {
width:300px;
height:300px;
background-color:#fff;
/* 设置阴影 */
-webkit-box-shadow:1px 1px 3px green, -1px -1px 3px blue;
-moz-box-shadow:1px 1px 3px green, -1px -1px 3px blue;
box-shadow:1px 1px 3px green, -1px -1px 3px blue;
}
图3

但是阴影效果在css3.0以前的浏览器是不支持的,若想兼容css2.0,需要使用javascript实现,方法见上一篇随笔;或者用png的图片设置背景来实现,这里不再累述。
本文只介绍本人开发工程中遇到的兼容性问题,其它更多的兼容性解决方案请参考以下博客:
http://www.cnblogs.com/duanhuajian/archive/2012/09/23/2699119.html
http://www.cnblogs.com/TT809800327/archive/2011/09/23/2186082.html
http://www.cnblogs.com/leonn/archive/2009/06/17/1504712.html
浏览器兼容性之Css篇的更多相关文章
- 浏览器兼容性汇总--CSS篇
目录 CSS篇 1. cursor:hand VS cursor:pointer 2. innerText在IE中能正常工作,但在FireFox中却不行 3. ...
- 现代浏览器性能优化-CSS篇
我来填坑了,CSS篇终于写出来了,如果你没看过前面的JS篇,可以在这里观看. 众所周知,CSS的加载会阻塞浏览器渲染或是引起浏览器重绘,目前业界普遍推荐把CSS放到<head>中,防止在C ...
- 浏览器兼容性之JavaScript篇
近期公司职务变动,我大部分工作时间都在做web前端开发.工作性质主要是跟javascript和css(层叠样式表)打交道,而JavaScript兼容性一直是Web开发者的心病,当然我也不例外,虽然我大 ...
- 浏览器的兼容性(CSS浏览器兼容性、CSS hack)
一.关于CSS hack(尽量不用或者少用,减少页面复杂度) 1.条件注释法:(我的测试是IE9及其以下才有效) 这种方式是IE浏览器专有的Hack方式,微软官方推荐使用的hack方式.举例如下 只在 ...
- 浏览器兼容性小记-DOM篇(二)
1.DOM中的所有节点都继承自Node类型,IE9之前将DOM节点作为COM对象来实现:每个DOM节点都有一个nodeType属性来表明节点类型,总共有12个类型: Node.ELEMENT_NODE ...
- 浏览器兼容性的css hack 写法
IE各版本浏览器之间的识别概括如下: IE6:能识别 * .\9 和 _ ,不能识别 !important IE7:能识别 * .\9 和 !important,不能识别 _ IE8:能识别 \9 和 ...
- 浏览器兼容性汇总--JavaScript篇
目录 JavaScript中的兼容性汇总 1. HTML对象获取问题 2. const问题 3. event.x与event.y问题 4. wi ...
- 浏览器兼容性小记-DOM篇(一)
1.childNodes引入空白节点问题:使用childElementCount或children 2.innerText: FF中不支持该属性,使用textContent代替 3.变量名与某HTML ...
- 整理有关浏览器兼容性的css样式
去掉IE自带的删除功能的×号 input::-ms-clear{display:none;} 去掉IE自带密码框的眼睛样式 input::-ms-reveal{display:none;}
随机推荐
- windows核心编程读后感(待续)
自从大一读那本超厚的C程序设计以后,从来没有像这样慢慢地读一本书了.windows核心这本书足足看了2个多星期.一张张慢慢看,做笔记.感觉学到了很多基础的知识,关于内核方面的没有啥可以做实验的,都在看 ...
- 在CentOS上安装Sublime Text
CentOS 是基于 Red Hat (RHEL) 的, 其中并没有包管理工具 apt. 最近需要在装了 CentOS 系统的服务器上安装Sublime Text, 到官网上看了一下, 对其他 (De ...
- HDU 5761 Rower Bo
传送门 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Special Jud ...
- python合并2个字典
2种方式,update()和items()方式 In [14]: a Out[14]: {'a': 1, 'b': 2, 'c': 3} In [15]: c = {'d': 4} In [16]: ...
- centos 6.4 系统代理上网 设置
前面讲了yum 代理设置上网的方法,现在设置一下系统代理上网, 网上很多都不管用,已亲测管用 [root@proxy ~]# cat .bash_profile #root目下添加代理上网,蓝色代码# ...
- Java数据结构——双向链表
//================================================= // File Name : DoublyLinked_demo //------------- ...
- Java数据结构——优先级队列
//================================================= // File Name : PriorityQueue_demo //------------ ...
- Jasper(物联网网络支撑平台公司)的技术为什么这么牛逼?
Jasper在这个行业积累了十几年,合作的运营商超过30个,合作的行业大咖包括了通用.空客.宝马.特斯拉等几千个行业龙头,还是有很多积累下来的优势的. 一是,Jasper通过积累下来的行业应用经验,针 ...
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【十】——使用CacheCow和ETag缓存资源
系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 本文将使用一个开源框架CacheCow来实现针对Http请求资源缓存,本文主要介绍服务器端的 ...
- 跟我一起玩转Sencha Touch 移动 WebApp 开发(一)
1.目录 移动框架简介,为什么选择Sencha Touch? 环境搭建 创建项目框架,框架文件简介 创建简单Tabpanel案例 自定义图标的方式 WebApp产品测试和发布 HTML5离线缓存 发布 ...