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

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

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

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

JavaScript

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

jQuery

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

Q&A

解決済

2回答

268閲覧

svgファイルの色が戻ってしまう

_bg

総合スコア13

SVG

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

JavaScript

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

jQuery

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

0グッド

1クリップ

投稿2018/05/07 09:59

編集2018/05/07 10:50

javascript初心者です。

svgの色をjavascriptによって変更しました。
しかし、スマホ時の縦横の向きを変更した際、アイコンの色がjsを充てる以前の色に戻ってしまいます。

問題が発生しているサイト
https://www.unfondsolaire.com
(スマートフォンでの閲覧をお願いいたします。)
スクロールすると、下に固定ナビが出現します。アイコンの色がオレンジ色になっていると思いますが、スマホを横にし、その後再度縦にすると、アイコンの色がsvg本来の色(黄緑)に戻ってしまいます。その状態で再度スクロールすると、アイコンの色はオレンジ色に戻ってくれるのですが、そもそも黄緑色に戻らないようにしたいです。

発生している問題・エラーメッセージ

該当のソースコード

javsScript

1 2<ul> 3 <li> 4 <a href="tel:000000000"> 5 <object id="tel" type="image/svg+xml" data="/wp-content/uploads/tel.svg" alt=""></object> 6 <span>TEL</span> 7 </a> 8 </li> 9 </ul>

javsScript

1 2function svgColor() { 3var tel = document.getElementById('tel').contentDocument; 4 var tel = $(tel); 5 tel.find('path').css('fill','#f27d15'); 6 } 7 8 $(window).load(function () { 9 svgColor(); 10 $(this).resize(function () { 11 svgColor(); 12 }); 13 }); 14

試したこと

リサイズ時に色が戻ってしまうのなら、resiveファンクションで
再度命令を出してやればよいと思い、上記コードを書きました。
ですが、うまくいきません。
稚拙な質問で申し訳ありませんが、どなたかアドバイスを頂けると幸いです。
よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

検証スマートフォン:iphone 6s
ブラウザ:safari

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

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

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

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

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

guest

回答2

0

ベストアンサー

SVGを編集できるようでしたら、SVGファイルをテキストエディタで開いて、style要素内の記述を変更してはどうでしょうか。その場合、JavaScriptは全く必要ありません。

SVG

1<style type="text/css"> 2 .st0{fill:#89B928;} 3</style>

SVG

1<style type="text/css"> 2 .st0{fill:#f27d15;} 3</style>

投稿2018/05/08 01:50

yukosnoopy

総合スコア30

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

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

0

なぜ svgColor()をjavascriptで書いて、
その後の処理をjQueryで処理しているかは謎ですが
要はイベントの発火タイミングを"load"と"resize"に
限定すれば良いので、そのタイミングに発火を設定すれば良いと思います。

javascript

1function svgColor() { 2var tel = document.getElementById('tel').contentDocument; 3 var tel = $(tel); 4 tel.find('path').css('fill','#f27d15'); 5} 6 7$(window).on('load resize', function(){ 8 svgColor(); 9});

ただその機能を切り分けて使うこともないかと思うので

javascript

1$(function(){ 2 $('#tel').find('path').css('fill','#f27d15'); 3});

のみでも良いんじゃないかと思いますが、
何かしらで必要なのかもしれないので参考程度にしておいて下さい。

投稿2018/05/07 14:21

stampdoor

総合スコア483

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

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

_bg

2018/05/08 00:49

丁寧に教えていただきありがとうございます。 大変助かりました。 ご回答を参考にし、 $(window).on('load orientationchange resize',function () { svgColor(); }); 上記の記述を書きましたが、やはりうまくいってくれません。 因みにsvgの処理をjavascriptで記述しているのは、contentDocument でないと document内の要素を操作できない旨他ページに載っていたからです、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問