【问题标题】:is there a css hack for safari only NOT chrome?是否有针对 safari 而不是 chrome 的 CSS hack?
【发布时间】:2013-04-27 05:48:22
【问题描述】:

我试图为 safari 而不是 chrome 找到一个 css hack,我知道这两个都是 webkit 浏览器,但我在 chrome 和 safari 中的 div 对齐有问题,每个显示不同。

我一直在尝试使用它,但它也会影响 chrome,

@media screen and (-webkit-min-device-pixel-ratio:0) { 
  #safari { display: block; } 
} 

请问有人知道另一种只适用于野生动物园吗?

【问题讨论】:

  • 不使用 CSS,您需要使用 javascript。 stackoverflow.com/questions/5899783/detect-safari-using-jquery
  • 我对实际问题更感兴趣,而不是一个脆弱而笨拙的解决方案。它(仍然)在某处可用吗?
  • 对于发布“不起作用”的人 - 请意识到您需要知道您正在测试的 Safari 版本。每个版本都没有“包罗万象”的 Safari 解决方案。您需要在发布时提供该信息,否则没有人可以帮助您找到解决方案。
  • 不同版本的 Safari 有不同的需求 - 在这里查看实时示例:browserstrangeness.bitbucket.io/css_hacks.html#safari [Or the Mirror] browserstrangeness.github.io/css_hacks.html#safari
  • NB 问题指出:“我知道这些 [Safari 和 Chrome] 都是 webkit 浏览器” 但是在 2013 年 4 月,就在这个问题之前有人问,Google Chrome 浏览器从 WebKit 切换到 Blink,WebKit 的一个分支。

标签: css safari


【解决方案1】:
  • 为 MONTEREY 和 SAFARI 15 更新(2022 年初更新)*

PLEASE PLEASE --如果您遇到问题,并且真的想通过发表评论来获得帮助或帮助他人,请发布您的浏览器和设备(MacBook/iPad/等...同时包含浏览器和操作系统版本号!)

声称没有这些工作是不准确的(实际上甚至不可能。)其中许多并不是真正的“黑客”,而是内置于 Safari 版本中的代码苹果。需要更多信息。我喜欢你来到这里的事实,并且真的希望事情对你有所帮助。

如果您在从此处获取某些内容在您的网站上工作时遇到问题,请通过下面的链接检查测试网站 -- 如果黑客在那里工作,但不在您的网站上,则黑客是不是问题 - 您的网站发生了其他事情,通常只是下面提到的 CSS 冲突,或者可能没有任何工作,但您可能根本没有意识到您实际上并没有使用 Safari。请记住,此信息旨在帮助人们(希望)解决短期问题。

测试地点:

https://browserstrangeness.bitbucket.io/css_hacks.html#safari

和镜子!

https://browserstrangeness.github.io/css_hacks.html#safari

注意:过滤器和编译器(例如 SASS 引擎)需要标准的“跨浏览器”代码——而不是像这样的 CSS hack,这意味着它们会重写,销毁或删除黑客,因为这不是黑客所做的。其中大部分是经过精心设计的非标准代码,仅针对单个浏览器版本,如果被更改则无法工作。如果您希望将其与这些一起使用,您必须在任何过滤器或编译器之后加载您选择的 CSS hack。这似乎是理所当然的,但在那些没有意识到他们通过非为此目的设计的软件运行黑客攻击的人中存在很多困惑。

Safari 自 6.1 版以来发生了变化,正如许多人所注意到的那样。

请注意:如果您在 iOS 上使用 Chrome [现在还有 Firefox](至少在 iOS 6.1 和更高版本中)并且您想知道为什么似乎没有任何黑客可以将 Chrome 与 Safari 分开,那是因为iOS版Chrome使用的是Safari引擎。它使用 Safari 黑客而不是 Chrome 黑客。更多信息请点击此处:https://allthingsd.com/20120628/googles-chrome-for-ios-is-more-like-a-chrome-plated-apple/ Firefox for iOS 于 2015 年秋季发布。它也响应 Safari Hacks,但没有任何 Firefox 攻击,与 iOS Chrome 相同。

另外:如果您尝试了一种或多种黑客攻击但无法使其正常工作,请发布示例代码(最好是测试页面)-您尝试的黑客攻击以及浏览器(s)(确切版本!)您正在使用以及您正在使用的设备。如果没有这些额外信息,我或这里的任何其他人都无法为您提供帮助。

通常这是一个简单的修复或缺少分号。对于 CSS,如果不仅仅是 CSS 错误,通常是样式表中列出代码的顺序或问题。请在测试站点上测试黑客。如果它在那里工作,这意味着黑客确实适用于您的设置,但这是需要解决的其他问题。这里的人真的很乐意提供帮助,或者至少为您指明正确的方向。

这里有一些技巧供您用于更新版本的 Safari。

你应该先试试这个,因为它涵盖了当前的 Safari 版本并且仅限于纯 Safari:

这个仍然适用于 Safari 13(2020 年初):

/* Safari 7.1+ */

_::-webkit-full-page-media, _:future, :root .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

要覆盖更多版本,6.1 及更高版本,此时您必须使用下一对 css hack。用于 6.1-10.0 的版本与处理 10.1 及更高版本的版本一起使用。

那么——这是我为 Safari 10.1+ 设计的一个:

双重媒体查询在这里很重要,不要删除它。

/* Safari 10.1+ */

@media not all and (min-resolution:.001dpcm) { @media {

    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

如果 SCSS 或其他工具集在嵌套媒体查询方面遇到问题,请尝试这个:

/* Safari 10.1+ (alternate method) */

@media not all and (min-resolution:.001dpcm)
{ @supports (-webkit-appearance:none) {

    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

下一个适用于 6.1-10.0 但不适用于 10.1(2017 年 3 月下旬更新)

我通过结合多个其他 hack 经过数月的测试和实验创建了这个 hack。

注意:像上面一样,双重媒体查询并非偶然——它排除了许多无法处理媒体查询嵌套的旧浏览器。 -- 一个'and's 后面的空格也很重要。毕竟,这是一个 hack……并且是目前唯一适用于 6.1 和所有更新的 Safari 版本的。另请注意,如下面的 cmets 中列出的,hack 是非标准 css,必须在过滤器之后应用。 SASS 引擎等过滤器将重写/撤消或完全删除它。

如上所述,请检查我的测试页面以查看它是否按原样运行(无需修改!)

这里是代码:

/* Safari 6.1-10.0 (not 10.1) */

@media screen and (min-color-index:0) and(-webkit-min-device-pixel-ratio:0) 
{ @media {
    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

有关“特定于版本”的更多 Safari CSS,请继续阅读下文。

/* Safari 11+ */

@media not all and (min-resolution:.001dpcm)
{ @supports (-webkit-appearance:none) and (stroke-color:transparent) {

    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

一个用于 Safari 11.0:

/* Safari 11.0 (not 11.1) */

html >> * .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

一个用于 Safari 10.0:

/* Safari 10.0 (not 10.1) */

_::-webkit-:host:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

稍作修改适用于 10.1(仅限):

/* Safari 10.1 */

@media not all and (min-resolution:.001dpcm)
{ @supports (-webkit-appearance:none) and (not (stroke-color:transparent)) {

    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

Safari 10.0(非 iOS 设备):

/* Safari 10.0 (not 10.1) but not on iOS */

_::-webkit-:-webkit-full-screen:host:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

Safari 9 CSS 技巧:

一个简单的支持 Safari 9.0 及更高版本的功能查询破解:

@supports (-webkit-hyphens:none)
{

  .safari_only {
    color:#0000FF; 
    background-color:#CCCCCC; 
  }

}

Safari 9.0 及更高版本的简单下划线破解:

_:not(a,b), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

Safari 9.0 及更高版本的另一个:

/* Safari 9+ */

_:default:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

还有另一个支持功能查询:

/* Safari 9+, < 13.1 */

@supports (-webkit-marquee-repetition:infinite) and (object-fit:fill) {

    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}

一个用于 Safari 9.0-10.0:

/* Safari 9.0-10.0 (not 10.1) */

_::-webkit-:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

Safari 9 现在包含功能检测,因此我们现在可以使用它...

/* Safari 9 */

@supports (overflow:-webkit-marquee) and (justify-content:inherit) 
{

  .safari_only {
    color:#0000FF; 
    background-color:#CCCCCC; 
  }

}

现在只针对 iOS 设备。如上所述,由于 iOS 上的 Chrome 植根于 Safari,因此它当然也适用于 Safari。

/* Safari 9.0 (iOS Only) */

@supports (-webkit-text-size-adjust:none) and (not (-ms-ime-align:auto))
and (not (-moz-appearance:none))
{

  .safari_only {
    color:#0000FF; 
    background-color:#CCCCCC; 
  }

}

一个适用于 Safari 9.0+ 但不适用于 iOS 设备:

/* Safari 9+ (non-iOS) */

_:default:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

还有一个适用于 Safari 9.0-10.0 但不适用于 iOS 设备:

/* Safari 9.0-10.0 (not 10.1) (non-iOS) */

_:-webkit-full-screen:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

以下是区分 6.1-7.0 和 7.1+ 的技巧 为了获得正确的结果,这些还需要多种技巧的组合:

/* Safari 6.1-7.0 */

@media screen and (-webkit-min-device-pixel-ratio:0) and (min-color-index:0)
{  
   .safari_only {(;

      color:#0000FF; 
      background-color:#CCCCCC; 

    );}
}

既然我已经指出了阻止 iOS 设备的方法,这里是针对非 iOS 设备的 Safari 6.1+ hack 的修改版本:

/* Safari 6.1-10.0 (not 10.1) (non-iOS) */

@media screen and (min-color-index:0) and(-webkit-min-device-pixel-ratio:0) 
{ @media {
    _:-webkit-full-screen, .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

使用它们:

<div class="safari_only">This text will be Blue in Safari</div>

通常 [就像在这个问题中一样] 人们询问 Safari hack 的原因是 主要是指将其与 Google Chrome 分开(同样不是 iOS!) 发布替代方案可能很重要:如何单独定位 Chrome 也来自 Safari,所以我在这里为您提供,以备不时之需。

这里是基础知识,再次查看我的测试页面以了解许多特定版本的 Chrome,但这些都涵盖了 Chrome。 Chrome 是 45 版,Dev 和 Canary 版本目前最高到 47 版。

我在 browserhacks 上使用的旧媒体查询组合仍然适用于 Chrome 29+:

/* Chrome 29+ */

@media screen and (-webkit-min-device-pixel-ratio:0) and (min-resolution:.001dpcm)
{
    .chrome_only {

       color:#0000FF; 
       background-color:#CCCCCC; 

    }
}

@supports 功能查询也适用于 Chrome 29+……我们在下面用于 Chrome 28+ 的修改版本。 Safari 9、即将到来的 Firefox 浏览器和 Microsoft Edge 浏览器都没有与这个一起使用:

/* Chrome 29+ */

@supports (-webkit-appearance:none) and (not (overflow:-webkit-marquee))
and (not (-ms-ime-align:auto)) and (not (-moz-appearance:none))
{
    .chrome_only {

       color:#0000FF; 
       background-color:#CCCCCC; 

    }
}

以前,Chrome 28 及更高版本很容易定位。这是我在看到它包含在其他 CSS 代码块中(最初不是作为 CSS hack)并意识到它的作用后发送给 browserhacks 的,因此我出于我们的目的提取了相关部分:

[ 注意:] 下面这个较旧的方法现在描绘了没有上述更新的 Safari 9 和 Microsoft Edge 浏览器。即将到来的 Firefox 和 Microsoft Edge 版本在其编程中增加了对多个 -webkit- CSS 代码的支持,Edge 和 Safari 9 都增加了对 @supports 功能检测的支持。 Chrome 和 Firefox 之前包含 @supports。

/* Chrome 28+, Now Also Safari 9+, Firefox, and Microsoft Edge */

@supports (-webkit-appearance:none) 
{
    .chrome_and_safari {

       color:#0000FF; 
       background-color:#CCCCCC; 

    }
}

Chrome 版本 22-28 的块(如果需要支持旧版本)也可以通过我在上面发布的 Safari 组合黑客的扭曲来定位:

/* Chrome 22-28 */

@media screen and(-webkit-min-device-pixel-ratio:0)
{
    .chrome_only {-chrome-:only(;

       color:#0000FF; 
       background-color:#CCCCCC; 

    );}
}

NOTE: If you are new, change class name but leave this the same-> {-chrome-:only(;

就像上面的 Safari CSS 格式化技巧一样,这些可以按如下方式使用:

<div class="chrome_only">This text will be Blue in Chrome</div>

所以你不必在这篇文章中搜索它,这里又是我的现场测试页面:

https://browserstrangeness.bitbucket.io/css_hacks.html#safari

[或镜子]

https://browserstrangeness.github.io/css_hacks.html#safari

测试页面还有很多其他的,特别是基于版本的进一步 帮助您区分 Chrome 和 Safari,以及针对 Firefox、Microsoft Edge 和 Internet Explorer Web 浏览器的许多 hack。

注意:如果某些东西不适合您,请先检查测试页面,但请提供示例代码和您尝试的哪些 hack,以便任何人为您提供帮助。

【讨论】:

  • 只想说测试页面很棒。我现在可以使用任何设备浏览该站点并查看适用的 CSS 规则!
  • 这是否适用于 iPhone 或 iPad 上的 Safari?
  • 实际上,我只是结合使用上面的示例和 (;property: value;); 解决了我自己的问题。在下面,效果很好!
  • 此答案顶部的 Safari 6.1+ hack 在 Sass 编译器中引发错误。有办法解决吗?
  • @Blackbird 抱歉,您无法编译或过滤这些 hack,它会毁掉它们。它们必须按原样使用。 (编译后将它们添加到完成的 css 文件中。)它们是非标准的事实是它们起作用的原因。
【解决方案2】:

有一种方法可以从 Chrome 中过滤 Safari 5+:

@media screen and (-webkit-min-device-pixel-ratio:0) { 
    /* Safari and Chrome */
    .myClass {
     color:red;
    }

    /* Safari only override */
    ::i-block-chrome,.myClass {
     color:blue;
    }
}

【讨论】:

  • jeffclayton.wordpress.com/2014/07/22/… - 我一直在做很多事情(我为 browserhacks.com 测试和创建 css hack)和测试页面:browserstrangeness.bitbucket.org/css_hacks.html#webkit
  • 注意:在 iOS [在 iOS 7 中测试],chrome 版本实际上是运行 safari 引擎,所以在 ipad 或 iphone 上,你使用 safari hacks。对于其他设备,它们是不同的。
  • 所以,基本上答案中的代码适用于 Safari 5.0 和 6.0 而不是 6.1+?
  • 绝对准确地说,::i-block-chrome, .myClass { } 结构仅允许 Safari 5.1-6.0,但也允许 Chrome 10-24(旧版 Chrome 已不再使用,所以不完全值得一提)但没有更新 - Safari hacks 往往是这样工作的:一批处理 5.1-6.0,另一批处理 6.1-7.0,而较新的处理 7.1-8.0。他们似乎更新了很多东西,直到他们决定进入下一个非常接近之前的“.1”版本的数字版本。
  • 在 2013 年这个答案的时候,Safari 6.1 刚刚发布,所以没有足够的人看到浏览器发生了变化,所以这是当时最准确的一个。如果您需要更新的,请查看下面的答案。在提供时,这是一个很好的答案。然而时间在变化,所以我发布了我的作品作为对这个作品的更新。我花了几个月的时间来创建 6.1-7.0 和 7.1-8.0。我希望你喜欢结果。最有可能的是,如果 8.1 版本遵循该模式,它也将需要不同的 hack。再次,只有时间会证明一切。
【解决方案3】:

仅限萨拉里

.yourClass:not(:root:root){ 
    /* ^_^ */ 
}

【讨论】:

  • 想添加一些解释吗?我是按字面意思输入 root:root 吗?
  • 这个对于 Safari 3.x 是完全正确的(只有 Chrome 1.0 版,虽然没有人使用 Chrome 1.0,因为它现在是 30 年代......)
  • 这个现在也针对 Safari 9.0,所以完整的统计数据已经更新:/* Chrome 1.0, Safari 3.X, Safari 9.0+ */
  • :not(:root:root) 选择器根据 CSS Selectors 3 规范无效(其中 :not() 只能包含一个简单的选择器,即一种类型选择器一个 ID 一个类一个伪类),但根据CSS选择器4完全有效(其中:not()接受选择器列表)。诚然,目前只有 Safari 理解 CSS Selectors 4 语法,但这种解决方案并非面向未来。
  • 很少有 hack 不是(而且很多实际的标准代码不是由于版本更改)未来的证明。最好的计划是,如果您要使用 css hack,请将其仅用作临时修复,以便为更正式的跨浏览器更新争取时间。
【解决方案4】:

此 hack 100% 仅适用于 safari 5.1-6.0。我刚刚测试成功了。

@media only screen and (-webkit-min-device-pixel-ratio: 1) {
     ::i-block-chrome, .yourcssrule {
        your css property
    }
}

【讨论】:

  • 这个 hack 实际上适用于不同版本的 Chrome 和 Safari。它只允许 Chrome 10-24(没有人再使用它,这就是人们列出它阻止 Chrome 的原因)和 Safari 5.1-6.0。但是,它不适用于 Safari 6.1 和更新版本。当时没有比这更好的黑客了。
  • @veronica-lotti,这对我也有用。你摆脱我的头痛。谢谢
  • 人们 - 请小心。这些 cmets 描述的是一种方法,在过去几年中不适用于 Safari 版本,仅适用于旧版本。这真正意味着互联网上的大多数人都不会得到你想要的结果,而只会有旧电脑的人。这不适用于当前的操作系统。目前大多数人都拥有 12 及更高版本(不是 6.0 及更低版本,仅在 windows XP 时代才有。)
【解决方案5】:

在 (.myClass) 中替换您的课程

/* 仅限 Safari */ .myClass:not(:root:root) { enter code here }

【讨论】:

  • 这对 Safari 来说是一个不错的选择——它唯一针对的其他浏览器是 Chrome 1(不再使用 Chome 1)
  • 不使用最新 Mac 的人的确切规格:Chrome 1、Safari 3.X、Safari 9.0+(不是 Safari 4-8)
  • 这适用于最新版本的 Safari 7+,据我所知应该是公认的答案。
  • 哇,感谢在为 Safari 尝试了这么多浏览器黑客之后,这终于对我有用了!!!
【解决方案6】:

对于那些想要为 Safari 7.0 及更低版本而不是 7.1 及更高版本实现 hack 的用户,请使用:

.myclass { (;property: value;); }
.myclass { [;property: value;]; }

【讨论】:

  • 我在 Safari 7 上试了一下,但无法正常工作。您能否提供一个可行的示例?
  • @Juicy:在 browserhacks.com 上进行了现场测试——它们适用于 Safari 7 及更低版本,也适用于 Chrome 28 及更低版本。 (正如另一个帖子中提到的,iOS 7 和 8 可能其他人也使用 Chrome 的 Safari 引擎,所以 iPad 上的 Chrome 和 Safari 都是真正的 Safari)
  • 您可能在 Safari 7.1 中尝试过,而不是 Safari 7.0。它适用于 7.0 及更早版本,而不适用于 7.1 及更高版本。发布此答案时,7.0 是 Safari 的最新版本,因此当时确实如此。
  • 适用于 Windows 版 Safari(版本 5.1.7 (7534.57.2))
  • 适用于 Mac 版 Safari(版本 6.0.2 (7536.26.17))
【解决方案7】:

我喜欢使用以下方法:

var isSafari = /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor);
if (isSafari) { 
  $('head').append('<link rel="stylesheet" type="text/css" href="path/to/safari.css">') 
};

【讨论】:

  • 此 JavaScript hack 方法需要安装 JQuery 包。
  • 这被认为是非常糟糕的做法,浏览器嗅探非常容易出错并导致大量误报。不要这样做,即使媒体查询嗅探也很脏,但对于非常小的更改可能是可以接受的。
【解决方案8】:

顺便说一句,对于那些只需要在手机上定位 Safari 的人来说,只需在这个 hack 中添加一个媒体查询:

@media screen and (max-width: 767px) {
    _::-webkit-full-page-media, _:future, :root .safari_only {
        padding: 10px; //or any property you need
    }
}

并且不要忘记将 .safari_only 类添加到您要定位的元素中,例如:

<div class='safari_only'> This div will have a padding:10px in a mobile with Safari  </div>

【讨论】:

    【解决方案9】:

    当使用这个 safari-only 过滤器时,我可以针对 Safari(iOS 和 Mac),但排除 Chrome(和其他浏览器):

    @supports (-webkit-backdrop-filter: blur(1px)) {
      .safari-only {
        background-color: rgb(76,80,84);
      }
    }
    

    【讨论】:

    • 这不会过滤 Edge
    【解决方案10】:

    这行得通:

    @media not all and (min-resolution:.001dpcm) { 
      @media {
        /* your code for Safari Desktop & Mobile */
        body {
          background-color: red;
          color: blue;
        }
        /* end */
      }
    }
    

    【讨论】:

    【解决方案11】:

    注意:如果只有 iOS 就足够了(如果你愿意牺牲 Safari 桌面),那么这行得通:

        @supports (-webkit-overflow-scrolling: touch) {
        /* CSS specific to iOS devices */ 
        }
    

    【讨论】:

      【解决方案12】:

      嗨,我做了这个,它对我有用

      @media(max-width: 1920px){
          @media not all and (min-resolution:.001dpcm) {
      
              .photo_row2 {
                  margin-left: 5.5% !important;
              }
          }
      }
      
      @media(max-width: 1680px){
          @media not all and (min-resolution:.001dpcm) {
      
              .photo_row2 {
                  margin-left: 15% !important;
              }
      
          }
      }
      
      @media(max-width: 1600px){
          @media not all and (min-resolution:.001dpcm) {
      
              .photo_row2 {
                  margin-left: 18% !important;
              }
      
          }
      }
      
      
      @media (max-width: 1440px) {
      @media not all and (min-resolution:.001dpcm) {
      
              .photo_row2 {
                  margin-left: 24.5% !important;
              }
      
          }
      
      }
      
      
      @media (max-width: 1024px) {
      @media not all and (min-resolution:.001dpcm) {
          @media {
              .photo_row2 {
                  margin-left: -11% !important;
              }
      
          }
      
      }
      

      【讨论】:

      • 这是一个不错的设置,很好地利用了 hack 的多种设备设置,用于使用响应式视图的网站。
      【解决方案13】:

      第一步:使用https://modernizr.com/

      第 2 步:使用 html 类 .regions 仅选择 Safari

      a { color: blue; }
      html.regions a { color: green; }
      

      Modernizr 将根据当前浏览器支持的内容向 DOM 添加 html 类。 Safari 支持区域http://caniuse.com/#feat=css-regions,而其他浏览器不支持(无论如何)。这种方法对于选择不同版本的IE也很有效。愿原力与你同在。

      【讨论】:

      • modernizr 是一个很棒的网站 JavaScript 插件,用于识别浏览器,优秀的工具! -- 在其他浏览器决定支持区域功能之前,此 hack 将起作用(与其他人一样)
      • 不再支持 CSS 区域。
      • Regions 使我能够在 iOS 上将 Safari 6.1 定位到 11 和 7.1 到 11.2,仅此一项就已经很棒了。
      • @lowtechsun - 很好地发布你的统计数据,黑客只有了解他们针对的浏览器。
      【解决方案14】:

      您可以使用媒体查询技巧从其他浏览器中选择 Safari 6.1-7.0。

      @media \\0 screen {}
      

      免责声明:此 hack 还针对旧 Chrome 版本(2013 年 7 月之前)。

      【讨论】:

      • 它在较新的 Safari 上不起作用,但这个统计数据是外科手术式的:Safari 6.1-7.0,Chrome 22-28 所以仍然很方便。
      【解决方案15】:

      最后我用一点 JavaScript 来实现它:

      if (navigator.vendor.startsWith('Apple'))
          document.documentElement.classList.add('on-apple');
      

      然后在我的 CSS 中以 Apple 浏览器引擎为目标,选择器将是:

      .on-apple .my-class{
          ...
      }
      

      【讨论】:

        【解决方案16】:

        https://stackoverflow.com/a/17637937/3174065 尽管此方法确实使用了一些 JS,但它在这里得到了回答。如果使用,请务必将 js 放在页脚中,主体必须完全加载才能正常触发,当放置在头部时会出错,因为它在加载主体之前触发。

        然后它会在 body 中添加一个 .safari 类,但仅限于 safari,这使得定位 css 变得非常容易。

        【讨论】:

          【解决方案17】:

          它在 safari 中 100% 工作。我试过

          @media screen and (-webkit-min-device-pixel-ratio:0) 
          {
          ::i-block-chrome, Class Name {your styles}
          }
          

          【讨论】:

          • 这适用于旧版本的 Safari,而不是当前版本 - 6.1 和更高版本。
          【解决方案18】:

          我已经测试过了,它对我有用

          @media only screen and (-webkit-min-device-pixel-ratio: 1) {
           ::i-block-chrome, .myClass {
              height: 1070px !important;
            }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-06-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-05-18
            相关资源
            最近更新 更多