如何在SCSS中为后接相邻img元素的图片设置特定宽度
解决方案
你可以结合CSS的:has()伪类和相邻兄弟选择器+实现需求,该方案可以完美匹配动态生成的DOM结构,无需提前预知img的位置。
实现逻辑
:has(+ img)选中所有后面直接跟随另一个img元素的img,也就是每对相邻img的前一个元素+相邻兄弟选择器选中所有前面直接跟随另一个img元素的img,也就是每对相邻img的后一个元素
两个选择器组合后只会命中连续相邻的img元素,单独存在的img不会被匹配。
SCSS代码示例
.article { // 单独img的默认样式,可根据需求调整 img { width: 100%; display: block; margin: 12px 0; } // 匹配相邻对的第一个img img:has(+ img) { width: 49%; // 替换为你需要的指定宽度 display: inline-block; margin-right: 2%; } // 匹配相邻对的第二个img img + img { width: 49%; display: inline-block; margin-right: 0; } }
效果说明
针对你给出的DOM结构:
- 前两个相邻的img会被命中,宽度设置为49%并排展示
- 第三个单独存在的img保持默认100%宽度,不受影响
兼容性说明
:has()伪类目前全球浏览器支持率超过93%,覆盖所有主流现代浏览器(Chrome 105+、Firefox 121+、Safari 15.4+),常规业务项目可以放心使用。
内容的提问来源于stack exchange,提问作者user16686016
相关产品推荐
相关产品推荐

