svg实现直线带双向箭头,且直线中间镶嵌文本

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>svg实现直线带双向箭头,且直线中间镶嵌文本</title>
    <script src="../js/jquery-3.3.1.min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box; /*保证盒子的大小不会因为padding值的影响而变大。默认情况下padding的值会影响盒子的大小*/
        }
        html, body {
            width: 100%;
            height: 100%;
        }
        #test1 {
            width: 30%;
            height: 15%;
            margin-left: 20%;
            margin-top: 10%;
            display: flex;
            justify-content: space-between;
            align-items: center;
            border: red solid 1px;
        }
        .test2 {
            height: 15%;
        }
        .svg14 {
            height: 100%;
            width: 100%;
            overflow: hidden;
        }
        .polygon14 {
            fill: black;
            stroke-width: 1;
            stroke: red;
        }
    </style>
</head>
<body>
<div id="test1">
    <div class="test2">
        <svg class="svg14" viewBox="0 0 305 15" preserveaspectratio='none'>
            <polygon class="polygon14"  points='5,7 10,1 1,7 10,14 5,7 304,7 '  />
        </svg>
    </div>
    <div id="test3">2020</div>
    <div class="test2">
        <svg class="svg14" viewBox="0 0 305 15" preserveaspectratio='none'>
            <polygon class="polygon14"  points='1,7 300,7 295,1 304,7 295,14 300,7 '  />
        </svg>
    </div>
</div>
</body>

<script>
    var test1Width = parseFloat($("#test1").css("width"));
    var test3Width = parseFloat($("#test3").css("width"));
    var test2Width = (test1Width - test3Width) / 2;
    $(".test2").css("width", test2Width - 3);
</script>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用CSS3的动画特效来实现SVG绘制线条箭头稳步上升动画特效,具体实现方式可以参考以下代码: ```html <svg width="200" height="200"> <path d="M 50 50 L 150 50" stroke="black" stroke-width="2" fill="none" /> <marker id="arrow" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"> <path d="M 0 0 L 10 5 L 0 10 z" /> </marker> <path d="M 50 50 L 150 50" stroke="black" stroke-width="2" fill="none" marker-end="url(#arrow)"> <animate attributeName="y1" from="50" to="20" dur="2s" repeatCount="indefinite" /> <animate attributeName="y2" from="50" to="20" dur="2s" repeatCount="indefinite" /> </path> </svg> ``` 其中,`<path>`元素用于绘制直线,`<marker>`元素用于定义箭头,`marker-end`属性用于指定箭头的位置,`<animate>`元素用于实现动画效果,`attributeName`属性用于指定要动画的属性,`from`和`to`属性用于指定动画的起始值和结束值,`dur`属性用于指定动画的持续时间,`repeatCount`属性用于指定动画的重复次数。 关于箭头跟着直线一起动的问题,可以使用`<animateMotion>`元素来实现,具体实现方式可以参考以下代码: ```html <svg width="200" height="200"> <path d="M 50 50 L 150 50" stroke="black" stroke-width="2" fill="none" marker-end="url(#arrow)"> <animateMotion dur="2s" repeatCount="indefinite"> <mpath xlink:href="#path" /> </animateMotion> </path> <path id="path" d="M 50 50 L 150 50" stroke="none" fill="none" /> <marker id="arrow" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"> <path d="M 0 0 L 10 5 L 0 10 z" /> </marker> </svg> ``` 其中,`<animateMotion>`元素用于实现运动动画,`<mpath>`元素用于指定运动路径,`xlink:href`属性用于指定路径的ID。需要注意的是,路径的起点和终点要与直线的起点和终点一致,才能实现箭头跟着直线一起动的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值