当前位置: 首页 > news >正文

CSS——圆形头像外嵌光圈

CSS——圆形头像外嵌光圈

话不多说,先看效果
在这里插入图片描述

方法一:paddingborder 组合

先用padding在父元素中留出空白间隔,然后再通过父元素的border设置边框。这里我还使用伪元素添加了一个
需要注意的是,父元素的内容区域大小需要刚好为子元素(即内部图片)的整体大小,这边建议设置具体的单位长度,而不是直接 width:100%; height:100% 继承父元素的内容区域的大小,可能渲染的时候会有所偏差。其实我最初使用 伪元素 来绘制头像的同心圆时,也是出现了偏差,所以换了一种方法。

<div class="profile"><div class="profile-photo"><img src="your_profile_photo" alt=""></div>
</div>
.profile .profile-photo {box-sizing: border-box;width: 41px;height: 41px;padding: 2px;border: 1px solid rgba(221, 221, 221, .7);position: relative;border-radius: 50%;display: flex;justify-content: center;align-items: center;
}.profile .profile-photo img {width: 36px;height: 36px;border-radius: 50%;
}.profile .profile-photo::after {position: absolute;content: '';display: block;width: 7px;height: 7px;bottom: 0px;right: 0px;z-index: 2;border: 1px solid #fff;border-radius: 50%;background: rgba(0, 171, 85, 1);
}

方法二:paddingoutline 组合

其实这种方法与上面的大同小异,只不过很少用到 outline 属性,甚至可以将 borderoutline 结合,border 设置为 transparent 即可,这里就不进行过多演示了。不过在需要多个外层圆圈的时候,可以考虑综合一起使用。这里给出代码如下:

 .header-right .profile .profile-photo {width: 36px;height: 36px;outline: rgba(221, 221, 221, .7) solid 1px;outline-offset: 2px;position: relative;border-radius: 50%;
}.header-right .profile .profile-photo img {width: 36px;height: 36px;border-radius: 50%;
} 

方法三:paddingborder 组合(但是仅使用一个元素完成)

这里不考虑语义化的话,仅使用一个标签也是可以完成的,不过需要借助 background 的一些知识:

  1. background 直接使用头像照片作为背景,默认背景是填满 padding-box
  2. 在设置完 padding 作为间隙之后,然后使用关键属性 background-clip: content-box; 就可以让我们的预想设计发挥功能
  3. 然后再设置 border 作为外层光圈即可
  4. 其实实现的方法很多,使用方法二也可以只用一个元素完成,不过,使用 outline 的话,会超出其宽高设置范围,相比而言,这个更好控制一些
    代码如下:
.profile .profile-photo {box-sizing: border-box;width: 38px;height: 38px;padding: 1px;border: 1px solid rgba(221, 221, 221, .7);position: relative;border-radius: 50%;display: flex;justify-content: center;align-items: center;background: url("./webapp/statics/images/personal_center/my_profile_photo.jpg") no-repeat center center;background-size: cover;background-clip: padding-box;
}.profile .profile-photo img {width: 36px;height: 36px;border-radius: 50%;
}.profile .profile-photo::after {position: absolute;content: '';display: block;width: 7px;height: 7px;bottom: 0px;right: 0px;z-index: 2;border: 1px solid #fff;border-radius: 50%;background: rgba(0, 171, 85, 1);
}

总之实现的方法很多了,甚至还可以借助 box-shadow 来进行实现,大家看哪个用起来好用就用哪个就可以啦。


创作不易,感谢支持!

http://www.dtcms.com/a/267000.html

相关文章:

  • springsecurity02
  • js中的FileReader对象
  • ESP32CAM通过ESPHome接入HomeAssistant(含无线刷固件等)
  • Python-GUI-wxPython-控件
  • 语音大模型速览(一)F5-TTS
  • 《汇编语言:基于X86处理器》第6章 复习题和练习,编程练习
  • Selenium 安装使用教程
  • Python 量化交易安装使用教程
  • 深度学习3(向量化编程+ python中实现逻辑回归)
  • 遗传算法的原理与实现示例
  • XION:玩转您的第一个智能合约
  • Seq2seq+Attention 机器翻译
  • Go中使用国家新闻出版署实名认证
  • [C++] # 深入理解C++继承:从原理到实现
  • 通过网页调用身份证阅读器http websocket方法-华视电子————仙盟创梦IDE
  • 结构型智能科技的关键可行性——信息型智能向结构型智能的转换(提纲)
  • CSS知识复习2
  • 3-1 PID算法改进(积分部分)
  • Softhub软件下载站实战开发(十二):软件管理编辑页面实现
  • 科学的第五范式:人工智能如何重塑发现之疆
  • 力扣打卡第二十一天 中后遍历+中前遍历 构造二叉树
  • 【Qt】QxORM无法删除和更改主键值为0的行,否则报错:invalid primary key
  • Docker学习笔记:Docker网络
  • DotNetBrowser 2.27.14 版本发布啦!
  • Python 制作 pyd(Windows 平台的动态链接库)
  • 力扣:70. 爬楼梯
  • [Terence Tao访谈] 无限 | 关注模型 | 矢量场 | 策略性“作弊” | Lean
  • 【Prometheus 】通过 Pushgateway 上报指标数据
  • 408第三季part1 - 操作系统 - 输入输出管理
  • pyproject.toml 有什么作用呢?