'Draw chessboard with frame with pure html and css
I have already finished a chessboard with pure HTML and CSS. But as I'm not a designer, and I can't figure out how to do a simple thing. I'm trying to make a frame around the board. I'm using CSS border property to make a margin in table.chessboard element (code below). But that margin expands inside the board and decreases the squares on borders.
What can I do to solve this?
Code:
table.chessboard {
margin: 80px auto;
background: #999;
border: 25px solid #333;
}
td.chessboard {
width: 70px;
height: 70px;
}
tr.chessboard:nth-child(odd) td.chessboard:nth-child(even),
tr.chessboard:nth-child(even) td.chessboard:nth-child(odd) {
background: white;
}
<table class="chessboard">
<tr class="chessboard">
<td class="chessboard"></td>
<!-- line above 8 times -->
</tr>
<tr class="chessboard">
<td class="chessboard"></td>
<!-- line above 8 times -->
</tr>
<tr class="chessboard">
<td class="chessboard"></td>
<!-- line above 8 times -->
</tr>
<tr class="chessboard">
<td class="chessboard"></td>
<!-- line above 8 times -->
</tr>
<tr class="chessboard">
<td class="chessboard"></td>
<!-- line above 8 times -->
</tr>
<tr class="chessboard">
<td class="chessboard"></td>
<!-- line above 8 times -->
</tr>
<tr class="chessboard">
<td class="chessboard"></td>
<!-- line above 8 times -->
</tr>
<tr class="chessboard">
<td class="chessboard"></td>
<!-- line above 8 times -->
</tr>
</table>
Solution 1:[1]
I assume you want to make a border around all the cells.
table.chessboard {
margin: 80px auto;
background: #999;
border: 25px solid #333;
border-collapse: collapse; /* */
}
td.chessboard {
width: 70px; height: 70px;
border: 2px solid #333; /* */
}
tr.chessboard:nth-child(odd) td.chessboard:nth-child(even),
tr.chessboard:nth-child(even) td.chessboard:nth-child(odd) {
background: white;
}
<table class="chessboard">
<tr class="chessboard">
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
</tr>
<tr class="chessboard">
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
</tr>
<tr class="chessboard">
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
</tr>
<tr class="chessboard">
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
</tr>
<tr class="chessboard">
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
</tr>
<tr class="chessboard">
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
</tr>
<tr class="chessboard">
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
</tr>
<tr class="chessboard">
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
<td class="chessboard"></td>
</tr>
</table>
Solution 2:[2]
in your css:
table.chessboard {
border: 2px solid #000;
}
adjust width as desired ;)
Solution 3:[3]
<!DOCTYPE html>
<html>
<head>
<title>Chessboard using HTML and CSS</title>
<style>
.cboard-box {
border: 1px solid #000;
width: 560px;
height: 560px;
}
.cboard-row {
display: flex;
flex-wrap: wrap;
}
.cboard-cell {
width: 70px;
height: 70px;
}
.cboard-row:nth-child(odd) .cboard-cell:nth-child(odd) {
background: #fff;
}
.cboard-row:nth-child(odd) .cboard-cell:nth-child(even) {
background: #000;
}
.cboard-row:nth-child(even) .cboard-cell:nth-child(even) {
background: #fff;
}
.cboard-row:nth-child(even) .cboard-cell:nth-child(odd) {
background: #000;
}
</style>
</head>
<body>
<div class="cboard-box">
<div class="cboard-row">
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
</div>
<div class="cboard-row">
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
</div>
<div class="cboard-row">
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
</div>
<div class="cboard-row">
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
</div>
<div class="cboard-row">
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
</div>
<div class="cboard-row">
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
</div>
<div class="cboard-row">
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
</div>
<div class="cboard-row">
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
<div class="cboard-cell"></div>
</div>
</div>
</body>
</html>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | |
| Solution 3 | sk11 |
