フォントの説明、図形のデジタル化の説明、ライフゲームの説明などに使う正方形グリッドです。各セルのクリックで白黒反転します。白黒グリッド(7x7)では数は固定でしたが、目的に応じて数を選択できるようにしました。数を変更するにあたり、要素もjavascriptで作ることにしました。cssで、min-width:40px; min-height:40px;としている関係で数が大きくなるとはみ出します。これがないと各セルの幅が揃わない様です。
前半は白黒グリッド(7x7)と同じです。classを変更するだけです。
後半はdivタグの位置にappendChildでtableを作ります。正方形にするためのpタグも作って入れます。イベントハンドラも取り付けるます。classの初期値も入れます。
function changecolor(koko){ var color = koko.getAttribute("class"); if ( color=="wht" ) { koko.className = "blk"; }else if ( color=="blk" ) { koko.className = "wht"; } } function settable(n){ var waku = document.getElementById("waku"); var tblElem = document.createElement("table"); waku.appendChild(tblElem); for (var i=0;n>i;i++){ var trElem = document.createElement("tr"); tblElem.appendChild(trElem); for (var j=0;n>j;j++){ var pElem = document.createElement("p"); var tdElem = document.createElement("td"); tdElem.setAttribute("onclick","changecolor(this)"); tdElem.setAttribute("class","wht"); tdElem.appendChild(pElem); trElem.appendChild(tdElem); } } var butt = document.getElementById("button"); butt.setAttribute("style","display:none;"); }
<div id="button"> <p>選んでください</p> <p><button type="button" onclick="settable(4)">4</button> </p> <p><button type="button" onclick="settable(8)">8</button> </p> <p><button type="button" onclick="settable(12)">12</button> </p> .....略.... </div> <div class="table" id="waku"> <div>
#waku { width: 100vmin; } #waku table{ margin:0 1%; border-collapse:collapse; width: 90%; } #waku table td{ min-width:40px; min-height:40px; border:solid 1px #ccc; } #waku table td p{ padding:0; margin:0; width: 100%; } #waku table td p:before{ content:""; display: block; padding-top: 100%; } .wht {background-color:#ffffff;} .blk {background-color:#000000;}