パーツ番号 10-02-10 ・ JavaScript使用
期間選択(範囲ハイライト)
カレンダーで開始日と終了日をクリックすると、その間の期間が帯でハイライトされます。WordPressの宿泊予約やレンタル期間の選択に最適。
プレビュー
ソースコード
HTML
<div class="d10-02-10-cal">
<div class="d10-02-10-head">2026年 7月 <span class="d10-02-10-hint">開始日と終了日をクリック</span></div>
<div class="d10-02-10-days"></div>
</div>CSS
.d10-02-10-cal{width:230px;font-size:12px;color:#334155}
.d10-02-10-head{font-weight:700;color:#0f172a;margin-bottom:8px;font-size:12px}
.d10-02-10-hint{display:block;font-weight:400;font-size:10px;color:#94a3b8;margin-top:2px}
.d10-02-10-days{display:grid;grid-template-columns:repeat(7,28px);gap:2px 0}
.d10-02-10-day{width:28px;height:28px;display:flex;align-items:center;justify-content:center;font-size:11px;cursor:pointer;position:relative;z-index:1}
.d10-02-10-day:hover{color:#0d9488;font-weight:700}
.d10-02-10-empty{visibility:hidden;cursor:default}
.d10-02-10-in{background:#ccfbf1}
.d10-02-10-edge{background:#14b8a6;color:#fff;font-weight:700;border-radius:6px;position:relative;z-index:2}JavaScript
(function(){
var cal=document.querySelector('#item-10-02-10 .d10-02-10-cal');
if(!cal)return;
var days=cal.querySelector('.d10-02-10-days');
var first=3,total=31,start=null,end=null;
for(var i=0;i<first;i++){var e=document.createElement('div');e.className='d10-02-10-day d10-02-10-empty';days.appendChild(e);}
var cells=[];
for(var d=1;d<=total;d++){
var c=document.createElement('div');c.className='d10-02-10-day';c.textContent=d;c.dataset.d=d;
cells.push(c);days.appendChild(c);
c.addEventListener('click',function(){
var v=parseInt(this.dataset.d,10);
if(start===null||end!==null){start=v;end=null;}
else if(v<start){end=start;start=v;}
else{end=v;}
paint();
});
}
function paint(){
cells.forEach(function(c){
var v=parseInt(c.dataset.d,10);
c.className='d10-02-10-day';
if(end!==null&&v>start&&v<end)c.classList.add('d10-02-10-in');
if(v===start||(end!==null&&v===end))c.classList.add('d10-02-10-edge');
});
}
})();クラス名 .d10-02-10 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。