table 实现 九宫格布局
九宫格布局
最近遇到一个题目,是实现一个九宫格布局
的。实现的效果大概是下图这种这样子的:
(鼠标悬浮的时候,九宫格的边框颜色是改变的。)
首先想到的是直接使用<table>
进行布局,原因很简单,就是想利用 table 里面有一个border-collapse:collapse;
属性,可以很方便地对 border 进行重合。
下面贴出代码:
css
<style>
.tables{
border-collapse:collapse;
background-color: #fff;
}
.tds{
text-align:center;
width: 90px;
height: 90px;
font-size: 30px;
border: 5px solid blue;
text-decoration: underline;
}
.tds:hover{
border:5px solid red;
}
</style>
html
<table class="tables">
<tr class="trs">
<td class="tds">1</td>
<td class="tds">2</td>
<td class="tds">3</td>
</tr>
<tr class="trs">
<td class="tds">4</td>
<td class="tds">5</td>
<td class="tds">6</td>
</tr>
<tr class="trs">
<td class="tds">7</td>
<td class="tds">8</td>
<td class="tds">9</td>
</tr>
</table>
结果(看到就瞬间蒙逼了,有一部分 border 被遮挡了)
既然遇到问题了,那就马上改改改,解决的办法是在 td 里再增加一个div。
修改
css
<style>
.tables{
border-collapse:collapse;
background-color: #fff;
}
.tds{
width: 90px;
height: 90px;
border: 5px solid blue;
}
.tds div{
position: relative;
width: 90px;
height: 90px;
}
.tds div span{
display:block;
text-align: center;
line-height: 90px;
font-size: 30px;
width: 90px;
height: 90px;
text-decoration: underline;
}
.tds div span:hover{
position: absolute;
top: -5px;
left: -5px;
width: 90px;
height: 90px;
border:5px solid red;
}
</style>
html
<table class="tables">
<tr class="trs">
<td class="tds"><div><span>1</span></div></td>
<td class="tds"><div><span>2</span></div></td>
<td class="tds"><div><span>3</span></div></td>
</tr>
<tr class="trs">
<td class="tds"><div><span>4</span></div></td>
<td class="tds"><div><span>5</span></div></td>
<td class="tds"><div><span>6</span></div></td>
</tr>
<tr class="trs">
<td class="tds"><div><span>7</span></div></td>
<td class="tds"><div><span>8</span></div></td>
<td class="tds"><div><span>9</span></div></td>
</tr>
</table>
另外,也可以通过 给一个最外层的div设置一个 `background-color`来实现视觉上的边框,