質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

0回答

976閲覧

jQueryのSVG描写で、safariのみ挙動がおかしい

sleeeep12

総合スコア36

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2019/11/27 04:42

日本語の文字画像(SVG)を、手書き風でSVG描写させているのですが(実際にシャッシャと書かれていくイメージ)、chromeではスムーズに動いてくれるのですが、safariのみかくついて困っています。
jqueryのdrawSVGというプラグインを使っています。
(参考にしたサイト https://canvas-i.com/coding-draw-svg/ )

具体的には、1文字1文字書かれていくのが理想ですが、1文字目、6文字目、7文字目、10文字目、のように変な順番で、かつ不完全な文字が描写されるイメージです。そして最後に残りの足りない部分が合わせてパッと現れるという...まさにカクついてるイメージです。
以下コードです。

html

1 <svg class="draw" viewBox="0 0 593.839 235.469" width="100%"> 2 <defs> 3 4 <!-- 2-a.マスクの指定 --> 5 <mask id="mask--logo"> 6 7 <!-- 3.描画パスの挿入 --> 8 <path class="st0" d="M-3,45C10.718,30.413,27.364,11.077,55,5c11.205-2.464,27.212-5.984,37,3c9.597,8.809,7.819,24.687,7,32 9 c-1.961,17.508-9.919,30.447-30,56c-11.271,14.343-26.275,32.55-45,53"/> 10 <path class="st1" d="M150,45c-19.602,12.428-32.269,25.718-29,32c2.91,5.592,20.638,0.93,36-3"/> 11 <path class="st2" d="M179,32c-0.667,11.667-2.653,22-2,35"/> 12 <path class="st2" d="M210,30c-3.605,23.699-13.053,55.817-39,80c-2.297,2.141-4.636,4.138-7,6"/> 13 <path class="st2" d="M232,48l37-18c0,0-24,40-23,50s7,11,7,11l8,3"/> 14 <path class="st2" d="M267,60c2.789-2.226,5.915-4.528,9.389-6.813c2.982-1.962,5.87-3.681,8.611-5.187"/> 15 <path class="st2" d="M264,77c5.289-3.204,10.961-6.432,17.016-9.614C286.156,64.684,291.162,62.23,296,60"/> 16 <path class="st2" d="M312,34c0,0,4,35,10,37s8,2,8,2"/> 17 <path class="st2" d="M339,40c2.303,4.654,4.618,9.825,6.805,15.5c2.106,5.467,3.81,10.665,5.195,15.5"/> 18 <path class="st2" d="M358,39l35-15c0,0-20,32-17,39s5,3,5,3l32-28c0,0-28,39-25,39s49-24,49-24"/> 19 <path class="st2" d="M451,40c6.19,5.734,12.527,12.007,18.905,18.857c3.177,3.412,6.206,6.797,9.095,10.143"/> 20 <path class="st2" d="M124,178c0,0,58.224-28.151,71.112-26.576S202,177,202,177l-21,38c0,0-8-9-8-17"/> 21 <path class="st2" d="M185,136c-10.766,18.46-21.474,36.954-32.125,55.483C144.547,205.969,136.256,220.475,128,235"/> 22 <path class="st2" d="M243,142l-18,47l-3-18l53-20c0,0-11,42-17,48"/> 23 <path class="st2" d="M251,170c4.321,0.957,8.725,1.989,13.206,3.101c5.068,1.258,10,2.562,14.794,3.899"/> 24 <path class="st2" d="M309,134c0,0-14,19-11,21s10,4,12,3s18-17,18-17h4c0,0-20,27-23,39s-5,21-5,21"/> 25 <path class="st2" d="M362,131c-1.893,8.729-3.715,17.699-5.447,26.901c-1.67,8.876-3.183,17.579-4.553,26.099"/> 26 <path class="st2" d="M373,142c3.01,0.698,6.086,1.455,9.223,2.278c3.357,0.88,6.616,1.79,9.777,2.722"/> 27 <path class="st2" d="M369,163c4.37-0.24,8.812-0.443,13.325-0.604c5.665-0.202,11.225-0.332,16.675-0.396"/> 28 <path class="st2" d="M414,126c0,0,25-11,27-10s-28,53-28,53s34-34,39-33s6,24-7,40s-43,44-43,44"/> 29 <path class="st2" d="M485,109c0,0,23,8,20,11s-21,25-21,25s20-18,30-4s-21,41-21,41s-5,6-9,0s13-23,16-26s86-43,86-43"/> 30 <path class="st2" d="M576,146c0,0-14,15-14,20s0,14,4,14s15-3,16-6s11-9,7-14s-14-7-14-7"/> 31 </mask> 32 </defs> 33 34 <!-- 2-b.マスクの指定 --> 35 <image xlink:href="<?php echo esc_url(get_template_directory_uri()); ?>/img/catchsvg.svg" width="100%" height="100%" mask="url(#mask--logo)"></image> 36 </svg> 37

jQuery

1jQuery(function($){ 2 //描画のフェードイン 3 jQuery('.draw').css({ 4 'visibility': 'visible', 5 }); 6 7 // Canvasのを描画走らせる 8 setTimeout(function () { 9 logo.drawsvg('animate'); 10 }, 600); 11 12 // DrawSVGアニメーション設定 13 var canvas_draw = { 14 duration: 150, //ひとつのpathが描き終わる速度 15 stagger: 100, //次のpathを書き始めるまでの遅延時間。 16 easing: 'swing', //jqueryで使用できるイージングを実装。 17 reverse: false, //描く方向の指定。 18 callback: function () { 19 //処理を記述 20 } 21 }, 22 logo = jQuery(".draw").drawsvg(canvas_draw); 23}); 24

試したことは、上記jqueryコードの中の

setTimeout(function () { logo.drawsvg('animate'); }, 600);

このsetTimeoutの時間の数値を4000とかにしたら数秒後ではありますがsafariでもスムーズに表示されたので、ロードが遅れてカクツクのかなと思いました。

chromeでは問題ないというのもあり、どう対処していいのか分かりません。
よい解決法やヒントがありましたら、どうかご教授よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問