PHP判断(根据不同的浏览器载入不同的样式表

首先,我们提供 一个CSS3 和 HTML5 兼容速查表的传送门

.

然后是速查表一部分的截图:

可怜的IE,hoho…

H6 Hello Title Test 中文
H5 Hello Title Test 中文

.

我们再来看一个用CSS3构建的页面

相信很多同学已经见到过了:doraemon-with-css3

这个可爱的哆拉A梦居然是用纯代码构成的,CSS3果然神奇…

.

相比之下,如此优秀的作品在IE下却是个悲剧…

接下来我们直入主题:

既然IE系列浏览器基本不支持CSS3,而用户通过IE系列浏览器打开我们用CSS3构架的网页,既看不到CSS3华丽的效果,又浪费了宝贵的Http请求…我们为何不根据不同的浏览器载入不同的样式表文件呢?

.

好,说干就干!

一、我们可能要遇到下面这个问题:

>>如何用PHP判断浏览器类型?

我们知道,浏览器在和服务器连接时候都会先发送一些包含自己信息的内容;

这里我们主要分析的是_SERVER["HTTP_USER_AGENT"](浏览器类型);

下面是我的系统中几款浏览器的USER_AGENT信息:

1.Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4

2.Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET  CLR 3.0.4506.2152; .NET CLR 3.5.30729; 360SE)

3.Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.6)  Gecko/20100625 Firefox/3.6.6

4.Opera/9.80 (Windows NT 5.1; U; zh-cn) Presto/2.6.30 Version/10.60

.

在这里我们要用到PHP strpos() 函数

定义和用法

strpos() 函数返回字符串在另一个字符串中第一次出现的位置。

如果没有找到该字符串,则返回 false。

语法

strpos(string,find,start)
参数 描述
string 必需。规定被搜索的字符串。
find 必需。规定要查找的字符。
start 可选。规定开始搜索的位置。

.

具体代码如下:

<?php
if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 8.0"))
echo "Internet Explorer 8.0";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 7.0"))
echo "Internet Explorer 7.0";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 6.0"))
echo "Internet Explorer 6.0";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Firefox/3"))
echo "Firefox 3";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Firefox/2"))
echo "Firefox 2";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Chrome"))
echo "Google Chrome";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Safari"))
echo "Safari";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Opera"))
echo "Opera";
else echo $_SERVER["HTTP_USER_AGENT"];
?>

.

细心的同学一定会注意到:

Opera的AGENT信息是Opera/9.80 (Windows NT 5.1; U; zh-cn) Presto/2.6.30 Version/10.60,strpos() 函数的返回值一定是0。

我们可以把

else if(strpos($_SERVER["HTTP_USER_AGENT"],"Opera"))

改写成

else if(strpos($_SERVER["HTTP_USER_AGENT"],"pera"))

现在,我们就可以写出最终代码:

<?php if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE")) { ?>
	<link rel="stylesheet" type="text/css" media="screen" href="IE_style.css" />
<?php } else {?>
	<link rel="stylesheet" type="text/css" media="screen" href="style.css" />
<?php } ?>

.

进一步DIY,我们就可以做出类似如图所示的欢迎信息:

.

剩下的同学们自己去自由发挥吧~~~本文若有不足,欢迎指正~~~

原创文章,转载请注明: 转载自MOPVHS's Blog

本文链接地址: PHP判断(根据不同的浏览器载入不同的样式表

本文沙发风云人物:

随机日志

Leave a comment

49 Comments.

  1. N

    这个功能不错捏

  2. yetone

    :oops: 其实我是来测试这个新的版本的

  3. zchiy2k

    啊,你右边那个新评论提示框显示最新一条评论的效果是我最近刚好想做的~

    原来有现成的了!而且跟我构思中的一样,真不错。不知你是用插件还是自己实现的?

  4. zchiy2k

    这里真漂亮,其实只要针对IE6载入wordpress默认主题就行~呵呵

  5. yetone

    还是chrome好啊 :oops: 每次来你的主页就会看到那个大大的chrome图标,顿时那个激动哦 :mrgreen:

  6. 午夜悄悄话

    程序不懂还是看看故事什么的

  7. 西门

    我是chrome浏览器。
    首页两个评论选项卡里面的样式应该改改吧,行高太高了。。。
    头部导航只要滑动滑轮就布局中了,居左。

  8. Mini Dragon

    木有IE,干脆就放弃吧…随便他们了

  9. 阿修

    我那主题在IE下看着也还可以,就不折腾这个了。

  10. 麦子

    您网站载入的动态效果真有意思 :grin:

  11. 小邪

    。。。来个病毒把IE删除自动装fIREFOX ~ :shock:

  12. 网络推广

    观望中 呵呵。。 这个不会弄呢 ————–小托

  13. 屠龙之技

    :grin: 测试

  14. zwwooooo

    唉,就是ie拖后腿

  15. 阿邙

    强烈鄙视IE fuck fuck~!

  16. mice

    :mad: 杯具的IE8 那么可爱的哆啦A梦.

  17. winy

    来个sf?

Leave a Reply


[ Ctrl + Enter ]