【问题标题】:This spotlight effect is not working in Safari 7.1+此聚光灯效果在 Safari 7.1+ 中不起作用
【发布时间】:2015-07-19 03:48:56
【问题描述】:

为什么这个 CodePen 在 Safari 中不起作用?在所有的 Spotlight 教程中,我选择了这个,因为它做了我想要的。它适用于 Chrome/Firefox,但在 Safari 7.1+ 中根本不起作用(甚至部分不起作用)。有人能解释一下吗?

http://codepen.io/cchambers/pen/Dyldj

$(document).on("mousemove", function(e){  
  $(".spotlight").css("left",e.clientX-100).css("top", e.clientY-100);
});
body{
    margin:0;
    background:url(http://i.imgur.com/KHucaTQ.jpg);
    background-size:100% auto;
    overflow:hidden;
} 
.spotlight{
    cursor:none;
    position:absolute;
    top:100px; 
    left:200px;
    height:200px;
    width:200px;
    border-radius:50%;
    background:transparent;
    box-shadow:0 0 0 2000px rgba(0,0,0,.85);
}

.ha{
    -webkit-transform: translateZ(0);
    -moz-transform: translateZ(0);
    -o-transform: translateZ(0);
    transform: translateZ(0);
}
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<div class="spotlight ha"></div>

【问题讨论】:

  • 您使用的是哪个版本的 Safari?它在 Safari 5.1+ 中运行良好。
  • 在 6.1.6 版中看起来不错,但在 7.1.7 版中则不行
  • 具体是什么不起作用?整件事?有聚光灯但不是圆吗?效果反转了吗?等
  • 完全没有效果。图像没有变暗,我没有看到聚光灯。我的朋友有 7.1.3 版的 safari,但也无法在他的版本上运行。
  • 我可以确认它在 Safari 8.0.6 上也不起作用。

标签: javascript jquery html css safari


【解决方案1】:

把你的css改成这样:

.spotlight{
  cursor:none;
  position:absolute;
  top:100px; left:200px;
  height:200px;
  width:200px;
  border-radius:50%;
  background:transparent;
  box-shadow:0 0 0 2000px rgba(0,0,0,.85);
  -webkit-box-shadow:0 0 0 2000px rgba(0,0,0,.85);
}

添加的-webkit- 应该可以解决问题。

或者,更新您的 Safari - 您可能正在运行一个过时的版本。


阅读box-shadow,它的浏览器兼容性:box-shadow - MDN Docs

【讨论】:

  • box-shadow 自 2012 年推出的 Safari 5.1 以来一直支持无前缀。
  • 因此是替代解决方案。
  • 我正在运行最新版本的 safari,但那个 codepen 仍然无法工作。我可以在我的 safari 版本中查看框阴影的其他示例,只是该代码有问题,我无法弄清楚。
  • 太疯狂了,我检查了我的笔记本电脑,它运行的是 6.1.6 版,它工作正常,但我的台式机有 7.1.7 版,它不能工作
【解决方案2】:

事实证明,要解决手头的问题,我必须将 box-shadow 中的“spread”更改为 1900px 而不是 2000px。没有任何形式或形式确定原因,但至少在我的 Safari 版本上修复了它。将检查版本 8 和其他一些版本,并希望修复它。

只是想添加代码片段,以防万一这会阻止任何人

.spotlight{
  cursor:none;
  position:absolute;

  top:24%;
  left:7%;

  height:20%;
  width:17%;
  border-radius:50%;
  background:transparent;
  box-shadow:0 0 0 1900px rgba(0,0,0,.65);
  z-index: 2;

}

【讨论】:

    【解决方案3】:

    关键是我忘了添加-webkit-border-radius。愚蠢的错误

    border-radius: 50%;
    -moz-border-radius: 50%;
    -webkit-border-radius: 50%;
    

    【讨论】:

    • 你确定吗? border-radius 自版本 5 起已在 Safari 中支持无前缀。
    • 你是对的,我把我的浏览器弄糊涂了。我不明白为什么这不起作用。
    • 剩下的,我认为是开始隔离新演示中的部分代码并尝试隔离根本原因。在我们确切地知道代码的哪一部分在 Safari 7.1+ 中不起作用之前,我们将无法解决问题。我将首先检查 Safari 的开发人员窗口,看看是否有任何 CSS 属性被视为无效而被忽略(它们旁边会有一个黄色的 ! 警告标志并被删除)。
    猜你喜欢
    • 2016-03-26
    • 2015-05-02
    • 1970-01-01
    • 2015-12-03
    • 2013-10-03
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    相关资源
    最近更新 更多