I want my active element to have a vertical line on top of it and I was given a hint to use either :before or :after in CSS to make this line. However, I'm not really familiar with those two tags and I have tried a bit using :after but it doesn't seem to work. Can you give me some advice/suggestions for this? Below is the design example of what it should look like.

Design Example

.nav-menu{
    background: var(--unnamed-color-ffffff);
    flex: 1;
    justify-content: space-between;
    padding-top: 2.3rem;
    width: 91.5rem;
}

.nav-menu .icon{
    width: 2.0rem;
    height: 2.0rem;
    margin-right: 1.5rem;
}

.nav-menu .nav-list {
    margin: 0;
    padding: 0;
    list-style: none;
}

.nav-menu .nav-list .nav-item{
    display: inline-block;
}

.nav-menu .nav-list .nav-item .nav-link {
    display: inline-block;
    text-decoration: none;
    color: black;
}

.nav-menu .nav-list .nav-item .active {
    color: red;
}

.nav-menu .nav-list .nav-item .active ::after {
    content: '';
    border-left: 0.1rem solid red;
    height: 1.5rem;
    position: absolute;
    left: 50%;
    top: 0;
}
        <nav class="nav-menu d-flex" id="nav-menu">
            <ul class="nav-list">
                <li class="nav-item">
                    <a href="#home" class="nav-link  active">one</a>
                </li>
                <li class="nav-item">
                    <a href="#about" class="nav-link">two</a>
                </li>
                <li class="nav-item">
                    <a href="#service" class="nav-link">three</a>
                </li>
                <li class="nav-item">
                    <a href="#promotion" class="nav-link">four</a>
                </li>
                <li class="nav-item">
                    <a href="#customer" class="nav-link">five</a>
                </li>
                <li class="nav-item">
                    <a href="#contact" class="nav-link">six</a>
                </li>
            </ul>

        </nav>

推荐答案

Use active:before and use position:relative on the parent where you used position:absolute. here an example with your code:

.nav-menu{
    background: var(--unnamed-color-ffffff);
    flex: 1;
    justify-content: space-between;
    padding-top: 2.3rem;
    width: 91.5rem;
}

.nav-menu .icon{
    width: 2.0rem;
    height: 2.0rem;
    margin-right: 1.5rem;
}

.nav-menu .nav-list {
    margin: 0;
    padding: 0;
    list-style: none;
}

.nav-menu .nav-list .nav-item{
    display: inline-block;
}

.nav-menu .nav-list .nav-item .nav-link {
    display: inline-block;
    text-decoration: none;
    color: black;
}

.nav-menu .nav-list .nav-item .active {
    color: red;
    position: relative;
}

.nav-menu .nav-list .nav-item .active::before {
    content: '';
    border-left: 0.1rem solid red;
    height: 1.5rem;
    position: absolute;
    left: 50%;
    bottom: 100%;
}
<nav class="nav-menu d-flex" id="nav-menu">
            <ul class="nav-list">
                <li class="nav-item">
                    <a href="#home" class="nav-link  active">one</a>
                </li>
                <li class="nav-item">
                    <a href="#about" class="nav-link">two</a>
                </li>
                <li class="nav-item">
                    <a href="#service" class="nav-link">three</a>
                </li>
                <li class="nav-item">
                    <a href="#promotion" class="nav-link">four</a>
                </li>
                <li class="nav-item">
                    <a href="#customer" class="nav-link">five</a>
                </li>
                <li class="nav-item">
                    <a href="#contact" class="nav-link">six</a>
                </li>
            </ul>

        </nav>

Html相关问答推荐

如何在css中将包含多行文本的多个p-tag放在一起(并排)?

使用无限数量的元素创建特定的CSS网格

如何在html和css中创建动态调整大小的表元素

Firefox和Chrome在文字装饰和文字阴影方面的不同优先顺序

摆动的html标签

未在抖动中播放的HTML音频||文本正在工作其他标记正在播放,但音频未播放

如果DIV没有特定的sibling 姐妹,则以CSS为目标

在Hero部分中同时zoom 背景图像和形状的问题

如何使用css横向显示英文和中日韩文字?

从html文件中提取元素的Python BeautifulSoup

动画的停止和启动并不顺利

在选项标签中如何添加Django模板的条件

拨动switch 在重新加载时未重置

动态计算高度时 Div 不保持 1/1 纵横比

如何在 Flex 对齐内容框下显示隐藏按钮和文本

HTML画布放大/缩小算法与CSS(图像处理)

暗模式转换器

有没有办法使用 CSS border-radius 创建 HTML 视频标签的三角形显示?

为什么相同持续时间的转换需要不同的时间?

使用 CSS 的发光边框动画没有流畅的过渡