HTML/CSS 解决方法 menu-toggle 仅适用于第一个元素

Posted

技术标签:

【中文标题】HTML/CSS 解决方法 menu-toggle 仅适用于第一个元素【英文标题】:HTML/CSS workaround menu-toggle only works on first elemet 【发布时间】:2021-11-01 00:55:23 【问题描述】:

我正在尝试创建一个页面,一旦单击 div,就会显示所有相关信息。因此,一旦单击联赛,就会显示该联赛的比赛。我正在使用以下解决方法来避免使用 javascript

CSS:

  #game-info-toggle:checked + #game-menu 
    display:block;
  

html

<% @leagues.each do |league| %>
  <label for="game-info-toggle" class="cursor-pointer">
    <div class="w-1/4">
      <%= league.title %>
    </div>
  </label>
  <input type="checkbox" class="hidden" id="game-info-toggle" />
    <div class="hidden" id="game-menu">
      <% league.games.each do |game| %>
        <div class="mb-4">
          <h1><%= game.teams %></h1>
          <h1><%= game.assignment.center_referee&.name %></h1>
          <h1><%= game.assignment.assistant_referee_1&.name %></h1>
          <h1><%= game.assignment.assistant_referee_2&.name %></h1>
          <h1><%= game.assignment.fourth_official&.name %></h1>
        </div>
      <% end %>
    </div>
  <% end %>

我遇到的问题是,这对联赛的第一个实例非常有效,但不适用于以下联赛。

初始状态:

当我点击任何联赛时,只有联赛 1 的比赛会这样显示:

如果我要单独点击每个联赛(此处为联赛 1 和 2),我想要的结果:

【问题讨论】:

ids 应该是唯一的,你有多个相同的 ids。建议你将game-info-toggle和game-menu改为class属性。 将这些作为类属性仍然有效还是我试图实现的仅适用于 id ? 【参考方案1】:

我发现了几个问题:

    标签需要与输入具有唯一关联,但您有许多标签和输入具有相同的 id。 修复了 1 中 label 和 input 的唯一关联后,您失去了控制 css 显示游戏的 id 字段。因此,为 css 显示/隐藏控件添加类。
<% @leagues.each do |league| %>
  <label for="game-info-toggle<%= league.id %>" class="cursor-pointer">
    <div class="w-1/4">
      <%= league.title %>
    </div>
  </label>
  <input type="checkbox" class="hidden game-info-toggle" id="game-info-toggle<%= league.id %>" />
  <div class="hidden game-menu" id="game-menu">
    <% league.games.each do |game| %>
      <div class="mb-4">
        <h1><%= game.teams %></h1>
        <h1><%= game.assignment.center_referee&.name %></h1>
        <h1><%= game.assignment.assistant_referee_1&.name %></h1>
        <h1><%= game.assignment.assistant_referee_2&.name %></h1>
        <h1><%= game.assignment.fourth_official&.name %></h1>
      </div>
    <% end %>
  </div>
<% end %>

  .hidden 
    display: none;
  

  .cursor-pointer 
    cursor: pointer;
  

  .game-info-toggle:checked+.game-menu
    display: block;
  

【讨论】:

我觉得有错字? League.id 应该是 League_id 吗?它也没有工作。它只是给出了与我最初的结果相同的结果。如果您知道更好的方法来做到这一点,我会全力以赴。 @wayoh22 肯定是league.id,假设League 模型有一个id 字段。我尝试了它并让它工作......让我看看我是否打错了。 Obv 我没有联赛或游戏模型,所以我必须翻译我可用的内容。 @wayoh22 哦,是的,我在将 haml(我用来测试它)转换为 html 时出错了……我已经修复了它,它在这里工作……试试看跨度>

以上是关于HTML/CSS 解决方法 menu-toggle 仅适用于第一个元素的主要内容,如果未能解决你的问题,请参考以下文章

HTML+CSS笔记--1

2016/2/25 html+css学习资源

HTML CSS中如何实现DIV中的图片水平垂直居中对齐

如何在 html/css/js 中创建折叠树表?

能用HTML/CSS解决的问题就不要使用JS!

苹果电脑 font-weight=100 无效 html css 有办法解决吗