
HTML
HTMLはこんな感じです。
html
<div id="mini-calendar"> <div class="calendar-head"><p class="calendar-year-month">2017年5月</p></div> <table> <thead> <tr> <th class="calendar-sun">日</th> <th>月</th> <th>火</th> <th>水</th> <th>木</th> <th>金</th> <th class="calendar-sat">土</th> </tr> </thead> <tbody> <tr> <td class="calendar-none"> </td> <td><i class="calendar-day-number">1</i> <div class="calendar-labels"> <span class="calender-label-blue">イベント1</span> </div> </td> <td><i class="calendar-day-number">2</i> <div class="calendar-labels"> <span class="calender-label-red">イベント2</span> </div> </td> <td class="calendar-holiday"><i class="calendar-day-number">3</i> <div class="calendar-labels"> <span class="calender-label-green">イベント3</span> <span class="calender-label">イベント4</span> </div> </td> <td class="calendar-holiday"><i class="calendar-day-number">4</i> <div class="calendar-labels"></div> </td> <td class="calendar-holiday"><i class="calendar-day-number">5</i> <div class="calendar-labels"> <span class="calender-label-blue">イベント5</span> <span class="calender-label-red">イベント6</span> </div> </td> <td class="calendar-sat"><i class="calendar-day-number">6</i> <div class="calendar-labels"></div> </td> </tr> ...... </tbody> </table> </div>
CSS
CSSを見てみましょう。PC時のCSSは普通過ぎるので省略します。
CSS
@media screen and (max-width: 600px) {
#mini-calendar thead {
display: none;
}
#mini-calendar th,
#mini-calendar td {
display: block;
width: 100%;
padding: 0;
}
#mini-calendar td {
height: auto;
display: -webkit-flex;
display: flex;
}
#mini-calendar .calendar-none {
display: none
}
#mini-calendar .calendar-labels {
padding: 5px;
}
#mini-calendar [class*=calender-label] {
display: inline-block;
padding: 5px;
margin-top: 0;
margin-right: 5px;
font-size: 12px;
}
/* 日付 */
#mini-calendar td .calendar-day-number {
font-weight: normal;
padding: 7px;
font-size: 18px;
display: block;
background: #f2e6cd;
margin-bottom: 0;
width: 75px;
height: auto;
}
#mini-calendar td.calendar-holiday .calendar-day-number,
#mini-calendar td.calendar-sun .calendar-day-number {
background: #f8c7c7;
}
#mini-calendar td.calendar-sat .calendar-day-number {
background: #c8ebfe;
}
/* モバイル用曜日を追加 */
#mini-calendar td i:after {
font-size: 12px;
position: relative;
left: -5px;
}
#mini-calendar td:nth-child(1) i:after {
content: "(日)";
}
#mini-calendar td:nth-child(2) i:after {
content: "(月)";
}
#mini-calendar td:nth-child(3) i:after {
content: "(火)";
}
#mini-calendar td:nth-child(4) i:after {
content: "(水)";
}
#mini-calendar td:nth-child(5) i:after {
content: "(木)";
}
#mini-calendar td:nth-child(6) i:after {
content: "(金)";
}
#mini-calendar td:nth-child(7) i:after {
content: "(土)";
}
}
thead は曜日の部分になるので縦組み時は不要なので非表示にします。
その関係で td の after に各曜日を設定しています。
後は td に flex を指定すればいい感じになってくれるはずです。
ということでだいぶ前に作成しましたjQueryのカレンダープラグインをレスポンシブ対応させてアップデートしました。
jQuery.MiniCalendar


