一个炫酷的头像悬停效果2

简介: 一个炫酷的头像悬停效果

CSS mask

到了最后一部分!我们要做的就是藏起一些碎片。为此,我们将依赖于 CSS mask 属性,当然还有渐变。

下面的图说明了我们需要隐藏的内容或需要显示的内容,以便更加准确。左图是我们目前拥有的,右图是我们想要的。绿色部分说明了我们必须应用于原始图像以获得最终结果的遮罩内容。

d160fd21fa9653a6041af9a69162e58.png

我们可以识别mask的两个部分:

  • 底部的圆形部分,与我们用来创建化身后面的圆的径向渐变具有相同的维度和曲率
  • 顶部的矩形,覆盖轮廓内部的区域。请注意轮廓是如何位于顶部的绿色区域之外的-这是最重要的部分,因为它允许剪切轮廓,以便只有底部部分可见

最终的完整css如下,对有重复的代码进行抽离,如--_g,--_o:

img {
  --s: 280px; /* image size */
  --b: 5px; /* border thickness */
  --c: #C02942; /* border color */
  --f: 1; /* initial scale */
  --_g: 50% / calc(100% / var(--f)) 100% no-repeat content-box;
  --_o: calc((1 / var(--f) - 1) * var(--s) / 2 - var(--b));
  width: var(--s);
  aspect-ratio: 1;
  padding-top: calc(var(--s)/5);
  cursor: pointer;
  border-radius: 0 0 999px 999px;
  outline: var(--b) solid var(--c);
  outline-offset: var(--_o);
  background: 
    radial-gradient(
      circle closest-side,
      #ECD078 calc(99% - var(--b)),
      var(--c) calc(100% - var(--b)) 99%,
      #0000) var(--_g);
  mask:
    linear-gradient(#000 0 0) no-repeat
    50% calc(-1 * var(--_o)) / calc(100% / var(--f) - 2 * var(--b)) 50%,
    radial-gradient(
      circle closest-side,
      #000 99%,
      #0000) var(--_g);
  transform: scale(var(--f));
  transition: .5s;
}
img:hover {
  --f: 1.35; /* hover scale */
}

下面的一个演示,直观的说明mask的使用区域。中间的框说明了由两个渐变组成的遮罩层。把它想象成左边图像的可见部分,你就会得到右边的最终结果:

最后

搞定!我们不仅完成了一个流畅的悬停动画,而且只用了一个元素和不到20行的CSS技巧!如果我们允许自己使用更多的HTML,我们能简化CSS吗?当然可以。但我们是来学习CSS新技巧的!这是一个很好的练习,可以探索CSS渐变、遮罩、outline属性的行为、转换以及其他许多内容。

在线效果

实例里面是流行的CSS开发人员的照片。有兴趣的同学可以展示一下自己的头像效果。

image.png

看完本文如果觉得有用,记得点个赞支持,收藏起来说不定哪天就用上啦~



目录
相关文章
|
小程序 JavaScript
小程序本地相册选择图片或相机拍照底部弹框功能
小程序本地相册选择图片或相机拍照底部弹框功能
91 0
|
5月前
|
前端开发 JavaScript
CSS动画(个人资料卡片)
CSS动画(个人资料卡片)
|
前端开发 容器
一个炫酷的头像悬停效果1
一个炫酷的头像悬停效果
64 0
|
机器学习/深度学习 前端开发
一个炫酷的头像悬停效果 2
基于上次翻译的 🔥🔥一个炫酷的头像悬停效果 收获了不少同学的喜欢,原作者近期进行了优化升级。本文将升级后的核心实现过程进行梳理讲解,如果没看过第一期的推荐先看看第一期的实现过程。
73 0
按钮卡片特效集锦
20款按钮特效 和 11款卡片合集  
按钮卡片特效集锦
|
JavaScript BI 数据库
|
前端开发 JavaScript 容器
|
XML Android开发 数据格式
按钮点击效果总结
一、在Android 开发中控制按钮或者listview 点击效果 1:主要元素 定义要在某些状态期间使用的可绘制对象,如其属性所述。必须是 元素的子项。
847 0
|
Android开发 容器
仿网易新闻可滑动标题栏TabLayout(文字或图标)
    近期有需要,要做一个类似于网易新闻首页中的可滑动标题栏 TabLayout,根据大神写的 FlycoTabLayout 改造了一下,可以加载网络图片,主要实现内容如下:     1.
1701 0