【问题标题】:Create a perfect circle with CSS [duplicate]用 CSS 创建一个完美的圆圈 [重复]
【发布时间】:2019-01-21 23:06:35
【问题描述】:

朋友们怎么样,我是 CSS 主题的新手。正如您在这张图片中看到的那样,我正在尝试执行脉冲效果。

我希望我的菜单图标(“主页”一词旁边的图标)具有类似的动画。

我的问题是我不知道如何实现完美的圆在哪里实现这个动画。这是我目前的结果:

我能做什么?

这是我的代码:

https://multi-level-side-menu-4bj1tj.stackblitz.io

ion-header button[ion-button].bar-buttons {
  border-radius: 10px;
  background: transparent;
  box-shadow: 0 0 0 0 rgba(90, 153, 212, 0.5);
  animation: pulse 1.5s infinite;
}
ion-header button[ion-button].bar-buttons:hover {
  animation: none;
}

@keyframes pulse {
  0% {
  transform: scale(0.9);
  }
  70% {
    transform: scale(1);
    box-shadow: 0 1 0 10px rgba(90, 153, 212, 0);
  }
    100% {
    transform: scale(0.9);
    box-shadow: 0 0 0 0 rgba(90, 153, 212, 0);
  }
}

我分享我正在做的源代码,如果你想编辑一些东西,你必须修改app/app.css文件,才能实时看到。

谢谢!

【问题讨论】:

  • 我不太喜欢 css 世界,但我相信您正在寻找的是材料设计“涟漪”效果,请查看 this link。我将其作为评论发布,因为我相信我会因为发布链接而被投反对票。希望对您有所帮助!
  • 另外,在这里发布你的代码(真实代码,没有截图),因为这也会让你获得很多反对票。
  • 给个高度和宽度一样,然后给border-radius:50%,瞧,问题就解决了。
  • @Code_Ninja 谢谢..但它不适合我...
  • 你也可以分享你的html,我会尽力为你提供解决方案。

标签: css


【解决方案1】:

为了获得完美的圆形,您首先需要拥有完美的正方形。因此,例如,您的按钮需要具有像 width: 32px; height: 32px 这样的尺寸。要将正方形变成圆形,您必须应用 50% 的边框半径,例如border-radius: 50%.

【讨论】:

  • 谢谢,我试着照你说的做,不知道是我遗漏了什么还是我做错了什么..stackblitz.com/edit/multi-level-side-menu-tbgi9b?file=app/…
  • 那是因为你的按钮的内容大于 32px,它把按钮的尺寸推到了 32px x 32px 以上,打破了纵横比。例如,在 48px x 48px 时,它看起来差不多,但它可能对您的喜好来说太大了。或者,您可以将汉堡图标更改为较小尺寸的图标,使其更小或在按钮上尝试overflow:hidden
  • 我不知道如何解决,但我会继续努力
  • 如果你在这里更新你的风格应该可以工作: ion-header button[ion-button].bar-buttons { width: 48px;高度:48px;边界半径:50%;背景:#5a99d4;盒子阴影:0 0 0 0 rgba(90, 153, 212, 0.5);动画:脉冲1.5s无限; }
【解决方案2】:

要创建一个完美的圆形,您需要相等的宽度和高度以及 50% 的边框半径

width: 50px;
height: 50px;
border-radius: 50%;

您引用的动画是 Google 材料设计的一部分,这是一个非常复杂的 CSS 动画。可以从头开始重新创建它,但这需要时间。

您所需要的核心是不断扩大的圆圈和发出脉冲的盒子阴影。

我在这里创建了一个简化版本

https://codepen.io/suth_a/pen/NBVNXE?editors=1100

您通过使用@keyframes name 定义动画来创建动画

@keyframes pulse{
  100%{
    box-shadow: 0 0 20px 3px #5a99d4;
    transform: scale(1.2);
  }
}

悬停动画开始

div:hover{
    animation: pulse 1s ease-in-out infinite alternate;
}

pulse - 是我创建的动画的名称

1s - 是动画的长度 ease-in-out - 是缓动函数 - https://css-tricks.com/ease-out-in-ease-in-out

infinite - 告诉浏览器无限期地重复动画

alternate - 告诉浏览器在每个动画结束时它应该从结尾开始并返回到开头,这样 动画看起来很流畅。

您可以使用我的动画并对其进行处理,直到您获得更接近您想要的东西,但是如果您真的对那个确切的动画进行了设置,那么将材料设计添加到您的项目中,您可以立即创建这样的按钮

https://materializecss.com/getting-started.html

<a class="btn-floating pulse"><i class="material-icons">menu</i></a>

https://materializecss.com/pulse.html

【讨论】:

    【解决方案3】:

    将以下 css 属性添加到脉冲图标(圆圈)。

    height:40px; width:40px; border-radius:50%

    如果高度和宽度不适合您的需要,那么您可以按比例增加它们,使它们始终彼此相等。

    【讨论】:

    • 它对我不起作用:(
    • 你试过了吗?
    • 完美运行!我刚刚检查了你的代码!
    猜你喜欢
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    相关资源
    最近更新 更多