最近,我一直在为某人建立一个网站,我对一些浏览器将网站呈现为一种方式和其他浏览器呈现另一种方式感到恼火。我决定研究一下为什么会这样,并发现问题很可能在于浏览器之下的HTML引擎。例如,Chrome和Opera (以及大多数浏览器,如果不是全部的话)使用闪烁引擎,它是WebKit引擎的一个分支(它是从KHTML派生而来)。Safari使用WebKit。使用三叉戟浏览器;边缘使用三叉戟的分支,称为EdgeHTML。Netscape和FireFox使用(或使用,在Netscape的情况下,考虑到浏览器已经停止使用)壁虎引擎。
考虑到所有这些,是否有可能将CSS应用于特定的引擎而不是浏览器?或者,当我们尝试使用特定于浏览器的CSS时,这是否已经完成了?用户代理字符串是否有必要这样做(这显然被想模仿其他浏览器的开发人员搞砸了)?
注意,通过比较这些引擎是如何关联的,我认为有三个主要引擎:基于KHTML的、基于三叉戟的和基于壁虎的。因此,我猜想这个问题的答案至少会给出三种不同的方法(每个主要引擎一种)。
发布于 2018-02-17 04:05:17
可以使用供应商前缀,甚至可以通过带有供应商前缀的超级查询针对其中的一些前缀,例如
@supports (-webkit-appearance:none) {}
Browserhack在这方面拥有大量的方法。
这么说吧,你真的,真的不应该。这将是一场噩梦。
浏览器差异是由以下原因造成的:
1)不同的用户代理样式(默认浏览器规则);归一化或重置将为您处理这些问题。
( 2)一些实验特性可能仅供某些浏览器使用,或者它们之间存在差异,通常是通过自动重定位器来解决;自动重定位器(如无前缀或Post的自动复位器 )可以很好地处理这些问题。
3)不同的特性;了解你能做的和不能做的将花费您很长的时间,并且每当您发现一个限制时,请确保使用回退,甚至是填充。
99.999%可以通过标准化、自动修复和对浏览器特性和退步的正确理解来实现。
请记住,您的项目应该在所有浏览器上都能很好地工作(或者尽可能多,2018年没有人期望支持IE6 )。但是它可以在一些/大多数方面有一个更好的体验。这就是渐进式增强和优雅退化的目的。
https://stackoverflow.com/questions/48837516
复制相似问题