javascript - Safari 链接悬停问题

标签 javascript jquery html css hover

<分区>

我遇到了一个只在 Safari 中出现的问题 - 当我将鼠标悬停在标题中的链接上时,悬停在该链接右侧的链接全部更改大小(它们的字体粗细似乎变小了)链接悬停动画的持续时间,然后一旦动画完成,链接将返回其原始大小/重量。非常奇怪的是,它只影响鼠标悬停的链接右侧(代码下方)的链接。

这是一张图片:

enter image description here

在图片中可以看到'game history'右边的链接比'game history'左边的链接要小(game history是图中悬停的链接)。它在发生时比在图像中更引人注目。

这是我的代码:

<ul class="nav_links_list">
    <li>
        <div><a class="head_link-nukun head_link--nukun" href="index.php"><span>H</span>ome</a></div>
    </li>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <li>
        <div><a class="head_link-nukun head_link--nukun" href="user_choice.php">Make Picks</a></div>
    </li>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <li>
        <div><a class="head_link-nukun head_link--nukun" href="game_history_calendar.php">Game History</a></div>
    </li>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <li>
        <a class="head_link-nukun head_link--nukun" href="userchoice_history.php?username=<?php echo $_COOKIE['username']; ?>">My History</a>
    </li>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <li>
        <a class="head_link-nukun head_link--nukun" href="full_leaderboard.php">Full Leaderboard</a>
    </li>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <li>
        <a class="head_link-nukun head_link--nukun" href="account_settings.php">Account Settings</a>
    </li>
</ul>

这是涉及的 CSS:

/* Header Nukun link styles */
.head_link-nukun {
outline: none;
text-decoration: none;
position: relative;
font-size: 10pt;
line-height: 1;
color: #9e9ba4;
display: inline-block;
}
.head_link--nukun {
/*color: #E3E8DC;*/
color:#EEEEEE;
/*font-weight: 900;*/
text-transform: uppercase;
overflow: hidden;
padding: 10px 0;
-webkit-transition: color 0.3s;
transition: color 0.3s;
}
.head_link--nukun:hover {
color: #F51E0A;
}
.head_link--nukun::before,
.head_link--nukun::after {
content: '';
position: absolute;
width: 70%;
height: 2px;
background: #EEEEEE;
bottom: 0;
left: 15%;
-webkit-transition: -webkit-transform 0.5s;
transition: transform 0.5s;
-webkit-transition-timing-function: cubic-bezier(0.2,1,0.3,1);
transition-timing-function: cubic-bezier(0.2,1,0.3,1);
}
.head_link--nukun::after {
background: #00B4FF;
-webkit-transform: translate3d(-300%,0,0) scale3d(0,1,1);
transform: translate3d(-300%,0,0) scale3d(0,1,1);
}
.head_link--nukun:hover::before {
-webkit-transform: translate3d(300%,0,0) scale3d(0,1,1);
transform: translate3d(300%,0,0) scale3d(0,1,1);
}
.head_link--nukun:hover::after {
-webkit-transform: translate3d(0,0,0) scale3d(1,1,1);
transform: translate3d(0,0,0) scale3d(1,1,1);
}
.head_link--nukun span {
color: #00B4FF;
display: inline-block;
position: relative;
-webkit-transform: perspective(1000px) rotate3d(0,1,0,0deg);
transform: perspective(1000px) rotate3d(0,1,0,0deg);
-webkit-transition: -webkit-transform 0.5s, color 0.5s;
transition: transform 0.5s, color 0.5s;
-webkit-transition-timing-function: cubic-bezier(0.2,1,0.3,1);
transition-timing-function: cubic-bezier(0.2,1,0.3,1);
}
.head_link--nukun:hover span {
color: #EEEEEE;
-webkit-transform: perspective(1000px) rotate3d(0,1,0,180deg);
transform: perspective(1000px) rotate3d(0,1,0,180deg);
}

即使鼠标悬停在 Firefox 中,链接也能完美显示。我只在 Safari 中看到这个问题。任何帮助将不胜感激!

最佳答案

当您触发 GPU 合成时(例如,通过 CSS 动画),浏览器会将该元素发送到 GPU,但如果其顶部/左侧属性发生更改,也会将出现在该元素顶部的任何内容发送到 GPU。这包括在动画元素之后出现的任何 position:relative 元素。

解决方案是给动画元素 position:relative 和一个 z-index 使其高于一切。这样你就可以得到你的动画,但在不相关的元素上保持(高级 IMO)子像素字体渲染。

这是问题和解决方案的演示 http://www.youtube.com/watch?v=9Woaz-cKPCE&hd=1

更新:较新版本的 Chrome 在 GPU 合成元素上保留亚像素抗锯齿,只要该元素没有透明度,例如,背景没有透明或半透明像素。请注意,像 border-radius 这样的东西会引入半透明像素。

来自:雅法蛋糕

这个答案不是我写的

关于javascript - Safari 链接悬停问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31415175/

相关文章:

javascript - 用于加载的 Angular 绑定(bind)不会更新 HTML

javascript - 子div向上滑动后如何保持父div的高度不变?

javascript - 当数据存在时隐藏 "No data available in table"消息

php - 填充数组并通过 AJAX 发送的脚本

javascript - knockout JS : checking for the existence of an observable in an IF binding

javascript - 在 MDN setInterval 示例中 var IntervalID 如何工作?

javascript - 为什么单击 ag-grid 中的过滤器时行会消失?

javascript - 如果将鼠标悬停在文本上,将文本更改为其他内容

css - 在带圆 Angular 的 div 边框上使用渐变

javascript - 具有特定任务的文本分析器