웹 UI 라이브러인 GWC에서 제공하는 Card 컴포넌트에 대한 예제 코드입니다.
먼저 DOM 구성은 다음과 같습니다.
<div class="center">
<gwc-card class="card1" label="도구모음" gwc-draggable="true">
<div class="vcenter">
<gwc-toolbutton class="toolbutton1" icon="images/icon1.png"></gwc-toolbutton>
<gwc-toolbutton class="toolbutton2" icon="images/icon2.png"></gwc-toolbutton>
<gwc-colorpicker value="#ffff00"></gwc-colorpicker>
<gwc-toolbutton class="toolbutton3" icon="images/icon3.png"></gwc-toolbutton>
</div>
</gwc-card>
<gwc-card class="card2" label="PS5 게임 타이틀" gwc-draggable="true">
<div class="vcenter">
<gwc-image shape="circle" src="./images/ps5_returnal.jpg"></gwc-image>
<gwc-image shape="circle" src="./images/ps5_kena.webp"></gwc-image>
<gwc-image shape="circle" src="./images/ps5_sackboy.jpg"></gwc-image>
</div>
</gwc-card>
<gwc-card class="card3" id="card" label="입력 폼" gwc-draggable="true"></gwc-card>
</div>
<div class="center">
<gwc-card class="card1" label="도구모음" gwc-draggable="true">
<div class="vcenter">
<gwc-toolbutton class="toolbutton1" icon="images/icon1.png"></gwc-toolbutton>
<gwc-toolbutton class="toolbutton2" icon="images/icon2.png"></gwc-toolbutton>
<gwc-colorpicker value="#ffff00"></gwc-colorpicker>
<gwc-toolbutton class="toolbutton3" icon="images/icon3.png"></gwc-toolbutton>
</div>
</gwc-card>
<gwc-card class="card2" label="PS5 게임 타이틀" gwc-draggable="true">
<div class="vcenter">
<gwc-image shape="circle" src="./images/ps5_returnal.jpg"></gwc-image>
<gwc-image shape="circle" src="./images/ps5_kena.webp"></gwc-image>
<gwc-image shape="circle" src="./images/ps5_sackboy.jpg"></gwc-image>
</div>
</gwc-card>
<gwc-card class="card3" id="card" label="입력 폼" gwc-draggable="true"></gwc-card>
</div>
그리고 CSS 구성은 다음과 같구요.
.center {
display: flex;
width: 100%;
height: 100%;
justify-content: center;
align-items: center;
flex-direction: column;
gap: 1em;
}
.hcenter {
display: flex;
align-items: center;
gap: 0.2em;
flex-direction: column;
gap: 0.5em;
}
.vcenter {
display: flex;
align-items: center;
gap: 0.2em;
padding: 0.5em 0.5em 0 0.5em;
}
gwc-image {
width: 7em;
height: 7em;
}
gwc-textinput {
width: 20em;
}
gwc-select {
width: 20em;
}
.card1 {
width: 360px;
height: 150px;
}
.card2 {
width: 400px;
height: 170px;
}
.card3 {
width: 500px;
height: 120px;
}
.center {
display: flex;
width: 100%;
height: 100%;
justify-content: center;
align-items: center;
flex-direction: column;
gap: 1em;
}
.hcenter {
display: flex;
align-items: center;
gap: 0.2em;
flex-direction: column;
gap: 0.5em;
}
.vcenter {
display: flex;
align-items: center;
gap: 0.2em;
padding: 0.5em 0.5em 0 0.5em;
}
gwc-image {
width: 7em;
height: 7em;
}
gwc-textinput {
width: 20em;
}
gwc-select {
width: 20em;
}
.card1 {
width: 360px;
height: 150px;
}
.card2 {
width: 400px;
height: 170px;
}
.card3 {
width: 500px;
height: 120px;
}
.center { display: flex; width: 100%; height: 100%; justify-content: center; align-items: center; flex-direction: column; gap: 1em; } .hcenter { display: flex; align-items: center; gap: 0.2em; flex-direction: column; gap: 0.5em; } .vcenter { display: flex; align-items: center; gap: 0.2em; padding: 0.5em 0.5em 0 0.5em; } gwc-image { width: 7em; height: 7em; } gwc-textinput { width: 20em; } gwc-select { width: 20em; } .card1 { width: 360px; height: 150px; } .card2 { width: 400px; height: 170px; } .card3 { width: 500px; height: 120px; }
js 코드는 다음과 같습니다.
window.onload = () => {
card.content = `
<div class="hcenter">
<div class="vcenter">
<gwc-label content="좌우명" outline-type="concave"></gwc-label>
<gwc-textinput value="인간은 말이 아닌 행위로 정의된다."></gwc-textinput>
</div>
<gwc-button title="확인"></gwc-button>
</div>
`;
GeoServiceWebComponentManager.instance.update();
};
window.onload = () => {
card.content = `
<div class="hcenter">
<div class="vcenter">
<gwc-label content="좌우명" outline-type="concave"></gwc-label>
<gwc-textinput value="인간은 말이 아닌 행위로 정의된다."></gwc-textinput>
</div>
<gwc-button title="확인"></gwc-button>
</div>
`;
GeoServiceWebComponentManager.instance.update();
};
window.onload = () => { card.content = ``; GeoServiceWebComponentManager.instance.update(); };
실행 결과는 다음과 같습니다.
이 컴포넌트에 modal이라는 속성이 추가되어 true 값으로 설정되면 모달 방식으로 처리됩니다.
<div class="center">
<gwc-card modal="true">
</gwc-card>
</div>
<div class="center">
<gwc-card modal="true">
</gwc-card>
</div>
이 컴포넌트의 타이틀 우측에 다양한 UI를 추가할 수 있습니다. 예를 들어 버튼을 추가하는 코드는 다음과 같습니다.
card.domHeadLeftSpace.innerHTML = `
<gwc-toolbutton icon="../images/close.svg"></gwc-toolbutton>
`;
card.domHeadLeftSpace.querySelector("gwc-toolbutton").addEventListener("click", () => {
alert("Hello!");
});
card.domHeadLeftSpace.innerHTML = `
<gwc-toolbutton icon="../images/close.svg"></gwc-toolbutton>
`;
card.domHeadLeftSpace.querySelector("gwc-toolbutton").addEventListener("click", () => {
alert("Hello!");
});
card.domHeadLeftSpace.innerHTML = ``; card.domHeadLeftSpace.querySelector("gwc-toolbutton").addEventListener("click", () => { alert("Hello!"); });