css 发光_跨浏览器CSS反射,发光和模糊

css 发光

反射可以为对象增加一个有趣的维度,给人一种真实感,并为它们提供周围环境的上下文。 让我们看一下如何使用CSS实现反射,我们还将研究发光和跨浏览器的模糊效果。


假设条件

按照本教程进行操作可遵循多种假设:

  • 您知道您HTML。
  • 您熟悉CSS和CSS2选择器。
  • 如果您想精确地重新创建示例,则应了解box-shadow工作方式。 这不是本教程的关键,因此您需要自己弄清楚。 如果您需要解释,建议您看看CSS3与Photoshop:圆角和盒子阴影 。

盒子反射与“我的方法”

Box-reflect是CSS属性,正是出于这个目的:进行反射。 我们将不使用box-reflect和mask-image ,因为:

  • 在撰写本文时,这两个属性仅受webkit支持(Chrome和Safari)。
  • 至少可以说,该实现存在很多问题。

当微软推出其滤镜效果时(例如IE 4时代,嵌套表用于布局,图像用于反射),肮脏的滤镜不适用于任何给定的元素。 我的猜测是,他们从元素的左上角到右下角使用了某种边界框,这是有道理的,因为据我所知,没有办法超越此框。 但是,他们从未纠正过它。

现在,在Chrome 17时代,webkit犯了同样的错误。 遮罩图像是-webkit-box-reflect的关键,它会在边界框中创建某种动态快照,然后将其粘贴到下面并更改其不透明度。 我试图使用-webkit-box-reflect重新创建演示:

顽皮的思考...

我还没有完成,但是问题很明显。 ETBR具有border-radius和box-shadow 。 框阴影在边界框内可见,但在边界框外不可见。

在我的方法矩阵转换中,插入框阴影和不透明度将替换框反射和蒙版图像。 局限性:

  • 最大的限制是,内嵌的阴影框不能使反射完全透明。 它是真实和虚假透明性的结合,将在大多数情况下有效,但并非总是如此。
  • ETBR中的文本不受插入框阴影的影响。 如果文本的颜色与表面的背景颜色不同,则会发生这种情况。

小提琴 | 全屏

文字颜色不会在背景处变暗。 因此,似乎您不能同时使用其他颜色和矩形阴影。


选择…

当我们讨论矩阵和反射的主题时..

很棒的思考...

您服用蓝色药丸–我向您展示如何重新创建演示单词。 您服用红色药丸-我将向您展示如何对任何事物进行反射,并告诉您在哪里可以以非常有趣的价格购买这些反射阴影。

简单地说; 以下某些步骤是可选的,具体取决于您是否要为像素重新创建演示像素。


可选:准备

该演示以HTML5模板开始...

index.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
		<title>CSS3 Reflections</title>
		<meta name="description" content="Reflection..." />
		<meta name="author" content="Bob de Ruiter" />
		<meta name="viewport" content="width=device-width; initial-scale=1.0" />
		<link rel="shortcut icon" href="/favicon.ico" />
		<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
	</head>
    <body>
	</body>
</html>

...以及这个CSS文件。

style.css

html {
	height: 100%;
}
body {
	text-align: center;
	line-height: 1;
	margin: 0;
	padding: 0;
	height: 100%;
}
p {
	line-height: 1.2;
}

并且,当然,我们将添加一个指向样式表的链接:

<head>
		<meta charset="utf-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
		<title>CSS reflections!</title>
		<meta name="description" content="" />
		<meta name="author" content="Bob" />
		<meta name="viewport" content="width=device-width; initial-scale=1.0" />
		
		<link rel="stylesheet" href="style.css" />
		
		<link rel="shortcut icon" href="/favicon.ico" />
		<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
	</head>

2D,但3D

该演示是2D的。 不是单个3D元素。 我们知道这一点,但是我们的目标是让他们认为我们建立了这个,然后拍摄了前视图。

3D反射...

如果我们希望他们相信3D,则应该确定对象在3D空间中的放置和旋转方式。 该演示有一个视野。 前10%为黑色“天空”,其余90%为假3D平面。 要反射的元素(此后在我们的演示中称为ETBR )与平面彼此垂直(角度为90°),反射要与ETBR平行。


步骤1:可选的飞机和ETBR

HTML:

<body>  
	<div id="plane">
		<header><span id="ETBR">reflection</span></header>
	</div>
</body>

ETBR是飞机的孩子。 这样,它保持在从平面看的相同位置,并且辉光停留在平面中。

body {
	text-align: center;
	line-height: 1;
	margin: 0;
	padding: 0;
	background-color: #000;
	height: 100%;
}
p {
	line-height: 1.2;
}
#plane {
	left: 0;
	top: 10%;
	width: 100%;
	bottom: 0;
	min-width: 1080px;
	min-height: 600px;
	position: absolute;
	overflow: hidden;
	overflow-x: visible;
}

注意:

  • 该平面具有最小宽度和最小高度,因此ETBR始终可见。
  • 溢出y设置为隐藏,因此ETBR的辉光停留在平面中。 (天空必须是黑色的。)
  • 飞机没有背景色,但会从发光中获取颜色,这在任何级别上都没有意义,但看起来是最好的。

步骤2:反射标记

找到对象(ETBR),将其复制,粘贴到自身中,然后将其重命名为refl(ection):

<span id="ETBR">reflection<span id="refl">reflection</span></span>

现在,在css中创建对象的选择器。 将#refl添加到选择器,以便将我们的样式应用于这两个元素:

#ETBR, #refl {
	
}

基本上,反射CSS和HTML必须与ETBRCSS和HTML相同。 我们将定位,镜像和整理第5步中的反射。但是,暂时,我们将隐藏该反射。

#ETBR, #refl {
	
}
#refl {
	display: none;
}

Internet Explorer是Internet Explorer,我们必须添加一些条件HTML:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
		<title>CSS3 Reflections</title>
		<meta name="description" content="Reflection..." />
		<meta name="author" content="Bob de Ruiter" />
		<meta name="viewport" content="width=device-width; initial-scale=1.0" />
		
		<link rel="stylesheet" href="style.css" />
		
		<link rel="shortcut icon" href="/favicon.ico" />
		<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
	</head>
	<!--[if lt IE 9 ]> <body class="oldie"> <![endif]-->
	<!--[if IE 9 ]> <body class="ie9"> <![endif]-->	
	<!--[if (gt IE 9)|!(IE)]><!--> <body class="modern"> <!--<![endif]-->   
		<div id="plane">
			<header><span id="ETBR">reflection<span id="refl">reflection</span></span></header>
		</div>
	</body>
</html>

您可能想知道为什么,只是跟我裸露。 因为您在住院,所以第一个小提琴将完全变成黑色。 您是否想看看飞机的影响? 调整大小。

小提琴 | 全屏


步骤3:可选的基本样式

这不需要解释:

#ETBR, #refl {
	color: #004;
	
	font-family: Impact, 'Arial Black', Helvetica, Arial, sans-serif;
	text-transform: uppercase;
	font-size: 200px;
	background-color: #FFE;
	font-weight: bold;
	padding: 30px;
	display: inline-block;
}
#refl {
	display: none;
}

好,稍作解释。 text-align: center;的组合text-align: center; 并display: inline-block; 使元素古板居中 ,但这不是圣杯; 内联项不能包含阻止项。 我使用了它,因为我不想为该示例添加数千个浮动容器。 通常, 这是要走的路。

小提琴 | 全屏


步骤4:可选的圆角和发光

辉光由三个阴影组成:大的拉伸阴影(看起来更像是平面上的光的反射),真实的辉光(模糊范围更短的白色阴影)和黑色镶嵌阴影(使ETBR看起来像在发光)。 正如我之前提到的,这些天我将不解释盒子阴影如何工作以及边界半径如何说话。

#ETBR, #refl {
	color: #004;
	
	font-family: Impact, 'Arial Black', Helvetica, Arial, sans-serif;
	text-transform: uppercase;
	font-size: 200px;
	background-color: #FFE;
	font-weight: bold;
	padding: 30px;
	display: inline-block;
	
	box-shadow: rgba(255,255,240,.2) 0 0 200px 100px, rgba(255,255,240,.3) 0 0 40px, inset rgba(0,0,0,.8) 0 0 20px;
	border-radius: 30px;
}

小提琴 | 全屏


步骤5:反射定位

清空#refl选择器,使反射可见。 由于反射不是“真实的”,因此我们的反射不会成为文档流的一部分。 它应该浮动。 显而易见的选择是将位置设置为绝对位置,这意味着该元素相对于其第一个定位(非静态)祖先元素进行了定位。 由于没有反射的第一个定位祖先,因此它将相对于主体标签定位。

相对于真实文本放置反射要容易得多,这也是反射的祖先(巧合?)。 为此,我们首先必须“定位” ETBR:

#ETBR, #refl {
	color: #004;
	
	font-family: Impact, 'Arial Black', Helvetica, Arial, sans-serif;
	text-transform: uppercase;
	font-size: 200px;
	background-color: #FFE;
	font-weight: bold;
	padding: 30px;
	display: inline-block;
	
	box-shadow: rgba(255,255,240,.2) 0 0 200px 100px, rgba(255,255,240,.3) 0 0 40px, inset rgba(0,0,0,.8) 0 0 20px;
	border-radius: 30px;
	
	position: relative;
}

这实际上并不会改变位置,但是会定位。 现在:

#refl {
	position: absolute;
	
	top: 100%;
	left: 0;
}

反射的顶部相对于ETBR的高度和位置。 0%将给它们相同的顶部,200%将留下与ETBR高度一样大的间隙,100%将反射的顶部放在ETBR的底部。 左是相同的,但是占宽度的百分比。

小提琴 | 全屏


第6步:现代镜像,模糊和透明度

从IE6到Google Chrome,几乎每种常用的浏览器都具有这些功能。 但是,实现方式有所不同。 现代浏览器非常简单明了,每种功能都有一个特性:变换,模糊和不透明。 我们也将使用box-shadow,但首先进行镜像。

镜射

#refl {
	position: absolute;
	
	top: 100%;
	left: 0;
	
	-moz-transform: scaleY(-1);
	-webkit-transform: scaleY(-1);
	-ms-transform: scaleY(-1);
}

通过转换,我们可以将元素修改为您可以想象的每个平行四边形。 我知道很多平行四边形。 但是我们只需要镜像反射,因此我们将不使用大多数变换函数。

任何设计人员都应该知道在Y轴上按-1缩放与镜像相同。 Y轴上的缩放比例是顶部(和底部)与中心之间的距离乘以。 如果我们在Y轴上按2比例缩放,则顶部到中心的距离将是原来的两倍。 如果按-1缩放,则距离将相同,但是top是底部所在的位置,bottom是顶部所在的位置。 恭喜,您知道如何镜像!

模糊

所有现代的浏览器都将很快支持过滤器-webkit-filter或SVG过滤器。 FF,Opera和IE10已经支持后者,而Safari和Chrome只是在发布之前建立了张力。 SVG滤镜之一是良好的旧高斯模糊。 它很慢,但是有点...

在style.css所在的文件夹中创建文件“ filter.svg”。 其内容:

<?xml version="1.0" standalone="no"?>
<svg width="1" height="1" version="1.1" 
xmlns="http://www.w3.org/2000/svg" 
xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs>
    <filter id="blur">
      <feGaussianBlur in="SourceGraphic" stdDeviation="2 3" />
    </filter>
  </defs>
</svg>

除规则6至8以外的形式。称为“模糊”的过滤器(您可以称其为“任意”)会水平模糊2个像素,垂直模糊3个像素。 回到样式表!

#refl {
	position: absolute;
	
	top: 100%;
	left: 0;
	
	-moz-transform: scaleY(-1);
	-webkit-transform: scaleY(-1);
	-ms-transform: scaleY(-1);
	
	filter: url(filter.svg#blur); /* FF, IE10 & Opera */
	-webkit-filter: blur(2px);
}

filter.svg#blur表示filter.svg#blur的元素“ blur”。 如果过滤器的ID为“ anything”,则网址为filter.svg#anything 。 模糊半径在SVG文件中定义。 Webkit浏览器将所有这些都放在一条规则中。

透明度

透明度已经更长了,因此我们只需要指定一个属性即可:

#refl {
	position: absolute;
	
	top: 100%;
	left: 0;
	
	-moz-transform: scaleY(-1);
	-webkit-transform: scaleY(-1);
	-ms-transform: scaleY(-1);
	
	filter: url(filter.svg#blur); /* FF, IE10 & Opera */
	-webkit-filter: blur(2px);
	
	opacity: .25;
}

我无法将SVG文件放在小提琴中。 (我必须以身作则,以免混淆语义和表示。总之会使事情变得更复杂...)但是我并没有使SVG模糊化……

小提琴 | 全屏

还不完整 苹果在第三天创建反射时,原本打算减少反射。 远离表面的反射应该不太清晰。 让那里黑暗!

这仅在表面具有纯色且字体颜色与此颜色相似时才起作用:我们将通过添加另一个框阴影来使其变暗。 此框阴影将覆盖#ETBR, #refl选择器中的旧阴影。 我们将通过重新声明旧选择器的插入阴影来解决此问题。 第二个阴影是新阴影。 记住,我们添加到反射中的每个阴影都是镜像的。

#refl {
	position: absolute;
	
	top: 100%;
	left: 0;
	
	-moz-transform: scaleY(-1);
	-webkit-transform: scaleY(-1);
	-ms-transform: scaleY(-1);
	
	filter: url(filter.svg#blur); /* FF, Opera + IE10*/
	-webkit-filter: blur(2px); /* webkit */
	
	opacity: .25;
	
	box-shadow: inset rgba(0,0,0,.8) 0 0 20px, inset #000 0 50px 100px; /* first shadow is old */
}

第二个阴影的OffsetY为50像素,但是在应用阴影后 ,该元素始终是镜像的。 阴影不会向下移动,而是向上移动。

看看这个:

小提琴 | 全屏

大! 现在,用IE8来看看它(或者说我的话):基本上是ETBR的两个副本,它们不是镜像,透明或模糊的。


步骤7:肮脏的过滤

开始时我们添加了一些条件注释。 三组。

  • 现代的浏览器和IE10不支持旧的IE过滤器(已放弃IE10的支持),但确实支持新的IE过滤器。
  • IE8及更低版本的旧IE支持肮脏的过滤器,不支持新的过滤器。
  • IE9,两者都支持一点点。

如果IE9不支持新的东西,那就容易多了。 (不要误会我的意思,我很高兴Internet Explorer尝试进行更改。但这会更容易...。)并且使其变得更加复杂,IE9和IE8中的肮脏过滤器之间也存在差异。 抱怨够了,让我们来做些什么。 为每个组添加一个#refl选择器,并将opacity属性移动到modern。

#refl {
	position: absolute;
	
	top: 100%;
	left: 0;
	
	-moz-transform: scaleY(-1);
	-webkit-transform: scaleY(-1);
	-ms-transform: scaleY(-1);
	
	filter: url(filter.svg#blur); /* FF, Opera + IE10*/
	-webkit-filter: blur(2px); /* webkit */
	
	box-shadow: inset rgba(0,0,0,.8) 0 0 20px, inset #000 0 50px 100px;
}
.modern #refl {
	opacity: .25;
}
.ie9 #refl {
	
}
.oldie #refl {
	
}

肮脏的过滤器不喜欢CSS2不透明度。 说到肮脏的过滤器,我们将使用这些过滤器:

  • DXImageTransform.Microsoft.BasicImage使我们能够镜像图像并更改其不透明度
  • DXImageTransform.Microsoft.MotionBlur和DXImageTransform.Microsoft.MotionBlur很棒。
  • DXImageTransform.Microsoft.Gradient替代第二个盒子阴影。

镜射

第一个过滤器BasicImage实际上具有“ mirror”属性! 是! 不幸的是,将此属性设置为1会在水平而非垂直方向上镜像内容。 但这并不意味着它对我们没有用。 将元素旋转180°并水平镜像与垂直镜像相同。 这是可能的:

.oldie #refl {
	filter: progid:DXImageTransform.Microsoft.BasicImage(mirror=1, rotation=2);
}

此旋转的度数不是:0是0°,1是90°,2是180°,而3是270°。 只有老歌需要这个。 IE9支持-ms-transform 。

不透明度

我们可以在同一过滤器中指定不透明度...

.ie9 #refl {
	-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(opacity=.25);"
}
.oldie #refl {
	filter: progid:DXImageTransform.Microsoft.BasicImage(mirror=1, rotation=2,  opacity=.35);
}

IE9(和IE8,但我认为Internet Explorer已经引起足够的重视)支持-ms-filter。 该值是一个大字符串。 这会引起其他浏览器的理解(由于Internet Explorer,Firefox每个星期五都会去看心理医生)。

模糊

...但是我们需要一个用于模糊的新滤镜。 多个过滤器,如果我们想使其看起来更好。 没有逗号,没有filter:过滤器之间只有一个空格或一个新行。 -ms-filter不再换行...

.ie9 #refl {
	-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(opacity=.25) progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='false') progid:DXImageTransform.Microsoft.MotionBlur(strength=15, direction=0) progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='false');"
}
.oldie #refl {
	filter: progid:DXImageTransform.Microsoft.BasicImage(mirror=1, rotation=2, opacity=.35)
	progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='false')
	progid:DXImageTransform.Microsoft.MotionBlur(strength=15, direction=0)
	progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='false');
}

如果我们以6像素的半径对其进行一次模糊处理,则好像有人拍摄了4个反射副本,并在上方移动了6个像素,在下方移动了6个像素,向左移动了6个像素,向右移动了6个像素。 如果要在酒吧炫耀,您应该知道名称:Box Blur。 添加迭代(对模糊对象进行模糊处理)会使“盒子模糊”看起来像普通的模糊。 第二个迭代是运动模糊,因为它看起来不错。

小提琴 | 全屏

这次,不是一回事,而是两件事是错误的:

  1. 模糊在IE9中将反射向上和向右移动了几个像素,但在IE8中,它将反射向下移动了。 为什么? 这是一个谜。
  2. 在IE7和IE8中,反射到处都是透明的。

首先要解决的第二个问题:由于旧版本不支持盒阴影,因此我们将使用肮脏的alpha渐变作为替换。 据我所知,这些是CSS中的第一个类似RGBA的值,但是如果w3c规范在那个时候完全说不出rgba值的话,Internet Explorer不会听。 他们使用8个十六进制位代替6。前两个代表字母。 肮脏的渐变采用ARGB而不是RGBA,我必须承认,这听起来要好得多:

.ie9 #refl {
	-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(opacity=.25) progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='false') progid:DXImageTransform.Microsoft.MotionBlur(strength=15, direction=0) progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='false');"
}
.oldie #refl {
	filter: progid:DXImageTransform.Microsoft.Gradient(startColorstr=#99000000, endColorstr=#00000000)
	progid:DXImageTransform.Microsoft.BasicImage(mirror=1, rotation=2, opacity=.35)
	progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='false')
	progid:DXImageTransform.Microsoft.MotionBlur(strength=15, direction=0)
	progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='false');
}

渐变也必须模糊,所以首先。 默认情况下,污秽过滤器梯度是垂直的。 startColorstr是在顶部和渐变色startColorstr的颜色在底部,但它的镜像! #99000000与rgba(0,0,0,153)相同。 请记住:设置渐变的不透明度越高,反射的不透明度似乎越低。

定位只是反复试验的问题。 由于反射已经以百分比设置了位置,因此无法使用left和top属性将其调整到像素内。 相反,我们将使用margin:

.ie9 #refl {
	margin-top: 20px;
	margin-left: -10px;
	
	-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(opacity=.25) progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='false') progid:DXImageTransform.Microsoft.MotionBlur(strength=15, direction=0) progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='false');"
}
.oldie #refl {
	margin-top: -20px;
	margin-left: -7px;
	
	filter: progid:DXImageTransform.Microsoft.Gradient(startColorstr=#99000000, endColorstr=#00000000)
	progid:DXImageTransform.Microsoft.BasicImage(mirror=1, rotation=2, opacity=.35)
	progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='false')
	progid:DXImageTransform.Microsoft.MotionBlur(strength=15, direction=0)
	progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='false');
}

小提琴 | 全屏


步骤8:完成修饰

在您花一些时间做一些更好的事情之前,我们将做两件事,例如在youtube上打喷嚏的熊猫 。

  • 将反射放置在ETBR之外(在z空间中),因为模糊的反射位于ETBR上方和辉光上方。
  • 向下移动ETBR。 ETBR的顶部与地平线完美对齐,这看起来很奇怪。

解决方案:

  • 通常,我们将ETBR和反射的z-index分别设置为2和1。但是由于在此演示中,反射中没有其他元素(同样在z空间中),因此我们可以简单地将z-反射的索引为-1。
  • 在平面的顶部添加填充。 由于ETBR是飞机的子代,它将向下移动。

这是CSS文件。 最后的更改突出显示:

style.css

html {
	height: 100%;
}
body {
	text-align: center;
	line-height: 1;
	margin: 0;
	padding: 0;
	background-color: #000;
	height: 100%;
}
p {
	line-height: 1.2;
}
#plane {
	padding-top: 5%;
	
	left: 0;
	top: 10%;
	width: 100%;
	bottom: 0;
	min-width: 1080px;
	min-height: 600px;
	position: absolute;
	overflow: hidden;
	overflow-x: visible;
}
#ETBR, #refl {
	color: #004;
	
	font-family: Impact, 'Arial Black', Helvetica, Arial, sans-serif;
	text-transform: uppercase;
	font-size: 200px;
	background-color: #FFE;
	font-weight: bold;
	padding: 30px;
	display: inline-block;
	
	box-shadow: rgba(255,255,240,.2) 0 0 200px 100px, rgba(255,255,240,.3) 0 0 40px, inset rgba(0,0,0,.8) 0 0 20px;
	border-radius: 30px;
	
	position: relative;
}
#refl {
	position: absolute;
	z-index: -1;
	
	top: 100%;
	left: 0;
	
	-moz-transform: scaleY(-1);
	-webkit-transform: scaleY(-1);
	-ms-transform: scaleY(-1);
	
	filter: url(filter.svg#blur); /* FF, Opera + IE10*/
	-webkit-filter: blur(2px); /* webkit */
	
	box-shadow: inset rgba(0,0,0,.8) 0 0 20px, inset #000 0 50px 100px;
}
.modern #refl {
	opacity: .25;
}
.ie9 #refl {
	margin-top: 20px;
	margin-left: -10px;
	
	-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(opacity=.25) progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='false') progid:DXImageTransform.Microsoft.MotionBlur(strength=15, direction=0) progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='false');"
}
.oldie #refl {
	margin-top: -20px;
	margin-left: -7px;
	
	filter: progid:DXImageTransform.Microsoft.Gradient(startColorstr=#99000000, endColorstr=#00000000)
	progid:DXImageTransform.Microsoft.BasicImage(mirror=1, rotation=2, opacity=.35)
	progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='false')
	progid:DXImageTransform.Microsoft.MotionBlur(strength=15, direction=0)
	progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='false');
}

index.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
		<title>CSS3 Reflections</title>
		<meta name="description" content="Reflection..." />
		<meta name="author" content="Bob de Ruiter" />
		<meta name="viewport" content="width=device-width; initial-scale=1.0" />
		
		<link rel="stylesheet" href="style.css" />
		
		<link rel="shortcut icon" href="/favicon.ico" />
		<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
	</head>
	<!--[if lt IE 9 ]> <body class="oldie"> <![endif]-->
	<!--[if IE 9 ]> <body class="ie9"> <![endif]-->	
	<!--[if (gt IE 9)|!(IE)]><!--> <body class="modern"> <!--<![endif]-->   
		<div id="plane">
			<header><span id="ETBR">reflection<span id="refl">reflection</span></span></header>
		</div>
	</body>
</html>

filter.svg

<?xml version="1.0" standalone="no"?>
<svg width="1" height="1" version="1.1" 
xmlns="http://www.w3.org/2000/svg" 
xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs>
    <filter id="blur">
      <feGaussianBlur in="SourceGraphic" stdDeviation="2 3" />
    </filter>
  </defs>
</svg>

结论

就这样! 这是最后的小提琴 , 没有 SVG滤镜模糊。

小提琴 | 全屏

另外,这是使用此技术的纯CSS(背景中的星号除外) Mac Dock 。

我希望您喜欢本教程,也希望您学到新知识。 随时在评论中留下任何问题!

翻译自: https://webdesign.tutsplus.com/tutorials/cross-browser-css-reflections-glows-and-blurs--webdesign-6294

css 发光

H5液态玻璃按钮交互效果实战指南 本文是一份H5液态玻璃按钮交互效果的实战指南,详细解析了如何超越基础的Glassmorphism(毛玻璃)效果,通过结合CSS的backdrop-filter、多层box-shadow、动态SVG滤镜以及JavaScript鼠标追踪,创造出具有流动光泽和拟真交互反馈的“液态玻璃”质感按钮。 阅读详情

相关推荐

微信小程序文字特效实战:用CSS3实现渐变+阴影的5种高级玩法

本文详细介绍了在微信小程序中使用CSS3实现五种高级文字特效的方法,包括霓虹灯文字、金属质感文字、磨砂玻璃文字、荧光文字和立体浮雕文字。通过`background-clip`、`filter`和`blend-mode`等属性的创造性组合,开发者可以轻松实现渐变与阴影的复合效果,提升小程序的视觉表现力。文章还提供了性能优化和兼容性解决方案,帮助开发者在不同场景下做出合理选择。

weixin_28520495的博客 91

有趣的css,用css实现镜面( -webkit-box-reflect)

本篇文章提到了-webkit-box-reflect制作镜面的几个简单操作。

qq_69444691的博客 1572

环境色与氛围感:从CSS到Three.js的实战指南

环境色是渲染中决定氛围感的关键因素,它并非简单的背景色,而是通过周围环境反射影响物体暗部与反射颜色。在计算机图形学中,理解环境光、半球光与PBR材质的相互作用,是调试视觉质感的基础。通过调整天空色、地面色、光强与曝光参数,可以让物体暗部呈现冷蓝或暖黄的情绪倾向,而主光与投影的平衡则决定立体感。从二维CSS渐变到三维Three.js场景,环境色可覆盖页面设计与实时渲染场景,常见问题包括发灰、发脏、过曝等,可通过提高暗部色彩饱和度和控制光比来优化。掌握环境色参数化的方法,即可实现可复现、可验证的氛围效果。

weixin_34326558的博客 458

3. 小众但非常实用的 CSS 属性

是一个非标准的 CSS 属性,主要用于在 WebKit 浏览器(如 Chrome 和 Safari)中创建元素的倒影效果。这个属性能够增强网页的视觉效果,使元素呈现出更加立体和生动的感觉。 的基本语法结构为: 元素背面是否可见 是一个 CSS 属性,用于控制元素的背面是否可见。它主要用于在进行 3D 转换时控制元素的背面可见性当我们对一个元素应用 3D 转换(例如旋转或倾斜)时,默认情况下,元素的背面是不可见的,即不会显示在屏幕上。这是因为浏览器默认会进行背面剪裁(backface culling),以

LBJ辉的前端天地 1255

CSS 3.0实现炫酷发光特效

给大家分享一个用CSS 3.0实现的炫酷发光特效,效果如下: 以下是代码实现,欢迎大家复制、粘贴和收藏。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <t

分享前端工程化、AI 应用、Agent 开发与大模型实践! 5234

HTML5+CSS3小实例:鼠标悬停发光按钮

HTML5+CSS3做一组鼠标悬停发光的按钮,鼠标悬停,按钮边框延展开来,首尾相连时填充按钮,过程伴随发光、倒影效果,并通过hue-rotate实现每个按钮不同颜色。 效果: 源码: <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta name="viewport" co

艾恩小灰灰的博客 1234

CSS linear-gradient进阶玩法:用渐变模拟毛玻璃、金属光泽和霓虹灯效果

本文深入探讨了CSS linear-gradient的高级应用,展示了如何通过线性渐变实现毛玻璃、金属光泽和霓虹灯效果。从基础结构到进阶技巧,详细解析了每种效果的实现原理和代码示例,帮助开发者提升数字界面设计的视觉表现力。

weixin_29009971的博客 352

CSS 3.0实现会发光加载中特效

给大家分享一个用CSS 3.0实现的会发光的加载中特效,效果如下: 以下是代码实现,欢迎大家复制粘贴和收藏。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CSS 3.

分享前端工程化、AI 应用、Agent 开发与大模型实践! 669

CSS自定义滚动条:跨浏览器 scrollbar 样式实战指南

滚动条是Web界面中承担‘空间感知’与‘操作反馈’双重功能的基础导航控件,其样式定制并非视觉修饰,而是影响用户停留时长、操作准确率的关键体验环节。其技术原理依赖于浏览器私有伪元素(如::-webkit-scrollbar)与新兴标准属性(如scrollbar-width、scrollbar-color)的协同控制,本质是一套需分层兜底、渐进增强的工程化方案。技术价值体现在深色模式适配、响应式尺寸调控、性能优化(will-change、硬件加速)及可访问性保障(aria-label、focus-within)

weixin_34072458的博客 371

至前端爱好者

专栏简介 使用 CSS 动画,转换和变换和悬停效果,提供有创造性点子。 专栏介绍 你会学到: CSS3课程网页设计效果 掌握 css 动画,转换和变换 使用 animation 创建任何有创意的 css 动画 所以在这门课程中,通过许多例子,演示一些有创意的想法,并通过这些例子加强我们对 CSS 记忆,更好帮助你们创建任何你们能想到的复杂动画。 痛点: 平时知道了 CSS 有哪些新的特性,但却不...

粉丝们务必加入微信粉丝群 2314

AArch64 ARM64 寄存器介绍

除了上述通用寄存器,还有FPSR(浮点状态寄存器)和 FPCR(浮点控制寄存器)等。X29寄存器和X30寄存器在函数调用和堆栈帧的管理中扮演着关键角色。AArch64架构提供了31个通用寄存器,每个寄存器都可以用作64位X寄存器(X0~X30)或32位W寄存器(W0~W30)。使用X寄存器将导致64位的计算,使用W寄存器将导致32位的计算。EL0、EL1、EL2和EL3是AArch64架构中定义的四个特权级别(Exception Levels),用于支持不同的执行环境和特权级别。

lml435035844的博客 1万+

纯CSS实现立体字效果:从光影原理到实战应用

在网页设计与前端开发中,CSS(层叠样式表)是构建视觉表现的核心技术。其原理是通过一系列属性控制元素的样式、布局和动画,从而实现丰富的视觉效果。CSS的技术价值在于能够在不依赖外部资源(如图片)的情况下,创建高性能、可访问且易于维护的界面元素。应用场景广泛,从基础的按钮样式到复杂的动态标题皆可覆盖。本文聚焦于利用CSS模拟三维立体视觉效果,深入探讨如何通过组合 text-shadow、background-clip、transform 等属性,构建出具有深度、光影和质感的精美立体字。这种方法避免了使用Can

weixin_29018335的博客 324

ChatGPT Plus完整开通指南:从账号注册到稳定使用全流程

自然语言处理(NLP)技术通过深度学习模型实现对人类语言的理解与生成,其核心原理是基于Transformer架构的大规模预训练。GPT-4作为当前最先进的生成式AI模型,在代码编写、文档分析等场景展现出显著的技术价值。在实际应用中,稳定的网络环境和合规的支付方式是确保AI助手持续服务的关键因素。针对ChatGPT Plus的开通,需要系统性地解决账号验证、虚拟信用卡支付等工程实践问题,才能实现工作流的高效整合。

weixin_34239592的博客 428

SPIRAN ART SUMMONER惊艳效果:动态极光+水晶球反射+人物半透明叠加渲染

本文介绍了如何在星图GPU平台上自动化部署🔮 SPIRAN ART SUMMONER图像生成镜像,快速搭建AI绘画环境。该镜像深度融合了《最终幻想》的幻光美学与Flux.1-Dev模型技术,能够一键生成融合动态极光、水晶球反射与人物半透明叠加等惊艳效果的奇幻艺术图像,适用于游戏概念设计、数字艺术创作等场景。

weixin_42376614的博客 691

HP SPP download

是一个全面的系统软件和固件更新解决方案,以单个ISO映像的形式提供。该解决方案使用智能更新管理器(SUM)作为部署工具。

极致,细节 9860

3分钟创建智能体

智能体简介会在首页以及名片页展示,需要简洁明了的介绍智能体用途✅优秀示例:最好用第三人称直接说明智能体用途~如:打造生动文案好帮手、专业解梦,探寻梦境奥秘等❌反面教材:简介并未介绍用途、语义含糊。如:今天写点啥、看看你做的梦等以上步骤完成后,点击发布,就能成功创建属于你自己的智能体啦~仅自己可访问(免审):发布后仅开发者本人账号可访问、预览、使用该智能体仅链接可访问:发布后任何人均可通过链接访问、预览、使用该智能体。

soso1968的博客 2085

PHP设计渐变的效果,CSS_纯CSS实现的大小渐变、渐远效果,效果图: 效果差不多也 - phpStudy...

纯CSS实现的大小渐变、渐远效果效果图:效果差不多也就是上图的这个样子,基本原理如图所示:将所有的盒子都绝对定位,然后将宽高各50%的递缩小,并且在top、right、bottom和left针对性的偏移即可,代码如下:复制代码代码如下:CSS to achieve the visual effect and further away[既是安安]div{background-color:#a4000...

weixin_29230805的博客 114

微信开放标签wx-open-launch-app样式失效?手把手教你正确设置点击区域(附完整代码)

本文详细解析了微信开放标签`wx-open-launch-app`样式失效和点击无响应的常见问题,提供了完整的解决方案和代码示例。通过分析标签内部实现机制,指导开发者正确设置点击区域和样式,确保跨平台兼容性和用户体验优化。

joy55的博客 320

CSS阴影全解析:box-shadow、text-shadow与drop-shadow的区别与应用

在网页设计与前端开发中,CSS阴影是实现视觉层次和立体感的核心技术之一。其原理是通过模拟光线投射,为元素创建深度和空间感,从而提升用户界面的美观性和可读性。从技术价值看,合理使用阴影能有效引导用户注意力、区分交互状态,并增强整体的设计质感。常见的应用场景包括按钮悬停效果、卡片悬浮设计、文字特效以及不规则图形投影等。本文聚焦于CSS中三种主流的阴影实现方式:box-shadow适用于矩形盒子模型,text-shadow专为文字内容服务,而filter: drop-shadow()则能精准追踪元素的实际像素轮廓

weixin_33951761的博客 322

多元相关性分析_PAST:最简便易用的统计学分析软件教程目录

欢迎来到PAST的世界!本教程并不是将PAST的所有功能均进行详细介绍,而只是挑选与生物、医学、微生物研究相关的统计学分析内容进行讲述。根据PAST内各项分析的标签分类,将该教程具体设置如下:PAST软件介绍PAST的基本信息数据的输入和修改数据的转换和标准化图像绘制 (Plot标签)点线图和直方图散点图条形图和箱须图饼图堆叠条形图三元相图气泡图单变量统计学分析 (Univariate标...

weixin_39605706的博客 3156

C语言实现惯性导航初始对准全部核心代码

惯性导航初始对准包括间接粗对准和卡尔曼滤波精对准,其中。为基于卡尔曼滤波的精对准,其中。

十八与她的博客 2283

Q06-导航按钮高级拟态玻璃效果构建完全指南

本文档详细讲解如何在没有背景图片的导航页面上,通过纯 CSS 技术为每个导航按钮构建高级拟态玻璃(Glassmorphism)效果。涵盖从基础原理到 Apple Liquid Glass、Honor MagicOS 风格的完整实现方案,以及交互状态增强和完整可运行示例

郑恩赐,厦门工学院软件工程AI方向本科在读。专注AI全栈应用开发,熟练Vue3、Spring Boot、PyTorch等技术栈,正在探索多模态大模型应用。拥有多个全栈项目和AI应用开发经验,获国家级大创立项和发明专利,掘金优质作者榜第2名。 3777

[个人自用,全网最优]EDEM-FLUENT个人自学教程,拒绝手忙脚乱无用功!

[个人自用,全网最优]EDEM-FLUENT个人自学教程,拒绝手忙脚乱无用功!

zheaa的博客 4828

分享88个文字特效,总有一款适合您

知识付费甚欢喜,为咱码农谋福利。html5+three制作的3D方块和文字空间旋转动画特效。css3彩色放大缩小发光loading文字加载动画特效。html5 canvas酷炫LED文字切换动画特效。css3网格3D布局霓虹灯英文字母文字展示特效。HTML5 Canvas粒子汇聚文字动画特效。css3 3D立体动感文字和放射背景动画特效。html5 canvas文字放射发光动画特效。css3绘制的精美大气立体3D文字动画特效。

zdh13370188237的博客 1099

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

别再只会用color了!CSS渐变、滤镜、倒影文字特效实战(附完整源码)

本文详细介绍了如何利用CSS实现渐变、发光、倒影和金属镀金等高级文字特效,无需依赖图片或复杂脚本。通过实战代码示例和性能优化建议,帮助开发者提升网页设计的视觉冲击力,同时保持代码的高效和可维护性。特别适合前端开发者和UI设计师学习参考。

weixin_42548874的博客 261

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: sass 引入sass_您需要了解的有关Sass插值的所有信息
下一篇: 快速提示:使电话号码有用
daique1908
博客等级 码龄10年 29粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值