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

WordPress如何实现仅在移动端关闭展开的details标签的最简方案

details 标签跨端默认状态适配方案(WordPress场景)

核心目标

  • 桌面端完全保留原有 <details open> 的默认展开效果
  • 移动端仅将原本默认展开的details改为默认关闭,不改动桌面端体验

最简实现(零改原有HTML结构)

直接在WordPress后台的自定义HTML小工具/主题自定义代码注入页脚位置,加入以下原生JS代码即可:

// 以768px为移动端判定阈值,可根据站点实际断点调整
if (window.innerWidth < 768) {
    // 页面加载完成后,移除所有默认展开的details的open属性
    window.addEventListener('DOMContentLoaded', () => {
        document.querySelectorAll('details[open]').forEach(detailEl => {
            detailEl.removeAttribute('open');
        });
    })
}

进阶适配(处理视口尺寸动态变化场景)

如果需要支持用户拖动窗口跨端、手机旋转屏幕时同步调整details状态,可使用以下脚本,需给原有的默认展开的details标签加上default-open类标记:
调整后的原标签结构:

<details open class="default-open">
    <summary>Details</summary>
    Something small enough to escape casual notice.
</details>

对应适配脚本:

function syncDetailsStatus() {
    const allDefaultOpenDetails = document.querySelectorAll('details.default-open');
    allDefaultOpenDetails.forEach(detailEl => {
        if (window.innerWidth < 768) {
            detailEl.removeAttribute('open');
        } else {
            detailEl.setAttribute('open', '');
        }
    })
}
// 页面加载完成执行
window.addEventListener('DOMContentLoaded', syncDetailsStatus);
// 视口尺寸变化时实时同步
window.addEventListener('resize', syncDetailsStatus);

注意事项

  • 断点阈值768px为行业通用移动端分界值,可根据站点的实际响应式布局调整为对应数值
  • 纯原生实现无第三方依赖,代码体积极小,不会影响站点加载性能
  • 不需要修改主题核心文件,所有自定义代码都可以通过WordPress自带的自定义代码功能实现,升级主题不会丢失配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 21:27:08