div: collapse border + change the color of the border on hover + border radius?
这个接缝很容易,但是我还没有找到任何办法。我有3个div(但解决方案必须适用于n个div),如以下模式所示:
| div 1 || div 2 || div 3 |
例如:
我想要这样的普通股利:
在特定div的悬停上,我希望此div的所有边框具有另一种颜色,如下所示:
最后,我不能做的是,我想要这里显示的角落:
我要首先破坏所有边界。与border-collapse:collapse一样容易。但是之后我还想更改悬停时整个单元格的边框颜色(顶部+左侧+底部+右侧边框)。边框也很容易:1px DOUBLE#000。但最后(在这一点上我要阻止)我还希望在div 1的左上角和左下角以及在div 3的右上角和右下角有一个圆角
看起来像border-collapse:collapse他们是不可能有圆角的...所以需要找到另一个解决方案
编辑:我尝试使用相对位置和z-index,它的工作效果更好!但是我需要知道如何将第二个div左移1px,将第三个div左移2像素,...以及将n div左移n-1像素?
实际上,这比您想象的要复杂一些。
border-collapse适用于表,而不适用于所有块元素。当然,您仍然可以使它与display:table / table-cell一起使用。
但是,由于折叠后的边框将属于第一个元素,因此悬停仍会存在缺陷-如果将鼠标悬停在第二个或第三个元素上,则左边框将保持不变。
直到那时,缺乏边界半径才使边界崩溃。
我想您将不得不采用其他方法。我可能会选择内联块(或可能使用"老式"浮点数来避免空格问题)的元素,其边界重叠1px,并在:hover中更改z-index,以将悬停的元素带到并确保其边框是显示的边框。
这是解决两个问题的解决方案:
-
四舍五入。这使用
first-of-type 和last-of-type 以及border-radius 属性。 - 重叠边界。
对于后者,发生的是创建右边框并更改了颜色,而不是使用z索引。然后,下一个
这是一个Codepen:http://codepen.io/anon/pen/JoyGxJ
是你想要的吗?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | .container { display: table; } .container > div { display: table-cell; width: 80px; height: 40px; text-align: center; vertical-align: middle; border-top: solid 1px gray; border-bottom: solid 1px gray; border-left: solid 1px gray; } .container > div:first-child { border-top-left-radius: 8px; border-bottom-left-radius: 8px; } .container > div:last-child { border-right: solid 1px gray; border-top-right-radius: 8px; border-bottom-right-radius: 8px; } .container > div:hover { background-color: lightgray; border-color: red; border-right: solid 1px red; } |
1 | 123456 |
不太清楚您想要什么,而只是尝试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | .one { width: 80px; height: 40px; display: table-cell; border-collapse: collapse; border: double 1px black; } .one:first-child { border-top-left-radius: 15px; border-bottom-left-radius: 15px; } .one:last-child { border-top-right-radius: 15px; border-bottom-right-radius: 15px; } |
1 |