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

nth-child选择器失效及图标与文本对齐异常问题排查

问题解答

问题一:nth-child选择器未正常工作的原因及修复

你当前写的.progLang:nth-child(1)是匹配自身为父元素第一个子元素的.progLang元素,但每个<h3 class="progLang">都是其父元素<li>的第一个子元素(每个li内第一个元素都是h3),所以所有progLang都会匹配这个选择器,导致第一个样式全局生效。

正确写法是先定位到第n个<li>,再选中内部的progLang,修改后的选择器如下:

/* 选中第一个li里的progLang */
li:nth-child(1) .progLang {
    color: #f06529; 
}

li:nth-child(1) .progLang:after {
    content: url("html5-icon.png");
}

/* 选中第二个li里的progLang */
li:nth-child(2) .progLang {
    color: #264de4;
}

li:nth-child(2) .progLang:after {
    content: url("css-icon.png");
}

问题二::after伪元素图标与文本不对齐的修复

用content: url()插入的图标属于替换元素,默认垂直对齐方式会导致它和文本基线错位,出现图标偏高的情况。只需给伪元素添加垂直对齐属性即可修正:

在现有的:after样式中加入vertical-align: middle;,还可按需添加间距调整,示例代码:

li:nth-child(1) .progLang:after {
    content: url("html5-icon.png");
    vertical-align: middle;
    margin-left: 0.5rem; /* 可选:给图标和文本加间距 */
}

li:nth-child(2) .progLang:after {
    content: url("css-icon.png");
    vertical-align: middle;
    margin-left: 0.5rem;
}

完整修正后的CSS代码

.skillSet {
    margin: 6rem 1rem 1rem 1rem;
    padding: 8px;
}

.skillSet h2 {
    border-left: 8px solid black;
    text-indent: 0.5rem;
    margin-bottom: 5rem;
}

.skillSet ul {
    margin: 1rem 0.5rem 1rem 0.5rem;
}

li {
    list-style: none;
    margin-bottom: 5rem;
}

li:nth-child(1) .progLang {
    color: #f06529; 
}

li:nth-child(1) .progLang:after {
    content: url("html5-icon.png");
    vertical-align: middle;
    margin-left: 0.5rem;
}

li:nth-child(2) .progLang {
    color: #264de4;
}

li:nth-child(2) .progLang:after {
    content: url("css-icon.png");
    vertical-align: middle;
    margin-left: 0.5rem;
}

.abbr {
    font-size: 12px;
}

内容的提问来源于stack exchange,提问作者ImAWeebキズネです

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:43:20