html代码不变``
<div class="container">
<button role="button" tabindex="0" style="--color: #0088ff">
东<span></span><span></span><span></span><span></span>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
</button>
<button role="button" tabindex="0" style="--color: #ffaa00">
东北<span></span><span></span><span></span><span></span>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
</button>
<button role="button" tabindex="0" style="--color: #ff7700">
北<span></span><span></span><span></span><span></span>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
</button>
<button role="button" tabindex="0" style="--color: #ff0033">
西北<span></span><span></span><span></span><span></span>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
</button>
<button role="button" tabindex="0" style="--color: #9911aa">
西<span></span><span></span><span></span><span></span>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
</button>
<button role="button" tabindex="0" style="--color: #aadd22">
西南<span></span><span></span><span></span><span></span>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
</button>
<button role="button" tabindex="0" style="--color: #aadd22">
南<span></span><span></span><span></span><span></span>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
</button>
<button role="button" tabindex="0" style="--color: #aadd22">
东南<span></span><span></span><span></span><span></span>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
<div aria-hidden="true">Click!</div>
</button>
</div>
.container {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 20px;
}
button {
--borderWidth: 4;
--paddingX: 8;
--paddingY: 12;
--transition: 0.25;
background: var(--bg, #fff);
border: calc(var(--borderWidth) * 1px) solid var(--color, #f0f);
border-radius: calc(var(--borderWidth) * 1px);
color: var(--color, #f0f);
box-shadow: calc(var(--borderWidth) * 1px) calc(var(--borderWidth) * 1px) 0 #888;
cursor: pointer;
font-weight: bold;
outline: transparent;
padding: calc(var(--paddingX) * 1px) calc(var(--paddingY) * 1px);
position: relative;
transition: box-shadow calc(var(--transition) * 0.5s) ease;
-webkit-tap-highlight-color: transparent;
}
button:active {
box-shadow: 0 0 0 #888;
}
button:hover: div:nth-child(5) {
opacity: 1;
transition: opacity calc(var(--transition) * 1s) calc(var(--transition) * 1s) steps(1);
}
button span {
-webkit-clip-path: var(--clip);
bottom: -4px;
clip-path: var(--clip);
left: -4px;
opacity: 0.5;
position: absolute;
right: -4px;
top: -4px;
z-index: 2;
}
button span:nth-of-type(1) {
--clip: polygon(0 0, 100% 0, 50% 50%);
}
button span:nth-of-type(2) {
--clip: polygon(100% 0, 100% 100%, 50% 50%);
}
button span:nth-of-type(3) {
--clip: polygon(0 100%, 100% 100%, 50% 50%);
}
button span:nth-of-type(4) {
--clip: polygon(0 0, 0 100%, 50% 50%);
}
button span:nth-of-type(1):hover,
button span:nth-of-type(2):hover,
button span:nth-of-type(3):hover,
button span:nth-of-type(4):hover {
--clip: polygon(0 0, 100% 0, 100% 100%, 0 100%);
z-index: 3;
}
button span:nth-of-type(1):hover ~ div:nth-of-type(1),
button span:nth-of-type(2):hover ~ div:nth-of-type(2),
button span:nth-of-type(3):hover ~ div:nth-of-type(3),
button span:nth-of-type(4):hover ~ div:nth-of-type(4) {
--clip: inset(-5% -5% -5% -5%);
}
button div {
-webkit-clip-path: var(--clip);
background: var(--color, #f0f);
border: calc(var(--borderWidth) * 1px) solid var(--color, #f0f);
border-radius: calc(var(--borderWidth) * 1px);
bottom: calc(var(--borderWidth) * -1px);
clip-path: var(--clip);
color: var(--bg, #fff);
left: calc(var(--borderWidth) * -1px);
padding: calc(var(--paddingX) * 1px) calc(var(--paddingY) * 1px);
position: absolute;
right: calc(var(--borderWidth) * -1px);
top: calc(var(--borderWidth) * -1px);
transition: clip-path calc(var(--transition) * 1s) ease, -webkit-clip-path calc(var(--transition) * 1s) ease;
}
button div:nth-of-type(1) {
--clip: inset(-5% -5% 110% -5%);
}
button div:nth-of-type(2) {
--clip: inset(-5% -5% -5% 110%);
}
button div:nth-of-type(3) {
--clip: inset(110% -5% -5% -5%);
}
button div:nth-of-type(4) {
--clip: inset(-5% 110% -5% -5%);
}
button div:nth-of-type(5) {
bottom: 0;
left: 0;
opacity: 0;
right: 0;
top: 0;
}
.container {
position: absolute;
top: 200px;
left: 10px;
z-index: 999;
width: 300px;
height: 300px;
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 20px;
button {
--borderWidth: 4;
--paddingX: 8;
--paddingY: 12;
--transition: 0.25;
background: var(--bg, #fff);
border: calc(var(--borderWidth) * 1px) solid var(--color, #f0f);
border-radius: calc(var(--borderWidth) * 1px);
color: var(--color, #f0f);
box-shadow: calc(var(--borderWidth) * 1px) calc(var(--borderWidth) * 1px)
0 #888;
cursor: pointer;
font-weight: bold;
outline: transparent;
padding: calc(var(--paddingX) * 1px) calc(var(--paddingY) * 1px);
position: relative;
transition: box-shadow calc(var(--transition) * 0.5s) ease;
-webkit-tap-highlight-color: transparent;
}
button:active {
box-shadow: 0 0 0 #888;
}
button {
&:hover {
div {
&:nth-child(5) {
opacity: 1;
transition: opacity calc(var(--transition) * 1s)
calc(var(--transition) * 1s) steps(1);
}
}
}
}
button span {
-webkit-clip-path: var(--clip);
bottom: -4px;
clip-path: var(--clip);
left: -4px;
opacity: 0.5;
position: absolute;
right: -4px;
top: -4px;
z-index: 2;
}
button span:nth-of-type(1) {
--clip: polygon(0 0, 100% 0, 50% 50%);
}
button span:nth-of-type(2) {
--clip: polygon(100% 0, 100% 100%, 50% 50%);
}
button span:nth-of-type(3) {
--clip: polygon(0 100%, 100% 100%, 50% 50%);
}
button span:nth-of-type(4) {
--clip: polygon(0 0, 0 100%, 50% 50%);
}
button span:nth-of-type(1):hover,
button span:nth-of-type(2):hover,
button span:nth-of-type(3):hover,
button span:nth-of-type(4):hover {
--clip: polygon(0 0, 100% 0, 100% 100%, 0 100%);
z-index: 3;
}
button span:nth-of-type(1):hover ~ div:nth-of-type(1),
button span:nth-of-type(2):hover ~ div:nth-of-type(2),
button span:nth-of-type(3):hover ~ div:nth-of-type(3),
button span:nth-of-type(4):hover ~ div:nth-of-type(4) {
--clip: inset(-5% -5% -5% -5%);
}
button div {
-webkit-clip-path: var(--clip);
background: var(--color, #f0f);
border: calc(var(--borderWidth) * 1px) solid var(--color, #f0f);
border-radius: calc(var(--borderWidth) * 1px);
bottom: calc(var(--borderWidth) * -1px);
clip-path: var(--clip);
color: var(--bg, #fff);
left: calc(var(--borderWidth) * -1px);
padding: calc(var(--paddingX) * 1px) calc(var(--paddingY) * 1px);
position: absolute;
right: calc(var(--borderWidth) * -1px);
top: calc(var(--borderWidth) * -1px);
transition: clip-path calc(var(--transition) * 1s) ease,
-webkit-clip-path calc(var(--transition) * 1s) ease;
}
button div:nth-of-type(1) {
--clip: inset(-5% -5% 110% -5%);
}
button div:nth-of-type(2) {
--clip: inset(-5% -5% -5% 110%);
}
button div:nth-of-type(3) {
--clip: inset(110% -5% -5% -5%);
}
button div:nth-of-type(4) {
--clip: inset(-5% 110% -5% -5%);
}
button div:nth-of-type(5) {
bottom: 0;
left: 0;
opacity: 0;
right: 0;
top: 0;
}
}
