我已經創建了一個數獨謎題創建器/求解器,並且需要一些CSS幫助來設計它。造型數獨網格
通常,它們的風格是這樣的:
http://www.sudoku.4thewww.com/Grids/grid.jpg。
我正在使用一些命名。
單元格 - 包含單個數字的每個單獨的單元格。
盒 - 的9個框之一每個包含3×3個細胞
網格 - 整個9x9的播放區域。
我的HTML部分是由我的紅寶石/西納特拉的應用程序(至少重複DIV的是)和結構產生這樣:
#game {
margin-left: auto;
margin-right: auto;
width: 360px;
}
.cell input {
display: inline-block;
float: left;
width: 40px;
height: 40px;
border-style: solid;
border-width: 1px;
text-align: center;
font-size: 15px;
}
<form action="/" method="post">
<div id="game">
<div class="cell">
<input name="cell[0]" type="text" maxlength="1" value=<%=val%>>
</div>
<div class="cell">
<input name="cell[1]" type="text" maxlength="1" value=<%=val%>>
</div>
<!-- ... -->
<div class="cell">
<input name="cell[79]" type="text" maxlength="1" value=<%=val%>>
</div>
<div class="cell">
<input name="cell[80]" type="text" maxlength="1" value=<%=val%>>
</div>
</div>
</form>
這允許我創建的基本9x9的網格與我的第一個單元格(0)在左上角,並從左到右,一排一排,到右下角的最後一個單元格(80)。
難度在於設計每個單元的格式,以便網格不僅可以分成行和列,還可以分成9個較大的方框。再次參見this grid以供參考。
目前我有兩個選擇:
完全重寫我的數獨代碼,使我以不同的順序繪製出DIV的。用分組DIV包裝每個盒子。這將使CSS相對簡單。這將是一個重大改變,我真的不想走這條路。
手動標識每個單元格併爲所有81個單元格寫入相應的CSS。比上面好,但仍然是球疼,而不是特別光滑。
我確實有動態生成CSS樣式的選項(性能不是問題)。我正在尋找的是幫助設計一種算法,它將確定(基於它的線性索引0..80)應該如何對每個單元格進行樣式設置。
例如,頂行(0..8)中的所有單元格將具有厚頂邊(3px)和薄底邊(1px)。第3行(18..26)中所有單元格的底部都有一個厚邊框,但這些單元格的頂部會有一個薄邊框。第一列中所有單元格的左側將有一個厚邊框,但這些單元格的右側將有一個薄邊框。等等。
表中的數據可能比DIV好,所以這是一個很好的解決方案。見下面我的實現(帶代碼)。 – dwkns