gpt4 book ai didi

html - 三/四列列表,每个元素下方都有弹出式描述

转载 作者:可可西里 更新时间:2023-11-01 14:43:59 31 4
gpt4 key购买 nike

我有一个元素列表,每个元素都有一个(固定大小)缩略图和一些更多数据。该列表现在应以三/四/X 列布局显示,缩略图按行列出。

单击缩略图时,应该有一个(可变高度)弹出窗口,其中包含缩略图下方元素的更多数据,将下一行缩略图向下推。如果同一行中的另一个元素被选中,描述应该“指向它”。如果单击另一行的元素,则当前打开的描述应该折叠,新选择的元素行下方的新描述应该出现。

这是当前版本(只看功能,不看 HTML 结构):https://my.tado.com/webapp/#/compatibility-check/setup-selection/templates?installationProcessType=INSTALL_ST_G1(如果您选择“设置模板”并在下一页选择制造商,您会看到列表的四列变体)。

现在我想重做上面的操作,这样 HTML 结构就变成了这样:

<ul>
<li>
<div class="item">
<div class="item--thumbnail">
...
</div>
<div class="item--description>
...
</div>
</div>
</li>
<li>
...
</li>
</ul>

但布局应该看起来和行为相同。这怎么可能呢?也许使用 Flexbox 及其源(重新)排序

目标是不将元素分组到 HTML 中的行中,并使元素的描述“靠近”缩略图。

奖励积分,如果解决方案是响应式的,因此小屏幕上的列较少

最佳答案

我已经尝试解决您的问题,您可以在这里看到我的尝试:

http://codepen.io/jefflau/pen/dYzZXj?editors=011

我使用过 React ES6,但这对您的解决方案并不重要,它所做的只是在单击时向每个 li.item 添加一个“选定”类,只有一个 li 可以一次拥有选定的类,以便删除任何其他类。

注意:为简洁起见,我删除了内部 div,但您可以将其重新添加。除此之外,我使用了您的确切 html 结构。

它不是响应式的,但我相信您可以为此创建一个响应式解决方案,但我没有这样做的原因是因为我使用的是手动偏移,稍后我将对此进行解释。

我使用了 display: flexflex-wrap: wrap 来创建行。

互动

每次 item 获得 selected 类时,它都会用 margin-bottom 将所有内容向下推,然后显示内部 。 item--description div,它是 position: absolute 并且位于 top: 100%left: 0 其父级.

这里是棘手的部分。由于您的框覆盖了整行,我需要偏移 item--description 框,使其相对于其父框。我抵消它的方式是使用 transform: translateX(px)。唯一能够正确定位“描述”框的元素是左侧的元素。为了纠正这个问题,我在 li 上使用了 nth-child 假设一个 4 项布局,然后手动调整每个 transform: translateX()

如果您想以响应方式使用此技术,您可以创建媒体查询来处理 3 列和 2 列布局等...

我还使用了一个 :before 伪元素,使用 left: 50% top: 100% 相对于父元素的位置放置一个三 Angular 形transform: translateX(-50%) 使其居中。

关于html - 三/四列列表,每个元素下方都有弹出式描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33084697/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com