哔哔肾 回答了问题 · 2017-10-20
el:last-child 的匹配规则是:第一步,查找 el 选择器匹配元素的所有同级元素(siblings);第二步,在同级元素中查找最后一个元素;第三步,检验最后一个元素是否与选择器 el 匹配。
.list:last-child 匹配到了 footer,但 footer 不匹配 .list,故选择器不生效。
相比用 last-of-type,一个可能更好的方案是:将所有 p 标签用一个父元素包起来,然后用:
.list:not(:last-child) {} // 不兼容 IE9-