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

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

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

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

Safari

SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。

JavaScript

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

jQuery

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

Q&A

1回答

1823閲覧

Safariで<object>を用いたSVGの表示/非表示を切り替えると<object>が再読み込みされる?

TakuHosoya

総合スコア33

SVG

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

Safari

SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。

JavaScript

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

jQuery

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

1グッド

0クリップ

投稿2020/02/09 05:44

外部ファイルのSVGを<object>で読み込み、SVGの色をJavascriptで制御しています。

また、「表示/非表示」のボタンを設置し、SVGそのものの表示を制御しています。

HTML

1<div id="a"> 2 <object id="canvas" data="hogehoge.svg" type="image/svg+xml"></object> 3</div> 4<button id="on">ON</button> 5<button id="off">OFF</button> 6<button id="red">RED</button>

Javascript

1$(document).on('click', '#on', function(){ 2 $('#a').show(); 3} 4$(document).on('click', '#off', function(){ 5 $('#a').hide(); 6} 7$(document).on('click', '#red', function(){ 8 var svgobj = $('#canvas').contentDocument; 9 var $svg = $(svgobj).find('svg'); 10 $target = $svg.find('path'); 11 $target.css('fill', '#ff0000'); 12}

この時
1.番号リスト色を変更する
2.非表示にする
3.再度表示する
という動作を行った時、Chrome、Firefox、Edgeでは変更した色のまま表示されるのですが、Safariでのみ、変更前の色(デフォルトの色)で表示されてしまいます。

Webインスペクタ(デベロッパーツール)を見ながら確認すると
Chromeなどの場合、「非表示→表示」の際に、<object>に何か変更が加えられることはありません。(当たり前ですが)
しかし、Safariの場合、「非表示→表示」をした時、<object>が一瞬消え、再度描画されるような挙動が見られました。

Safariでも変更した色のまま再表示される様な方法はありますでしょうか?

x_x👍を押しています

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

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

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

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

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

guest

回答1

0

https://stackoverflow.com/questions/27490104/trouble-hiding-showing-inline-svg-in-mobile-safari
上記を参考に、show()、hide()ではなくwidth、heightを0pxにする方法で対処しました。

本来はfadeInやfadeOutとしたかったので、他の方法があれば是非教えて頂ければと思います。

投稿2020/02/09 07:45

TakuHosoya

総合スコア33

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問