神奇的负margin解决border“合并”




如上图所示,这是一个分页样式,a:hover时,需要改变边框的颜色。

我们知道,除表格之外,其他标签的border是不能合并的。要解决这个问题,思路有三:

1、table布局(大概很少有人愿意在这里使用table)

2、display:table (这或许是解决之道,如果你不考虑ie6和ie7的话)

3、outline(使用outline属性代替border,你会发现相邻的2个outline叠加了,这正是解决之道?好吧,很遗憾的是ie6和ie7还是不支持)

这个例子其实来自我加的一个javascript群,有人问到了这个问题= =,当时我的就只想到了这三个方法,但是都不妥当。于是这个问题就搁下了。

3天后,我又想到了这个问题,再次尝试解决。

终于找到第四种方案:margin-left

 1 .wrap{
 2     width: 300px;
 3     margin: 0 auto;
 4 }
 5 .box{
 6     float: left;
 7 }
 8 .box a{
 9     float: left;
10     width: 40px;
11     height: 40px;
12     background-color: #edd;
13     text-align: center;
14     line-height: 40px;
15     text-decoration: none;
16     position: relative;/*必须*/
17     z-index: 1;/*必须*/
18     border:1px solid #000;
19     margin-left: -1px;/*必须*/
20 }
21 
22 .box a:hover{
23     z-index: 2;/*必须*/
24     border:1px solid #f00;
25     
26 }
1 <div class='wrap'>
2     <div class='box'>
3         <a href="javascript:;">1</a>
4         <a href="javascript:;">2</a>
5         <a href="javascript:;">3</a>
6         <a href="javascript:;">4</a>
7         <a href="javascript:;">5</a>
8     </div>
9 </div>

点击查看效果

hi,我的新博客地址:ysha.me !!
原文地址:https://www.cnblogs.com/qianlegeqian/p/3532159.html