0

我一直不明白为什么有人说为每个浏览器制作自定义 CSS 是一件坏事。为了减小我的页面大小并加快下载速度,对我来说,为主要浏览器(尤其是 IE 的许多不同形式)制作自定义 css 是非常有意义的,并为其他所有内容制作一个通用 css。

如果你想在 css 世界中派出一把臃肿、巨大的瑞士军刀,那么在所有情况下都继续前进,我不会阻止你。

执行此操作时,快速检测浏览器很重要。加载 JavaScript 文件以检测浏览器似乎很慢。所以我更喜欢用php来检测浏览器,并发出指定的css。或者至少是通用浏览器特定的 css,然后使用 JavaScript 加载更详细的 css 版本。

但是我已经阅读了一篇又一篇文章,说明为什么这是一件坏事。这些文章背后的主要原因是用户代理可以被伪造。或者在那里使用 Firefox,但服务器认为他们使用的是 IE7,因此它发送了错误的 css 文件。

作为网络应用程序的开发人员/设计师,为什么这是我的问题?如果您想使用 Firefox,但告诉我的服务器您使用的是 safari 或 IE*,并得到一个看起来很糟糕的页面,为什么这是我的问题?

如果用户不能正确地看到您的网站,他们将永远不会回来,或者对我提出某种类似的论点,请不要全部扔掉。普通用户不会这样做。只有知道如何做到这一点的人才能知道我的网站看起来很糟糕时出了什么问题。

这类似于在旧的 Apple II 上查看我的网站(我不知道如何),然后因为一切看起来都是绿色的而对我大喊大叫。

那么,为什么我不应该使用 php 来检测浏览器并发送自定义的 css 文件,是否有充分的理由,而不是个人喜好?

我这样做主要是针对不同版本的 IE。似乎对于某些站点来说,添加 if IE6 和 if IE7 部分只是 css 文件大小的两倍或三倍。

4

5 回答 5

2

通常,当用户故意伪造用户代理字符串时,这是因为在用户浏览器中无法查看本应显示的内容。例如,一些网站可能限制用户使用 IE 或 Firefox,但用户在 Debian 上使用 Iceweasel。Iceweasel 只是出于商标原因重命名的 Firefox(还有一些其他更改),因此该站点没有理由不工作。

意识到这是因为(错误的)浏览器检测而发生的,而不是尽管如此。我想说你不需要非常担心这个问题。此外,如果您可以使您的网站合理地跨浏览器兼容,那根本不重要。如果您真的想使用特定于浏览器的 CSS,并且不想在一个 CSS 文件中全部使用,请不要让虚假的用户代理阻止您。

于 2012-04-20T22:54:40.290 回答
1

只要您正在做的唯一一件事就是更改样式表,据我所知,没有任何正当理由。如果您尝试通过浏览器提供自定义安全措施,那么您将遇到问题。

于 2012-04-20T22:53:01.950 回答
1

不确定 php,但在 Rails 中,根据用户代理提供 css 文件和不同布局是正常且简单的做法,特别是考虑到您的网站很可能被任何可用的移动设备访问时,从不为最流行的(目前是 Firefox)浏览器编写思想,甚至在需要时编写自定义 MIME 类型也非常简单。

IMO 不这样做纯粹是编码人员的懒惰,但并非所有网站都是由专业的开发人员团队开发的,手头有造型大师。同样在 Rails 以外的语言中,它可能不是那么简单。抱歉,我对 PHP 一无所知,所以这可能不是一个合适的答复

于 2012-04-20T22:56:03.440 回答
1

在我看来,从 normalize.css 开始,并有一个基本样式表作为开始,根据需要覆盖基本样式通常可以确保您设置适当的后备。如果你真的需要它,一些媒体查询,特征检测可以有很长的路要走。

于 2012-04-21T01:21:33.217 回答
0

您不应该基于浏览器的原因之一是因为谷歌和雅虎等主要搜索引擎禁止为不同的浏览器显示不同的内容。GoogleBot 可以检测不同的 CSS 和 HTML,您可能会得到错误的搜索定位。此外,如果您使用任何广告服务,您可能会因为显示不同的内容而违反他们的合同。

于 2012-04-21T01:32:40.837 回答