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

ゝ一世哀愁。 2021-09-14 15:06 364阅读 0赞

一.box-reflect语法

  1. box-reflectnone | <direction> <offset>? <mask-box-image>?
  2. <direction> = above | below | left | right
  3. <offset> = <length> | <percentage>
  4. <mask-box-image> = none | <url> | <linear-gradient> | <radial-gradient> | <repeating-linear-gradient> | <repeating-radial-gradient>

由于此属性并不是W3C标准属性,在具体使用之时,还是需要添加浏览器的私有属性,根据浏览器的兼容性,使用box-reflect时需要添加-webkit和前缀:

  1. -webkit-box-reflectnone | <direction> <offset>? <mask-box-image>?
  2. box-reflectnone | <direction> <offset>? <mask-box-image>?

2.取值:

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

3.注意:

①倒影不占据尺寸空间,是和outline, box-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最后一个例子,遮罩出了一个“帅”字,而这个原始的“帅”文字图片是这样的:

SouthEast

二.文字倒影

1.文字倒影

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

SouthEast 1
2.文字渐变 + 倒影

  1. <div class="text-style">
  2. <p>记录·回忆</p>
  3. </div>
  4. .text-style{
  5. width: 400px;
  6. height: 300px;
  7. background: #f00;
  8. }
  9. .text-style p{
  10. font-family: "微软雅黑";
  11. font-size: 30px;
  12. color: #FFF; /* below文字倒影方向向下,距离3px 颜色渐变由上往下 */
  13. -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)));
  14. background: -webkit-linear-gradient(top, #FFEB3B 37%,#009688 66%,#FFC107 65%,#FFEB3B 100%);
  15. -webkit-background-clip: text;
  16. -webkit-text-fill-color: transparent;
  17. }

SouthEast 2

2.图片

  1. <style>
  2. strong{
  3. display: block;
  4. }
  5. .reflect-below,.reflect-below-mask,.reflect-below-img{
  6. padding-bottom: 176px;
  7. }
  8. .reflect-below img{
  9. -webkit-box-reflect: below;
  10. }
  11. .reflect-right img{
  12. -webkit-box-reflect: right;
  13. }
  14. .reflect-right-translate img{
  15. -webkit-box-reflect: right 10px;
  16. }
  17. .reflect-below-mask img{
  18. -webkit-box-reflect:below -3px -webkit-gradient(linear, 0 0, 0 100%, from(transparent), to(white));
  19. }
  20. .reflect-below-img img{
  21. -webkit-box-reflect: below 0 url(shuai2.png);
  22. }
  23. </style>
  24. <div class="reflect-below">
  25. <strong>下倒影</strong>
  26. <img src="1.jpg" alt="" height="200" />
  27. </div>
  28. <div class="reflect-right">
  29. <strong>右倒影</strong>
  30. <img src="1.jpg" alt="" height="200" />
  31. </div>
  32. <div class="reflect-right-translate">
  33. <strong>右倒影同时有偏移</strong>
  34. <img src="1.jpg" alt="" height="200" />
  35. </div>
  36. <div class="reflect-below-mask">
  37. <strong>下倒影同时有遮罩(线性渐变)</strong>
  38. <img src="1.jpg" alt="" height="200" />
  39. </div>
  40. <div class="reflect-below-img">
  41. <strong>下倒影同时有遮罩(使用png图片)</strong>
  42. <img src="1.jpg" alt="" height="200" />
  43. </div>

SouthEast 3

发表评论

表情:
评论列表 (有 0 条评论,364人围观)

还没有评论,来说两句吧...

相关阅读

    相关 CSS图片文字排版03

    实现思路 主要技术主要使用CSS属性visibility: hidden;将p标签文字隐藏起来,再通过:hover选择器来改变类card的高度,将p标签文字visibil