原文地址:http://www.html5rocks.com/en/tutorials/masking/adobe/

关于计算机图形,两种常见的操作是:cliping(裁剪) and  masking (屏蔽)。这两种操作都是通过隐藏一个元素的视觉部分实现的。

如果在之前,你已经用 SVG 或者 HTML Canvas 工作过。那么这两种操作对于你而言并不陌生。

cliping 定义一个元素的可见区域。在这个区域周围的内容都不会被渲染,---------因为它被裁剪掉了。

在 masking,被屏蔽的图像是用另一个被修改了alpha通道的元素合成的。一个元素被屏蔽的部分被全部或部分的透明处理了。

而这个新的 CSS Masking规范的目的是:把这两个操作带入HTML的世界。

Clipping in css 2.1

在CSS2.1中,就指定了clip 属性。这个属性使用的是矩形来裁剪,方法是 rect(),参数为top,right,bottom and left edges。

不足的是,这个 clip 属性只能使用在绝对定位的元素中。 其他的元素则被忽略了。

CSS:

img {
position: absolute;
clip: rect(10px, 290px, 190px, 10px);
}

HTML:

<img src="data:image.jpg" width="568">

在SVG中,这个 clip 元素也只能使用在特定的元素上。所以SVG规范增加 clip-path 属性来适应现在的 CSS Masking。

the clip-path property

clip-path 属性能够运用于所有的html元素,SVG图形元素和 SVG容器元素上,

它要么引用一个 <clipPath> 元素,要么引用在CSS Exclusions中介绍的几个基本形状之一。

这个 <clipPath> 元素采用SVG 上的任何图形元素 ,并且使用它们作为裁剪区域。它们分别是<rect>,<circle>,<ellipse>,<path> ,<polygon>,<image> 和<text>。

<clipPath>也允许多个图形元素结合使用。所有形状的结合作为裁剪区域。

下面的示例演示<clipPath> 的使用

CSS:

img {
clip-path: url(#clipping);
}

HTML:

<svg>
<defs>
<clipPath id="clipping">
<circle cx="284" cy="213" r="213" />
</clipPath>
</defs>
</svg> <img src="data:image.jpg" width="568">

另一方面,基本形状不需要任何的SVG 标记。它们被增加到clip-path 中,来为简单的裁剪操作提供简单,速记的函数。

关键词像content-box,border-box,margin-box 能够结合使用基本形状来定位和指定裁剪路径的大小。

没有定义基本形状的时候,关键字充当裁剪路径,它们自己也要考虑border-radius属性。

CSS标记看起来像下面的例子:

img {
clip-path: polygon(0px 208px, 146.5px 207px, 147px 141.2px, ...);
}

Cliping对于可视内容的呈现是非常有用的。下面的例子将不同的裁剪操作运用在图像上。

ssss

sssss

CSS Masking(翻译)的更多相关文章

  1. CSS Secrets 翻译笔记 01: CSS coding tips

    .firDemoButton{ padding: 6px 16px; border: 1px solid #446d88; background: #58a linear-gradient(#77a0 ...

  2. CSS遮罩——如何在CSS中使用遮罩

    Css遮罩是2008年4月由苹果公司添加到webkit引擎中的.遮罩提供一种基于像素级别的,可以控制元素透明度的能力,类似于png24位或png32位中的alpha透明通道的效果. 图像是由rgb三个 ...

  3. CSS和SVG中的剪切——clip-path属性和<clipPath>元素

    剪切是什么 剪切是一个图形化操作,你可以部分或者完全隐藏一个元素.被剪切的元素可以是一个容器也可以是一个图像元素.元素的哪些部分显示或隐藏是由剪切的路径来决定的. 剪切路径定义了一个区域,在这个区域内 ...

  4. 【转】CSS和SVG中的剪切——clip-path属性和<clipPath>元素

    本文由大漠根据SaraSoueidan的<Clipping in CSS and SVG – The clip-path Property and <clipPath> Elemen ...

  5. [转]CSS遮罩——如何在CSS中使用遮罩

    特别声明:此篇文章由D姐根据Christian Schaefer的英文文章原名<CSS Masks – How To Use Masking In CSS Now>进行翻译,整个译文带有我 ...

  6. css Masks

    css Masks:添加蒙板: 测试在微信端可以支持了.谷歌浏览器支持.safari应该也是支持的. 效果:http://runjs.cn/code/xrrgmgmk 但是谷歌可以支持这样子的:htt ...

  7. CSS——关于z-index及层叠上下文(stacking context)

    以下内容根据CSS规范翻译. z-index 'z-index'Value: auto | <integer> | inheritInitial: autoApplies to: posi ...

  8. CSS常见技巧

    一.CSS Sprite(雪碧图|精灵图)指什么? 有什么作用? CSS雪碧 即CSS Sprite,也有人叫它CSS精灵,是一种CSS图像合并技术,该方法是将小图像和背景图片合并到一张图片上,然后利 ...

  9. CSS的clip-path 一

    首先介绍一下,我觉得前端开发都是很具有分享精神的,很多人都写出了很多优秀的总结经验供新手们参考,本人只是个搬运工,将别人优秀的文章进行了总结,本文主要转载自  大漠  的文章  http://www. ...

随机推荐

  1. ASP.NET--ListBox初始化时设置多个选中项

    public void SetSelectedListItem(ListBox lst, List<DBServerIPBind> source) { ; i < source.Co ...

  2. poj 2942--Knights of the Round Table (点的双连通分量)

    做这题简直是一种折磨... 有n个骑士,骑士之间相互憎恨.给出骑士的相互憎恨的关系. 骑士要去开会,围成一圈坐,相互憎恨的骑士不能相邻.开会骑士的个数不能小于三个人.求有多少个骑士不能开会. 注意:会 ...

  3. IE-一根网线二台电脑上网

    1 直连线 使用交叉线(橙白 橙 (蓝白) (绿 绿白) ( 蓝)宗白 棕) 2 如果主机原本是用ADSL拔号上网的话,就在主机的网络连接下的宽带连接右击属性>高级,在“Internet 连接共 ...

  4. 礼仪或许就是尊重的还有一个说法——leo鉴书61

    <Leo鉴书(第1辑)>已登陆百度阅读,今后还将不断更新,免费下载地址:http://t.cn/RvawZEx 礼仪从字面上就区分成"礼"和"仪"两 ...

  5. 在hadoop上进行编写mapreduce程序,统计关键词在text出现次数

    mapreduce的处理过程分为2个阶段,map阶段,和reduce阶段.在要求统计指定文件里的全部单词的出现次数时. map阶段把每一个关键词写到一行上以逗号进行分隔.并初始化数量为1(同样的单词h ...

  6. 标准I/O库之临时文件

    ISO C标准I/O库提供了两个函数以帮助创建临时文件. #include <stdio.h> char *tmpnam( char *ptr ); 返回值:指向唯一路径名的指针 FILE ...

  7. 标准I/O库之标准I/O的效率

    程序清单5-1 用getc和putc将标准输入复制到标准输出 #include "apue.h" int main( void ) { int c; while(( c = get ...

  8. vim的一些高级配置

    今天有幸看到一篇博文,有一些vim的高级配置 在linux或者unix下面的.vimrc文件中,在其中可以添加如下片段,可以实现解释上面你说的那些高级用法 " Ctrl + K 插入模式下光 ...

  9. Android Studio之could not reserve enough space for object heap

    在用AndroidStudio时出现这样的错误:  每次创建工程后,在项目文件 gradle.properties文件中加入如下代码: org.gradle.jvmargs=-Xmx512m -XX: ...

  10. bubble_sort

    冒泡排序法: #include <iostream> #include <algorithm> using namespace std; int main(){ int n; ...