【问题标题】:Pseudo element hover Safari issues伪元素悬停Safari问题
【发布时间】:2025-12-15 08:40:01
【问题描述】:

我真的希望有人可以帮助我解决这个问题。

我有一个形状,当我将鼠标悬停在它上面时,我想改变它的背景颜色。我已经让它在所有浏览器中工作,除了 Safari。

你可以在这里看到它:http://jsfiddle.net/bgLv6L9j/5/ 我尝试使用以下代码使悬停工作,但它切断了一半的文本。我尝试添加形状的尺寸,但这也使它看起来很不稳定。

.shape:hover::before {
background-color: #245a85;
content: "";
  position:absolute;
  }

我查看了具有相同问题的各种其他主题,但似乎无法找到任何 Safari 特定问题(或解决方案)。

如果有人能快速查看一下我在伪元素方面的问题并让背景悬停在 Safari 中工作,我将不胜感激。

【问题讨论】:

  • 哪个版本的 Safari?
  • 目前,我没有安装 safari。但是您是否尝试过仅使用单冒号 : 而不是双冒号 ::
  • 我用一个和两个冒号都试过了,都没有区别。感谢您的关注! :)
  • @mango 我在下面添加了我的答案,它适用于我的 v6.2.3 让我知道它是否也适合你。

标签: css pseudo-element


【解决方案1】:

如果你这样做:

.shape a {
    position: absolute;
}

而不是relative 似乎可以解决问题。

http://jsfiddle.net/bgLv6L9j/7/

编辑:

我根据你的代码用非常简单的代码重写了它。

HTML

<a class="shape" href="#">Text</a>

CSS

.shape {
    border: 2px solid crimson;
    border-radius: 5px;
    display: table-cell;
    text-align: center;
    vertical-align: middle;
    width: 150px;
    height: 75px;
    -moz-transform: perspective(40em) rotatex(-45deg);
    -ms-transform: perspective(40em) rotatex(-45deg);
    -o-transform: perspective(40em) rotatex(-45deg);
    -webkit-transform: perspective(40em) rotatex(-45deg);
    transform: perspective(40em) rotatex(-45deg);
}

.shape:hover {
    background: crimson;
}

就是这样。 http://jsfiddle.net/8sdqteke/

【讨论】:

  • 感谢您的帮助!这确实有效,但现在文本完全偏离了中心。有没有办法保持文本垂直和水平对齐,同时仍将位置设置为绝对而不是相对?谢谢!
  • 您可以提供一些位置值使其看起来居中,例如left: -40%; top: 40%;
  • 啊,是的,有道理。然而,形状中的一些文本是动态的,所以它会在整个地方移动。就像这样jsfiddle.net/bgLv6L9j/11你知道我怎样才能防止这种情况发生吗?
  • 我重写了,看上面更新的答案,这对你有什么作用?
  • 嗯,最简单的方法是使用背景图片,只需几分钟即可创建并跨浏览器工作。