์๋ ํ์ธ์,
ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ๋ค์ ์์ ๊ทธ๋ฆฌ๋์์ ์ค์ฒฉ ๊ทธ๋ฆฌ๋๋ฅผ ์ ๊ฑฐํ ๋ ์ด์ํ ๋์์ด ๋ฐ์ํ์ต๋๋ค.
๋ ๊ฐ์ ๊ทธ๋ฆฌ๋๊ฐ ์์ผ๋ฉฐ ๊ทธ ์ค ํ๋๋ ๋ค๋ฅธ ํ๋์ ํน์ ํญ๋ชฉ์ ์ค์ฒฉ๋์ด ์์ต๋๋ค.
์ผ๋ถ ํ์ธ๋์ ์ ํ/์ ํ ์ทจ์ํ์ฌ ๋ ๊ทธ๋ฆฌ๋์์ ์์ ฏ์ ์ถ๊ฐ ๋ฐ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
์ค์ฒฉ ๊ทธ๋ฆฌ๋์์ ์์ ฏ์ ์ ๊ฑฐํ ๋ ์์ ๊ทธ๋ฆฌ๋ ์์ ฏ์ ํฌ๊ธฐ๋ฅผ ํญ์ ์ค์ฒฉ ๊ทธ๋ฆฌ๋๋งํผ ์ต๋๋ก ์กฐ์ ํฉ๋๋ค.
์ค์ฒฉ ๊ทธ๋ฆฌ๋๊ฐ ๋น์ด ์์ผ๋ฉด ๊ธฐ๋ณธ ๊ทธ๋ฆฌ๋์์ ์ ๊ฑฐํด์ผ ํฉ๋๋ค.
์ค์ ๋ก ํ๋์ ํน์ ๊ฒฝ์ฐ๊น์ง ๋ชจ๋ ๊ฒ์ด ์ ์๋ํฉ๋๋ค.
์ด ๋จ๊ณ๊ฐ ์๋ฃ๋๋ฉด ๋ฉ์ธ ๊ทธ๋ฆฌ๋์ ์์ ฏ ์ค ๋ง์ง๋ง ๋ช ๊ฐ๋ ์์น๋ฅผ ์๊ณ ๋ฉ์ธ ๊ทธ๋ฆฌ๋์ ์ฒซ ๋ฒ์งธ ํ์ผ๋ก ์ ํํฉ๋๋ค. ๋ชจ๋ ๋ฐ์ดํฐ ์์ฑ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ง๋๊ณ ์์น๋ง ์๋ชป๋ฉ๋๋ค(์๋จ: 0, ํ๋จ: ๊ทธ๋ฆฌ๋ ๋์ด ). ์ค์ฒฉ๋ ๊ทธ๋ฆฌ๋๋ฅผ ๋ค์ ์ถ๊ฐํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ ์์น๋ก ๋์๊ฐ์ง๋ง ์ค์ฒฉ๋ ๊ทธ๋ฆฌ๋๋ฅผ ๋ค์ ์ ๊ฑฐํ ํ ์ด์ํ ์ผ์ด ๋ค์ ๋ฐ์ํฉ๋๋ค. ์์ ๋จ๊ณ๋ฅผ ํ ๋ฒ ์ํํ ๋ค์ ๊ธฐ๋ณธ ๊ทธ๋ฆฌ๋์์ ์์ ฏ์ ์ ๊ฑฐํ๋ ค๊ณ ํ๋ฉด ํด๋น ์์ ฏ๋ ์ฒซ ๋ฒ์งธ ํ์ ๊ณ์ ๋ ์๋ค๊ฐ ์์ ฏ์ ์ถ๊ฐํ ํ ๋ค์ ๋์๊ฐ๋๋ค. ์ค์ฒฉ๋ ๊ทธ๋ฆฌ๋๋ฅผ ๋ง์ง๋ง ํ ์ด์ธ์ ๋ค๋ฅธ ์์น๋ก ์ด๋ํ๋ฉด ์๋ชป๋ ์์น ๋ณ๊ฒฝ์ด ๋ฐ์ํ์ง ์์ต๋๋ค.
์กฐ์ฌํ ๋ฐ์ ๊ฐ์ด, ๋ ๊ทธ๋ฆฌ๋์ ์์ ฏ์ ์ถ๊ฐํ๊ณ ์ ๊ฑฐํ๋ ๊ฒ์ด ์ ๋๋ก ์๋ํ ๋๊น์ง ์ค์ฒฉ ๊ทธ๋ฆฌ๋์ ์์ ์์ ฏ ํฌ๊ธฐ๋ฅผ ํ ๋ฒ ์กฐ์ ํ ํ์๋ง ์ด์ํ ์์น ๋ณ๊ฒฝ์ด ๋ฐ์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ํฌ๊ธฐ ์กฐ์ ์ด ๋ฌธ์ ๋ฅผ ๋ง์ณ ๋๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ถํํ๋ ์ด๊ฒ์ ๋ ํฐ ์คํฌ๋ฆฝํธ์ ์ผ๋ถ์ผ ๋ฟ์ด๋ฏ๋ก ์๋ํ๋ ๋ฐ์ด์ฌ๋ฆฐ์ ์ ๊ณตํ ์ ์์ผ๋ฉฐ ์ด๋ป๊ฒ ๋ณด์ด๋์ง ์คํฌ๋ฆฐ์ท๋ง ์ฒจ๋ถํ ์ ์์ต๋๋ค.
์ค์ฒฉ(ํ
๋๋ฆฌ) ๊ทธ๋ฆฌ๋๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ ์:
์ค์ฒฉ๋ ๊ทธ๋ฆฌ๋๋ฅผ ์ ๊ฑฐํ ํ ๋ค๋ฅธ ์์ ฏ ์ค ์ผ๋ถ๋ ์๋ ์์น์์ ์ฌ๋ผ์ง๊ณ ๊ธฐ๋ณธ ๊ทธ๋ฆฌ๋์ ์ฒซ ๋ฒ์งธ ํ์ผ๋ก ๋ ๋ค๋๋ ๋ฐ๋ฉด, ํด๋น ์์น๋ ๊ทธ๋ฆฌ๋์ ์ฌ๋ฐ๋ฅธ ์์น(ํ๋จ์ ๋น ๊ณต๋ฐฑ)์ ์ ์ง๋ฉ๋๋ค.
๋ด ๊ทธ๋ฆฌ๋๋ ๋ค์ ์ต์ ์ผ๋ก ์ด๊ธฐํ๋ฉ๋๋ค.
grid = $('#grid.grid-stack').gridstack({
width: 2,
cellHeight: 84,
verticalMargin: 4,
animate: true,
disableOneColumnMode: true,
height: 0
}).data('gridstack');
gridNested = $('#gridNested.grid-stack').gridstack({
width: 2,
cellHeight: 80,
verticalMargin: 4,
animate: true,
disableOneColumnMode: true,
float: true,
height: 0
}).data('gridstack');
HTML ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<div id="grid" class="grid-stack grid-stack-2">
<div id="element1" class="grid-stack-item element nestedblock" data-id="1" data-gs-width="2" data-gs-height="1" data-gs-min-width="2" data-gs-max-width="2" data-gs-max-height="8" data-gs-y="0" data-gs-x="0">
<div class="grid-stack-item-content">
<div id="gridNested" class="grid-stack grid-stack-2">
<div id="element20" class="grid-stack-item element" data-id="20" data-gs-width="1" data-gs-height="1" data-gs-min-width="1" data-gs-max-width="2" data-gs-max-height="1" data-gs-y="0" data-gs-x="0">
<div class="grid-stack-item-content">
<!--contents-->
</div>
</div>
<div id="element21" class="grid-stack-item element" data-id="21" data-gs-width="1" data-gs-height="1" data-gs-min-width="1" data-gs-max-width="2" data-gs-max-height="1" data-gs-y="0" data-gs-x="1">
<div class="grid-stack-item-content">
<!--contents-->
</div>
</div>
</div>
</div>
</div>
<div id="element2" class="grid-stack-item element" data-id="2" data-gs-width="1" data-gs-height="1" data-gs-min-width="1" data-gs-max-width="2" data-gs-max-height="1" data-gs-y="1" data-gs-x="0">
<div class="grid-stack-item-content">
<!--contents-->
</div>
</div>
<div id="element3" class="grid-stack-item element" data-id="3" data-gs-width="1" data-gs-height="1" data-gs-min-width="1" data-gs-max-width="2" data-gs-max-height="1" data-gs-y="1" data-gs-x="1">
<div class="grid-stack-item-content">
<!--contents-->
</div>
</div>
</div>
๋ค์๊ณผ ๊ฐ์ด ์ค์ฒฉ ๊ทธ๋ฆฌ๋์ ์์ ์์ ฏ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํฉ๋๋ค.
function resizeNestedParentWidget(){
var nestedParentWidget = $('#grid .grid-stack-item.nestedblock');
var nestedGridHeight = parseInt($('#gridNested').attr('data-gs-current-height'));
var nestedParentWidgetCurrentHeight = parseInt($(nestedParentWidget).attr('data-gs-height'));
if(nestedGridHeight < nestedParentWidgetCurrentHeight){
grid.resize(nestedParentWidget,null,nestedGridHeight);
}
}
๋ค์๊ณผ ๊ฐ์ด ์ค์ฒฉ ๊ทธ๋ฆฌ๋์์ ์์ ฏ์ ์ ๊ฑฐํฉ๋๋ค.
![gridstack1](https://cloud.githubusercontent.com/assets/15252130/25693244/9b3f9ac8-30a8-11e7-9621-1c13cfe5acdb.jpg)
var elem = $('#grid #element'+elemID);
gridNested.removeWidget(elem);
if($('#gridNested .grid-stack-item').length < 1){
grid.removeWidget($('#grid .grid-stack-item.nestedblock'));
} else {
resizeNestedParentWidget();
}
๋ด๊ฐ ๋ฌด์์ ์๋ชปํ๊ณ ์์ง? ๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ์๋ชป ์ฌ์ฉํฉ๋๊น? ์๋๋ฉด ๋ฒ๊ทธ๋ฅผ ์ฐพ์์ต๋๊น? :)
๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์, @PrincessOfSecret ! ์คํฌ๋ฆฐ์ท์ด ๋งค์ฐ ํฅ๋ฏธ๋กญ๊ฒ ๋ณด์ ๋๋ค!
๊ทธ ๋ชจ๋ ์ฝ๋๋ฅผ ์ ๊ณตํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ํ์ง๋ง ๋ฌธ์ ์ ์์ ํจ๊ป jsfiddle์ ์กฐํฉํ ์ ์์ต๋๊น? ๊ทธ๊ฒ์ด ๋ด๊ฐ ๋ฌธ์ ๋ฅผ ํ์ธํ๊ณ ํด๊ฒฐํ ์ ์๋์ง ํ์ธํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋๋ค.
๋ต์ฅ์ ๋ณด๋ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
jsfiddle์ ๊ตฌ์ฑํ๋ ค๊ณ ํ์ง๋ง ๋ถํํ๋ ์๋ํ์ง ์์์ต๋๋ค.
๋ด๊ฐ ๋งํ๋ฏ์ด ๊ทธ๊ฒ์ ๊ฝค ๋ณต์กํ ๋ถ๋ถ์ด๊ณ ๋๋ ํ ์ ์์๊ธฐ ๋๋ฌธ์
ํ
์คํธํ ์ ์๋๋ก ์ด ๋ฌธ์ ๋ฅผ ๋ถ๋ฆฌํ์ญ์์ค. ๋๋ ๊ทธ๊ฒ์ ์ฌํํ๋ ค๊ณ ๋
ธ๋ ฅํ ๊ฒ์ด๋ค.
jsfiddle์ ๋ค์ ์ฌ์ฉํ์ง๋ง ์ ๋๋ก ์๋ํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ด์จ๋ , ์ด ๋ฌธ์ ๊ฐ ํน์ ํ
๋ด๊ฐ ์ค๋ช
ํ๋ ๊ฒฝ์ฐ. ๊ทธ๋ฐ ๊ฒฝ์ฐ๊ฐ ๋ง์ง ์๊ธฐ ๋๋ฌธ์
์ ์ฒด ์คํฌ๋ฆฝํธ๊ฐ ๋ชฉ์ ์ ๋ฌ์ฑํ์ง๋ง ๋ฌผ๋ก
ํด๊ฒฐ์ฑ
์ ์ฐพ๊ณ ์ด ๋ฌธ์ ๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
ํฌ๊ธฐ ์กฐ์ ์ ํ์ง ์์ ๋๊น์ง๋ ์ด๋ป๊ฒ ๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋๋ ์ฐพ์ ์ ์์๋ค
๋ฌด์์ด ๊ทธ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ๊ฒ์
๋๋ค. ๊ทธ ์์ ฏ์ ์ํ ๊ณต๊ฐ์ด ์ด์ํ๋ค.
๋ฉ์ธ ๊ทธ๋ฆฌ๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ง๋๊ณ x ์์น๋ ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ง๋ฉ๋๋ค.
๋ชจ๋ ์์ ฏ์ ๋ํด y ์์น๋ง ์ฌ๋ฐ๋ฅด์ง ์๊ฒ ๋ฉ๋๋ค. ๋ ์ด์ํ๋ค
์์น๋ฅผ ๋ณ๊ฒฝํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ ์์ผ๋ก ๋์๊ฐ๋๋ค. ์ธ๊ฐ
ํฌ๊ธฐ ์กฐ์ ์ผ๋ก ์ธํด ์ผ๋ถ ์ต์
์ด๋ ๋ณ์๊ฐ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
์ฌ๋ฐ๋ฅด๊ฒ ๊ณ์ฐํ์ง ์๋๋ก ์์น ์ง์ ? ๋๋ ๋น์ ์ ์ฝ๋์ ๋ฐ์ด๋ค์ง ์์์ต๋๋ค
๋ง์ด, ๊ทธ๋์ ๋๋ ๋จ์ง ์ถ์ธกํ๊ณ ์๋ค.
์ด์จ๋ ๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์, @PrincessOfSecret https://github.com/PrincessOfSecret ! ๋น์ ์
์คํฌ๋ฆฐ์ท์ ๋งค์ฐ ํฅ๋ฏธ๋กญ๊ฒ ๋ณด์ ๋๋ค!๋ชจ๋ ์ฝ๋๋ฅผ ์ ๊ณตํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๋ฌธ์ ์ ์๋ฅผ ๋ค์ด jsfiddle? ๊ทธ๊ฒ ๋ด๊ฐ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ด์ผ
๋ฌธ์ ๋ฅผ ํ์ธํ๊ณ ํด๊ฒฐํ ์ ์๋์ง ํ์ธํฉ๋๋ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/troolee/gridstack.js/issues/655#issuecomment-299663059 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AOi6okg0mTgUbBVB_pPSTYmi2UT3HSYmks5r3NM_gaJpZM4NQTuU
.
์ผ๋ง๋ ๋ง์ ๋ค๋ฅธ ์ธ์ด๊ฐ gridstack์ ์ฌ์ฉํ๋์ง ๊ถ๊ธํฉ๋๋ค. :). ์ ๊ฐ ํ์คํ ๋์๋๋ฆด ์ ์์์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง, dylan์๊ฒ ์ง์ ์ด๋ฉ์ผ์ ๋ณด๋ด์๋ ค๋ฉด. [email protected] , ๊ทํ์ ์ฝ๋๋ฅผ ๋ ์ง์ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ป๊ฒ ์ฌ์ฉ๋๊ณ ์๋์ง๋ ๊ถ๊ธํฉ๋๋ค! ํธํ ์ฉ์ธ๋ฏ?
๋๋ ๋น์ทํ ๋ฌธ์ ๊ฐ ์์๊ณ ์์๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ ์ ์์๋ฅผ ์ด๋ํ์ฌ ํด๊ฒฐํ์ต๋๋ค.
grid.move($elem, 0, 0);
grid.removeWidget($elem);
@carlsch ๊ฐ์ฌํฉ๋๋ค. ์ด ํธ๋ฆญ์ผ๋ก ๋ด ๋ฌธ์ ๋ ํด๊ฒฐ๋์์ต๋๋ค. :)
์ค์ฒฉ ๊ทธ๋ฆฌ๋๊ฐ ์์ด๋ GridStack 0.3.0์์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค(๋จ์ํ ๋จ์ผ ๊ทธ๋ฆฌ๋, ์์ ฏ์ ํน์ ๊ตฌ์ฑ์์๋ง ๋ฌธ์ ๊ฐ ๋ฐ์ํจ). @carlsch ์ ์์ ์ฌํญ์ด ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค(๊ฐ์ฌํฉ๋๋ค!).
๊ทธ๋ฌ๋ GridStack 0.4.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ฉด ํดํน ์์ด๋ ๋ชจ๋ ๊ฒ์ด ์ ๋๋ก ์๋ํฉ๋๋ค. ๋ฐ๋ผ์ @PrincessOfSecret ๋ฐ @carlsch๋ 0.4.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@radiolips ์ ๋ฒ์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ค์ฒฉ ๊ทธ๋ฆฌ๋๊ฐ ์์ด๋ GridStack 0.3.0์์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค(๋จ์ํ ๋จ์ผ ๊ทธ๋ฆฌ๋, ์์ ฏ์ ํน์ ๊ตฌ์ฑ์์๋ง ๋ฌธ์ ๊ฐ ๋ฐ์ํจ). @carlsch ์ ์์ ์ฌํญ์ด ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค(๊ฐ์ฌํฉ๋๋ค!).
๊ทธ๋ฌ๋ GridStack 0.4.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ฉด ํดํน ์์ด๋ ๋ชจ๋ ๊ฒ์ด ์ ๋๋ก ์๋ํฉ๋๋ค. ๋ฐ๋ผ์ @PrincessOfSecret ๋ฐ @carlsch๋ 0.4.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@radiolips ์ ๋ฒ์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!