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

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

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

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

2回答

811閲覧

element.styleでjsに上書きされている元のcssの探し方が知りたい

thiashe

総合スコア0

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2023/12/17 15:14

編集2023/12/18 08:31

実現したいこと

element.styleで変更されているccsの探し方を知りたいです。

HP制作中、いいねボタンを設置できるプラグインを導入したところボタンを押した後に表示されるポップアップの表示場所が思い通りにいかず、試しにテーマを変更して確認したところ問題なく動いたので、テーマ内にあるプラグインとバッティングしている部分の記述を探したいです。

chromeの開発者ツールでelement.styleの欄でポップアップの表示場所が指定されていたのでプラグインのjs記述を確認しましたがそちらは問題なさそうでした。添付しておきます。

該当のソースコード

js

1 // メッセージボックス 2 if (!$('div#mwc-message-box-' + data.post_id)[0]) { 3 var msgBox = 4 '<div class="maroyaka-webclap mwc-message-box" id="mwc-message-box-' + data.post_id + '" style="display: none;">' + 5 '<div class="mwc-message-box-inner">' + 6 '<img src="' + data.close_img + '" class="close" title="閉じる" />'; 7 8 // お礼メッセージ 9 if (data.thanks_msg) { 10 msgBox += '<p class="thanks-msg">' + data.thanks_msg + '</p>'; 11 } 12 13 // お礼絵 14 if (data.thanks_img_val) { 15 msgBox += '<img class="thanks-img" src="' + data.thanks_img_val + '" />'; 16 } 17 18 msgBox += 19 '<form action="" name="mwc-message-form">' + 20 '<input type="hidden" name="action" value="send_message" />' + 21 '<input type="hidden" name="post_id" value="' + data.post_id + '" />' + 22 '<input type="hidden" name="clap_id" value="' + data.clap_id + '" />' + 23 '<input type="hidden" name="_ajax_nonce" value="' + data.ajax_nonce + '" />'; 24 25 // 名前入力欄 26 if (data.name_input) { 27 msgBox += '<input type="text" name="name" value="" class="form-control" placeholder="お名前">'; 28 } 29 30 // 定型文選択欄 31 if (data.set_phrases_select && data.set_phrases.length > 0) { 32 msgBox += '<select name="set_phrases" class="form-control">'; 33 msgBox += '<option value="">▼定型文</option>'; 34 for (var i = 0; i < data.set_phrases.length; i++) { 35 if (data.set_phrases[i]) msgBox += '<option value="' + data.set_phrases[i] + '">' + data.set_phrases[i] + '</option>'; 36 } 37 msgBox += '</select>'; 38 } 39 40 // メッセージ入力欄 41 if (data.message_input) { 42 msgBox += '<textarea name="message" rows="5" placeholder="メッセージ" class="form-control"></textarea>'; 43 } 44 45 // 送信ボタン 46 msgBox += 47 '<button type="submit" class="btn btn-primary">送信</button>' + 48 '</form>' + 49 '</div>' + 50 '</div>'; 51 $('body').append(msgBox); 52 53 // 表示位置指定 54 $msgBox = $('#mwc-message-box-' + data.post_id); 55 var $win = $(window); 56 57 if ($win.width() > 768) { 58 // PC 59 var mwcOffset = btnObj.offset(); 60 var mwcHeight = mwcObj.height(); 61 62 var mbTop = mwcOffset.top + mwcHeight + 12; 63 var mbLeft = mwcOffset.left; 64 65 // 管理バー 66 if ($('#wpadminbar')[0]) { 67 mbTop -= $('#wpadminbar').height(); 68 } 69 70 $msgBox.css({ 71 top: mbTop, 72 left: mbLeft 73 }).addClass('arrow').show(); 74 } else { 75 // タブレット 76 var mbTop = ($win.height() - $msgBox.height()) / 2 + $win.scrollTop(); 77 var mbLeft = ($win.width() - $msgBox.width()) / 2 + $win.scrollLeft(); 78 $msgBox.css({ 79 top: mbTop, 80 left: mbLeft 81 }).show(); 82 } 83 $msgBox.find('select, textarea, input[type="text"]')[0].focus(); 84 } else { 85 // 拍手IDのみ更新する 86 $('div#mwc-message-box-' + data.post_id).find('input[name="clap_id"]').val(data.clap_id); 87 } 88 }); 89 }).

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

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

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

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

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

Lhankor_Mhy

2023/12/18 08:02

devtools はお使いになってますか?
thiashe

2023/12/18 08:26

コメントありがとうございます。chromeの開発者ツールのことで間違いなければ試しました。element.styleで場所が指定されており、プラグインのjsの記述は確認したところ問題なさそうでした。 質問に追記しておきます。
Lhankor_Mhy

2023/12/18 08:34

element.style で設定したスタイルを打ち消しているCSSの箇所を知りたい」というご質問かと思ったのですが、違いましたか?
thiashe

2023/12/18 08:44

無知で申し訳ありません、おっしゃっている意味がよくわかりません。 ボタンを押すとポップアップが表示されるプラグインを導入した→スマホで押すとポップアップがかなり下に表示されてしまう→開発者ツールのelementsタブでポップアップの場所を確認するとstyleタブのelement.styleの欄に element.style { top: 5771.31px; left: 80.5px; } という記述があり、こうなっている原因を探しています。
Lhankor_Mhy

2023/12/18 09:07 編集

ということは、CSSの探し方ではなくて、JavaScriptの記述を探したいということですか?
Lhankor_Mhy

2023/12/18 09:16

どのように直したいのかが今一つわからない感じです。この斜めになっているのは意図したとおりなんですか?
thiashe

2023/12/18 09:20

ウィンドウ幅によって微妙に挙動が違います。pcは画面下部で見切れないようにするためなのか勝手に傾きますし、スマホなど幅の狭い画面ではかなり下に表示されます。どちらも同じような原因から発生していると思いますのでとにかく問題の記述場所を探しているのです。
Lhankor_Mhy

2023/12/18 09:26

くり返しになりますが、どのように直したいのかが伝わってこないので、「こう直すべき」という回答が難しい状態です。斜めに表示したいのかそうではないのかについても、まだご回答いただいていない認識です。 ちなみに、斜めになっていることと、element.styleとは、当方からは関連がないことのように見えています。
thiashe

2023/12/18 09:33

質問にも書いていますが、修正したいのは表示場所、位置です。斜めになっているのは後回しで放っておいて構いません。 どう直したいのかでいえば、スマホ表示では画面中央にポップアップするように…最初のコメントで質問に添付したプラグインのjsの記述通りに直したいです。ですので邪魔している記述がある場所を探しています。この表現で伝わったでしょうか?
thiashe

2023/12/18 09:36

いいえ、もう前回の質問で書いた「記述の意味が分からない」は自力で解決したので、これが正常に反映されない原因を探しています。
Lhankor_Mhy

2023/12/18 09:37

どのような位置が正しいのかを伝えていただかないと、あなたしかわからないと思うんですよね…… とりあえず、現在の位置では下すぎるということでいいでしょうか?
Lhankor_Mhy

2023/12/18 09:37

「正常に反映されない」というのは、「正常」がわからないと解決が難しいと思うんですよね……
Lhankor_Mhy

2023/12/18 09:40

top や left の値は正しく反映されてそうですので、つまりは、top の値が異常である、みたいなことをおっしゃりたいのですか?
thiashe

2023/12/18 09:44

?先ほどお答えしたと思うのですが、「スマホ表示では画面中央にポップアップするように直したい」では伝わらなかったでしょうか? 「正常」にとは、質問に添付してある記述でも分かるかと思うのですがプラグインのjsではウィンドウ幅の狭い端末からボタンを押したら「画面中央にポップアップが表示される」よう記述されているようなので、其れ通りに反映させたいです。
thiashe

2023/12/18 09:45

top や left の値は正しく反映されてそうですので、つまりは、top の値が異常である、みたいなことをおっしゃりたいのですか? >はいそうです。
Lhankor_Mhy

2023/12/18 09:52

ああ、なるほど、記述を見落としてましたね。失礼いたしました。 画面中央というのは、現在のスクロール位置の画面中央ということですね。理解しました。
thiashe

2023/12/18 10:15

はい、そうです。
Lhankor_Mhy

2023/12/25 04:24

ご解決されましたか? なにかわからないことがあればご連絡ください。
guest

回答2

0

ウィンドウ幅によって微妙に挙動が違います。pcは画面下部で見切れないようにするためなのか勝手に傾きます

「開発者ツール」で一目瞭然なはずですが、傾くのは arrow をクラスに追加しているからですね。
__「該当のソースコード」の73行目
__付加したかったのは別のクラスだったんじゃないかと

「画面中央にポップアップが表示される」よう記述されているようなので
画面中央というのは、現在のスクロール位置の画面中央ということですね
はい、そうです。

タブレットではその様な記述になっていますが、PCではそうなっていない様です。
web拍手ボタンを内包している要素(<div class="maroyaka-webclap)の下辺りを狙っているにすぎない感じです。
__「該当のソースコード」の59~63行目
web拍手ボタンをクリックできる位置までスクロールしているのだから、その下に msgBox が表示されるのは妥当な仕様でしょう。

つまり、「テーマ内にあるプラグインとバッティングしている部分の記述を探したい」というご質問ですが、バッティングは存在せず、画面中央に表示さえると思い込んでいたのが間違っていただけという事かもしれません。

投稿2023/12/21 10:18

tezcello

総合スコア268

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

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

0

HTMLの冒頭にBOMと思われるコードが混入しています。そちらを取り除いてはいかがでしょうか?


「質問に対する回答となっていない投稿」という指摘を受けたので解説追記

この質問は「JavaScriptが想定していない結果を返す」というものです。
ですので、「JavaScriptが想定している結果を返す」ようになる可能性があれば、回答として十分であると考えています。
この前提が共有できないようであれば、この先は読まなくていいです。
また、ご質問者の thiashe さんも、読まなくても問題のない内容ですので、どうぞ読み飛ばしてください。


さて、ご提示のコードのどの部分が想定していないのかを確認したところ、($win.height() - $msgBox.height()) / 2 + $win.scrollTop()の部分の結果が異なるようで、この内の$win.height()が異なるようでした。
(なお、$win = $(window)です。)

ところで、jQuery.fn.heightのコードを github で確認したところ、以下のようなものでした。

js

1if ( isWindow( elem ) ) { 2 3 4 // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729) 5 return funcName.indexOf( "outer" ) === 0 ? 6 elem[ "inner" + name ] : 7 elem.document.documentElement[ "client" + name ]; 8}

https://github.com/jquery/jquery/blob/c98597eaf5e144ee5e549cb41984687cd1033068/src/dimensions.js#L28C1-L28C1

つまり、どうやら、jQueryはwindow.document.documentElement.clientHeightを見ているようでした。


さて、「質問に対する回答となっていない投稿」という指摘受けている「HTMLの冒頭にBOMと思われるコードが混入しています。そちらを取り除いてはいかがでしょうか?」という回答ですが、こちらがJavaScriptが想定している結果を返すようになるものであることを示すため、HTMLの冒頭に(BOMだとコピペが困難なので)0と記載したテスト用コードを提示します。

html

10 2<!DOCTYPE html> 3<html lang="ja"> 4 5<head> 6</head> 7 8<body> 9 <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> 10 <script src="https://code.jquery.com/jquery-3.7.1.min.js" 11 integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script> 12 <script> 13 console.log($(window).height()) 14 console.log(window.innerHeight) 15 console.log(window.document.documentElement.clientHeight) 16 </script> 17</body> 18 19</html>

↑こちらが余分なコードを追加したもので、↓こちらが余分なコードがないものです。

html

1<!DOCTYPE html> 2<html lang="ja"> 3 4<head> 5</head> 6 7<body> 8 <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> 9 <script src="https://code.jquery.com/jquery-3.7.1.min.js" 10 integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script> 11 <script> 12 console.log($(window).height()) 13 console.log(window.innerHeight) 14 console.log(window.document.documentElement.clientHeight) 15 </script> 16</body> 17 18</html>

実行していただくとわかるのですが、コンソールに表示される数字が前者と後者で異なります。
言うまでもないですが、DOCTYPE宣言前に余分なコードを追加すると、DOCTYPE宣言が無効になります。どうやら、window.document.documentElement.clientHeightは、後方互換モードだと違う数字を返すのだと思います。
同様のことを書いた記事が、ググると見つかりました。
JavaScriptでのページ内スクロールとDOCTYPE宣言でハマった話


まとめると、

  • ご提示のページのHTML冒頭に余分なコードが含まれてた
  • HTML冒頭に余分なコードが含まれているとDOCTYPE宣言が無効になる
  • 後方互換モードだとwindow.document.documentElement.clientHeightが返すものが違う
  • 問題のコードではwindow.document.documentElement.clientHeightを参照してた

ということです。
以上から、「JavaScriptが想定している結果を返す」ようになる可能性がある回答であると考えていますし、その可能性があると考えることに十分に合理的な根拠があると考えています。
ですから、たとえこの対処で問題が解決しなかったとしても、「質問に対する回答となっていない投稿」という指摘には当たらないです。


修正依頼をかけた方へ。
(どうせもう読んでないんだろうけど、万万が一)この追記を読んでいて内容に納得するようであれば、修正依頼を撤回してください。納得できないのであればコメントでお知らせください。


なお、「最初からそう書いておけばいいじゃん」という意見もあるかもしれませんが、ご質問者はあまりWEB製作経験がある方ではないと判断していましたので、これらのことを書くと冗長すぎると考え、修正内容を提示するのみにとどめました。

投稿2023/12/18 10:14

編集2023/12/19 05:28
Lhankor_Mhy

総合スコア36337

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

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

Lhankor_Mhy

2023/12/18 14:12

「質問に対する回答となっていない投稿」という指摘をされた方、もう少し具体的な指摘をお願いします。直しようがないので。
Lhankor_Mhy

2023/12/19 03:36

とりあえず、追記しました。なんか反論があればどうぞ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.43%

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

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

質問する

関連した質問