html - 如何删除嵌套伪元素的 CSS 中的最后一个子元素?

标签 html css css-selectors pseudo-element

我有一个结构,它有一个展开 100% 的下拉菜单,这意味着 li 不能是相对的。

现在,我在 anchor 标记内放置了一个跨度,这似乎工作正常,但是,我无法删除橙色条的最后一个子项,如果我尝试这样做,它会删除所有。

那么如何在不中断元素链接悬停的情况下删除最后一个橙色条?

这是代码笔:https://codepen.io/Aurelian/pen/vjzOyJ?editors=1010

HTML:

<ul class="site-nav-desktop__list">
    <li class="site-nav-desktop__item"><a href="" class="site-nav-desktop__link"><span>home</span></a></li>
    <li class="site-nav-desktop__item"><a href="" class="site-nav-desktop__link"><span>diensten</span></a></li>
    <li class="site-nav-desktop__item"><a href="" class="site-nav-desktop__link"><span>over ons</span></a></li>
    <li class="site-nav-desktop__item site-nav-desktop__item--dropdown">
        <a href="" class="site-nav-desktop__link"><span>projecten</span></a>
        <ul class="site-nav-desktop__dropdown-list">
            <li><a href="#">wonem</a></li>
            <li><a href="#">werken</a></li>
            <li><a href="#">skyboxen</a></li>
            <li><a href="#">horeca</a></li>
            <li><a href="#">3d impressies</a></li>
            <li><a href="#">Adeo Design</a></li>
        </ul>
    </li>
    <li class="site-nav-desktop__item"><a href="#contact" class="site-nav-desktop__link"><span>contact</span></a></li>
</ul>

CSS/SCSS:

    // ==========================================================================
// #Site Nav
// ==========================================================================
ul {
 list-style: none;
}

%triangle-bottom {
    content: '';
    display: block;
    height: 0;
    position: absolute;
    width: 0;
    overflow:hidden;
    bottom: 0;
    border-left: 5px solid transparent;
    border-right: 5px solid transparent;
    border-bottom: 8px solid #f78f1e
}

.site-nav-desktop {
    display: none;



    width: 100%;
    padding-left: 96px;
    line-height: 5em;

    &__item {
        float: left;
        margin-right: 1rem;

        &--dropdown:hover .site-nav-desktop__link span::before {
            @extend %triangle-bottom;
            z-index: 9000;
            right: 50%;
            transform: translateX(50%);
        }

        &--dropdown:hover .site-nav-desktop__dropdown-list {
            display: block;
        }

    }

    &__link {
        padding-right: 1rem;
        display: block;
        position: relative;

        & > span {
            position: relative;
        }

        &   span::after {
            content: "";
            top: 50%;
            transform: translateY(-50%);
            position: absolute;
            float: left;
            width: 1px;
            height: 17px;
            margin-left: 1rem;
            background-color: #f78f1d;
        }

        &  > ul > li > a > span:last-of-type::after {
            display: none;
        }   
    }

    &__dropdown-list {
        background-color: #f78f1e;
        position: absolute;
        left: 0;
        right: 0;
        width: 100%;
        text-align: center;
        line-height: 3em;
        display: none;

        & li {
            display: inline-block;
            position: relative;
            margin-right: .6rem;

            &::after {
                content: "";
                top: 50%;
                transform: translateY(-50%);
                position: absolute;
                float: left;
                width: 1px;
                height: 17px;
                right: 0;
                background-color: white;
            }

            &:last-child::after {
                display: none;
            }
        }

        & a {
            display: block;
            padding-right: 1rem;
        }
    }

}

.site-social {
    float: right;

    &__item {
        display: inline-block;
    }
}

最佳答案

添加这个CSS

.site-nav-desktop__item:last-child a span:after {
  content: none;
}

工作片段在这里

ul {
  list-style: none;
}

.site-nav-desktop__item--dropdown:hover .site-nav-desktop__link span::before {
  content: '';
  display: block;
  height: 0;
  position: absolute;
  width: 0;
  overflow: hidden;
  bottom: 0;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-bottom: 8px solid #f78f1e;
}

.site-nav-desktop {
  display: none;
  width: 100%;
  padding-left: 96px;
  line-height: 5em;
}
.site-nav-desktop__item {
  float: left;
  margin-right: 1rem;
}
.site-nav-desktop__item--dropdown:hover .site-nav-desktop__link span::before {
  z-index: 9000;
  right: 50%;
  transform: translateX(50%);
}
.site-nav-desktop__item--dropdown:hover .site-nav-desktop__dropdown-list {
  display: block;
}
.site-nav-desktop__link {
  padding-right: 1rem;
  display: block;
  position: relative;
}
.site-nav-desktop__link > span {
  position: relative;
}
.site-nav-desktop__link span::after {
  content: "";
  top: 50%;
  transform: translateY(-50%);
  position: absolute;
  float: left;
  width: 1px;
  height: 17px;
  margin-left: 1rem;
  background-color: #f78f1d;
}
.site-nav-desktop__link > ul > li > a > span:last-of-type::after {
  display: none;
}
.site-nav-desktop__dropdown-list {
  background-color: #f78f1e;
  position: absolute;
  left: 0;
  right: 0;
  width: 100%;
  text-align: center;
  line-height: 3em;
  display: none;
}
.site-nav-desktop__dropdown-list li {
  display: inline-block;
  position: relative;
  margin-right: .6rem;
}
.site-nav-desktop__dropdown-list li::after {
  content: "";
  top: 50%;
  transform: translateY(-50%);
  position: absolute;
  float: left;
  width: 1px;
  height: 17px;
  right: 0;
  background-color: white;
}
.site-nav-desktop__dropdown-list li:last-child::after {
  display: none;
}
.site-nav-desktop__dropdown-list a {
  display: block;
  padding-right: 1rem;
}

.site-social {
  float: right;
}
.site-social__item {
  display: inline-block;
}

.site-nav-desktop__item:last-child a span:after {
  content: none;
}
<ul class="site-nav-desktop__list">
        <li class="site-nav-desktop__item"><a href="" class="site-nav-desktop__link"><span>home</span></a></li>
        <li class="site-nav-desktop__item"><a href="" class="site-nav-desktop__link"><span>diensten</span></a></li>
        <li class="site-nav-desktop__item"><a href="" class="site-nav-desktop__link"><span>over ons</span></a></li>
        <li class="site-nav-desktop__item site-nav-desktop__item--dropdown">
            <a href="" class="site-nav-desktop__link"><span>projecten</span></a>
            <ul class="site-nav-desktop__dropdown-list">
                <li><a href="#">wonem</a></li>
                <li><a href="#">werken</a></li>
                <li><a href="#">skyboxen</a></li>
                <li><a href="#">horeca</a></li>
                <li><a href="#">3d impressies</a></li>
                <li><a href="#">Adeo Design</a></li>
            </ul>
        </li>
        <li class="site-nav-desktop__item"><a href="#contact" class="site-nav-desktop__link"><span>contact</span></a></li>
    </ul>

关于html - 如何删除嵌套伪元素的 CSS 中的最后一个子元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50349692/

相关文章:

css - 如何在 Windows 操作系统上为 Firefox 指定单独的样式

asp.net - 如何删除所有标签并获得纯文本?

html - 滚动条未完全显示 Div 中的值

javascript - Sencha Touch 2 应用程序与 Cordova 3.1 在 iOS 7 上运行缓慢

php - <td> 修复文本过多时可扩展的宽度和高度

html - CSS margin 恐怖; Margin 在父元素之外添加空间

html - 打开时详细信息元素的 CSS 选择器

selenium - 为什么 XPath 在 Chrome84 中不高亮黄色标记?

html - 将 CSS 应用于 TD 中的数据,但不应用于 TD。需要在每个 TD 中提高文本基线。 Maby 文本属性选择器

html - 视差图像顶部的透明文本 div