美文网首页JavaScript学习笔记Web前端之路技术干货
裁剪图片利器svg(各种形状基本都支持)

裁剪图片利器svg(各种形状基本都支持)

作者: wengjq | 来源:发表于2016-12-27 23:24 被阅读369次

今天做新的布局样式,其中有个图片样式是这样的。如下:

Paste_Image.png

很明显,可以发现图片多了一个三角形且三角形属于图片的一部分。一开始我的做法是在图片的左侧覆盖三个div,分别为两个长方形和一个透明的三角形。后来,发现这种做法比较难调好,而且当这种样式下的背景变了颜色后还得去更新这三个div的背景色,维护及更新麻烦。

于是乎,记得之前有看到某篇博客是讲css3是可以支持这种多种形状裁剪图片的。找了下资料,发现css3的clip-path可以实现这种多边形的图片裁剪。但是它的兼容性不是很好,如下图:

Paste_Image.png

由于这个css3属性其实就是从之前的svg(伸缩矢量图形)整合进来的,于是就试着用svg来实现这个样式,发现效果比之前的做法好很多。且它的浏览器兼容性兼容到ie9+(包括ie9), 其他的Firefox,Chrome,Opera和Safari也都支持,在苹果,安卓各种机型测试都没发现问题。果断使用之。如下代码:

<svg xmlns="http://www.w3.org/2000/svg" width="145" height="91">
    <defs>
        <clipPath id="clippath"><polygon points="6 0,145 0,145 91,6 91,6 35,2 31,6 25"></polygon></clipPath>
    </defs>
    <image xmlns:link="http://www.w3.org/1999/xlink" link:href="//这里放图片链接" width="145" height="91" preserveAspectRatio="none" style="clip-path:url(#clippath);">
    </image>
</svg>

svg标签、polygon标签和image标签的宽高、points等属性都可以通过JavaScript去动态设置,因此可以先静态引入svg再去设置宽高属性,及精确定位要裁剪多边形的点。这里如果不知道这么定位这些点的话可以参考下面的链接:bennettfeely.com/clippy,每个点都有宽和高,根据图片的宽高及具体的百分比算出具体的点的“坐标”就可以了。

这里的preserveAspectRatio属性是保持原始比例的意思,我这里的需求不需要,所以设置为none(及拉伸的作用)。详情也可以从下面的链接了解:https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/preserveAspectRatio

最后,注意一个svg内容标签大小写的小坑:

当在 HTML 里直接写静态的 SVG 内容时, 无论你使用的是 clipPath 标签还是 clippath 标签都可以;如果页面上已经有解析过 clipPath 元素后, 那么动态创建时无论你使用 clipPath标签 还是 clippath标签也是可以的;但是如果你是第一次动态创建这个clipPath标签元素时,clipPath里的“P”一定要大写,不然裁剪会失效。

相关文章

  • 裁剪图片利器svg(各种形状基本都支持)

    今天做新的布局样式,其中有个图片样式是这样的。如下: 很明显,可以发现图片多了一个三角形且三角形属于图片的一部分。...

  • 仿微信图片选择

    Android图片选择器,仿微信的图片选择器的样式和效果。支持图片单选、多选、裁剪形状自定义、裁剪比例设置、解耦图...

  • svg之path详解

    一、svg 介绍 path元素是SVG基本形状中最强大的一个,它不仅能创建其他基本形状,还能创建更多其...

  • 基本形状 - SVG从入门到起飞【3】

    上一篇我们说了说基本形状的通用属性,填充和边框的相关内容。今天罗列一下SVG里的基本形状元素。SVG的基本形状元素...

  • PPT 学习 I

    ① 保护PPT文件1) 设为只读2) 为文件设定密码 ② 裁剪图片1) 裁剪大小2) 选择形状 ③ 插入联机图片:...

  • 超好用的vue图片裁剪插件vue-img-cutter

    支持任意尺寸裁剪和等比例裁剪,可以旋转缩放图片,支持远程图片裁剪,使用非常简单,几步就可以 项目地址:https:...

  • iOS 头像裁剪、图片裁剪、微信头像裁剪

    iOS 头像裁剪、图片裁剪、微信头像裁剪 关于图片裁剪,基本上所有涉及到c端用户带基本信息的App基本都会用到,使...

  • 1.svg基本形状

    1.viewBox 定义用户单位 基本上,在 SVG 文档中的1个像素对应输出设备(比如显示屏)上的1个像素,但是...

  • Canvas 教程

    1基本用法 2绘制形状 3添加样式和颜色 4绘制文本 5使用图片 6变形 7合成与裁剪 8基本动画 9高级动画 1...

  • 第三方库之 PictureSelector

    一款针对 Android 平台下的图片选择器,支持从相册获取图片、视频、音频&拍照,支持裁剪(单图 or 多图裁剪...

网友评论

本文标题:裁剪图片利器svg(各种形状基本都支持)

本文链接:https://www.haomeiwen.com/subject/ilpevttx.html