html - div 边框上的 SVG clipPath
问题描述
我正在尝试让 div 的边框遵循 SVG 的模式,通过以下关于 SO 的答案:
我有以下 HTML:
<div class="container">
<svg height="850px" width="100px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<clipPath id="svgPath" >
<path style="stroke: none; fill: red" id="arrow" d="M 50 0 C 10 150 80 130 50 170 C 10 260 80 220 50 310 C 10 420 80 380 50 510 C 50 520 80 500 50 600 C 10 700 80 680 50 720 C 10 800 80 780 50 830 " />
</clipPath>
</defs>
<rect width="100%" height="100%" fill="green" clip-path="url(#svgPath)" />
</svg>
</div>
不过,它给了我一个完全不同的结果。以下是代码的 Plunker:
https://next.plnkr.co/edit/SfthJz3UwQPAKkgb?open=lib%2Fscript.js&preview
谢谢 :)
解决方案
我想到了。最初和上面的 Plunker 一样,它通过以下方式将摇摆不定的线条变成了一个奇怪的图形:
以上就是这个Plunker:https ://next.plnkr.co/edit/SfthJz3UwQPAKkgb?open=lib%2Fscript.js&preview
但是,它基本上是在 SVG 的末尾添加一个 Z,所以它重新连接到开头。然后我发现它实际上需要定义一个矩形的点,其中一个边是弯曲的线。所以我在 SVG 的开头和结尾的左上角和左下角添加了两个额外的点。
Plunker 与工作示例:
https://next.plnkr.co/edit/CjNqIDcEFcri4S7K?open=lib%2Fscript.js
(这并不花哨,但如果有人偶然发现它,它可以用来可视化)
推荐阅读
- node.js - 在expressjs中获取url参数到html标签
- javascript - VueRouter导航到没有#符号的哈希?
- javafx - 通过使用组合框更改窗格颜色,我尝试了下面代码中的方法,但它没有用
- macros - 游戏怎么可能检测到宏?
- laravel - Laravel 8 Illuminate\Database\QueryException SQLSTATE[HY000] [2002] 连接被拒绝
- javascript - 如何每次数五而不是一
- c# - 如何在.Net中添加关注者
- php - 如何使用带有复选框的 PHP 表单从 mySQL 中选择数据?
- flutter - Flutter in_app_purchase 未在 Android 上加载
- terraform - 在使用 terraform 部署脚本以在 Azure 数据工厂中启用客户管理的密钥时,我收到一个错误,如下所述