반응형 달력을 만들어 보자
By Sera on
월간 달력은 큰 화면에서 보기 좋으나 모바일 화면에서는 보기가 어렵다. 모바일에서도 최적화 하는 방법이 몇개 있지만 그 중 스타일을 다르게 하는 방법을 소개한다. 너비 1000px 이하는 주간, 이상은 월간 달력으로 만들어 보자.
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
//잠깐 table에서 block 으로 변경!
.calTable{width:100%;}
.calTable th,
.calTable td{display:block;width:100%;height: 82px;padding: 10px 0;border-bottom:1px solid #cdcdcd;}
.calTable th{line-height:82px;text-align:center;background:#556279;color:#fff;}
.calTable td{padding-left:5%;position:relative;font-size: 14px;overflow: auto;}
.calTable thead{float:left;width:15%;}
//요일을 왼쪽, 너비 15%
.calTable tbody{float:left;width:80%;}
//내용을 요일 오른쪽으로 너비 80%
.calTable thead>tr{display:block;}
//table의 tr의 기본값은 display:table-row를 버리고 한 줄 씩 표출
.calTable tbody>tr{display:none;}
//주간만 필요하므로 나머지 tr은 숨김처리
.calTable .current{display:block;}
//현재 주간만 표출
.calTable .current .on{background:rgba(253, 184, 19,.5)}
//오늘의 날짜 표시
.calTable i{color:royalblue;position:absolute;top:40%;left:0}
.calTable ul{margin:0;padding:0;}
.calTable li{line-height:1.4;list-style: none}
.calTable li a:before{content:"\2022"}
.calTable li a{display: block;text-indent:-10px;padding-left:20px}
@media all and (min-width:1000px){
//다시 table로 만들어 준다.
.calTable{border-top:1px solid #000;table-layout:fixed;}
.calTable th,
.calTable td{display:table-cell;vertical-align:middle;width:auto;height:auto;line-height:1.5}
.calTable th{padding:15px 0;background-color:#556279;border:1px solid #d7d7d7;border-top:0;}
.calTable thead,
.calTable tbody{float:none;width:auto}
.calTable thead>tr,
.calTable tbody>tr,
.calTable .current{display:table-row;}
.calTable td{position:relative;height:100px;border:1px solid #d7d7d7;padding:15px 0;}
.calTable i{position:absolute;top:5px;left:5px;}
.calTable ul{padding:10px 0 0;}
.calTable li{line-height:1.5;}
.calTable li a{text-indent:10px;}
}
<table class="calTable">
<caption>행사일정표</caption>
<thead><!--이 얘들은 모바일에서 왼쪽으로 갈 예정이다.-->
<tr>
<th scope="row">일</th>
<th scope="row">월</th>
<th scope="row">화</th>
<th scope="row">수</th>
<th scope="row">목</th>
<th scope="row">금</th>
<th scope="row">토</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>
<i>1</i>
</td>
</tr>
<tr>
<td>
<i>2</i>
</td>
<td>
<i>3</i>
</td>
<td>
<i>4</i>
</td>
<td>
<i>5</i>
</td>
<td>
<i>6</i>
</td>
<td>
<i>7</i>
</td>
<td>
<i>8</i>
<ul>
<li><a href="">박팽년, 최항, 신숙주, 성삼문, 강희안, 이개, 이선로</a></li>
</ul>
</td>
</tr>
<tr>
<td>
<i>9</i>
</td>
<td>
<i>10</i>
</td>
<td>
<i>11</i>
</td>
<td>
<i>12</i>
<ul>
<li><a href="">박팽년, 최항, 신숙주, 성삼문, 강희안, 이개, 이선로</a></li>
</ul>
</td>
<td>
<i>13</i>
</td>
<td>
<i>14</i>
</td>
<td>
<i></i>
</td>
</tr>
<tr class="current"><!--모바일에서 표출될 이번 주간이다-->
<td>
<i>15</i>
<ul>
<li><a href="">박팽년, 최항, 신숙주, 성삼문, 강희안, 이개, 이선로</a></li>
<li><a href="">박팽년, 최항, 신숙주, 성삼문, 강희안, 이개, 이선로</a></li>
<li><a href="">박팽년, 최항, 신숙주, 성삼문, 강희안, 이개, 이선로</a></li>
<li><a href="">박팽년, 최항, 신숙주, 성삼문, 강희안, 이개, 이선로</a></li>
</ul>
</td>
<td>
<i>16</i>
</td>
<td>
<i>17</i>
</td>
<td class="on"><!--오늘의 날짜를 표시한다.-->
<i>18</i>
<ul>
<li><a href="">박팽년, 최항, 신숙주, 성삼문, 강희안, 이개, 이선로</a></li>
<li><a href="">집현전 학자들</a></li>
</ul>
</td>
<td>
<i>19</i>
</td>
<td>
<i>20</i>
</td>
<td>
<i>21</i>
</td>
</tr>
<tr>
<td>
<i>22</i>
</td>
<td>
<i>23</i>
</td>
<td>
<i>24</i>
</td>
<td>
<i>25</i>
</td>
<td>
<i>26</i>
</td>
<td>
<i>27</i>
</td>
<td>
<i>28</i>
</td>
</tr>
<tr>
<td>
<i>29</i>
</td>
<td>
<i>30</i>
</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>