3D效果按钮悬停状态CSS(可能是bug?)
3D effect button hover state CSS (Possible bug?)
只是想知道是否有人有解决我使用按钮的 3D 效果悬停状态的问题的经验。
http://jsfiddle.net/andeh/b47xor6d/
.button{
cursor: pointer;
display: block;
line-height: 44px;
height: 44px;
width: 159px;
background: #ff9600;
border-radius: 5px;
text-align: center;
font-size: 18px;
color: #fff;
}
.button:hover {
display: block;
min-height: 44px;
min-width: 159px;
background: #e68700;
border-radius: 5px;
text-align: center;
font-size: 18px;
border: 0 solid #fff;
color: #fff;
position: relative;
top: -5px;
bottom: auto;
left: -5px;
right: auto;
cursor: pointer;
background: #e68700;
box-shadow: #c2c2c2 1px 1px, #c2c2c2 2px 2px, #c2c2c2 3px 3px, #c2c2c2 4px 4px, #c2c2c2 5px 5px;
}
正如您在我的示例中看到的那样,问题是当您将鼠标悬停在按钮上时,如果您的光标位于阴影上,则悬停状态将停用。
我知道这是因为我实际上是将按钮从光标移开,但我认为创建的阴影可能会保留悬停状态?
如果有人知道任何修复,那就太好了!但此刻它只是一种刺激。
谢谢!
安迪
.button{
cursor: pointer;
display: block;
line-height: 44px;
height: 44px;
width: 159px;
background: #ff9600;
border-radius: 5px;
text-align: center;
font-size: 18px;
color: #fff;
transition: transform .3s ease,box-shadow .3s ease
}
.button:hover {
transform: translate3d(-5px,-5px,0);
box-shadow: #c2c2c2 1px 1px, #c2c2c2 2px 2px, #c2c2c2 3px 3px, #c2c2c2 4px 4px, #c2c2c2 5px 5px;
}
<span class="button">button</span>
或者试试 :speudo-elements
.button{
display: block;
position: relative;
height: 44px;
width: 159px;
color: transparent
}
.button:after{
content: attr(data-text);
position: absolute;
top: 0;
left: 0;
line-height: 44px;
height: 100%;
width: 100%;
background: #ff9600;
border-radius: 5px;
text-align: center;
font-size: 18px;
color: #fff;
transition: transform .3s ease,box-shadow .3s ease
}
.button:hover:after {
transform: translate3d(-5px,-5px,0);
box-shadow: #c2c2c2 1px 1px, #c2c2c2 2px 2px, #c2c2c2 3px 3px, #c2c2c2 4px 4px, #c2c2c2 5px 5px;
}
<span class="button" data-text=button>button</span>
我有一个不同的方法,只需将 box-shadow
设置为 inset
,这样阴影就会在按钮内部,并且当鼠标悬停在阴影上时不会失去悬停状态。
此外,您还需要在悬停时添加更具体的 border-radius
,使其看起来像一个外部阴影。请参阅此 http://jsfiddle.net/b47xor6d/3/
.button:hover {
display: block;
min-height: 44px;
height:49px;
width: 164px;
min-width: 159px;
background: #e68700;
border-radius: 5px;
text-align: center;
font-size: 18px;
border: 0 solid #fff;
color: #fff;
position: relative;
border-top-right-radius: 10px;
border-bottom-left-radius: 10px;
top: -5px;
bottom: auto;
left: -5px;
right: auto;
cursor: pointer;
background: #e68700;
box-shadow:inset #c2c2c2 -1px -1px,inset #c2c2c2 -2px -2px,inset #c2c2c2 -3px -3px,inset #c2c2c2 -4px -4px,inset #c2c2c2 -5px -5px;
}
只是想知道是否有人有解决我使用按钮的 3D 效果悬停状态的问题的经验。
http://jsfiddle.net/andeh/b47xor6d/
.button{
cursor: pointer;
display: block;
line-height: 44px;
height: 44px;
width: 159px;
background: #ff9600;
border-radius: 5px;
text-align: center;
font-size: 18px;
color: #fff;
}
.button:hover {
display: block;
min-height: 44px;
min-width: 159px;
background: #e68700;
border-radius: 5px;
text-align: center;
font-size: 18px;
border: 0 solid #fff;
color: #fff;
position: relative;
top: -5px;
bottom: auto;
left: -5px;
right: auto;
cursor: pointer;
background: #e68700;
box-shadow: #c2c2c2 1px 1px, #c2c2c2 2px 2px, #c2c2c2 3px 3px, #c2c2c2 4px 4px, #c2c2c2 5px 5px;
}
正如您在我的示例中看到的那样,问题是当您将鼠标悬停在按钮上时,如果您的光标位于阴影上,则悬停状态将停用。 我知道这是因为我实际上是将按钮从光标移开,但我认为创建的阴影可能会保留悬停状态?
如果有人知道任何修复,那就太好了!但此刻它只是一种刺激。
谢谢!
安迪
.button{
cursor: pointer;
display: block;
line-height: 44px;
height: 44px;
width: 159px;
background: #ff9600;
border-radius: 5px;
text-align: center;
font-size: 18px;
color: #fff;
transition: transform .3s ease,box-shadow .3s ease
}
.button:hover {
transform: translate3d(-5px,-5px,0);
box-shadow: #c2c2c2 1px 1px, #c2c2c2 2px 2px, #c2c2c2 3px 3px, #c2c2c2 4px 4px, #c2c2c2 5px 5px;
}
<span class="button">button</span>
或者试试 :speudo-elements
.button{
display: block;
position: relative;
height: 44px;
width: 159px;
color: transparent
}
.button:after{
content: attr(data-text);
position: absolute;
top: 0;
left: 0;
line-height: 44px;
height: 100%;
width: 100%;
background: #ff9600;
border-radius: 5px;
text-align: center;
font-size: 18px;
color: #fff;
transition: transform .3s ease,box-shadow .3s ease
}
.button:hover:after {
transform: translate3d(-5px,-5px,0);
box-shadow: #c2c2c2 1px 1px, #c2c2c2 2px 2px, #c2c2c2 3px 3px, #c2c2c2 4px 4px, #c2c2c2 5px 5px;
}
<span class="button" data-text=button>button</span>
我有一个不同的方法,只需将 box-shadow
设置为 inset
,这样阴影就会在按钮内部,并且当鼠标悬停在阴影上时不会失去悬停状态。
此外,您还需要在悬停时添加更具体的 border-radius
,使其看起来像一个外部阴影。请参阅此 http://jsfiddle.net/b47xor6d/3/
.button:hover {
display: block;
min-height: 44px;
height:49px;
width: 164px;
min-width: 159px;
background: #e68700;
border-radius: 5px;
text-align: center;
font-size: 18px;
border: 0 solid #fff;
color: #fff;
position: relative;
border-top-right-radius: 10px;
border-bottom-left-radius: 10px;
top: -5px;
bottom: auto;
left: -5px;
right: auto;
cursor: pointer;
background: #e68700;
box-shadow:inset #c2c2c2 -1px -1px,inset #c2c2c2 -2px -2px,inset #c2c2c2 -3px -3px,inset #c2c2c2 -4px -4px,inset #c2c2c2 -5px -5px;
}