[摘要]本篇文章给大家带来的内容是关于CSS如何实现九宫格?CSS实现九宫格的四种方式介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。实现效果效果如下,就是一个九宫格,点击九宫格中的任意...
本篇文章给大家带来的内容是关于CSS如何实现九宫格?CSS实现九宫格的四种方式介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
实现效果
效果如下,就是一个九宫格,点击九宫格中的任意一个小方块,其边框变成红色。
实现方法
我自己一共总结了4种方法来实现这个效果,前三种方法是大同小异,只有第四种表格布局比较特殊。下面我直接给出每一种布局方式相关的样式和DOM结构的源码。
1. float布局
<style>
.float{
margin: 50px; //为了和页面中的其他块拉开距离
height: 300px;
width: 300px;
}
.float > li{
box-sizing: border-box;
float:left;
width: 100px;
height: 100px;
margin-left: -4px;
margin-top: -4px;
line-height: 100px;
text-align: center;
list-style: none;
border:4px solid #ccc;
}
.float > li:hover{
border-color: red;
position: relative;
}
</style>
<ul class="float">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
</ul>
float布局实现这个9宫格没什么好讲的,关键点在于对li子项设置margin-left:-4px;margin-top:-4px;这样就可以使相邻子块间的边框发生重叠,你可以不设置这个负的margin来看看效果,你会体会更深。整个CSS中我认为最精髓的地方在于hover的样式,给li子项设置了position:relative;。这个地方的精髓在于,对元素设置了relative后,其将脱离文档流,同时其层叠等级会比普通文档流高,就会使其内容覆盖在普通文档流之上,那么它被覆盖的border就会显示出来,同时遮挡住相邻元素的border。这个设置真的很精髓,后面两种方法和该方法差不多,我就不做过多讲解了。