CSS3制作文字/图片倒影---box-reflect

一.box-reflect语法

box-reflect:none | <direction> <offset>? <mask-box-image>?
    <direction> = above | below | left | right
    <offset> = <length> | <percentage>
    <mask-box-image> = none | <url> | <linear-gradient> | <radial-gradient> | <repeating-linear-gradient> | <repeating-radial-gradient>
由于此属性并不是W3C标准属性,在具体使用之时,还是需要添加浏览器的私有属性,根据浏览器的兼容性,使用box-reflect时需要添加-webkit和前缀:

-webkit-box-reflect:none | <direction> <offset>? <mask-box-image>?
box-reflect:none | <direction> <offset>? <mask-box-image>?

2.取值:

none:无倒影
(1).<direction> 倒影的方向
above:指定倒影在对象的上边
below:指定倒影在对象的下边
left:指定倒影在对象的左边
right:指定倒影在对象的右边
(2).<offset> 图片与倒影间隔
<length>:用长度值来定义倒影与对象之间的间隔。可以为负值
<percentage>:用百分比来定义倒影与对象之间的间隔。可以为负值
(3).<mask-box-image> 遮罩图片
none:无遮罩图像
<url>:使用绝对或相对地址指定遮罩图像。
<linear-gradient>:使用线性渐变创建遮罩图像。
<radial-gradient>:使用径向(放射性)渐变创建遮罩图像。
<repeating-linear-gradient>:使用重复的线性渐变创建背遮罩像。
<repeating-radial-gradient>:使用重复的径向(放射性)渐变创建遮罩图像。

3.注意:

倒影不占据尺寸空间,是和outlinebox-shadow一样的那种真正意义上的不占据空间尺寸。所以,demo使用了padding值撑开间距,免图片重叠在一起;

②倒影偏移值支持百分比,且是根据元素自身尺寸计算的。尺寸计算的方位是根据你的倒影方向自动识别的。比说说,你的倒影方向是below或above,则偏移百分比是根据原始元素的高度想计算的,如你的倒影方向是left或right,则根据元素的宽度来计算;

③遮罩图片可以使用CSS3渐变。这里的渐变语法和CSS3 background-image的语法几乎是一模一样的。注意这里的措辞“几乎”,说明还是有不同之处的,不同支持就是-webkit-box-reflect的遮罩图片不支持多图(对于background的多背景),只能是一张图。其他的语法就是一模一样的。包括不仅支持线性渐变(linear-gradient),还支持径向渐变(radial-gradient),支持to top或to bottom新语法,支持stop断点,例如:
-webkit-box-reflect: below 0 linear-gradient(transparent, white 50%, white);

④使用遮罩图片的时候,倒影的偏移值是不能缺省的。如果没有偏移,请使用0占位,这也是为何示意代码中有个0的原因;

⑤遮罩的最终效果与颜色无关,也就是你使用linear-gradient(transparent, white)和linear-gradient(transparent, black)的效果是一模一样的,关键在于是否透明以及透明度是多少。实色遮罩的结果就是透明,透明遮罩的结果就是暴露原始色值。

⑥遮罩图片也可以直接是图片,语法同background-image。但是有个需要注意的是,当图片应用于倒影遮罩的时候,这个图片自身也会被(因倒影)而翻转。比方说上面demo最后一个例子,遮罩出了一个“帅”字,而这个原始的“帅”文字图片是这样的:



二.文字倒影

1.文字倒影

<div class="text-style">
<p>记录·回忆</p>
</div>
.text-style{
	width: 400px;
	height: 300px;
	background: #f00;
}
.text-style p{ 
	font-family: "微软雅黑"; 
	font-size: 30px; 
	color: #FFF; 
	/* below文字倒影方向向下,距离3px 颜色渐变由上往下 */
	-webkit-box-reflect: below -3px -webkit-gradient(linear, 0 0, 0 100%, from(transparent), to(white)); 
}
如果文字是用行内元素的话,<span>记录·回忆</span> 记得用绝对定位
.text-style{position: relative;}
.text-style span{position: absolute; }



2.文字渐变 + 倒影

<div class="text-style">
<p>记录·回忆</p>
</div>
.text-style{
	width: 400px;
	height: 300px;
	background: #f00;
}
.text-style p{ 
	font-family: "微软雅黑"; 
	font-size: 30px; 
	color: #FFF; /* below文字倒影方向向下,距离3px 颜色渐变由上往下 */
	-webkit-box-reflect: below 1px -webkit-gradient(linear, 0 0, 0 100%, from(transparent), color-stop(.5, transparent), to(rgba(42, 41, 39, 0.82)));
	background: -webkit-linear-gradient(top, #FFEB3B 37%,#009688 66%,#FFC107 65%,#FFEB3B 100%);
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
}

2.图片

	<style>
		strong{
			display: block;
		}
		.reflect-below,.reflect-below-mask,.reflect-below-img{
			padding-bottom: 176px;
		}
		.reflect-below img{
		    -webkit-box-reflect: below;
		}
		.reflect-right img{
		    -webkit-box-reflect: right;
		}
		.reflect-right-translate img{
		    -webkit-box-reflect: right 10px;
		}
		.reflect-below-mask img{
		    -webkit-box-reflect:below -3px -webkit-gradient(linear, 0 0, 0 100%, from(transparent), to(white));
		}
		.reflect-below-img img{
		    -webkit-box-reflect: below 0 url(shuai2.png);
		}
	</style>
<div class="reflect-below">
	<strong>下倒影</strong>
	<img src="1.jpg" alt="" height="200" />
</div>
<div class="reflect-right">
	<strong>右倒影</strong>
	<img src="1.jpg" alt="" height="200" />
</div>
<div class="reflect-right-translate">
	<strong>右倒影同时有偏移</strong>
	<img src="1.jpg" alt="" height="200" />
</div>
<div class="reflect-below-mask">
	<strong>下倒影同时有遮罩(线性渐变)</strong>
	<img src="1.jpg" alt="" height="200" />
</div>
<div class="reflect-below-img">
	<strong>下倒影同时有遮罩(使用png图片)</strong>
	<img src="1.jpg" alt="" height="200" />
</div>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值