You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改fa fa-cube图标背景为非透明?适配扑克牌背景

问题描述

我想修改fa fa-cube图标,让它背景不再透明,放在扑克牌样式的背景上,但当前显示效果不好。理想状态是给图标加白色或浅蓝色填充。作为前端新手,我考虑过在图标后方叠加另一个立方体,但不知道具体怎么实现。另外我试过加aria-hidden="true"属性,但不清楚它的作用。

相关代码如下:

CSS代码

.deck {
    border: 2px dashed #080808;
    width: 160px;
    height: 120px;
    
}

.deck .card {
    justify-content: space-around;
    font-size: 50px;
    color: #0023F5;
    display: flex;
    flex-direction: column;
    position: relative;
    text-align: center;
    transform-origin: center;
    border-radius: 15px;
    border: 5px solid black;
    height: 116px;
    background-color: #e5e5f7;
    opacity: 0.8;
    background-image: linear-gradient(135deg, #F74141 25%, transparent 25%), linear-gradient(225deg, #F74141 25%, transparent 25%), linear-gradient(45deg, #F74141 25%, transparent 25%), linear-gradient(315deg, #F74141 25%, #e5e5f7 25%);
    background-position: 10px 0, 10px 0, 0 0, 0 0;
    background-size: 10px 10px;
    background-repeat: repeat;
}

HTML代码

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<div class="deck">
  <div class="card">
    <i class="drawing fa fa-cube"></i>
  </div>
</div>

当前效果:
Cube图标当前显示效果


解决方案

第一种简单方法:用文字阴影模拟填充

Font Awesome图标本质是特殊字体,直接用text-shadow就能给图标加“填充”效果,不用额外加元素。比如给图标套一层白色粗阴影,蓝色图标在复杂背景上就清晰多了:

给.drawing类加这段CSS:

.drawing {
  text-shadow: 
    1px 1px 0 #fff,
    -1px 1px 0 #fff,
    1px -1px 0 #fff,
    -1px -1px 0 #fff;
}

想要浅蓝色填充的话,把#fff换成你要的颜色就行,比如#cceeff。

第二种方法:叠加图标实现真实填充

如果想真的用一个立方体图标当背景填充,可以用绝对定位叠加:

  1. 先改HTML,多放一个fa-cube元素:
<div class="card">
  <i class="drawing-bg fa fa-cube"></i>
  <i class="drawing fa fa-cube"></i>
</div>
  1. 然后加CSS:
.card {
  position: relative; /* 让内部绝对定位的元素以卡片为基准 */
}

.drawing-bg {
  position: absolute;
  color: #fff; /* 填充的颜色 */
  z-index: 1; /* 把背景图标放在底层 */
  transform: scale(1.1); /* 放大一点,刚好覆盖上层图标的镂空部分 */
}

.drawing {
  position: relative;
  z-index: 2; /* 前景图标放在上层 */
  color: #0023F5;
}

调整scale的数值,直到背景图标刚好填满前景的镂空区域就行。

关于aria-hidden="true"的作用

这个是给屏幕阅读器用的,告诉读屏软件忽略这个元素。因为Font Awesome图标是用<i>标签做的,本身没有实际语义,不加的话屏幕阅读器可能会读出乱码或者无意义的内容,加了之后能提升页面的无障碍性。如果图标只是装饰用的,建议加上;要是图标有功能(比如按钮上的图标),还要配合aria-label说明这个图标是干嘛的。

内容的提问来源于stack exchange,提问作者mendacium

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 15:03:53