css实现3D弹性按钮以及box-shadow特性说明

简介: css实现3D弹性按钮以及box-shadow特性说明

box-shadow

在实现案例之前先了解css的阴影属性box-shadow,该属性可以为盒子设置阴影,它有五个参数X轴偏移量、Y轴偏移量、模糊半径、扩散半径和颜色。

box-shadow文档https://developer.mozilla.org/zh-CN/docs/Web/CSS/box-shadow

假设给一个盒子设置阴影:

.shadowBox{
    width: 100px;
    height: 100px;
    border: 1px solid red;
    background-color: #80c342;
    box-shadow: 10px 10px 10px 10px black;  /**x轴 y轴 模糊度 大小 颜色 */
}

x轴左偏移10pxy轴下偏移10px,模糊10px,放大10px,颜色为黑色,效果如下:

上面是设置外阴影的,内阴影只需要在属性前添加inset即可

box-shadow: inset 10px 10px 10px 10px black;

如果没有指定inset,默认阴影在边框外,即阴影向外扩散。 使用 inset 关键字会使得阴影落在盒子内部,这样看起来就像是内容被压低了。此时阴影会在边框之内 (即使是透明边框)、背景之上、内容之下。

内阴影和外阴影的用法一致,阴影的基础用法到这里解释完毕。

下面我们来看一下阴影的一下其他的应用:

不占位应用

阴影跟边框不同,边框真实占位,1px边框就是给盒子添加1px的大小,而阴影是不会影响盒子大小的。

用过ui框架的伙伴都知道,这些框架一般都会提供几个按钮样式,大概分为红、蓝、黄、白,不同按钮颜色有不同的应用效果,其中有一个特殊的白色按钮,它的边框是黑的,大小和其他按钮一致,明明边框会影响box实际大小,但是它的按钮大小却和其他按钮时一致的,这里就可以用阴影实现,通过更改阴影的模糊效果让阴影变为边线,从而实现边框效果。

<div class="insetBtn">正常</div>
.insetBtn{
    background-color: #fff;
    box-shadow: inset 0px 0px 0px 1px #333333;
}

使用内阴影,阴影模糊度为0(不模糊),扩大1px,效果如下:


阴影层级在文字之下

阴影的层级是在文字之下的,而不影响文字,可以通过该特性实现一些特殊效果,例如:使用内阴影实现鼠标移入,当前按钮高亮的提示功能,让用户知道当前选的是哪一个。

.primary{
      width: 80px;
      height: 30px;
      text-align: center;
      line-height: 30px;
      border-radius: 5px;
}
.primary:hover{
    box-shadow: inset 0 0 0 200px rgba(255,255,255,0.2);

box-shadow是无法覆盖img元素的,因为img层级比box-shadow高,如果想要实现覆盖img元素可以用outline边框偏移解决,如下

.insetImg:hover{
    outline: 200px solid rgba(255,255,255,0.2);
    outline-offset: -200px;
}


阴影可以添加多个

阴影可以添加多个,且没有数量限制,也就是说可以用阴影克隆出无数个形状,这种多阴影写法只需要在后面继续叠加阴影参数即可,用逗号(,)分隔

.moreShadow{
    width: 50px;
    height: 50px;
    background-color: #80c342;
    margin: 50px;
    border-radius: 50%;
    box-shadow: 0px -40px 0px -20px #2d52a4,0px 40px 0px -20px #7c9bd0,40px 0px 0px -20px #c7d8f0,-40px 0px 0px -20px #4d6bb3;
}

可以用多阴影特性实现加载图标,绘制周围的圆形,让它旋转起来即可。


阴影实现3D弹性按钮

阴影实现3d按钮,点击的时候按钮下压,松开鼠标按钮回弹。

.button3D{
    width:80px;
    height:30px;
    border: 1px solid #80c342;
    text-align: center;
    line-height: 30px;
    background-color: #b7d69a;
    box-shadow: 1px 1px 0px 0px #b7d69a,2px 2px 0px 0px #b7d69a,3px 3px 0px 0px #b7d69a;
}
/*active点击事件*/
.button3D:active{
    translate : 1px 1px;
    box-shadow: 1px 1px 0px 0px #b7d69a,2px 2px 0px 0px #b7d69a;
}

三个box-shadow分别累加1px,看起来像完美衔接的3D阴影,通过translate将激活的按钮xy轴平移1px,由于位置移动了,阴影也会随着移动1px,所以减少最外层3px的阴影,看起来阴影没有动,按钮动了。

阴影特性

1、内外阴影的光源都是一致的,左上角光源

2、不占位,阴影跟边框不同,边框真实占位,1px边框就是给盒子添加1px的大小,而阴影是不会影响盒子大小的。

3、阴影可以添加多个,每个阴影都可以单独设置xy轴偏移度,以及模糊、大小、颜色,相当于一个box可以叠加多个颜色效果。


案例源码:https://gitee.com/wang_fan_w/css-diary

如果觉得这篇文章对你有帮助,欢迎点赞、收藏、转发哦~

目录
相关文章
|
3月前
|
前端开发 JavaScript 开发者
探索Web设计新纪元:CSS3的革新特性如何重塑我们的网页视觉体验?
【8月更文挑战第26天】随着Web技术的发展,CSS3为前端开发带来了众多激动人心的新特性,极大提升了网页设计的视觉效果与创意空间。本文通过对比CSS3与CSS2,详细介绍了CSS3在选择器增强、圆角阴影处理、渐变背景应用、转换动画实现、文字效果优化、媒体查询支持及多列布局方面的显著改进,展示了CSS3如何助力开发者打造更具吸引力和互动性的网页体验。
52 1
|
2月前
|
前端开发
【前端web入门第四天】02 CSS三大特性+背景图
本文详细介绍了CSS的三大特性:继承性、层叠性和优先级,并深入讲解了背景图的相关属性,包括背景属性、背景图的平铺方式、位置设定、缩放、固定以及复合属性。其中,继承性指子元素自动继承父元素的文字控制属性;层叠性指相同属性后定义覆盖前定义,不同属性可叠加;优先级涉及选择器权重,包括行内样式、ID选择器等。背景图部分则通过具体示例展示了如何设置背景图像的位置、大小及固定方式等。
256 91
|
6天前
|
前端开发
css特性
css特性 1.继承性:子级继承父级文字控制属性 ps:子级拥有自己的样式则不会继承父级。 2.层叠性:相同的属性后面覆盖前面,不同的属性叠加 3.优先级:选择器优先级高的样式生效 公式:通配符<标签<类<id<行内样式<!important(选中范围越大,优先级越低) 叠加计算规则:存在复合选择器时,从左向右依次比较个数,同一级个数多的优先级高,如果个数相同,则向后比较;!important权重最高;继承权重最低。
|
1月前
|
前端开发 JavaScript API
探索 CSS Houdini:轻松构建酷炫的 3D 卡片翻转动画
本文通过构建一个 3D 翻卡动画深入探讨了 CSS Houdini 的强大功能,展示了如何通过 Worklets、自定义属性、Paint API 等扩展 CSS 的能力,实现高度灵活的动画效果。文章首先介绍了 Houdini 的核心概念与 API,并通过构建一个动态星空背景、圆形进度条以及交互式 3D 翻卡动画的实际示例,展示了如何利用 CSS Houdini 赋予网页设计更多创造力。最后,还演示了如何将这种 3D 翻卡效果集成到公司网站中,提升用户体验。CSS Houdini 的创新能力为网页设计带来了前所未有的灵活性,推动了前端开发迈向新的高度。
26 0
探索 CSS Houdini:轻松构建酷炫的 3D 卡片翻转动画
|
3月前
|
前端开发 JavaScript API
Vue 3 新特性:在 Composition API 中使用 CSS Modules
Vue 3 新特性:在 Composition API 中使用 CSS Modules
|
3月前
|
前端开发
HTML+CSS动画实现动感3D卡片墙:现代Web设计的视觉盛宴
HTML+CSS动画实现动感3D卡片墙:现代Web设计的视觉盛宴
|
3月前
|
前端开发 UED
设计新潮流:CSS动画毛玻璃按钮,展开效果引人入胜!
设计新潮流:CSS动画毛玻璃按钮,展开效果引人入胜!
|
3月前
|
前端开发 搜索推荐 容器
创意按钮,触手可及:CSS不规则形状效果揭秘!
创意按钮,触手可及:CSS不规则形状效果揭秘!
|
3月前
|
前端开发
css来实现一个好玩的按钮
这段代码实现了一个具有独特悬停效果的按钮。通过定义按钮及其`:after`伪元素,并设置初始状态下的透明度和尺寸,当鼠标悬停在按钮上时,背景色平滑过渡至另一种颜色,产生视觉上的动态扩展效果。为避免覆盖文字,特地调整了伪元素的层级,确保交互过程中文字始终可见。整体效果流畅自然,增强了用户界面的互动性与美观度。
56 0
|
4月前
|
前端开发
css特效——纯css绘制图标:带框的加号(添加按钮)、三横(三道杠)、带圈点(双层圆点)
css特效——纯css绘制图标:带框的加号(添加按钮)、三横(三道杠)、带圈点(双层圆点)
125 5