通过一张图教会你CSS3倒影的实现


Posted in HTML / CSS onSeptember 26, 2017

前言

本文主要给大家介绍了关于CSS3倒影实现的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

效果图如下:

通过一张图教会你CSS3倒影的实现
示例图片

在CSS3之前,想要实现示例图片这样的一个倒影效果一般只能通过处理图片的方式,而CSS3问世之后,想要实现这样的效果变得非常简单,只需一个CSS3属性就可以轻松实现了。

这就是今天所要提到的box-reflect属性。

咱们先看看W3C给出的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>(分别代表:没有遮罩图片 | 遮罩图片路径 | 线性渐变 | 径向渐变 | 重复线性渐变 | 重复径向渐变)
  • 默认值:none

box-reflect可给两种属性值,一种是none,为默认值,也就是没有任何倒影效果,另一种才是我们今天所要讲的,它可以同时赋予三个属性值,它们依次代表倒影方向、元素与倒影之间的距离以及加在倒影上的遮罩图像,其中后两个属性值可以缺省,但如果<mask-box-image>存在,则<offset>必填。

说了那么多干巴巴的解释,还是联系一下示例应该更好理解些吧。

我们现在来一步步地实现文章开头示例图片的投影效果:

①只给一个属性值below。

<!--HTML代码-->
< img class="img" src="imgs/cat.jpg" />
/*CSS代码*/
.img{ -webkit-box-reflect: below; box-reflect: below;}

实现效果:

通过一张图教会你CSS3倒影的实现

②再加个5px的间距。

/*CSS代码*/
.img{ -webkit-box-reflect: below 5px; box-reflect: below 5px;}

实现效果:

通过一张图教会你CSS3倒影的实现

③最后加个图片遮罩吧。

/*CSS代码*/
.img{ -webkit-box-reflect: below 5px -webkit-linear-gradient(transparent 60%,rgba(0,0,0,.3));
box-reflect: below 5px linear-gradient(transparent 60%,rgba(0,0,0,.3));}

这里的图片遮罩没有用图片,而是用了CSS3中的linear-gradient属性值,它就是用于线性渐变,具体用法这里就不提了,可以直接看这里(https://3water.com/css/369475.html),写得很详细。

实现效果:

通过一张图教会你CSS3倒影的实现

这就是文章开头示例图片的最终效果。

接下来,再说说径向渐变创建图片遮罩和直接使用图片遮罩。

径向渐变的话其实跟线性渐变类似,只需要你掌握CSS3中基本的径向渐变方法,给个简单示例吧:

/*CSS代码*/
.img{ -webkit-box-reflect: left 0 -webkit-radial-gradient(#000 30%,transparent);
 box-reflect: left 0 radial-gradient(#000 30%,transparent);}

实现效果:

通过一张图教会你CSS3倒影的实现

效果很棒!好像猫咪真的在照镜子一样~~

那如果直接使用图片遮罩呢?比如说我用这样一张图片作为遮罩:

通过一张图教会你CSS3倒影的实现

/*CSS代码*/
.img{ -webkit-box-reflect: right 0 url(imgs/mask.png); box-reflect: right 0 url(imgs/mask.png);}

实现效果:

通过一张图教会你CSS3倒影的实现
mask.png

可以看出,遮罩图片会完全拉伸填充倒影图片,并且效果是完全透明部分不会显示出来(其实CSS3渐变图片遮罩原理也跟这个是一样的)。

需要注意的是:以上讲的所有效果不仅仅可以用在图片上,用在其他元素上也是完全可以的,比如说文字。

兼容性:box-reflect虽然看起来效果很不错,但是遗憾的是,目前只有webkit内核浏览器兼容,不过移动端基本已经没有任何问题啦~~

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。
 

HTML / CSS 相关文章推荐
基于CSS3实现的几个小loading效果
Sep 27 HTML / CSS
css3打造一款漂亮的卡哇伊按钮
Mar 20 HTML / CSS
使用CSS3制作响应式导航菜单的方法
Jul 12 HTML / CSS
css3实现元素环绕中心点布局的方法示例
Jan 15 HTML / CSS
详解canvas在圆弧周围绘制文本的两种写法
May 22 HTML / CSS
HTML5边玩边学(1)画布实现方法
Sep 21 HTML / CSS
HTML5在a标签内放置块级元素示例代码
Aug 23 HTML / CSS
html5使用canvas绘制文字特效
Dec 15 HTML / CSS
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
Apr 24 HTML / CSS
检测浏览器对HTML5和CSS3支持度的方法
Jun 25 HTML / CSS
HTML5添加禁止缩放功能
Nov 03 HTML / CSS
html5默认气泡修改的代码详解
Mar 13 HTML / CSS
利用 CSS3 实现的无缝轮播功能代码
Sep 25 #HTML / CSS
CSS3中伪元素::before和::after的用法示例
Sep 18 #HTML / CSS
css3 pointer-events 介绍详解
Sep 18 #HTML / CSS
详解CSS3选择器:nth-child和:nth-of-type之间的差异
Sep 18 #HTML / CSS
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
Sep 15 #HTML / CSS
CSS3 Calc实现滚动条出现页面不跳动问题
Sep 14 #HTML / CSS
基于CSS3 animation动画属性实现轮播图效果
Sep 12 #HTML / CSS
You might like
PHP中设置时区,记录日志文件的实现代码
2013/01/07 PHP
浅析PHP绘图技术
2013/07/03 PHP
网站防止被刷票的一些思路与方法
2015/01/08 PHP
详解关于php的xdebug配置(编辑器vscode)
2019/01/29 PHP
如何解决PHP获取不到SESSION信息之一般情况
2019/10/10 PHP
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
实现隔行换色效果的两种方式【实用】
2016/11/27 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
基于javascript实现日历功能原理及代码实例
2020/05/07 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
Python httplib,smtplib使用方法
2008/09/06 Python
Python网络爬虫实例讲解
2016/04/28 Python
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
Python绘制正余弦函数图像的方法
2018/08/28 Python
python mysql断开重连的实现方法
2019/07/26 Python
python爬虫 批量下载zabbix文档代码实例
2019/08/21 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
美国体育用品商店:Academy Sports + Outdoors
2020/01/04 全球购物
经典c++面试题二
2015/08/14 面试题
大学生职业生涯规划范文
2014/01/08 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
少先大队干部竞选稿
2015/11/20 职场文书
php将xml转化对象的实例详解
2021/11/17 PHP