Add multisender functionality with UI components and blockchain integration
This commit is contained in:
237
multisender_sample.html
Normal file
237
multisender_sample.html
Normal file
@@ -0,0 +1,237 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>MULTI SENDER</title>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
|
||||
<style>
|
||||
:root {
|
||||
--gap: 20px;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
margin: 0;
|
||||
font-family: sans-serif;
|
||||
font-size: 12px;
|
||||
scroll-snap-type: y mandatory;
|
||||
scroll-behavior: smooth;
|
||||
scroll-padding-top: 0;
|
||||
overscroll-behavior: contain;
|
||||
}
|
||||
|
||||
html, body {
|
||||
margin: 0;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
.wrap {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
align-items: start;
|
||||
padding: var(--gap);
|
||||
gap: var(--gap);
|
||||
}
|
||||
|
||||
.wrap fieldset {
|
||||
flex-grow: 1;
|
||||
padding: 1.5rem;
|
||||
border: 1px solid #CCC;
|
||||
border-radius: 0.5rem;
|
||||
height: calc(100vh - 80px);
|
||||
}
|
||||
|
||||
.wrap fieldset:first-child {
|
||||
flex-grow: 0;
|
||||
flex-basis: 500px;
|
||||
}
|
||||
|
||||
.wrap fieldset legend {
|
||||
font-size: 1.5rem;
|
||||
font-weight: bold;
|
||||
padding: 0 2rem 0 .75rem;
|
||||
}
|
||||
|
||||
|
||||
fieldset ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
fieldset ul > li {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
fieldset label {
|
||||
font-size: 1.2rem;
|
||||
font-weight: bold;
|
||||
margin-bottom: 0.5rem;
|
||||
padding-left: 0.375rem;
|
||||
}
|
||||
|
||||
fieldset label+input {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 3rem;
|
||||
padding: .375rem .75rem;
|
||||
font-size: 1rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.5;
|
||||
color: #495057;
|
||||
background-color: #fff;
|
||||
background-clip: padding-box;
|
||||
border: 1px solid #ced4da;
|
||||
border-radius: .5rem;
|
||||
transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
|
||||
}
|
||||
|
||||
fieldset label+input:focus {
|
||||
color: #495057;
|
||||
background-color: #fff;
|
||||
border-color: #808080;
|
||||
outline: 0;
|
||||
box-shadow: 0 0 0 .2rem rgba(100, 100, 100, .25);
|
||||
}
|
||||
|
||||
fieldset label+input[type="file"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
fieldset input[type="file"]+label {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 10rem;
|
||||
border: 2px dotted #CCC;
|
||||
border-radius: .5rem;
|
||||
}
|
||||
|
||||
fieldset input[type="file"]+label::before {
|
||||
content: '업로드 할 파일을 선택하거나 드레그&드롭하세요.';
|
||||
color: rgba(0,0,0,.5);
|
||||
font-weight: 400;
|
||||
text-shadow: 0 0 2px rgba(0,0,0,.7);
|
||||
}
|
||||
|
||||
fieldset table {
|
||||
display: table;
|
||||
width: 100%;
|
||||
caption-side: bottom;
|
||||
border-collapse: separate;
|
||||
box-sizing: border-box;
|
||||
border-spacing: 1px;
|
||||
border-color: gray;
|
||||
background-color: #aaa;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
fieldset thead {
|
||||
background-color: rgba(0,0,0,.7);
|
||||
border-bottom: 2px solid rgba(0,0,0,1);
|
||||
color: white;
|
||||
}
|
||||
fieldset th {
|
||||
text-align: center;
|
||||
padding: .375rem .725rem;
|
||||
}
|
||||
fieldset td {
|
||||
background-color: rgba(255,255,255,.9);
|
||||
padding: .2rem .5rem;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
fieldset tr[row-type="sum"] {
|
||||
border-top: 2px solid #aaa;
|
||||
}
|
||||
|
||||
[data-type="number"] {
|
||||
text-align: right;
|
||||
padding: .2rem 1rem;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1200px) {
|
||||
|
||||
.wrap {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.wrap fieldset {
|
||||
flex-grow: 1 !important;
|
||||
flex-basis: unset;
|
||||
width: 100%;
|
||||
height: unset;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
|
||||
<fieldset>
|
||||
<legend>UPLOAD</legend>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<label for="contract">토큰 컨트랙트</label>
|
||||
<input type="text" id="contract" value="0x36b8dE7c6B06B3f170003452114f0B8E6BcFEE18" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="file">보내는 계좌</label>
|
||||
<input type="file" id="file" accept=".xls,.xlsx,.csv" />
|
||||
<label for="file"></label>
|
||||
</li>
|
||||
</ul>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>DETAIL</legend>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>항목1</th>
|
||||
<th>항목2</th>
|
||||
<th>항목3</th>
|
||||
<th>항목4</th>
|
||||
<th>항목5</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>값1</td>
|
||||
<td>값2</td>
|
||||
<td>값3</td>
|
||||
<td>값4</td>
|
||||
<td data-type="number">1.25</td>
|
||||
</tr>
|
||||
|
||||
<tr row-type="sum">
|
||||
<td colspan="4">항목5 합계</td>
|
||||
<td data-type="number">1.25</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user