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

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

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

Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2964閲覧

【Electron】SVGをheight: 100%;にした状態で親要素の高さを変更するとレイアウトが崩れる

brave

総合スコア18

Electron

Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/03/21 09:55

該当のソースコード

https://codepen.io/anon/pen/WzpJVM

前提・実現したいこと

ただ今Electronにてデスクトップアプリを作成しております。
その途中でどうにも解決できない現象が発生しましたので質問させていただきます。

実現したいことは上記のソースコードの通りなのですが、
SVGを横並びに配置し、その親要素であるulの高さを変更すると、
追従してSVGもリサイズされるという設計にしたいと考えております。

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

ですがElectronやChromeなどのChromium系統の環境で上記のソースコードを実行すると、
目論見通りSVGのリサイズはされるのですが、なぜか表示位置が変更されずにSVG同士が重なった状態になってしまいます。

FireFoxなどでは表示位置も正しく変更されたので、Chromium特有の現象かと思います。

質問

Electronにおいてでも正しい位置に表示されるような書き方をご教授頂きたいです。
Electronさえ動作すれば問題ないので、他のブラウザでは崩れてしまうといった書き方でも構いません。
できればですがHTMLとcssのみで解決できる方法が望ましいです。

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

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

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

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

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

defghi1977

2018/03/21 10:07

リサイズすると治るので, おそらくBlinkのバグ.対処策はちょっと考えてみます.
guest

回答1

0

ベストアンサー

この問題はsvg要素に幅の情報が一切存在していないことによります. (display:flex環境下でのテスト不足と思われる)

そこで, ul要素の高さからsvg要素の幅を設定するようにコードを修正してみました.

高さを一箇所で変更可能とするため, CSS変数--heightを介してul要素の高さとsvg要素の幅を設定しています.

HTML

1<ul id="ul"> 2 <li> 3 <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 100 100"> 4 <rect width="100" height="100" style="fill:#000"/> 5 </svg> 6 </li> 7 <li> 8 <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 100 100"> 9 <rect width="100" height="100" style="fill:#00F"/> 10 </svg> 11 </li> 12 <li> 13 <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 100 100"> 14 <rect width="100" height="100" style="fill:#F00"/> 15 </svg> 16 </li> 17</ul> 18<input type="button" value="button" onClick="onClick()" />

SCSS

1ul { 2 --height: 100px; 3 height: var(--height); 4 display: flex; 5 list-style: none; 6 7 > li { 8 height: 100%; 9 10 > svg { 11 height: 100%; 12 width: var(--height); 13 } 14 } 15}

JavaScript

1const onClick = function () { 2 const ul = document.getElementById('ul'); 3 //ul.style.height = 200 + 'px'; 4 ul.style.setProperty("--height", "200px"); 5}

投稿2018/03/21 10:21

defghi1977

総合スコア4756

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問