我想通过转换box-shadow来创建一个平滑的悬停按钮效果.为什么悬停过渡不起作用?哪些错误可能会导致它无法按预期运行?

body{
  background: rgb(180, 181, 180);
 }
.btn{
  height: 100px;
  width: 100px;
  margin: auto;
  border-radius: 20%;
  background: rgb(172, 171, 171);
  box-shadow: 3px 3px 5px rgb(84, 84, 84),-3px -3px 5px rgb(255, 255, 255);
  transition: box-shadow 1s ease-in-out;
  background-image: linear-gradient(135deg,rgb(215, 215, 215),rgb(84, 84, 84));
}

.btn:hover{
  transition: box-shadow 1s ease-in-out;
  box-shadow: inset 3px 3px 5px rgb(84, 84, 84),inset -3px -3px 5px rgb(255, 255, 255);
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div class="btn"></div>
</body>
</html>

推荐答案

不能在inset和非插图阴影之间过渡.确保你总是同时拥有这两种 colored颜色 ,并玩 colored颜色 不透明游戏:

 body{
  background: rgb(180, 181, 180); 
}
.btn{
  height: 100px;
  width: 100px;
  margin: auto;
  border-radius: 20%;
  background: rgb(172, 171, 171);
  box-shadow: 
    inset 3px 3px 5px rgb(84 84 84 / 0%),
    inset -3px -3px 5px rgb(255 255 255 / 0%),
     3px 3px 5px rgb(84 84 84),
    -3px -3px 5px rgb(255 255 255);
  transition: box-shadow 1s ease-in-out;
  background-image: linear-gradient(135deg,rgb(215, 215, 215),rgb(84, 84, 84));
}

.btn:hover{
  box-shadow: 
    inset 3px 3px 5px rgb(84 84 84),
    inset -3px -3px 5px rgb(255 255 255),
     3px 3px 5px rgb(84 84 84 / 0%),
    -3px -3px 5px rgb(255 255 255 / 0%);
}
 <div class="btn"></div>

你也可以玩弄这个位置:

body{
 background: rgb(180, 181, 180); 
}
.btn{
  height: 100px;
  width: 100px;
  margin: auto;
  border-radius: 20%;
  background: rgb(172, 171, 171);
  box-shadow: 
    inset 0 0 0 rgb(84 84 84 / 0%),
    inset 0 0 0 rgb(255 255 255 / 0%),
     3px 3px 5px rgb(84 84 84),
    -3px -3px 5px rgb(255 255 255);
  transition: box-shadow 1s ease-in-out;
  background-image: linear-gradient(135deg,rgb(215, 215, 215),rgb(84, 84, 84));
}

.btn:hover{
  box-shadow: 
    inset 3px 3px 5px rgb(84 84 84),
    inset -3px -3px 5px rgb(255 255 255),
     0 0 0 rgb(84 84 84 / 0%),
     0 0 0 rgb(255 255 255 / 0%);
}
<div class="btn"></div>

Css相关问答推荐

text-size-adjust在我的css中曾经在我的手机上的Chrome上工作,停止工作,仍然在我妻子的手机上工作

当鼠标移到侧边栏之外时,如何防止shiny 仪表板侧边栏菜单中的 pickerInput 选项被切断?

如何将 div 和 img 包装在 display:flex 容器中

在 CSS 中,如何用破折号填充段落中每一行的空白区域?

我可以拆分我的 CSS / SASS webpack 加载器规则,还是它们需要成为一个大规则?

如何在 VS Code 中获得 JavaFX CSS 属性的自动完成功能?

在 React 中使用 CSS 动画 onClick()

如何简化CSS?

热门制作渐变半红/半蓝?

使用 display:inline-block 渲染多行文本组件,行间有白色间隙

位置绝对混乱的 CSS Flexbox

在 CSS 或 JavaScript 中反转图像的 colored颜色

CSS - 在 id 中 Select 类的语法

div内的CSS中心内容

带有一些 LESS 魔法的花式媒体查询

脉动的心脏 CSS 动画

为什么只为第一个元素显示双引号?

如何在 CSS 中给出背景图像路径?

将 -moz-available 和 -webkit-fill-available 放在一个宽度中(CSS 属性)

如何将 HTML
显示为内联元素?