我收集了大量濒危语言的谚语,我想为每一种语言使用一个模式框,以便在不影响页面的情况下提供不同的抄本.我已经创建了一个div元素,当使用CSS:target Select 器单击时,它会扩展显示可选信息,我希望能够对每个谚语反复使用该代码,而无需 for each 谚语创建唯一的类或ID.问题是,单击列表中间的谚语只会扩展第一个div框.有没有一种方法可以让div框为单击的每个谚语打开,而无需 for each 谚语创建唯一的可扩展div(我有数百个)?

以下是我使用的代码:

#modalBox {
  display: block;
  position: relative;
  text-align: left;
  overflow: hidden;
  background: #ffffff;
  transition: all 0.4s;
  padding: 5px;
  margin-bottom: 2rem;
  height: 2.5rem;
  width: 100%;
  max-width: 800px;
}

#modalBox:target {
  height: 13.5rem;
}
<div class="proverbs">
  <div id="modalBox">
    <a href="#modalBox"> A (g)attë mbrèšarolë facë i (g)attarièddë cëcatë.</a>
    <p id="data"><b>IPA:</b> a atːə mˌbɾɪʃəˈɾolə fat͡ʃ i ˈatːaɾiˌɛdːə t͡ʃə katʰ</p>
    <p id="data"><b>Italian:</b> La gatta frettolosa fa i gattini ciechi.</p>
    <p id="data"><b>English:</b> The hasty cat makes blind kittens.</p>
    </p>
    <a href="#" class="modalclose">&times;</a>
  </div>
</div>

推荐答案

CSS种最早的方法可以产生这种效果(大部分或完全不使用javascript).

one方法几乎不依赖于CSS:这是HTML优先解决方案.

details / summary对元素是表示此类信息的完美语义标记.


Working Example:

.modalBox {
  display: block;
  position: relative;
  width: min(98%, 800px);
  padding: 5px;
  overflow: hidden;
}

.modalBox summary {
  font-style: italic;
  cursor: pointer;
}

.modalBox p {
  transform: translateY(30vh);
  transition: transform 0.3s linear;
}

.modalBox[open] p {
  transform: translateY(0);
}
<div class="proverbs">
  <details class="modalBox">
    <summary> A (g)attë mbrèšarolë facë i (g)attarièddë cëcatë.</summary>
    <p data-lang="ipa"><b>IPA:</b> a atːə mˌbɾɪʃəˈɾolə fat͡ʃ i ˈatːaɾiˌɛdːə t͡ʃə katʰ</p>
    <p data-lang="it"><b>Italian:</b> La gatta frettolosa fa i gattini ciechi.</p>
    <p data-lang="en"><b>English:</b> The hasty cat makes blind kittens.</p>
  </details>
  
  <details class="modalBox">
    <summary> A (g)attë mbrèšarolë facë i (g)attarièddë cëcatë.</summary>
    <p data-lang="ipa"><b>IPA:</b> a atːə mˌbɾɪʃəˈɾolə fat͡ʃ i ˈatːaɾiˌɛdːə t͡ʃə katʰ</p>
    <p data-lang="it"><b>Italian:</b> La gatta frettolosa fa i gattini ciechi.</p>
    <p data-lang="en"><b>English:</b> The hasty cat makes blind kittens.</p>
  </details>
  
  <details class="modalBox">
    <summary> A (g)attë mbrèšarolë facë i (g)attarièddë cëcatë.</summary>
    <p data-lang="ipa"><b>IPA:</b> a atːə mˌbɾɪʃəˈɾolə fat͡ʃ i ˈatːaɾiˌɛdːə t͡ʃə katʰ</p>
    <p data-lang="it"><b>Italian:</b> La gatta frettolosa fa i gattini ciechi.</p>
    <p data-lang="en"><b>English:</b> The hasty cat makes blind kittens.</p>
  </details>
</div>


Further Reading:

Html相关问答推荐

CSS动画积分计数器

Flexbox嵌套div溢出

选中/取消选中带有_hyperscript的多个复选框

对称渐变作为背景

SCSS动画错误:心脏在页面刷新时启动动画,原因是:Checked和:Not(:Checked) Select 器

你将如何为手机制作导航栏

如何用css在右侧创建多个半圆

默认情况下使用Disbale Scroll,但在单击图标后将其激活

减小HTML负载中base64字符串的大小

如何防止弹性项目溢出容器?

当多个a元素用作目标时的:target伪类

为什么 `::before` 在使用内容 `url(svg)` 时会增加一些高度

如何保持块扩展以填充视口?

为什么可滚动弹性项目需要 flex-basis: 0 ?

如何影响 HTML 元素的哪些子元素导致其增长,哪些不增长?

如何实现与内嵌图像对齐的自动换行?

那边界从何而来?

CSS 变量不适用于自定义属性回退值

文本输入在 Chrome 中保持水平滚动,带有文本溢出:省略号

下拉菜单项在页面加载时显示,需要隐藏直到悬停