如何将details元素默认设置为OPEN或通过CSS设置

wyyhbhjk  于 11个月前  发布在  其他
关注(0)|答案(5)|浏览(231)

HTML5增加了两个新的元素,用于标记文章的目录:details 和 *summary *。
details元素默认为closed(隐藏除summary元素之外的所有内容),单击它时,它会展开以显示其内容。当它这样做时,它会为details元素添加一个“open”属性。
我希望元素默认为打开,而不必添加open属性到标记。是否可以通过CSS或脚本来实现这一点?
范例:

<details>
<summary>Table of Contents</summary>
    <ul>
        <li><a href="#" class="active">Introduction</a></li>
        <li><a href="/2/">Body</a></li>
        <li><a href="/3/">Conclusion</a></li>
    </ul>
</details>

字符串

q3aa0525

q3aa05251#

您可以像这样将open属性添加到details标记中:

<details open>
    <summary>Table of Contents</summary>
    <ul>
        <li><a href="#" class="active">Introduction</a></li>
        <li><a href="/2/">Body</a></li>
        <li><a href="/3/">Conclusion</a></li>
    </ul>
</details>

字符串
默认情况下,详细信息将被展开。

mrphzbgm

mrphzbgm2#

如果你想要一个JS解决方案,你可以给予details元素一个ID:

<details id="target-me">
 <summary>Table of Contents</summary>
  <ul>
    <li><a href="#" class="active">Introduction</a></li>
    <li><a href="/2/">Body</a></li>
    <li><a href="/3/">Conclusion</a></li>
  </ul>
</details>

字符串
然后使用以下JS:

document.getElementById("target-me").open = true;

p8ekf7hl

p8ekf7hl3#

如果你想用JavaScript来实现

const details = document.querySelector("details");
details.setAttribute("open", "");

字符串
关于html5 details tag open one by one javascript function working strange

jyztefdp

jyztefdp4#

调整<details>标签的open属性的一个用例是构建响应页面。例如,让它在桌面浏览器中默认打开,但在移动的手机中关闭。但是,该属性无法在CSS中设置,因此我们必须使用JavaScript进行媒体查询。
代码示例:

let mql = window.matchMedia("(min-width: 768px)");
if(mql.matches) {
    details.open = true;
}

字符串

jxct1oxe

jxct1oxe5#

你也可以使用下面的替代方法,它仍然有打开和关闭的能力,但最初,它是打开的,你可以测试一下(我提供了我的计算机的输出):

<div>
    <h3>Open</h3>
    <details open>
        <summary>Always open</summary>
        Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
    </details>
</div>

字符串
检查下面输出的照片:

相关问题