在过去的几天里,我一直在试图理解CSS flexbox和网格是如何工作的,并试图将这些知识用于创建一个特定的UI,但到目前为止还没有任何进展。我几乎要放弃了。
UI看起来如下所示:
+----------+-----------------------+---------------------+-----------------+
| CANVAS-1 | DIV-3 | DIV-5 | DIV-7 |
| | | | |
| | | | |
| | | +-----------------+
| | | | DIV-8 |
+----------+-----------------------+---------------------+ |
| CANVAS-2 | DIV-4 | DIV-6 | |
| | | +----------------[4]
| | | | DIV-9 |
| | | | |
| | | | |
+---------[1]---------------------[2]-------------------[3]----------------+
忽略调整大小的能力,我可以设计这个布局没有许多问题。然而,我也必须允许调整大小,这也是我在过去两周里惨败的地方。我的制约因素如下:
width: 100vw, height: 100vh
)。DIV-8
的高度应该等于它的内容,而DIV-7/9
应该平均地占用剩余的空间。CANVAS-1
和CANVAS-2
应该有一个宽度,以便保持画布的高宽比(两个画布元素都定义了width="1242" height="2208"
属性。300px
。使用嵌套网格,我可以很好地实现这个布局。但是,我也应该允许按照以下规则调整布局:
[1]
拖到左边时,两个画布都应该缩小,同时保持其纵横比不变。不应允许拖过其初始位置。拖动这一行不应影响任何其他网格线。[2]
应该将网格线向左或向右移动,这样DIV-3/4
的最小宽度不小于400 or,DIV-5/6
的最小宽度不小于200 or。拖动这一行不应影响任何其他网格线。[3]
应该将网格线向左或向右移动,这样DIV-5/6
的最小宽度不小于200 to,DIV-7/8/9
的最小宽度不小于400 to。拖动这一行不应影响任何其他网格线。[4]
应该将DIV-7/8
和DIV-8/9
之间的网格线向上或向下移动,这样DIV-8
的高度应该保持不变,并且DIV-7
和DIV-9
之间将交换空间。DIV-3/4/5/6/7/8/9
应该呈现滚动条。resize: horizontal/vertical
和grid-template-cols: auto/minmax/min-content/max-content
等,而不需要任何JavaScript。请帮我弄清楚这是否可以单独使用CSS。如果没有,请向我指出这个问题的JavaScript解决方案。我尝试并测试了许多使用网格和柔性盒来实现这种布局的可能性,嵌套深度可达3层,但没有成功。请帮我解决这个问题。我相信我会在这里学到新的东西。:)
谢谢你,阿西姆
发布于 2020-12-29 23:25:08
经过几个小时的尝试(没有成功)与CSS单独,我跟随@戴的方向和冒险进入JavaScript。我偶然发现了内森·卡希尔( Nathan )的美丽图书馆网格分裂。通过为2px宽排水沟引入占位符列和修改CSS使其不使用auto
单元(库目前不支持),我能够稍微修改我的网格。连接它现在允许我干净地调整网格的大小,跨越任何我想要的垂直或水平的边缘。
谢谢内森(如果你看到这篇文章):
https://stackoverflow.com/questions/65486474
复制相似问题