๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
HTML + CSS ์‹œ๋ฆฌ์ฆˆ๐Ÿ•ธ

์นด๋“œ UI + ๋’ท ๋ฐฐ๊ฒฝ ๊ตฌ๋ถ„ [๊ตฌ๋ถ„์„  ์นด๋“œ UI] - feat.chatgpt

by @ENFJ 2024. 4. 8.

์š”์ฆ˜ ์‚ฌ์ดํŠธ UI ๋ฅผ ์‚ดํŽด๋ณด๋‹ˆ ์ด๋ ‡๊ฒŒ ์œ„์•„๋ž˜๋กœ ๋’ท๋ฐฐ๊ฒฝ ์ƒ‰์„ ๋‹ค๋ฅด๊ฒŒ ํ•œ๋’ค, ๊ทธ ์ƒ‰์ด ๊ตฌ๋ถ„๋˜๋Š” ์„  ์œ„์— ์นด๋“œ UI๋ฅผ ์œ„์น˜์‹œ์ผœ์„œ ์•„๋ž˜์™€ ๊ฐ™์€  ์ผ์ข…์˜ "๋ถ„ํ•  ๋ฐฐ๊ฒฝ" ๋˜๋Š” "๊ตฌ๋ถ„์„  ์นด๋“œ UI" ๋””์ž์ธ์„ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

chatgpt ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ค์–ด๋ณด์ž.
์ €์˜ ์ฝ”๋“œ ๊ฒฐ๊ณผ๋ฅผ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•œ ์งˆ๋ฌธ ๊ณผ์ •์ด์˜€์Šต๋‹ˆ๋‹ค.

1. ๋’ค์— ๋ฐฐ๊ฒฝ์„ 2:8 ๋น„์œจ๋กœ ๋ฐฐ๊ฒฝ์ƒ‰์„ ๋‚˜๋ˆ„๊ณ  ๊ทธ ์œ„์— ์นด๋“œํ˜• UI๋กœ ๋›ฐ์šฐ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
2. ์œ„ ์•„๋ž˜๋กœ ๋ฐฐ๊ฒฝ์ƒ‰์„ ๋‚˜๋ˆ„์„ธ์š”
3. ๋’ท ๋ฐฐ๊ฒฝ ๋‚˜๋ˆ ์ง€๋Š” ๋ถ€๋ถ„์— ์นด๋“œ๋ฅผ ์œ„์น˜์‹œ์ผœ์ฃผ์„ธ์š”.
4. ๋’ท ๋ฐฐ๊ฒฝ์„ ์œ„์•„๋ž˜๋กœ ๋‚˜๋ˆ„๊ณ , ๋‚˜๋ˆ ์ง€๋Š” ์„  ์œ„์— ์นด๋“œ๋ฅผ ๋ฐฐ์น˜์‹œ์ผœ์ฃผ์„ธ์š”.
5. ๊ทธ์น˜๋งŒ ์•„์ง ์ œ๊ฐ€ ์›ํ•˜๋Š”๋Œ€๋กœ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์นด๋“œ ๋ฅผ ๋งจ ์•ž์œผ๋กœ ์œ„์น˜์‹œ์ผœ์„œ ์นด๋“œ ๋’ค์— ๋ฐฐ๊ฒฝ์ด ๋‚˜์˜ค๋„๋ก ํ•ด์ฃผ์„ธ์š”

 

 

๊ฒฐ๊ณผ

 

์ฝ”๋“œ


  
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>๊ณต์ง€์‚ฌํ•ญ ์ˆ˜์ •</title>
<link rel="stylesheet" href="/css/styles.css">
<link rel="stylesheet" href="/css/notice/notice-edit.css">
<!-- Bootstrap core JS-->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://cdn.startbootstrap.com/sb-forms-latest.js"></script>
<!-- CSRF ๋กœ ์ธํ•œ 403 ์—๋Ÿฌ ๋ฌธ์ œ ํ•ด๊ฒฐ -->
<meta name="_csrf" th:content="${_csrf.token}"/>
<meta name="_csrf_header" th:content="${_csrf.headerName}"/>
<style>
/* ๋ฐฐ๊ฒฝ์„ ์œ„ ์•„๋ž˜๋กœ ๋‚˜๋ˆ„๊ณ  ์นด๋“œ๋ฅผ ๋งจ ์•ž์œผ๋กœ ์œ„์น˜์‹œํ‚ค๋Š” ์Šคํƒ€์ผ */
.container {
position: relative;
width: 100%;
height: 100vh;
overflow: hidden;
}
.background {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
}
.top-bg, .bottom-bg {
flex: 1;
}
.card-wrapper {
position: relative;
z-index: 1; /* ์นด๋“œ๋ฅผ ๋งจ ์•ž์œผ๋กœ ์œ„์น˜์‹œํ‚ด */
display: flex;
justify-content: center;
align-items: center;
height: 100%;
}
.card {
width: 80%;
padding: 20px;
background-color: white;
border-radius: 10px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
</style>
</head>
<body>
<div class="container">
<div class="background">
<div class="top-bg" style="background-color: #E9ECEF;">
<!-- ์œ„์ชฝ ๋ฐฐ๊ฒฝ์ƒ‰ -->
</div>
<div class="bottom-bg" style="background-color: #F8F9FA;">
<!-- ์•„๋ž˜์ชฝ ๋ฐฐ๊ฒฝ์ƒ‰ -->
</div>
</div>
<div class="card-wrapper">
<div class="card">
<!-- ์ˆ˜์ •ํ•  ๋‚ด์šฉ ์ž…๋ ฅ ํผ -->
<h2>๊ณต์ง€์‚ฌํ•ญ ์ˆ˜์ •</h2>
<form id="editNoticeForm">
<div class="mb-3">
<label for="title" class="form-label">์ œ๋ชฉ</label>
<input type="text" class="form-control" id="title" name="title" th:value="${notice.title}" required>
</div>
<div class="mb-3">
<label for="content" class="form-label">๋‚ด์šฉ</label>
<textarea class="form-control" id="content" name="content" rows="5" th:text="${notice.content}" required></textarea>
</div>
<input type="hidden" id="noticeId" name="noticeId" th:value="${notice.id}">
<button type="button" class="btn btn-primary" onclick="submitEditNotice()">์ˆ˜์ •</button>
</form>
</div>
</div>
</div>
</body>
</html>

 

์œ„ ์ฝ”๋“œ์—์„œ๋Š” .container ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ๋ฐฐ๊ฒฝ์„ ๊ฐ์‹ธ๊ณ , ๋ฐฐ๊ฒฝ์„ ์œ„ ์•„๋ž˜๋กœ ๋‚˜๋ˆ„๋Š” .background ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์นด๋“œ๋ฅผ ๋งจ ์•ž์œผ๋กœ ์œ„์น˜์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์นด๋“œ๋ฅผ ๊ฐ์‹ธ๋Š” .card-wrapper ํด๋ž˜์Šค์— z-index: 1; ์†์„ฑ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์นด๋“œ๊ฐ€ ๋ฐฐ๊ฒฝ ์œ„์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

 


๋น„์œจ์„ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด!

 


  
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>๊ณต์ง€์‚ฌํ•ญ ์ˆ˜์ •</title>
<link rel="stylesheet" href="/css/styles.css">
<link rel="stylesheet" href="/css/notice/notice-edit.css">
<!-- Bootstrap core JS-->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://cdn.startbootstrap.com/sb-forms-latest.js"></script>
<!-- CSRF ๋กœ ์ธํ•œ 403 ์—๋Ÿฌ ๋ฌธ์ œ ํ•ด๊ฒฐ -->
<meta name="_csrf" th:content="${_csrf.token}"/>
<meta name="_csrf_header" th:content="${_csrf.headerName}"/>
<style>
/* ๋ฐฐ๊ฒฝ์„ ์œ„ ์•„๋ž˜๋กœ ๋‚˜๋ˆ„๊ณ  ์นด๋“œ๋ฅผ ๋งจ ์•ž์œผ๋กœ ์œ„์น˜์‹œํ‚ค๋Š” ์Šคํƒ€์ผ */
.container {
position: relative;
width: 100%;
height: 100vh;
overflow: hidden;
}
.background {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
}
.top-bg, .bottom-bg {
flex: 2; /* ์œ„ ์•„๋ž˜ ๋ฐฐ๊ฒฝ ๋น„์œจ ์กฐ์ • */
}
.bottom-bg {
flex: 7; /* ์œ„ ์•„๋ž˜ ๋ฐฐ๊ฒฝ ๋น„์œจ ์กฐ์ • */
}
.card-wrapper {
position: relative;
z-index: 1; /* ์นด๋“œ๋ฅผ ๋’ท๋ฐฐ๊ฒฝ ๊ตฌ๋ถ„์„  ์œ„๋กœ ์œ„์น˜์‹œํ‚ด */
display: flex;
justify-content: center;
align-items: center;
height: 50%;
}
.card {
width: 80%;
padding: 20px;
background-color: white;
border-radius: 10px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
</style>
</head>
<body>
<div class="container">
<div class="background">
<div class="top-bg" style="background-color: #E9ECEF;">
<!-- ์œ„์ชฝ ๋ฐฐ๊ฒฝ์ƒ‰ -->
</div>
<div class="bottom-bg" style="background-color: #F8F9FA;">
<!-- ์•„๋ž˜์ชฝ ๋ฐฐ๊ฒฝ์ƒ‰ -->
</div>
</div>
<div class="card-wrapper">
<div class="card">
<!-- ์ˆ˜์ •ํ•  ๋‚ด์šฉ ์ž…๋ ฅ ํผ -->
<h2>๊ณต์ง€์‚ฌํ•ญ ์ˆ˜์ •</h2>
<form id="editNoticeForm">
<div class="mb-3">
<label for="title" class="form-label">์ œ๋ชฉ</label>
<input type="text" class="form-control" id="title" name="title" th:value="${notice.title}" required>
</div>
<div class="mb-3">
<label for="content" class="form-label">๋‚ด์šฉ</label>
<textarea class="form-control" id="content" name="content" rows="5" th:text="${notice.content}" required></textarea>
</div>
<input type="hidden" id="noticeId" name="noticeId" th:value="${notice.id}">
<button type="button" class="btn btn-primary" onclick="submitEditNotice()">์ˆ˜์ •</button>
</form>
</div>
</div>
</div>
</body>
</html>

์ด 3๋ถ€๋ถ„์„ ์กฐ๊ธˆ์”ฉ ์ˆ˜์ •ํ•˜์—ฌ ํ™•์ธํ•ด๋ณด์„ธ์š”.

 

 

 


 

์œ„ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ด์„œ 

https://www.w3schools.com/css/tryit.asp?filename=trycss_editor

 

W3Schools online HTML editor

The W3Schools online code editor allows you to edit code and view the result in your browser

www.w3schools.com

์—ฌ๊ธฐ์— ์ฝ”๋“œ ๋ถ€๋ถ„์— ๋ถ™์—ฌ๋„ฃ์–ด์„œ ์‹คํ–‰์‹œ์ผœ๋ณด์„ธ์š”. ๋น ๋ฅด๊ณ  ๊ฐ„ํŽธํ•˜๊ฒŒ ์‹คํ–‰๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

'HTML + CSS ์‹œ๋ฆฌ์ฆˆ๐Ÿ•ธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๊ฐ„๋‹จํ•œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ _ HTML  (3) 2022.11.20