{"id":13221,"date":"2024-05-16T13:33:58","date_gmt":"2024-05-16T05:33:58","guid":{"rendered":"https:\/\/blog.hoyo.idv.tw\/?p=13221"},"modified":"2024-05-16T13:34:23","modified_gmt":"2024-05-16T05:34:23","slug":"%e7%b6%b2%e9%a0%81%e5%89%8d%e7%ab%af-%e6%bb%91%e9%bc%a0%e9%bb%9e%e6%93%8a%e7%89%b9%e6%95%88","status":"publish","type":"post","link":"https:\/\/blog.hoyo.idv.tw\/?p=13221","title":{"rendered":"\u7db2\u9801\u524d\u7aef - \u6ed1\u9f20\u9ede\u64ca\u7279\u6548"},"content":{"rendered":"<p>--<\/p>\n<h2>\u7279\u6548\u4e00<\/h2>\n<p>\u5f88\u7c21\u55ae\u7684\u5be6\u73fe\uff0c\u7f3a\u9ede\u662f\u6703\u5f71\u97ff\u9ede\u5169\u4e0b\u7684\u6587\u5b57\u9078\u53d6\u529f\u80fd<\/p>\n<ul>\n<li><a href=\"https:\/\/fdossena.com\/?p=html5cool\/clickfx\/i.frag\" target=\"_blank\" rel=\"noopener\">Mouse Click Animation - Federico Dossena (fdossena.com)<\/a><\/li>\n<\/ul>\n<div style=\"width: 512px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]-->\n<video class=\"wp-video-shortcode\" id=\"video-13221-1\" width=\"512\" height=\"296\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.hoyo.idv.tw\/wp-content\/uploads\/2024\/05\/clickfx.mp4?_=1\" \/><a href=\"https:\/\/blog.hoyo.idv.tw\/wp-content\/uploads\/2024\/05\/clickfx.mp4\">https:\/\/blog.hoyo.idv.tw\/wp-content\/uploads\/2024\/05\/clickfx.mp4<\/a><\/video><\/div>\n<p><strong>\u5b8c\u6574\u7db2\u9801\u7a0b\u5f0f\u78bc<\/strong><\/p>\n<pre class=\"lang:default decode:true\">&lt;!DOCTYPE html&gt;\r\n&lt;html&gt;\r\n&lt;head&gt;\r\n&lt;style type=\"text\/css\"&gt;\r\ndiv.clickEffect{\r\n    position:fixed;\r\n    box-sizing:border-box;\r\n    border-style:solid;\r\n    border-color:#000000;\r\n    border-radius:50%;\r\n    animation:clickEffect 0.4s ease-out;\r\n    z-index:99999;\r\n}\r\n@keyframes clickEffect{\r\n    0%{\r\n        opacity:1;\r\n        width:0.5em; height:0.5em;\r\n        margin:-0.25em;\r\n        border-width:0.5rem;\r\n    }\r\n    100%{\r\n        opacity:0.2;\r\n        width:15em; height:15em;\r\n        margin:-7.5em;\r\n        border-width:0.03rem;\r\n    }\r\n}\r\n&lt;\/style&gt;\r\n&lt;script type=\"text\/javascript\"&gt;\r\nfunction clickEffect(e){\r\n    var d=document.createElement(\"div\");\r\n    d.className=\"clickEffect\";\r\n    d.style.top=e.clientY+\"px\";d.style.left=e.clientX+\"px\";\r\n    document.body.appendChild(d);\r\n    d.addEventListener('animationend',function(){d.parentElement.removeChild(d);}.bind(this));\r\n}\r\ndocument.addEventListener('click',clickEffect);\r\n&lt;\/script&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n&lt;h1&gt;Mouse Click Animation example&lt;\/h1&gt;\r\nClick around on this page.\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p><strong>\u539f\u7406<\/strong><\/p>\n<p>\u6ed1\u9f20\u9ede\u64ca\u7522\u751f\u4e00\u500b div \u50cf\u9019\u6a23 &lt;div class=\"clickEffect\"&gt;\uff0c\u7136\u5f8c\u5b9a\u7fa9 clickEffect \u7684 CSS \u7522\u751f\u52d5\u756b\u6548\u679c<\/p>\n<p>--<\/p>\n<h2>RippleButtons.js<\/h2>\n<ul>\n<li><a href=\"https:\/\/holloway.github.io\/ripple\/\" target=\"_blank\" rel=\"noopener\">RippleButtons.js - a tiny standalone library for adding ripple animations to your website (holloway.github.io)<\/a><\/li>\n<\/ul>\n<div style=\"width: 490px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-13221-2\" width=\"490\" height=\"604\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.hoyo.idv.tw\/wp-content\/uploads\/2024\/05\/RippleButtons.js.mp4?_=2\" \/><a href=\"https:\/\/blog.hoyo.idv.tw\/wp-content\/uploads\/2024\/05\/RippleButtons.js.mp4\">https:\/\/blog.hoyo.idv.tw\/wp-content\/uploads\/2024\/05\/RippleButtons.js.mp4<\/a><\/video><\/div>\n<p>\u5c07 ripple.js \u653e\u5728 &lt;\/body&gt; \u524d\u5373\u53ef\uff0c\u5c0d\u9023\u9ede\u5169\u4e0b\u9078\u53d6\u5f71\u97ff\u5f88\u5c0f\uff0c\u800c\u4e14\u53ef\u4ee5\u5c0d &lt;a&gt; \u548c &lt;button&gt; \u7522\u751f\u6ce2\u7d0b\u7279\u6548\u52d5\u756b<\/p>\n<pre class=\"lang:js decode:true\">(function(){\r\n    \"use strict\";\r\n\r\n    var colour = \"#4285f4\";\r\n    var opacity = 0.3;\r\n    var ripple_within_elements = ['input', 'button', 'a'];\r\n    var ripple_without_diameter = 50;\r\n\r\n    var overlays = {\r\n        items: [],\r\n        get: function(){\r\n            var $element;\r\n            for(var i = 0; i &lt; overlays.items.length; i++){\r\n                $element = overlays.items[i];\r\n                if($element.transition_phase === false) {\r\n                    $element.transition_phase = 0;\r\n                    return $element;\r\n                }\r\n            }\r\n            $element = document.createElement(\"div\");\r\n            $element.style.position = \"absolute\";\r\n            $element.style.opacity = opacity;\r\n            \/\/$element.style.outline = \"10px solid red\";\r\n            $element.style.pointerEvents = \"none\";\r\n            $element.style.background = \"-webkit-radial-gradient(\" + colour + \" 64%, rgba(0,0,0,0) 65%) no-repeat\";\r\n            $element.style.background = \"radial-gradient(\" + colour + \" 64%, rgba(0,0,0,0) 65%) no-repeat\";\r\n            $element.style.transform = \"translateZ(0)\";\r\n            $element.transition_phase = 0;\r\n            $element.rid = overlays.items.length;\r\n            $element.next_transition = overlays.next_transition_generator($element);\r\n            document.body.appendChild($element);\r\n            overlays.items.push($element);\r\n            return $element;\r\n        },\r\n        next_transition_generator: function($element){\r\n            return function(){\r\n                $element.transition_phase++;\r\n                switch($element.transition_phase){\r\n                    case 1:\r\n                        $element.style[transition] = \"all 0.2s ease-in-out\";\r\n                        $element.style.backgroundSize = $element.ripple_backgroundSize;\r\n                        $element.style.backgroundPosition = $element.ripple_backgroundPosition;\r\n                        setTimeout($element.next_transition, 0.2 * 1000); \/\/now I know transitionend is better but it fires multiple times when multiple properties are animated, so this is simpler code and (imo) worth tiny delays\r\n                        break;\r\n                    case 2:\r\n                        $element.style[transition] = \"opacity 0.15s ease-in-out\";\r\n                        $element.style.opacity = 0;\r\n                        setTimeout($element.next_transition, 0.15 * 1000);\r\n                        break;\r\n                    case 3:\r\n                        overlays.recycle($element);\r\n                        break;\r\n                }\r\n            };\r\n        },\r\n        recycle: function($element){\r\n            $element.style.display = \"none\";\r\n            $element.style[transition] = \"none\";\r\n            if($element.timer) clearTimeout($element.timer);\r\n            $element.transition_phase = false;\r\n        }\r\n    };\r\n\r\n    var transition = function(){\r\n        var i,\r\n            el = document.createElement('div'),\r\n            transitions = {\r\n                'WebkitTransition':'webkitTransition',\r\n                'transition':'transition',\r\n                'OTransition':'otransition',\r\n                'MozTransition':'transition'\r\n            };\r\n        for (i in transitions) {\r\n            if (transitions.hasOwnProperty(i) &amp;&amp; el.style[i] !== undefined) {\r\n                return transitions[i];\r\n            }\r\n        }\r\n    }();\r\n\r\n    var click = function(event){\r\n        var $element = overlays.get(),\r\n            touch,\r\n            x,\r\n            y;\r\n\r\n        touch = event.touches ? event.touches[0] : event;\r\n\r\n        $element.style[transition] = \"none\";\r\n        $element.style.backgroundSize = \"3px 3px\";\r\n        $element.style.opacity = opacity;\r\n        if(ripple_within_elements.indexOf(touch.target.nodeName.toLowerCase()) &gt; -1) {\r\n            x = touch.offsetX;\r\n            y = touch.offsetY;\r\n            \r\n            var dimensions = touch.target.getBoundingClientRect();\r\n            if(!x || !y){\r\n                x = (touch.clientX || touch.x) - dimensions.left;\r\n                y = (touch.clientY || touch.y) - dimensions.top;\r\n            }\r\n            $element.style.backgroundPosition = x + \"px \" + y + \"px\";\r\n            $element.style.width = dimensions.width + \"px\";\r\n            $element.style.height = dimensions.height + \"px\";\r\n            $element.style.left = (dimensions.left) + \"px\";\r\n            $element.style.top = (dimensions.top + document.body.scrollTop + document.documentElement.scrollTop) + \"px\";\r\n            var computed_style = window.getComputedStyle(event.target);\r\n            for (var key in computed_style) {\r\n                if (key.toString().indexOf(\"adius\") &gt; -1) {\r\n                    if(computed_style[key]) {\r\n                        $element.style[key] = computed_style[key];\r\n                    }\r\n                } else if(parseInt(key, 10).toString() === key &amp;&amp; computed_style[key].indexOf(\"adius\") &gt; -1){\r\n                    $element.style[computed_style[key]] = computed_style[computed_style[key]];\r\n                }\r\n            }\r\n            $element.style.backgroundPosition = x + \"px \" + y + \"px\";\r\n            $element.ripple_backgroundPosition = (x - dimensions.width)  + \"px \" + (y - dimensions.width) + \"px\";\r\n            $element.ripple_backgroundSize = (dimensions.width * 2) + \"px \" + (dimensions.width * 2) + \"px\";\r\n        } else { \/\/click was outside of ripple element\r\n            x = touch.clientX || touch.x || touch.pageX;\r\n            y = touch.clientY || touch.y || touch.pageY;\r\n            \r\n            $element.style.borderRadius = \"0px\";\r\n            $element.style.left = (x - ripple_without_diameter \/ 2) + \"px\";\r\n            $element.style.top = (document.body.scrollTop + document.documentElement.scrollTop + y - ripple_without_diameter \/ 2) + \"px\";\r\n            $element.ripple_backgroundSize = ripple_without_diameter + \"px \" + ripple_without_diameter + \"px\";\r\n            $element.style.width = ripple_without_diameter + \"px\";\r\n            $element.style.height = ripple_without_diameter + \"px\";\r\n            $element.style.backgroundPosition = \"center center\";\r\n            $element.ripple_backgroundPosition = \"center center\";\r\n            $element.ripple_backgroundSize = ripple_without_diameter + \"px \" + ripple_without_diameter + \"px\";\r\n        }\r\n        $element.ripple_x = x;\r\n        $element.ripple_y = y;\r\n        $element.style.display = \"block\";\r\n        setTimeout($element.next_transition, 20);\r\n    };\r\n\r\n    if('ontouchstart' in window || 'onmsgesturechange' in window){\r\n        document.addEventListener(\"touchstart\", click, false);\r\n    } else {\r\n        document.addEventListener(\"click\", click, false);\r\n    }\r\n}());<\/pre>\n<p>--<\/p>\n<h2>Anime.js Fireworks canvas<\/h2>\n<ul>\n<li><a href=\"https:\/\/codepen.io\/juliangarnier\/pen\/gmOwJX\" target=\"_blank\" rel=\"noopener\">Anime.js Fireworks canvas demo (codepen.io)<\/a><\/li>\n<li><a href=\"https:\/\/zhangshuqiao.org\/lab\/\" target=\"_blank\" rel=\"noopener\">\u5be6\u9a57\u5ba4 | \u7c73\u7c73\u7684\u535a\u5ba2 (zhangshuqiao.org)<\/a><\/li>\n<\/ul>\n<div style=\"width: 544px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-13221-3\" width=\"544\" height=\"342\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.hoyo.idv.tw\/wp-content\/uploads\/2024\/05\/juliangarnier_pen.mp4?_=3\" \/><a href=\"https:\/\/blog.hoyo.idv.tw\/wp-content\/uploads\/2024\/05\/juliangarnier_pen.mp4\">https:\/\/blog.hoyo.idv.tw\/wp-content\/uploads\/2024\/05\/juliangarnier_pen.mp4<\/a><\/video><\/div>\n<p>\u7159\u706b\u7279\u6548\uff0c\u975e\u5e38\u83ef\u9e97\uff0c\u653e\u5728\u6bd4\u8f03\u8f15\u9b06\u3001\u751f\u6d3b\u985e\u7684\u7db2\u9801\u5f88\u9069\u5408<\/p>\n<pre class=\"lang:default decode:true \">&lt;!DOCTYPE html&gt;\r\n&lt;html lang='en' class=''&gt;\r\n&lt;head&gt;\r\n    &lt;meta charset='UTF-8'&gt;\r\n    &lt;title&gt;CodePen Demo&lt;\/title&gt;\r\n&lt;\/head&gt;\r\n\r\n&lt;body&gt;\r\n\r\n&lt;canvas class=\"fireworks\" style=\"left: 0; pointer-events: none; position: fixed; top: 0;\"&gt;&lt;\/canvas&gt;\r\n\r\n&lt;script src=\"https:\/\/cpwebassets.codepen.io\/assets\/common\/stopExecutionOnTimeout-2c7831bb44f98c1391d6a4ffda0e1fd302503391ca806e7fcc7b9b87197aec26.js\"&gt;&lt;\/script&gt;\r\n&lt;script src=\"https:\/\/codepen.io\/juliangarnier\/pen\/yMLaRG.js\"&gt;&lt;\/script&gt;\r\n&lt;script&gt;\r\n    window.human = false;\r\n\r\n    var canvasEl = document.querySelector('.fireworks');\r\n    var ctx = canvasEl.getContext('2d');\r\n    var numberOfParticules = 30;\r\n    var pointerX = 0;\r\n    var pointerY = 0;\r\n    var tap = 'ontouchstart' in window || navigator.msMaxTouchPoints ? 'touchstart' : 'mousedown';\r\n    var colors = ['#FF1461', '#18FF92', '#5A87FF', '#FBF38C'];\r\n\r\n    function setCanvasSize() {\r\n        canvasEl.width = window.innerWidth * 2;\r\n        canvasEl.height = window.innerHeight * 2;\r\n        canvasEl.style.width = window.innerWidth + 'px';\r\n        canvasEl.style.height = window.innerHeight + 'px';\r\n        canvasEl.getContext('2d').scale(2, 2);\r\n    }\r\n\r\n    function updateCoords(e) {\r\n        pointerX = e.clientX || e.touches[0].clientX;\r\n        pointerY = e.clientY || e.touches[0].clientY;\r\n    }\r\n\r\n    function setParticuleDirection(p) {\r\n        var angle = anime.random(0, 360) * Math.PI \/ 180;\r\n        var value = anime.random(50, 180);\r\n        var radius = [-1, 1][anime.random(0, 1)] * value;\r\n        return {\r\n            x: p.x + radius * Math.cos(angle),\r\n            y: p.y + radius * Math.sin(angle) };\r\n    }\r\n\r\n    function createParticule(x, y) {\r\n        var p = {};\r\n        p.x = x;\r\n        p.y = y;\r\n        p.color = colors[anime.random(0, colors.length - 1)];\r\n        p.radius = anime.random(16, 32);\r\n        p.endPos = setParticuleDirection(p);\r\n        p.draw = function () {\r\n            ctx.beginPath();\r\n            ctx.arc(p.x, p.y, p.radius, 0, 2 * Math.PI, true);\r\n            ctx.fillStyle = p.color;\r\n            ctx.fill();\r\n        };\r\n        return p;\r\n    }\r\n\r\n    function createCircle(x, y) {\r\n        var p = {};\r\n        p.x = x;\r\n        p.y = y;\r\n        p.color = '#FFF';\r\n        p.radius = 0.1;\r\n        p.alpha = .5;\r\n        p.lineWidth = 6;\r\n        p.draw = function () {\r\n            ctx.globalAlpha = p.alpha;\r\n            ctx.beginPath();\r\n            ctx.arc(p.x, p.y, p.radius, 0, 2 * Math.PI, true);\r\n            ctx.lineWidth = p.lineWidth;\r\n            ctx.strokeStyle = p.color;\r\n            ctx.stroke();\r\n            ctx.globalAlpha = 1;\r\n        };\r\n        return p;\r\n    }\r\n\r\n    function renderParticule(anim) {\r\n        for (var i = 0; i &lt; anim.animatables.length; i++) {if (window.CP.shouldStopExecution(0)) break;\r\n            anim.animatables[i].target.draw();\r\n        }window.CP.exitedLoop(0);\r\n    }\r\n\r\n    function animateParticules(x, y) {\r\n        var circle = createCircle(x, y);\r\n        var particules = [];\r\n        for (var i = 0; i &lt; numberOfParticules; i++) {if (window.CP.shouldStopExecution(1)) break;\r\n            particules.push(createParticule(x, y));\r\n        }window.CP.exitedLoop(1);\r\n        anime.timeline().add({\r\n            targets: particules,\r\n            x: function (p) {return p.endPos.x;},\r\n            y: function (p) {return p.endPos.y;},\r\n            radius: 0.1,\r\n            duration: anime.random(1200, 1800),\r\n            easing: 'easeOutExpo',\r\n            update: renderParticule }).\r\n\r\n        add({\r\n            targets: circle,\r\n            radius: anime.random(80, 160),\r\n            lineWidth: 0,\r\n            alpha: {\r\n                value: 0,\r\n                easing: 'linear',\r\n                duration: anime.random(600, 800) },\r\n\r\n            duration: anime.random(1200, 1800),\r\n            easing: 'easeOutExpo',\r\n            update: renderParticule,\r\n            offset: 0 });\r\n\r\n    }\r\n\r\n    var render = anime({\r\n        duration: Infinity,\r\n        update: function () {\r\n            ctx.clearRect(0, 0, canvasEl.width, canvasEl.height);\r\n        } });\r\n\r\n    document.addEventListener(tap, function (e) {\r\n        window.human = true;\r\n        render.play();\r\n        updateCoords(e);\r\n        animateParticules(pointerX, pointerY);\r\n    }, false);\r\n\r\n    var centerX = window.innerWidth \/ 2;\r\n    var centerY = window.innerHeight \/ 2;\r\n\r\n    function autoClick() {\r\n        if (window.human) return;\r\n        animateParticules(\r\n            anime.random(centerX - 50, centerX + 50),\r\n            anime.random(centerY - 50, centerY + 50));\r\n\r\n        anime({ duration: 200 }).finished.then(autoClick);\r\n    }\r\n\r\n    \/\/ autoClick();\r\n    setCanvasSize();\r\n    window.addEventListener('resize', setCanvasSize, false);\r\n&lt;\/script&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p>--<\/p>\n<h2>\u7d50\u8ad6<\/h2>\n<p>\u653e\u5728\u5de5\u4f5c\u7684\u7db2\u9801\uff0c\u4e00\u6574\u5929\u90fd\u6709\u9ede\u64ca\u7279\u6548\u9084\u662f\u7121\u6cd5\u4f7f\u7528\uff0c\u6700\u5f8c\u5168\u90fd\u79fb\u9664\u4e86 \ud83e\udd23\ud83e\udd23\ud83e\udd23<\/p>\n<p>--<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p class=\"pvc_stats all \" data-element-id=\"13221\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> &nbsp;1,357&nbsp;total views, &nbsp;2&nbsp;views today<\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>-- \u7279\u6548\u4e00 \u5f88\u7c21\u55ae\u7684\u5be6\u73fe\uff0c\u7f3a...<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p class=\"pvc_stats all \" data-element-id=\"13221\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> &nbsp;1,357&nbsp;total views, &nbsp;2&nbsp;views today<\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[31],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts\/13221"}],"collection":[{"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=13221"}],"version-history":[{"count":5,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts\/13221\/revisions"}],"predecessor-version":[{"id":13229,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts\/13221\/revisions\/13229"}],"wp:attachment":[{"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=13221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=13221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}