步骤进度栏图标

时间:2018-11-11 02:28:51

标签: css

我正在尝试设置一个小的进度条,该进度条仅包含当前步骤的图标。到目前为止,我已经有了一个默认的排序图标,但是不知道如何清除非活动步骤的图标。

在下面的代码中,我尝试使用伪类,但这似乎不起作用。我想知道是否有人可以指出我正确的方向。谢谢!

    .step-indicator-container {
        width: 600px;
        margin: 100px auto;
    }

    .step-indicator li {
        list-style-type: none;
        width: 33.33%;
        float: left;
        font-size: 12px;
        position: relative;
        text-align: center;
        text-transform: uppercase;
        color: #7d7d7d;
    }

    .step-indicator li:before {
        font-family: "FontAwesome";
        content: "\f276";
        width: 30px;
        height: 30px;
        line-height: 30px;
        border: 2px solid #7d7d7d;
        display: block;
        text-align: center;
        margin: 0 auto 10px auto;
        border-radius: 50%;
        background-color: white;
    }

    .step-indicator li:after {
        width: 100%;
        height: 2px;
        content: "";
        position: absolute;
        background-color: #7d7d7d;
        top: 15px;
        left: -50%;
        z-index: -1;
    }

    .step-indicator li:not(.active):nth-of-type(2) > *::before {
        content: none;
    }

    .step-indicator li:first-child:after {
        content: none;
    }

    .step-indicator li.active {
        color: #0052e7;
    }

    .step-indicator li.active:before {
        border-color: #0052e7;
    }

    .step-indicator li.active+li:after {
        background-color: #0052e7;
    }

1 个答案:

答案 0 :(得分:1)

对于这个答案,我假设以下是您的HTML结构:

<div class="step-indicator-container">
  <ul class="step-indicator">
    <li></li>
    <li class="active"></li>
    <li></li>
  </ul>
</div>

问题在于以下声明:

.step-indicator li:not(.active):nth-of-type(2) > *::before {
    content: none;
}

这是针对::before标签的后裔li。但是,您实际上将符号放在::before标记本身的li上,而不是后代上。因此,这就是您需要定位的目标。此外,content: none消除了::before,因此您实际上想要content: ""。这是我想您真正想要的:

.step-indicator li:not(.active)::before {
    content: "";
}

这是完整的代码段(请注意,我用$代替了您的符号):

.step-indicator-container {
    width: 600px;
    margin: 100px auto;
}

.step-indicator li {
    list-style-type: none;
    width: 33.33%;
    float: left;
    font-size: 12px;
    position: relative;
    text-align: center;
    text-transform: uppercase;
    color: #7d7d7d;
}

.step-indicator li:before {
    content: "$";
    width: 30px;
    height: 30px;
    line-height: 30px;
    border: 2px solid #7d7d7d;
    display: block;
    text-align: center;
    margin: 0 auto 10px auto;
    border-radius: 50%;
    background-color: white;
}

.step-indicator li:after {
    width: 100%;
    height: 2px;
    content: "";
    position: absolute;
    background-color: #7d7d7d;
    top: 15px;
    left: -50%;
    z-index: -1;
}

.step-indicator li:not(.active)::before {
    content: "";
}

.step-indicator li:first-child:after {
    content: none;
}

.step-indicator li.active {
    color: #0052e7;
}

.step-indicator li.active:before {
    border-color: #0052e7;
}

.step-indicator li.active+li:after {
    background-color: #0052e7;
}
<div class="step-indicator-container">
  <ul class="step-indicator">
    <li></li>
    <li class="active"></li>
    <li></li>
  </ul>
</div>