神技clip

198 阅读2分钟

前段时间追了一部动漫,叫《带着手机闯荡异世界》,男主神技 clip  优势搞笑优势高效,堪称无敌


昨天产品提了个需求,瞬间

这是一个会员卡的背景(就是这么说明的),然后用户可以自己设置背景图,这个黑黑的,只是默认而已。完整的样式是这样的


瞬间心里过了几个可行的而方案

1、这个角角用一个方块的图片覆盖上去,不靠谱

原因:整张卡片的背景都是自定义的背景,如果单独这个角写死一个图片,那么,想想就别扭,会逼死强迫症的

2、整体的背景图就这样搞,不靠谱

原因:还是背景自定义的问题,用户只会上传一个长方形的图片,谁管你二维码什么的,卡片上面的东西都是需要前端大神搞出来的

3、三层叠加一起,第一层一张少个角的图片,第二层就是那个二维码了,第三层,一张完整的背景图片,当然,第一第三层的图片是一样的,可自定义的。貌似有点靠谱的样子

so 目前问题就转移到怎么让第一层少个角  这里就要引出本片的猪脚----  clip-path (终于出现了)

clip-path 是css的属性,意思是剪切路径,顾名思义就是按照一定的路径剪切

实际的原理就是通过overflow:hidden 的方式将剪切以外的部分隐藏掉,兼容性呢只能说还行,IE和Edge直接不支持,下面主要说说怎么用

  /* 引用一个内联的 SVG <clipPath> 路径*/
  clip-path: url(); 

  /* 引用一个外部的 SVG  路径*/
  clip-path: url();

  /* 多边形 */
  clip-path: polygon();

  /* 圆形 */
  clip-path: circle();

  /* 椭圆 */
  clip-path: ellipse();

  /* inset-rectangle() 将会替代 inset() ? */
  /* rectangle() 有可能出现于 SVG 2 */

  /* 圆角 */
  clip-path: inset();

常用的就是剪切多边形,圆形和圆角这些了,括号里面的值就是坐标点,当然此坐标点就是我们css里面的坐标了,(0,0)点在左上角


使用图片剪切:

<clipPath id="clipping">
  <circle cx="150" cy="150" r="50" />
  <rect x="150" y="150" />
</clipPath>


顺便说一句,剪切之后显示的是剪切路径以内的图形,剪切路径以外的就消失了


神技如此,请笑纳