是否有一个css黑客的野生动物园只有不铬?

Bea*_*ohn 158 css safari

即时通讯试图找到一个css黑客只是safari NOT chrome,我知道这些都是webkit浏览器但我在chrome和safari中遇到div对齐问题,每个都显示不同.

我一直试图使用它,但它也影响铬,

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

有没有人知道另一个只适用于野生动物园的吗?

Jef*_*ton 314

  • SAFARI 11更新(2017年秋季更新)*

注意:过滤器和编译器(例如SASS引擎)需要标准的"跨浏览器"代码 - 不是像这样的CSS黑客,这意味着他们将重写,销毁或删除黑客,因为这不是黑客的行为.这是非标准代码,经过精心设计,仅针对单个浏览器版本,如果更改则无法工作.如果您希望将它与那些一起使用,您必须在任何过滤器或编译器之后加载您选择的CSS hack.这可能看起来像一个给定的但是在那些没有意识到他们通过运行这种不是为此目的而设计的软件来破解黑客的人之间存在很多混淆.

自6.1版以来,Safari已经发生了变化,许多人已经注意到了

请注意:如果您在iOS上使用Chrome [现在也使用Firefox](至少在iOS版本6.1及更高版本中),您想知道为什么没有任何黑客似乎将Chrome与Safari分离,这是因为iOS版本的Chrome正在使用Safari引擎.它使用Safari hacks而不是Chrome.更多相关信息:https://allthingsd.com/20120628/googles-chrome-for-ios-is-more-like-a-chrome-plated-apple/

另外:如果您已经尝试了一个或多个黑客并且无法让它们工作,请发布示例代码(更好的是测试页) - 您正在尝试的黑客,以及您使用的浏览器(确切版本!)正在使用您正在使用的设备.没有这些额外信息,我或其他任何人都无法为您提供帮助.

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

测试地点:

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

和镜子!

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

Firefox for iOS于2015年秋季发布,它也响应了Safari Hacks,但没有一款与iOS Chrome相同.

这里的方法是黑客,你可以使用更新版本的Safari.

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

这个仍适用于Safari 10.1:

/* Safari 7.1+ */

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

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

}
Run Code Online (Sandbox Code Playgroud)

要覆盖更多版本,6.1及更高版本,此时你必须使用下一对css hacks.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; 

    }
}}
Run Code Online (Sandbox Code Playgroud)

如果SCSS或其他工具集在嵌套媒体查询中出现问题,请尝试使用此方法:

/* Safari 10.1+ (alternate method) */

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

    .safari_only { 

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

    }
}}
Run Code Online (Sandbox Code Playgroud)

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

这个hack我通过组合多个其他hack来创建了数月的测试和实验.

注意:如上所述,双媒体查询并非偶然 - 它排除了许多无法处理媒体查询嵌套的旧浏览器. - 其中一个'和'之后缺少的空间也很重要.毕竟,这是一个黑客......而且是唯一适用于6.1和所有新版Safari的版本.另请注意,如下面的评论所列,黑客是非标准的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; 

    }
}}
Run Code Online (Sandbox Code Playgroud)

有关更多"版本特定"的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; 

    }
}}
Run Code Online (Sandbox Code Playgroud)

稍微修改适用于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; 

    }
}}
Run Code Online (Sandbox Code Playgroud)

一个用于Safari 10.0:

/* Safari 10.0 (not 10.1) */

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

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

}
Run Code Online (Sandbox Code Playgroud)

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; 

}
Run Code Online (Sandbox Code Playgroud)

Safari 9 CSS Hacks:

一个用于Safari 9.0及以上版本:

/* Safari 9+ */

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

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

}
Run Code Online (Sandbox Code Playgroud)

和支持功能查询:

/* Safari 9+ */

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

    .safari_only { 

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

    }
}
Run Code Online (Sandbox Code Playgroud)

一个用于Safari 9.0-10.0:

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

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

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

}
Run Code Online (Sandbox Code Playgroud)

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

/* Safari 9 */

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

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

}
Run Code Online (Sandbox Code Playgroud)

现在只针对iOS设备.如上所述,由于iOS上的Chrome已植根于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; 
  }

}
Run Code Online (Sandbox Code Playgroud)

一个用于Safari 9.0+而不是iOS设备:

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

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

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

}
Run Code Online (Sandbox Code Playgroud)

一个用于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; 

}
Run Code Online (Sandbox Code Playgroud)

以下是分离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; 

    );}
}
Run Code Online (Sandbox Code Playgroud)

由于我已经指出了阻止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; 

    }
}}
Run Code Online (Sandbox Code Playgroud)

要使用它们:

<div class="safari_only">This text will be Blue in Safari</div>
Run Code Online (Sandbox Code Playgroud)

通常[就像在这个问题中]人们询问Safari黑客的原因主要是指将它与谷歌Chrome分开(再次不是iOS!)发布备选方案可能很重要:如何将Chrome与Safari分开定位,所以如果需要,我会在这里为您提供.

以下是基础知识,再次查看我的测试页面,了解Chrome的许多特定版本,但这些内容涵盖了Chrome.Chrome版本为45,Dev和Canary版本目前版本为47.

我在浏览器上放置的旧媒体查询组合仍适用于Chrome 29+:

/* Chrome 29+ */

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

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

    }
}
Run Code Online (Sandbox Code Playgroud)

@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; 

    }
}
Run Code Online (Sandbox Code Playgroud)

以前,Chrome 28和更新版本很容易定位.这是我发给浏览器的一个看到它包含在其他CSS代码块(最初不打算作为CSS黑客)并且意识到它做了什么,所以我为我们的目的提取了相关部分:

[注意:]现在,下面这个较旧的方法会在没有上述更新的情况下对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; 

    }
}
Run Code Online (Sandbox Code Playgroud)

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(;
Run Code Online (Sandbox Code Playgroud)

与上面的Safari CSS格式化黑客一样,这些可以使用如下:

<div class="chrome_only">This text will be Blue in Chrome</div>
Run Code Online (Sandbox Code Playgroud)

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

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

[或镜子]

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

测试页面还包含许多其他内容,特别是基于版本的版本,可进一步帮助您区分Chrome和Safari,以及针对Firefox,Microsoft Edge和Internet Explorer Web浏览器的许多黑客攻击.

注意:如果某些内容对您不起作用,请首先检查测试页,但提供示例代码以及您试图让任何人帮助您的黑客攻击.

  • 只是想说测试页很棒.我现在可以使用任何设备浏览到该网站,并查看哪些css规则适用! (8认同)
  • @Blackbird抱歉,你无法编译或过滤黑客,它会破坏它们.它们必须按原样使用.(在编译后将它们添加到已完成的css文件中.)它们是非标准的这一事实是它们工作的原因. (2认同)

小智 85

有一种方法可以从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;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • http://jeffclayton.wordpress.com/2014/07/22/the-chrome-and-safari-css-hacks-collection/ - 我一直在研究很多(我为browserhacks.com测试和创建css hacks)和测试页面:http://browserstrangeness.bitbucket.org/css_hacks.html#webkit (3认同)
  • 也适用于Safari 7或iOS 7 Safari. (2认同)

Sab*_*ati 18

适用于 iOS 16 和 macOS Ventura:

@supports (font: -apple-system-body) and (-webkit-appearance: none) {
  .body {
    background-color: red;
  }
}
Run Code Online (Sandbox Code Playgroud)


小智 17

只有萨拉里

.yourClass:not(:root:root){ 
    /* ^_^ */ 
}
Run Code Online (Sandbox Code Playgroud)

  • 小心加一些解释?我真的输入root:root? (4认同)
  • 根据CSS Selectors 3规范,`:not(:root:root)`选择器无效(其中`:not()`只能包含一个简单的选择器,即一个类型选择器_或_一个ID _或_一个类_或_一个伪 - class),但根据CSS Selectors 4完全有效(其中`:not()`接受选择器列表).确实,目前只有Safari了解CSS Selectors 4语法,但这种解决方案不具备面向未来的能力. (4认同)
  • 很少有 hack 不是(并且许多实际的标准代码不是由于版本更改)未来证明的。最好的计划是,如果您打算使用 css hack,请仅将其用作临时修复,以便花时间进行更正式的跨浏览器更新。 (2认同)

Vek*_*881 13

这个黑客100%仅适用于野生动物园.我刚刚成功测试了它.

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

  • 这个hack实际上适用于不同版本的Chrome和Safari.它允许Chrome 10-24(没有人使用,这就是人们列出它阻止Chrome的原因)和Safari 5.1-6.0.但它不适用于Safari 6.1及更新版本.当时没有更好的黑客攻击. (3认同)
  • 请添加一些解释,以解决这个问题 (2认同)

小智 10

当使用这个仅限 Safari 的过滤器时,我可以定位 Safari(iOS 和 Mac),但排除 Chrome(和其他浏览器):

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


Sti*_*boy 8

对于那些想要为Safari 7.0及更低版本实现黑客攻击而不是7.1及以上版本的用户 - 请使用:

.myclass { (;property: value;); }
.myclass { [;property: value;]; }
Run Code Online (Sandbox Code Playgroud)


Tri*_*G D 5

替换(.myClass)中的类

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


小智 5

我喜欢使用以下方法:

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">') 
};
Run Code Online (Sandbox Code Playgroud)