当前位置: 首页 > 知识库问答 >
问题:

背景色通过位置:绝对伪元素

佴波鸿
2023-03-14

我正在设计一个:悬停滑动按钮动画,但由于某种原因,当按钮悬停时,我仍然可以看到它下面的元素的颜色通过底部和左上角,就像你在第二张图片上看到的一样,它不多,但按比例缩小了,它在屏幕上显示一个彩色像素,我甚至不知道如何用英文描述它在谷歌上搜索解决方案(英文不是我的母语)。这似乎是溢出:隐藏border-radius之间的一种奇怪的交互作用。提前道谢。

PS:也许渐变是要走的路?

下面是HTML/CSS代码:

<div class="header-buttons">
    <a class="btn" href="#"><span>Contactez-nous</span></a>
</div>

.header-buttons {
    grid-area: btn;
    display: flex;
    justify-content: space-evenly;
    .btn {
        font-size: 1.5rem;
        padding: 1rem 1.6rem;
        background-color: inherit;
        color: inherit;
        border-radius: 2px;
        overflow: hidden;
        position: relative;
        font-weight: 500;
        display: block;
        span {
            z-index: 2;
            position: relative;
        }
        &::before {
            content: "";
            position: absolute;
            left: 0;
            top: 0;
            height: 100%;
            width: 100%;
            background-color: $gris-clair;
            transform: translatex(-102%);
            transition: all 0.3s ease-in-out;

        }
        &:hover {
            color: $font;
            &::before {
                transform: translatex(-3%);
            }
        }
    }
}

共有1个答案

聂季同
2023-03-14

这是因为transform:translatex(-3%)处于悬停状态

        &::before {
            content: "";
            position: absolute;
            left: 0;
            top: 0;
            height: 100%;
            width: 103%;   // <--- 100% + the 3% from your translate(-3%) on hover
            background-color: $gris-clair;
            transform: translatex(-102%);
            transition: all 0.3s ease-in-out;

        }
        &:hover {
            color: $font;
            &::before {
                transform: translatex(-3%);  // This is offsetting it 3% to the left
            }
        }

下面是代码页:https://codepen.io/cisco_iz/pen/eyggzvw?editors=1100

 类似资料:
  • 问题内容: 可以给SVG 元素背景色吗?如果没有,那么模拟它的最佳方法是什么? 我的目标是给文本提供背景色,我发现填充元素将是完美的-它们已经“概述” 了代表多行文本行的文本块(元素)。 我正在使用的示例: 我尝试使用“填充”属性,但它似乎会影响文本的填充(颜色),而不是其后面的区域: 我也尝试通过CSS设置背景色: ..但不起作用(至少在Chrome 17和Firefox 12中)。 用“填充”

  • 除了背景背景平铺外,CSS还提供了另一个强大的功能,即背景定位技术,能够精确控制背景在对象中的位置。 默认情况下,背景图像都是从元素 padding 区域的左上角开始出现的,但设计师往往希望背景能够出现在任何位置。通过 background-position属性,可以很轻松的控制背景图像在对象的背景区域中的起始显示位置。其语法格式为: background-position: xpos ypos

  • 本文向大家介绍使用CSS设置元素的背景色,包括了使用CSS设置元素的背景色的使用技巧和注意事项,需要的朋友参考一下 要设置元素的背景色,请使用background-color 属性。 示例 您可以尝试运行以下代码,以了解如何使用background-color属性:

  • 问题内容: 我有3个要素。 第一个更大(包装)并具有 第2个相对于第1个相对位置绝对定位(并包含在第1个中) 第3个包含在第2个中,并且也具有绝对定位。 为什么第3个位置相对于第2个绝对位置(这也是第1个位置的绝对位置)而不是相对位置的第一个位置? 因为3rd 是绝对定位到2nd的绝对定位。 问题答案: 因为就像重置孩子的相对位置一样。 这是无法解决的-如果您希望第三个相对于第一个绝对定位,则必须

  • 通过RGB值设置背景的颜色。 默认的颜色是 0x000000: // 颜色的参数可以是字符串 "#530000" 或者是十六进制数值 0x530000 controller.setBackgroundColor("#530000); //controller.setBackgroundColor(0x530000);

  • 问题内容: 我正在尝试使用渲染器为jTable的单元格上色,但是它们工作不佳,因为它们滞后于表格并且无法看到。这是我的代码: 我没有将其放入rendererclass中,因为它滞后了,我将其放入cicle的双精度中,具体地说,放入了第二个cicle。我希望它为超过24的单元格上色,如果现在我写的话,那是行不通的 它使桌子完全着色 编辑 按照要求,我创建了一个描述我的问题的小示例,我不知道是否存在发