我试图通过拖动列分隔符(或调整占位符)来动态调整CSS网格布局框的大小。
我在nav
元素上设置了resize:horizontal;
以进行调整大小,当我拖动元素右下角的小调整柄时它会被调整大小,但相邻列的宽度不会自动调整,导致重叠。这里是一个有问题的codepen。
HTML:
<main>
<nav>#1</nav>
<header>#2</header>
<section>#3</section>
</main>
CSS:
main {
display: grid;
border: 3px dotted red;
grid-gap: 3px;
grid-template-columns: 200px 1fr;
grid-template-rows: 100px 1fr;
height: 100%;
}
nav {
grid-column: 1;
grid-row: 1;
grid-row: 1 / span 2;
resize: horizontal;
overflow: scroll;
border: 3px dotted blue;
}
我本以为css网格引擎会自动处理这种情况,但显然它没有。
我尝试了jquery-ui resizable,但它似乎与css网格不兼容。
我正在研究如何通过使用jquery将grid属性 grid-template-columns / rows:
设置为动态值来实现它,但不清楚如何捕获通过调整大小手柄调整元素时抛出的事件。 jQuery resize 事件仅在window
对象上触发,而不是dom元素。
有什么办法可以做到这一点,而不必处理像dragstart / dragend这样的低级鼠标事件吗?