作为设计开发人员,我们经常将CSS作为理所当然的生产工具。只需要调整一系列参数,我们就可以控制整个网页的样式,而浏览器将会替我们完成一系列复杂的渲染工作。

但当CSS有新功能出现的时候,我们却往往无法第一时间将它应用于生产。这不仅是开发者是否愿意学习的问题,而主要是用户的人均浏览器版本无法很快地跟上时代前沿,导致新的CSS效果无法很好地呈现给用户,甚至会出现恶性Bug。

而Houdini就是为了解决这个问题存在的,它整合了一系列开发规范,让开发者可以最大限度地利用CSS提供的功能。Houdini可以让用户设定的CSS用JavaScript进行算法和排版的规范化呈现。

Houdini可以做什么?

实际上,Houdini是一系列API,用以实现CSS和JavaScript功能的相互代替。在特定的浏览情境下,Houdini可以寻找到该浏览器版本最适合的渲染方式,并决定用CSS还是JavaScript交付给浏览器进行渲染。

Houdini服务于浏览器呈现内容的中间过程,它可以辅助特定内容比如动画的呈现,是一款轻量化专用型的工具。工作原理完全是网络API形式,即将特定内容从标准的浏览器信息流里分离出去单独进行处理,并以响应式方式返回到浏览器中。由于这种特性,Houdini有很好的可拓展性,未来支持的功能范围会更广。

目前这些API仍处于早期阶段,主要支持Chrome(v66版本)和Opera浏览器(v53版本)。CSS绘图API可以让开发者用JavaScript实现原本由CSS对图像做出的处理。如今开发者正致力于让Houdini适用于Safari浏览器,而更多API也即将登陆Chrome。目前Houdini的API已经符合W3C推荐标准,未来发展潜力很大。

使用Houdini来裁剪图片

我们这里展示的是Houdini的CSS绘图API(CSS Paint API),我们使用它来裁剪一张图片以展示它的功能和用法。

01 应用蒙版CSS

在开始工作之前,我们需要在本地创建一个服务器,然后在每个图片上加遮罩。我们在CSS需要加入mask-image属性,但仍需要为Chrome添加Webkit前缀。

打开style/mask.css,然后更新masked类。我们要实现的效果,是将鼠标悬停的时候显示完整的图片,否则显示剪切后的效果。.masked {

[…]

-webkit-mask-image: paint(mask);

mask-image: paint(mask);

}

.masked:hover, .masked:focus {

--mask-reveal: true;

}

02 应用裁剪形状

自定义属性不需要写在根元素上,这样也可以被API拾取并应用在图形上面,并且会覆盖更低级别的选择器。

现在我们自定义裁剪三个形状,并将它定义在mask-shape上面,以告诉浏览器应该渲染为怎样的形状。.masked.square {

--mask-shape: square;

}

.masked.circle {

--mask-shape: circle;

}

.masked.triangle {

--mask-shape: triangle;

}

03 定义使用的形状

打开scripts/mask.js,里面已经写好了创建形状的方式,我们需要将它和CSS关联在一起。

我们自定义的mask-shape属性应该可以决定裁剪使用的形状,因此我们需要定义circle、square和triangle三种选项。如果CSS里出现了非这三种选项的数值,那么我们默认用circle来代替。注意,CSS中的空格应该被删去。let shape = ‘circle’;

if (properties.get(‘--mask-shape’) &&

[‘square’, ‘triangle’, ‘circle’]

.includes(properties.get(

‘--mask-shape’).toString().trim())){

shape = properties.get(

‘--mask-shape’).toString().trim(); }

04 定义展示方式

在我们想要的效果下,图像默认只展示边框,而在鼠标悬停的时候才展示内容。这样,我们就应该把默认的reveal设置为false,而悬停后则变为true。let reveal = false;

if (properties.get(‘--mask-reveal’) &&

properties.get(‘--mask-reveal’)

.toString().trim() == ‘true’) {

reveal = true; }

05 定义尺寸

在最终效果中,我们希望每个图形的长边是相等的,这样看起来才比较和谐。因此,我们需要计算出每个图像边长的最大值以进行定义。

定义一个maxLength变量,然后用它来定义每个图像绘制时的边长即可。const maxLength =

Math.min(geom.width, geom.height);

ctx.lineWidth = maxLength / 25;

css实现剪切蒙版,魔法般的网页图片修剪!使用Houdini建立CSS剪切蒙版相关推荐

  1. web网页设计——体育气步枪射击主题(5页面)带图片轮播特效(HTML+CSS) ~学生网页设计作业源码

    web网页设计--体育气步枪射击主题(5页面)带图片轮播特效(HTML+CSS) ~学生网页设计作业源码 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手 ...

  2. 网页前端知识汇总(一)——CSS如何为网页图片设置圆角效果

    是不是有的没有玩过程序的小伙伴浏览网页时会发现有的图片是圆角的,自己保存到本地却是直角的?其实图片性质没有改变,改变的只是网页显示,用遮罩层(CSS处理)后的显示效果,那这些图片的圆角效果是怎么设置的 ...

  3. html网页图片滚动代码用css和div,DIV+CSS网页图片滚动源代码

    DIV+CSS网页图片滚动源代码 style="overflow:hidden;width:500px;"> border="0"> id=&quo ...

  4. CSS布局基础(网页图片 切图)

    网页图片 网页图片 图片格式 切图 直接从 psd 图层导出 切片工具切图 插件切图 其他设计工具 网页图片 图片格式 jpg/jpeg 高清图 gif 小动画,支持透明背景 png 结合jpg 和 ...

  5. css元素与浏览器边框,别具光芒CSS属性、浏览器兼容与网页布局

    别具光芒CSS属性.浏览器兼容与网页布局 语音 编辑 锁定 讨论 上传视频 上传视频 <别具光芒CSS属性.浏览器兼容与网页布局>是2008年人民邮电出版社出版的图书.该书结合大量范例与实 ...

  6. web课程设计网页规划与设计~在线阅读小说网页共6个页面(HTML+CSS+JavaScript+Bootstrap)...

    HTML期末大作业 ~ 大学生网页设计作业成品 ~ HTML+CSS+JS网页设计期末课程大作业 ~ web前端开发技术 ~ web课程设计网页规划与设计 临近期末, 你还在为HTML网页设计结课作业 ...

  7. Java学习-14 CSS与CSS3美化页面及网页布局

    Java学习-14 CSS与CSS3美化页面及网页布局 1. CSS简介 什么是CSS? CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示控制 HTML 元素, ...

  8. 基于HTML+CSS+JavaScript “小味鲜“餐厅网页设计

    基于HTML+CSS+JavaScript "小味鲜"餐厅网页设计 每博一文案 师父说"生活中的负能大多来于圈子里的抱怨",有时候,你不想做别人情绪的垃圾桶. ...

  9. 网页设计(三)——DIV+CSS布局2

    前言:好久没更新过CSDN博客了,现在从原来的OI,变成了一个科研工作者.最近打算把原来的一些资料整理一下,作为经验公开分享,希望能帮到更多默默努力耕耘的人~ 网页设计系列源于早几年在学校网站工作做入 ...

  10. html+css基础入门学习教程标记语言——图片替换

    Chapter 14 图片替换 随着更多设计师与开发者开始使用标准(特别是CSS),每天都会有许多新技术被发现,达成相同目标的新方法,更好的方法也不断发展着. 网页教学网 "图片替换&quo ...

最新文章

  1. php input file ajax,jquery ajax put file, php save file
  2. 编译php ./configure命令enable和with有什么区别
  3. POJ - 1358 Housing Complexes(二分图最大匹配)
  4. weblogic 调优参数
  5. Centos7 安装X2goSever的步骤
  6. springfox源码_springfox 源码分析(七) 文档初始化
  7. ROS系统学习8---节点间的内存共享(初级篇)
  8. Hibernate技术
  9. matlab 图像检测,基于matlab图像识别的基本操作方法(以番茄识别为例)
  10. HotFix方案原理
  11. 数据分析与爬虫实战视频——学习笔记(四)(糗事百科、天善智能、当当商城、sql输出)
  12. 如何修改ICO文件的尺寸
  13. 最全前端资源---快过来 最新鲜的资源这里都有
  14. win10 如何扫描,win10 如何打印,win10找到设备和打印机,
  15. outlook删除服务器文件恢复,通过OutLook 2013 找回误删除的邮件
  16. python 基于metpy计算位涡平流项(水平)
  17. 高等教育心理学:教师职业心理(完) 不是特别重要
  18. 一代才女林徽因 人生若只如初见
  19. iOS开发——使用Charles进行https网络抓包详解
  20. 用于光栅仿真的非偏振光–实例讨论

热门文章

  1. Python程序设计
  2. vscode打开txt文件乱码
  3. VS2015导出带文件的项目模板
  4. crmeb多商户二开crmeb架构二开文档异常处理【4】
  5. 主流前端框架的介绍优缺点
  6. Microsoft Word 教程:如何在 Word 中插入图片、图标?
  7. PPT 设置幻灯片母版
  8. 计算机二级显示用户不存在,计算机二级考试最常见的错误集合
  9. 搭建Nginx图片or视频服务器
  10. Windows下配置Python环境报错error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft