突破无JS单文件多页html文件的限制

问题描述 投票:0回答:1

我正在构建一个多页单 html 文件文档。 与 Android 的默认 WebView 一起使用。这意味着绝对没有 JS。 (我希望我可以使用JS,但它不支持它。我希望我可以使用第3方html查看器,但这些文件的内容泄漏的可能性是不可接受的。)

我已经使用它工作了

      fieldset{
        display:none;
        &target{display: block;}
      }

上面的 CSS 隐藏了所有字段集,并且仅显示目标字段集。

我的 html 文件的基本构成

<!DOCTYPE html>
<html>
  <head>
    <style>
      fieldset{
        display:none;
        &target{display: block;}
      }
    </style>
  </head>
  <body>
    <div id="nav">
      <a href="#1">1</a> | <a href="#2">2</a> | <a href="#3">3</a>
    </div>

    <fieldset id="1">
      <a href="#1a">1a</a> | <a href="#1b">1b</a> | <a href="#1c">1c</a>
      <table>
        <tbody id="1a"></tbody>
        <tbody id="1b"></tbody>
        <tbody id="1c"></tbody>
      </table>
    </fieldset>
    <fieldset id="2"></fieldset>
    <fieldset id="3"></fieldset>
  </body>
</html>

但是,当我希望它也向下滚动到目标时,就会出现问题。

例如: 如果浏览器的目标是 #1,它将显示 fieldset id="1"。 如果浏览器定位#2,它将显示 fieldset id="2"。 这一切都很好

,但是如果浏览器的目标是 #1a,则问题是不会显示任何内容。 我可以通过添加来解决这个问题

      tbody{
        &target{display: block;}
      }

,但这不是我想要的。 我想要它做的是,如果 #1a 是目标,则显示 fieldset id="1",然后向下滚动到 tbody id="1a"。

我脑子有雾,我不知道如何解决这个问题,即使我告诉她没有 JS,Chatgpt 也没用,她每次都会在那里插入脚本。

html css accordion
1个回答
0
投票

您似乎想要构建一个包含各个部分的 HTML 页面,可以通过单击链接来访问这些部分,并且当单击链接时,您希望滚动到相关区域。虽然使用 JavaScript 可以更轻松地完成此任务,但我理解您不使用它的原因。您可以使用锚链接在 WebView 中使用纯 HTML 和 CSS 来实现此操作。

<!DOCTYPE html>
<html>
  <head>
    <style>
      fieldset {
        display: none;
      }
      
      fieldset:target {
        display: block;
      }
      
      tbody {
        display: none;
      }
      
      tbody:target {
        display: block;
      }
    </style>
  </head>
  <body>
    <div id="nav">
      <a href="#1">1</a> | <a href="#2">2</a> | <a href="#3">3</a>
    </div>

    <fieldset id="1">
      <a href="#1a">1a</a> | <a href="#1b">1b</a> | <a href="#1c">1c</a>
      <table>
        <tbody id="1a"></tbody>
        <tbody id="1b"></tbody>
        <tbody id="1c"></tbody>
      </table>
    </fieldset>
    <fieldset id="2"></fieldset>
    <fieldset id="3"></fieldset>
  </body>
</html>

要管理

fieldset
tbody
元素在定位时的可见性,请使用 CSS 伪类
:target
。当您单击带有指向特定区域的
href
的链接时,它将显示该部分。我还为每个小节提供了一个链接(例如,
a href="#1a">1a/a>
),以便您浏览到特定的小节。使用此代码,单击类似
a href="#1a">1a/a>
的链接将显示
fieldset id="1"
并滚动到
tbody id="1a"

© www.soinside.com 2019 - 2024. All rights reserved.