理解 CSS 的 clip 属性

此属性已经被废除,虽然到目前为止仍然有浏览器支持这个属性,但是不再建议使用此属性,建议使用 clip-path (不过该属性在浏览器的支持性还比较差)替代该属性。-- 更新于 2017年4月19日


原文链接 : http://tympanus.net/codrops/2013/01/16/understanding-the-css-clip-property/

demo.jpg

我十分确定还有很多人不知道 CSS 中有一个属性叫作 clip 因为它可能是世界上使用最少的属性了。不过那都没有关系,接下来我们将对你应该了解的方方面面作出详细的介绍。
clip 属性旨在定义你想显示元素的哪一个部分。你也许事先听说了一个叫作 “裁剪” 的东西。虽然存在很多的 JavaScript 插件去裁剪一个元素,但是事实上你可以利用 CSSclip 属性做几乎一样的事情。也许,它存在一定的限制。稍后我们来看看这些限制有哪些。

使用方法

接下来让我们直接来看看 clip 属性的使用方法,虽然这在刚开始不仅有一点奇怪而且有一点难以理解。请考虑以下这个例子:

.my-element {
    position: absolute;
    clip: rect(110px, 160px, 170px, 60px);
}

你需要记住的第一件事是 : clip 属性只有将元素的 position 属性设置为 absolute 或者 fixed 的时候才会生效。 position 属性设置为 relative 或者 static 它将不会生效。

说句实话,我并不知道它为什么要这样,我在网上找了相关主题的教程,很遗憾的是我并没有找到任何依据,所以如果你想分享相关知识,那就去做吧!

虽然只有在正确指定 position 属性的情况下才可以使用 clip 对其功能有了很大的限制。但是,去实验 clip 的裁剪功能并试着去做一些非常酷的用例仍然是一件非常有意思的事情。

clip 属性值接受三个不同的值 :

  • auto : 这是默认的行为,将 clip 属性设置为 auto 就和没有使用这个属性是一样的效果。
  • Inherit : 当然,它继承了父类的 clip 属性的值。
  • a shape function : 当前只存在rect() 函数。
clip: { shape | auto | inherit } ; 

在大部分情况下,你可能会想要使用 shape 去指定 clip 的值。 我希望有一天我们可以使用更多的形状(比如说 circle())而不是像今天这样只能使用 rect(), 这也是我们目前唯一能做的事情。但是不用担心,我们仍然可以利用它做一些特别酷的东西。

rect() 函数

现在,让我们深入的了解一下 rect() 的句法。它要求我们输入四个长度的值,用逗号进行分割 : top, right, bottom and left。 至于填写的顺序,它是顺时针的。

clip: rect(<top>, <right>, <bottom>, <left>);

现在让我们仔细看一下,因为使用它的时候经常会产生误解。 topbottom 的值定义的都是距离顶部边界的偏移量,而 leftrigjt 的值定义的都是距离左边界的偏移量。

demo02.jpg

让我们来做个简单的例子让事情更清晰一些,考虑下面的 CSS

clip: rect(40px, 260px, 150px, 80px);

这意味着我们想要保存垂直方向上 40px150px 的那部分,水平方向上 80px260px 的那部分。如果你依旧不清楚,请看下面这张图片。

demo03.jpg

一旦你了解了 rect() 函数是如何运作的,那么你将可以十分容易的使用 clip 属性。 当然我知道那在刚开始是十分令人迷惑的。

其它

好了,现在我们就已经将 clip 的基本用法讲完了,但是我认为你可能还想知道一些额外的东西。

首先,rect() 函数的四个参数的值都接受 auto 作为它的值,它意味着 100%。比方说,你裁剪的东西为 rect(0, 50px, 50px, 0) ,而你想全尺寸的显示它(我们假设是 100× 100), 你可以这样做 : rect(0, 100px, 100px, 0)rect(0, auto, auto, 0).

其次,由于 rect() 函数的四个参数都是指定长度的值,这意味着无论是 CSS 动画或者 CSS 过渡效果对其都是可用的。这是一个振奋人心的消息,因为我们可以利用这个特性做出特别圆滑的效果。

最后,rect() 参数的值是不可以指定为百分比的。

浏览器支持

你也许会说,这个属性非常不错,但是浏览器在对它的支持方面表现的如何呢?你应该去问出这个问题,但你可能会非常惊讶地了解到,浏览器对该属性的支持非常的完美。

demo04.png

是的,你没有看错,对于 IE4 - IE8, 你需要使用空格将 rect() 函数的值分割开而不是逗号。

.my-element {
    position: absolute;
    clip: rect(10px  350px  170px  0); /* IE4 to IE7 */
    clip: rect(10px, 350px, 170px, 0); /* IE8+ & other browsers */
}

结束语

我们已经将 clip 属性的各个方面介绍完毕了,下面就利用这个属性去做一些炫酷的效果吧!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,629评论 1 92
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 1,689评论 0 2
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,279评论 0 11
  • 在16年底的时候,我申请到了台湾铭传大学访学的名额。台湾的访学项目只有一个学期的时间,所以现在我已经回来了。现在看...
    安大心阅读 329评论 0 5
  • Netty is an asynchronous event-driven network application...
    Jeff阅读 2,346评论 0 4