您2019猪事顺利,心想事成。
前面两篇文章都有提到过box-shadow,里面也有很多的基础知识,有看过的小伙伴应该都有或多或少的收获吧,今天我们再从基础入手,希望能让大家更熟悉它。
没有看过之前文章的小伙伴请点击:
CSS3 box-shadow实现背景动画
CSS3动画解析抖音 LOGO制作
下面我们从最基础的开始演示。
关键点: 1、外 box-shadow 前四个参数:x 偏移值、y 偏移值 、模糊半径、扩张半径。 2、单侧投影的核心是第四个参数:扩张半径。这个参数会根据你指定的值去扩大或缩小投影尺寸,如果我们用一个负的扩张半径,而他的值刚好等于模糊半径,那么投影的尺寸就会与投影所属的元素尺寸完全一致,除非使用偏移量来移动他,否则我们将看不到任何投影。
<style> .left { box-shadow: -8px 0 5px -5px #333; } .right { box-shadow: 8px 0 5px -5px #333; } .top { box-shadow: 0 -8px 5px -5px #333; } .bottom { box-shadow: 0 8px 5px -5px #333; } </style> <div class='left'>左</div> <div class='right'>右</div> <div class='top'>上</div> <div class='bottom'>下</div>
知识点:
1、立体文字阴影的关键点在于多层 text-shadow 的叠加
2、合理运用了 SASS 函数来自动计算多层 text-shadow 的 CSS 代码
3、运用了 Sass 的颜色函数,渐进实现层级阴影颜色 - fade-out: 改变颜色的透明度,让颜色更加透明 - desaturate: 改变颜色的饱和度值,让颜色更少的饱和
4、HSL(颜色值)
<style> @function blessing($color) { $val: 0px 0px $color; @for $i from 1 through 50 { $color: fade-out(desaturate($color, 1%), .02); $val: #{$val}, -#{$i}px #{$i}px #{$color}; } @return $val; } div { text-align: center; font-size: 20vmin; line-height: 45vh; text-shadow: blessing(hsl(0, 100%, 50%)); color: hsl(14, 100%, 60%); } </style> <div>福</div>
编译后的css(推荐scss在线编译为css工具) https://www.sassmeister.com/
... div { text-align: center; font-size: 20vmin; line-height: 45vh; text-shadow: 0px 0px #992400, 1px 1px rgba(152, 36, 1, 0.98), 2px 2px rgba(151, 37, 2, 0.96), 3px 3px rgba(151, 37, 2, 0.94), ... ... ... 49px 49px rgba(116, 56, 37, 0.02), 50px 50px rgba(115, 56, 38, 0); color: #ff6333; }
从浅到深的学习 CSS3阴影(box-shadow)
从浅到深的学习 CSS3阴影(box-shadow)
知识点
1、借用了元素的两个伪元素
2、通过渐变色填充两个伪元素,再通过位移、变换放置在合适的位置
<style> div { position: relative; width: 30vmin; height: 30vmin; line-height: 30vh; text-align: center; font-size: 30px; background: #fff; margin: 30vmin auto; } div::before, div::after { content: ""; position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: -1; } div::before { content: ':before'; font-size: 30px; text-align: center; line-height: 30vh; transform-origin: 0 50%; transform: translate(100%, 0) skewY(45deg) scaleX(.6); background: linear-gradient(90deg, rgba(0, 0, 0, .3), transparent); } div::after { content: ':after'; font-size: 30px; text-align: center; line-height: 30vh; transform-origin: 0 0; transform: translate(0%, 100%) skewX(45deg) scaleY(.6); background: linear-gradient(180deg, rgba(0, 0, 0, .3), transparent); } </style> <div>Web秀</div>
从浅到深的学习 CSS3阴影(box-shadow)
知识点
1、阴影实现的关键点在于使用伪元素绝对定位在容器的一角,元素本身透明,阴影扩散开形成内切圆角效果
2、阴影实现缺点,单个标签最多只能是2个内切圆角
3、径向渐变实现内切圆角可以是4边
<style> div { position: relative; width: 20vw; height: 8vw; margin: 1vw auto; border-radius: 1vmin; overflow: hidden; line-height: 8vw; color: #fff; text-align: center; } .shadow::before { position: absolute; content: ""; top: -2vw; left: -2vw; width: 4vw; height: 4vw; border-radius: 50%; box-shadow: 0 0 0 15vw #e91e63; z-index: -1; } .shadow::after { position: absolute; content: ""; bottom: -2vw; right: -2vw; width: 4vw; height: 4vw; border-radius: 50%; box-shadow: 0 0 0 15vw #e91e63; z-index: -1; } .linear { background-size: 70% 70%; background-image: radial-gradient( circle at 100% 100%, transparent 1vw, transparent 2vw, #03A9F5 2vw), radial-gradient( circle at 0 0, transparent 0, transparent 2vw, #03A9F5 2vw), radial-gradient( circle at 100% 0, transparent 0, transparent 2vw, #03A9F5 2vw), radial-gradient( circle at 0 100%, transparent 0, transparent 2vw, #03A9F5 2vw); background-repeat: no-repeat; background-position: right bottom, left top, right top, left bottom; } </style> <div class="shadow">阴影实现缺点最多是2边</div> <div class="linear">径向渐变内切圆角4边</div>
从浅到深的学习 CSS3阴影(box-shadow)
知识点 :圆环进度条的移动本质上是阴影顺序延时移动的结果。
<style> body { background: #000; } .container { position: relative; overflow: hidden; width: 124px; height: 124px; overflow: hidden; margin: 100px auto; border-radius: 50%; } .shadow { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 120px; height: 120px; line-height: 120px; border-radius: 50%; color: #fff; font-size: 20px; cursor: pointer; box-shadow: 60px -60px 0 2px #e91e63, -60px -60px 0 2px #e91e63, -60px 60px 0 2px #e91e63, 60px 60px 0 2px #e91e63; text-align: center; } .shadow:hover { animation: border 0.5s ease forwards; } @keyframes border { 0% { box-shadow: 60px -60px 0 2px #e91e63, -60px -60px 0 2px #e91e63, -60px 60px 0 2px #e91e63, 60px 60px 0 2px #e91e63, 0 0 0 2px transparent; } 25% { box-shadow: 0 -125px 0 2px #e91e63, -60px -60px 0 2px #e91e63, -60px 60px 0 2px #e91e63, 60px 60px 0 2px #e91e63, 0 0 0 2px #fff; } 50% { box-shadow: 0 -125px 0 2px #e91e63, -125px 0px 0 2px #e91e63, -60px 60px 0 2px #e91e63, 60px 60px 0 2px #e91e63, 0 0 0 2px #fff; } 75% { box-shadow: 0 -125px 0 2px #e91e63, -125px 0px 0 2px #e91e63, 0px 125px 0 2px #e91e63, 60px 60px 0 2px #e91e63, 0 0 0 2px #fff; } 100% { box-shadow: 0 -125px 0 2px #e91e63, -125px 0px 0 2px #e91e63, 0px 125px 0 2px #e91e63, 120px 40px 0 2px #e91e63, 0 0 0 2px #fff; } } </style> <div class="container"> <div class="shadow">web 秀</div></div> </div>
从浅到深的学习 CSS3阴影(box-shadow)
喜欢小编的点击关注,了解更多知识!
源码地址和源文件下载请点击下方“了解更多”
随着Web技术的不断演进,CSS3以其强大的视觉表现力,赋予网页设计无限可能。本文将深入剖析CSS3中的三大视觉魔法工具——渐变、阴影与遮罩技术,通过详尽的理论讲解和丰富的实例演示,助您掌握这些技巧,打造出令人眼前一亮的网页视觉盛宴。
1. 线性渐变:平滑过渡,简约而不简单
css
background: linear-gradient(to right, #ff6b6b, #ff9595);
上述代码创建了一个从左至右,由#ff6b6b渐变到#ff9595的线性渐变背景。您可以调整方向(如`to bottom`、`45deg`等)、添加更多颜色停止点来丰富渐变效果。
2. 径向渐变:聚焦视觉中心,营造立体感
css
background: radial-gradient(circle at center, #f7f7f7, #dcdcdc);
此例中,我们创建了一个以元素中心为圆心,从#f7f7f7渐变到#dcdcdc的圆形径向渐变背景。通过调整形状(如`ellipse`)、大小(如`closest-side`)和位置(如`top left`),可以灵活定制径向渐变样式。
1. 盒子阴影(Box Shadow):轻松实现三维效果
css
box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3);
上述代码为元素添加了一个向右下偏移2px、模糊半径为8px、颜色为rgba(0, 0, 0, 0.3)的阴影。理解盒阴影的基本参数(水平偏移、垂直偏移、模糊半径、扩散半径、颜色)并灵活运用,即可创造出丰富的阴影效果。
2. 文本阴影(Text Shadow):让文字跃然纸上
css
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.½), -1px -1px 2px rgba(255, 255, 255, 0.5);
此处为文本设置了两个阴影:一个向右下偏移、颜色较深的阴影,以及一个向左上偏移、颜色较浅的阴影,形成微妙的浮雕效果。通过叠加多个阴影、调整参数,您可以创作出各种独特的文本样式。
1. CSS Mask:精细裁剪,展现独特视界
css
mask-image: linear-gradient(to right, transparent 0%, black 50%, transparent 100%);
该代码为元素应用了一个从左至右的线性渐变遮罩,使得元素左侧和右侧各有一半区域透明。您还可以使用`mask-mode`、`mask-repeat`、`mask-position`等属性进一步调整遮罩行为。
2. CSS Clip Path:创意裁剪,打破常规布局
css
clip-path: polygon(0 0, 100% 0, .png);
上述代码使用多边形裁剪路径,将元素顶部裁剪成尖角形状。您还可以使用椭圆、圆形、内切/外切矩形等多种路径类型,甚至借助SVG路径实现更为复杂的裁剪效果。
案例一:动态渐变按钮
css
/* 定义CSS变量 */
:root {
--start-color: #ff6b6b;
--end-color: #ff9595;
}
.button {
background: linear-gradient(to right, var(--start-color), var(--end-color));
transition: background 0.3s ease-in-out;
}
.button:hover,
.button:focus {
--start-color: #ff9595;
--end-color: #ff6b6b;
}
利用CSS变量、伪类和动画,创建一个点击时背景渐变颜色动态变化的按钮:
案例二:悬浮卡片与阴影交互
css
.card {
box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3);
}
.card:hover {
box-shadow: 4px 4px 16px rgba(0, 0, 0, 0.5);
}
结合盒子阴影与:hover伪类,实现鼠标悬停时卡片阴影增强的交互效果:
案例三:遮罩叠加文字特效
css
.image-overlay {
background-image: url('image.jpg'), linear-gradient(to bottom, transparent, black);
background-blend-mode: multiply;
mask-image: linear-gradient(to bottom, transparent 0%, black 100%);
-webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 100%);
}
利用遮罩与多重背景,创造出文字在图片上淡入淡出的特效:
结语
CSS3的渐变、阴影与遮罩技术,如同网页设计的调色板、光影魔术师和剪刀手,赋予网页视觉表现无尽的可能性。通过深入理解并熟练运用这些技术,您将能打造出既美观又富有创意的网页界面,为用户带来极致的视觉体验。持续探索、实践与创新,您的每一个作品都将成为Web世界中的一道独特风景。
通常,我们为div盒子或者图片设置阴影使用 box-shadow 属性,代码如下:
box-shadow: 10px 10px 10px gray;
使用 box-shadow 属性 给div盒子设置阴影倒还好,如果用在透明的图片上,阴影会变成方形的,让其看起来像添加了一个边框一样。
我们可以通过css的另一种参数,为透明png实现基于透明图片的阴影效果,效果如下图,左侧是 box-shadow ,右侧 drop-shadow 。
drop-shadow()说明:
drop-shadow() 是CSS中用于为图像或文本添加阴影效果的一个函数,它属于 filter 属性的一部分。这个函数允许你为元素创建阴影,而不需要考虑元素的形状或边界框。与 box-shadow 不同,drop-shadow 可以应用于非矩形形状,如透明的PNG或SVG图像,它使用元素的Alpha蒙版来决定阴影的形状。这意味着,即使元素没有背景,drop-shadow 也能为图像的非透明部分创建阴影。
drop-shadow()语法如下:
filter: drop-shadow( offset-x offset-y blur-radius spread-radius color )
drop-shadow()参数说明如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.img_box .left_img{
box-shadow: 10px 10px 10px gray;
}
.img_box .right_img{
filter: drop-shadow(2px 4px 8px rgb(225, 170, 170));
}
</style>
</head>
<body>
<div class="img_box">
<img class="left_img" src="./lihua.png" />
<img class="right_img" src="./lihua.png" />
</div>
</body>
</html>
尽管有很好的支持,但 drop-shadow 滤镜仍然没有得到充分的利用。我希望这篇文章强调了一些使用 box-shadow的 情况,也许你可以在你的下一个项目中使用它!
*请认真填写需求信息,我们会在24小时内与您取得联系。