盒子阴影效果与环绕阴影

news/2024/7/7 22:25:01

box-shadow

在前端样式里面,最常见的一中效果之一就是阴影,好的阴影可以瞬间给人一种高端的用户体验,今天简单总结下这个样式的语法与使用方法。

语法

box-shadow的语法其实是比较简单好记的,我们按照最全面的写法来看

  1. x轴偏移量:为正数时阴影向盒子右边延申
  2. y轴偏移量 :为正数时阴影向盒子下方延申(这里与我们一直熟悉的坐标系是相反的)
  3. 阴影模糊半径:值越大,模糊面积越大,阴影就越大越淡。不能为负值。默认为 0,此时阴影边缘锐利。
  4. 阴影扩散半径:取正值时,阴影扩大;取负值时,阴影收缩。默认为 0,此时阴影与元素同样大
  5. 阴影颜色
  6. 是否内嵌:使用inset会定义内嵌的阴影,所以效果都会向盒子内部延申,内嵌式x和y轴偏移量则取反

值得一提的是box-shadow的阴影设置是可以不止一层的。例如我们想要一个两层的盒子阴影:
box-shadow: 2px 2px #000, 4px 4px #f0; 这样我们就得到了一个黑色与红色重叠的阴影效果。

简单说完box-shadow,我们来想想这样的场景:假设我有一种png图片,图片结果类似于圆形,如下:请添加图片描述
当我尝试为这样图片添加阴影的时候,他就会出现如下效果:在这里插入图片描述
这绝对不是我们想要的,我们肯定更趋向于只对圆形部分添加阴影。这个时候box-shadow显然已经不能满足我们的需求了。我们必须借助filter这个样式来实现。

filter

filter的参数都为执行函数

  1. blur():将高斯模糊应用于输入图像
  2. brightness():将线性乘法器应用于输入图像,以调整其亮度。值为 0% 将创建全黑图像;值为 100% 会使输入保持不变,其他值是该效果的线性乘数。如果值大于 100% 将使图像更加明亮。(简单来说就是设置100%则图片颜色不变,越低则越暗,越高则越亮,这个想过其实很多时候可以用做选中的高亮展示)
  3. contrast():调整输入图像的对比度。值是 0% 将使图像变灰;值是 100%,则无影响;若值超过 100% 将增强对比度。
  4. drop-shadow():使用 <shadow> 参数沿图像的轮廓生成阴影效果。阴影语法类似于 ,但不允许使用 inset 关键字以及 spread 参数。与所有 filter 属性值一样,任何在 drop-shadow() 后的滤镜同样会应用在阴影上。
  5. grayscale():将图像转换为灰度图。值为 100% 则完全转为灰度图像,若为初始值 0% 则图像无变化。值在 0% 到 100% 之间,则是该效果的线性乘数。
  6. hue-rotate() :应用色相旋转。 值设定图像会被调整的色环角度值。值为 0deg,则图像无变化。
  7. invert():反转输入图像。值为 100% 则图像完全反转,值为 0% 则图像无变化。值在 0% 和 100% 之间,则是该效果的线性乘数。
  8. opacity():应用透明度。值为 0% 则使图像完全透明,值为 100% 则图像无变化。
  9. saturate():改变图像饱和度。值为 0% 则是完全不饱和,值为 100% 则图像无变化。超过 100% 则增加饱和度。
    10.sepia():将图像转换为深褐色。值为 100% 则完全是深褐色的,值为 0% 图像无变化。

这个时候我们使用filter的 drop-shadow()

filter: drop-shadow(0 0 10px #000);

在这里插入图片描述
完成!

附上自己写的一个盒子影音的精美样例,并支持在线修改!
http://ffanddd.gitee.io/box-shadow-show
git地址:https://gitee.com/ffanddd/box-shadow-show.git


http://lihuaxi.xjx100.cn/news/1445904.html

相关文章

Kotlin CompletableDeferred 入门

在 Kotlin 中&#xff0c;CompletableDeferred 是一个用于异步编程的类&#xff0c;它提供了一种实现异步操作和等待操作结果的方式。 CompletableDeferred 是 Deferred 接口的具体实现之一&#xff0c;可以用于表示一个可能会在将来完成的操作。它提供了以下主要功能&#xf…

uniapp开发微信小程序底部地区选择弹框

个人项目地址&#xff1a; SubTopH前端开发个人站 &#xff08;自己开发的前端功能和UI组件&#xff0c;一些有趣的小功能&#xff0c;感兴趣的伙伴可以访问&#xff0c;欢迎提出更好的想法&#xff0c;私信沟通&#xff0c;网站属于静态页面&#xff09; SubTopH前端开发个人站…

8,四个类型转换const_cast、reinterpret_cast、dynamic_cast、static_cast

类型转换const_cast、reinterpret_cast、dynamic_cast、static_cast const_castreinterpret_castdynamic_caststatic_cast const_cast 被const修饰的函数可以被访问&#xff0c;但是不能被修改成员变量 const_cast可以去掉const #include <iostream> using namespace s…

一文秒懂HTTP协议到底是什么?原理?

目录 1.什么是http协议&#xff1f; 2.http协议的版本&#xff1f; 3.http文本框架 4.http请求报文 5.http报文格式 6.http响应报文 7.HTTP的状态码 8.HTTP首部介绍 9.什么是URL和URI&#xff1f; 10.CGI是什么&#xff1f; 1.什么是http协议&#xff1f; http&#…

ATF BL1 UFS初始化简单分析

ATF BL1 UFS初始化分析 1 ATF的下载链接2 ATF BL1 UFS 初始化简易流程图3 ATF BL1 ufs初始化简单过程分析3.1 调用过程3.2 hikey960_ufs_init3.3 dw_ufs_init3.3 ufs_init 以海思hikey960为例来介绍&#xff0c;简单介绍在ATF BL1阶段的初始化处理。 1 ATF的下载链接 https:/…

【ARM 嵌入式 编译系列 10.2 -- 符号表与可执行程序分离详细讲解】

文章目录 符号表与可执行程序分离方法一 使用eu-strip方法二 使用 objcopy上篇文章:ARM 嵌入式 编译系列 10.1 – GCC 编译缩减可执行文件 elf 文件大小 下篇文章:ARM 嵌入式 编译系列 10.3 – GNU elfutils 工具小结 符号表与可执行程序分离 接着上篇文章 ARM 嵌入式 编译…

Amazon EMR Hudi 性能调优——Clustering

随着数据体量的日益增长&#xff0c;人们对 Hudi 的查询性能也提出更多要求&#xff0c;除了 Parquet 存储格式本来的性能优势之外&#xff0c;还希望 Hudi 能够提供更多的性能优化的技术途径&#xff0c;尤其当对 Hudi 表进行高并发的写入&#xff0c;产生了大量的小文件之后&…

Vue.js快速入门指南:零基础也能轻松上手,开启前端开发之旅!

目录 MVC设计模式与MVVM设计模式选项式API的编程风格与优势声明式渲染及响应式数据实现原理指令系统与事件方法及传参处理计算属性与侦听器区别与原理条件渲染与列表渲染及注意点class样式与style样式的三种形态表单处理与双向数据绑定原理生命周期钩子函数及原理分析 MVC设计模…