css三角形hover透明边怎么样

admin 轻心小站 关注 LV.19 运营
发表于前端技术学习版块 css,教程

CSS三角形是Web开发中经常用到的效果之一,它可以通过一些简单的 CSS 代码即可实现。但是,当我们在三角形上应用了hover效果之后,边线透明度问题却难以解决。.triangle { width:

CSS三角形是Web开发中经常用到的效果之一,它可以通过一些简单的 CSS 代码即可实现。但是,当我们在三角形上应用了hover效果之后,边线透明度问题却难以解决。

.triangle {
    width: 0;
    height: 0;
    border: 20px solid transparent;
    border-top-color: #333;
}

.triangle:hover {
    border-top-color: rgba(51, 51, 51, 0.5);
} 

如上代码所示,我们首先定义了一个基本的CSS三角形,然后在:hover状态下改变border-top-color。但是,当我们在:hover状态下应用透明度时,我们会发现整个边框都变得透明了,不仅仅是我们期望的那一条。

那么,应该如何解决这个问题呢?

.triangle {
    width: 0;
    height: 0;
    border: 20px solid transparent;
    border-top-color: #333;
    position: relative;
}

.triangle:before {
    content: ';
    position: absolute;
    top: -20px;
    left: -20px;
    width: calc(100% + 40px);
    height: calc(100% + 40px);
    border: 20px solid rgba(51, 51, 51, 0);
    border-top-color: rgba(51, 51, 51, 0.5);
}

.triangle:hover:before {
    border: 20px solid rgba(51, 51, 51, 0.5);
} 

首先,我们为三角形添加了一个相对定位的属性。然后,在:before伪元素中添加了一个绝对定位的div,它将会被放在三角形的上方。此时,在三角形:hover状态下,我们将直接修改:before伪元素中的边框透明度,而不是修改整个三角形的边框透明度。

通过这种方式,就可以解决这个问题了。在hover状态下所达到的效果完全符合我们的期待,整个过程相对简单方便,是实现这种效果的常见方法之一。

文章说明:

本文原创发布于探乎站长论坛,未经许可,禁止转载。

题图来自Unsplash,基于CC0协议

该文观点仅代表作者本人,探乎站长论坛平台仅提供信息存储空间服务。

评论列表 评论
发布评论

评论: css三角形hover透明边怎么样

粉丝

0

关注

0

收藏

0

已有0次打赏