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

如何使用jQuery或CSS获取picture标签中的当前激活图片?

获取<picture>中当前激活的图片或对应标签

先贴出你提供的HTML结构:

<picture>
    <source media="(min-width: 992px)" srcset="/images/xxxxxxxxxx.jpg">
    <source media="(min-width: 768px)" srcset="/images/yyyyyyyyyy.jpg">
    <img src="/images/zzzzzzzzzz.jpg">
</picture>

一、用jQuery实现

方法1:直接获取当前显示的图片地址

浏览器会自动根据<source>的媒体条件,把匹配的图片加载到<img>标签上,直接读取currentSrc属性就能拿到当前激活的图片地址:

// 获取当前显示的图片URL
const activeImgUrl = $('picture img')[0].currentSrc;
console.log(activeImgUrl);

方法2:找到对应的<source>标签

遍历所有<source>,通过媒体查询匹配判断哪个是当前激活的:

$('picture source').each(function() {
    const mediaQuery = $(this).attr('media');
    if (window.matchMedia(mediaQuery).matches) {
        console.log('当前激活的source标签:', this);
        console.log('对应图片地址:', $(this).attr('srcset'));
    }
});

二、用CSS实现

CSS没法直接“获取”元素,但可以针对当前激活的状态设置样式,直观区分当前生效的图片:

/* 屏幕≥992px时,给当前显示的img加样式 */
@media (min-width: 992px) {
    picture img {
        border: 2px solid red;
    }
}

/* 屏幕≥768px且<992px时 */
@media (min-width: 768px) and (max-width: 991px) {
    picture img {
        border: 2px solid blue;
    }
}

/* 屏幕<768px时(加载默认img) */
@media (max-width: 767px) {
    picture img {
        border: 2px solid green;
    }
}

如果你的浏览器支持:has选择器(现代浏览器基本都支持),还可以直接给匹配的<source>标记样式(用于调试):

@media (min-width: 992px) {
    picture:has(source[media="(min-width: 992px)"]) source[media="(min-width: 992px)"] {
        outline: 2px solid purple;
    }
}

内容的提问来源于stack exchange,提问作者Leonardo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:06:21