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">&nbsp;</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