\r\n\r\n```\r\n```css\r\n.sns {\r\n display: none;\r\n}\r\n```\r\n\r\n### 試したこと\r\n\r\n```html\r\n\r\n
\r\n Tweet\r\n \r\n
\r\n```\r\n```css\r\n.sns {\r\n visibility: hidden;\r\n}\r\n/* または */\r\n.sns {\r\n opacity: 0;\r\n}\r\n\r\n```\r\n\r\n### 補足情報\r\n\r\n既に判明してる通りツイッターボタンを非表示状態を作り出すためには`display: none;`ではなく、`visibility: hidden;`や`opacity: 0;`を使用すればこの問題を解消することが分かっているのですが、ツイッターボタン要素の前後にある要素設計を考慮し、可能であれば、`display: none;`の状態でもクリックイベント発火後に表示させたいのです。\r\n\r\n何かいい方法はありますでしょうか?\r\n\r\n知見をお伺いできれば幸いです。\r\nよろしくお願いいたします。\r\n\r\n### クリックイベントコード\r\n```javascript\r\n$('.trigger').on('click', function() {\r\n $('.sns').show();\r\n});\r\n```","answerCount":1,"upvoteCount":1,"datePublished":"2018-03-29T05:05:47.121Z","dateModified":"2018-03-29T06:43:07.685Z","acceptedAnswer":{"@type":"Answer","text":"`display:none`によるノードの隠蔽は(`getComputedStyle`メソッドで得られる)スタイル情報が未定義となることから時折スクリプトの動作に影響を及ぼします.\r\n\r\nこのような場合は代替として\r\n```HTML\r\n\r\n
\r\n Tweet\r\n \r\n
\r\n```\r\n```CSS\r\n.sns.hidden {\r\n width: 0;\r\n height: 0;\r\n overflow: hidden;\r\n}\r\n```\r\nとした上で, クリックイベント時にクラス`hidden`を外すなどすればよいでしょう.","dateModified":"2018-03-29T09:18:06.404Z","datePublished":"2018-03-29T07:11:43.882Z","upvoteCount":3,"url":"https://teratail.com/questions/119459#reply-181881"},"suggestedAnswer":[],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://teratail.com","name":"トップ"}},{"@type":"ListItem","position":2,"item":{"@id":"https://teratail.com/tags/JavaScript","name":"JavaScriptに関する質問"}},{"@type":"ListItem","position":3,"item":{"@id":"https://teratail.com/questions/119459","name":"SNS(ツイッター)ボタンが表示されない"}}]}}}
質問するログイン新規登録

Q&A

解決済

1回答

3794閲覧

SNS(ツイッター)ボタンが表示されない

souta-haruran

総合スコア88

JavaScript

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

CSS

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

1グッド

0クリップ

投稿2018/03/29 05:05

編集2018/03/29 06:43

1

0

前提・実現したいこと

ツイッターボタンを表示したい

発生している問題

ツイッターボタンが表示されない。

今回のケースでは『ツイッターボタンを非表示状態にしておき、クリックイベント発火でツイッターボタンを表示させる』
という実装が前提です。

ただしこの場合ツイッターボタンが表示されません。

調査したところ恐らくツイッターボタン非表示状態を作り出すためにdisplay: none;を設定していることが原因のようです。
例えば非表示状態を作り出すのにvisibility: hidden;opacity: 0;の場合だと問題なくクリックイベント発火後に表示されることを確認しています。

該当のソースコード

html

1<button class="trigger">クリック</button> 2<div class="sns"> 3 <a href="http://twitter.com/share" class="twitter-share-button" data-text="***" data-url="***" data-lang="ja">Tweet</a> 4 <script type="text/javascript" src="http://platform.twitter.com/widgets.js" charset="utf-8" ></script> 5</div>

css

1.sns { 2 display: none; 3}

試したこと

html

1<button class="trigger">クリック</button> 2<div class="sns"> 3 <a href="http://twitter.com/share" class="twitter-share-button" data-text="***" data-url="***" data-lang="ja">Tweet</a> 4 <script type="text/javascript" src="http://platform.twitter.com/widgets.js" charset="utf-8" ></script> 5</div>

css

1.sns { 2 visibility: hidden; 3} 4/* または */ 5.sns { 6 opacity: 0; 7} 8

補足情報

既に判明してる通りツイッターボタンを非表示状態を作り出すためにはdisplay: none;ではなく、visibility: hidden;opacity: 0;を使用すればこの問題を解消することが分かっているのですが、ツイッターボタン要素の前後にある要素設計を考慮し、可能であれば、display: none;の状態でもクリックイベント発火後に表示させたいのです。

何かいい方法はありますでしょうか?

知見をお伺いできれば幸いです。
よろしくお願いいたします。

クリックイベントコード

javascript

1$('.trigger').on('click', function() { 2 $('.sns').show(); 3});
namnium1125👍を押しています

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

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

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

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

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

defghi1977

2018/03/29 05:10

clickイベントに対するイベントリスナのコードを追記して下さい
m.ts10806

2018/03/29 05:20

「クリックイベント発火」部分のコード(javascriptだとは思いますが)を追記してください。
souta-haruran

2018/03/29 06:43

失礼しました。javascriptコードを追記しました。
guest

回答1

0

ベストアンサー

display:noneによるノードの隠蔽は(getComputedStyleメソッドで得られる)スタイル情報が未定義となることから時折スクリプトの動作に影響を及ぼします.

このような場合は代替として

HTML

1<button class="trigger">クリック</button> 2<div class="sns hidden"><!--見えなくする--> 3 <a href="http://twitter.com/share" class="twitter-share-button" data-text="***" data-url="***" data-lang="ja">Tweet</a> 4 <script type="text/javascript" src="http://platform.twitter.com/widgets.js" charset="utf-8" ></script> 5</div>

CSS

1.sns.hidden { 2 width: 0; 3 height: 0; 4 overflow: hidden; 5}

とした上で, クリックイベント時にクラスhiddenを外すなどすればよいでしょう.

投稿2018/03/29 07:11

編集2018/03/29 09:18
defghi1977

総合スコア4756

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

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

souta-haruran

2018/03/29 08:43

ありがとうございます。 ご提案いただいた方法で対応をしていきたいと思います。 大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問