【问题标题】:Border of multiple details tags in one html row are not working responsive一个 html 行中多个详细信息标签的边框无法响应
【发布时间】:2021-08-20 16:52:45
【问题描述】:

我的网站有问题:https://www.ars-neurochirurgica.com/。我有几个手风琴菜单,我用纯 css 制作,没有任何 javascript,一切都很完美,除了一个问题:

当我单击类别以展开标签时,所有其他与位于同一行的详细标签一起折叠的框将从 .div 展开它们的边框。有没有办法在不使用 javascript 的情况下解决这个问题?如果详细信息标签打开,我尝试仅绘制边框,但是我遇到了边框小于 .div 的问题,因为它只会分配给详细信息标签。最好的方法是能够从 details[open] 标记中选择父元素。然而,在做了一些仅用 css3 不可能的研究之后。任何人都知道如何解决这个问题?在移动设备上它工作得非常好,因为只显示一行....

【问题讨论】:

  • 我可以看到您正在使用 CSS Grid,这意味着每个网格单元格将具有相同的行高。您是否尝试过 flexbox?

标签: html css details-tag


【解决方案1】:

这里有一个快速解决方案,可以解决您描述的边界问题:

  1. .compactblock 中删除borderpadding-leftpadding-right

  2. 添加以下 CSS:

    details {
        padding-left: 10px;
        padding-right: 10px;
    }
    
    details[open] {
        border: 1px solid var(--darkblack);
        height: 100%;
    }
    

基本上,这会强制<details> 元素展开以填充整个高度,使其边框围绕展开后的折叠块的全部内容。它还将填充从<div> 容器移动到<details> 元素本身,以便边框的宽度与摘要区域匹配。

但是,由于这种方法仍然使用grid 布局,因此当您在任何行中展开块时,您会注意到元素仍然“跳跃”到“幻影”块下方。为了解决这个问题,我强烈建议您根据 cmets 中的建议改用 flexbox

【讨论】:

  • 非常感谢这基本上解决了我的问题!!!玩了这么久还是没修好,万分感谢!因此,如果我打开手风琴,使用 flexbox 会使我的元素重新对齐并正确浮动?
  • 你需要用 flexbox 对你的布局进行一些相当大的改造,但是是的,应该有办法。或者,如果您可以以某种方式使 <details> 元素在网格中处于顶层(没有 .compactblock 包装器 <div>),您可以使用 details[open] { grid-row-end: span [#] }(其中 [#] 是要跨越的适当行数;见this example])。
  • 非常感谢,因为这是一个小爱好项目,我主要关心网站的内容,我会像现在一样保留它,因为它仍然很有用,如果我会重新考虑我将对网站进行重大修改。非常感谢你帮了我很多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多