我想通過用鼠標拖動列分隔符(或調整佔位符大小)動態調整css網格佈局框的大小。用鼠標動態調整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-template-columns/rows:
設置爲動態值,但不清楚如何通過調整大小處理元素來調整元素的大小。 jquery resize事件僅在window
對象上觸發,而不是在dom元素上觸發。
有什麼辦法可以做到這一點,而不必處理像dragstart/dragend這樣的低級別鼠標事件?
您可以檢查我給這裏的例子:https://stackoverflow.com/questions/38289204/jquery-ui-draggable-doesnt-resize-other-divs/38553541#38553541我認爲這是你是什麼尋找... – Dekel
偉大的問題。我認爲,一旦這項技術真正傳播開來,重新規模化的電網將成爲一件重要的事情。至於爲什麼第二列在拖出第一列時不重新調整大小,我認爲這是因爲該操作不會重排文檔。這裏有一個更完整的解釋:https://stackoverflow.com/q/37406353/3597276 –
@Dekel:謝謝!將嘗試查看它是否可以適應CSS網格佈局;否則可能不得不切換到使用浮動。 – ccpizza