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

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

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

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

CSS

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

Q&A

解決済

3回答

591閲覧

addEventListener('click')時に複数の現象を起こしたい。

komatta...

総合スコア2

JavaScript

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

CSS

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

1グッド

0クリップ

投稿2021/08/27 06:00

編集2021/08/27 06:44

前提・実現したいこと

javascript初心者です。

ニュースページを作るにあたり、<label>部分をクリックすると<img>アイコンが回転しかつoverflow:hidden部分が隠れる仕様で作りたいと考えています。(最初は露出→クリックしたら隠れる)

前回、アイコンが回転するjavascriptについてはご教授頂いたんですが、
やはりlabel部分ともリンクをさせたく、また質問させていただきます。

基礎的な話だとは思いますが、よろしくお願いいたします。

該当のソースコード

HTML

1<label for="2021" class="label"> 2 <img src="common/images/hover.png" alt="詳細" class="img"> 3 <h3>2021年</h3> 4</label> 5<input type="checkbox" id="2021"/> 6<div class="hiddenshow"> 7 <dl> 8 <dt></dt> 9 <dd></dd> 10 </dl>

css

1 .label{ 2 cursor :pointer; 3 width: 100%; 4 height: 7rem; 5 } 6.label h3{ 7 padding-left: 3rem; 8 } 9input{ 10 display: none; 11 } 12.hiddenshow{ 13 height: auto; 14 padding: 0; 15 overflow: hidden; 16 opacity: 1; 17 transition: 0.8s; 18 } 19input:checked ~ .hiddenshow { 20 padding: 10px 0; 21 height: auto; 22 opacity: 0; 23 } 24.img.active{ 25 transform: rotate(-90deg); 26 }

javascript

1 2<script> 3const img = document.querySelector('.img'); 4img.addEventListener('click', () => { 5img.classList.toggle('active'); 6document.querySelector('.hiddenshow').style.display = "none"; 7}); 8</script>
Waki285👍を押しています

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/08/27 06:06

コードは ``` と ``` で囲ってください(``` はバッククォート 3 つ)。インデントされて見やすくなるので。インデントされてないコードは質問者さん自身も読む気がしないのでは? 赤の他人の閲覧者・回答者はなおさらです。見てもらわないと話が始まらないのだから見てもらえる努力をしませんか。
komatta...

2021/08/27 06:14

修正しました。初心者で申し訳ない。
退会済みユーザー

退会済みユーザー

2021/08/27 06:22

今は img 要素をクリックして期待通りの動きをするのですか? そこを、img 要素を囲んでいる label 要素をクリックしたときに同じように動作させたいと言ってますか?
komatta...

2021/08/27 06:37

説明がわかりづらく恐縮です。 今はimg要素が回転されない状況です。仰っているような仕様にしたいです。
退会済みユーザー

退会済みユーザー

2021/08/27 06:44

> 今はimg要素が回転されない状況です。 質問に、 > 前回、アイコンが回転するjavascriptについてはご教授頂いたんですが、 と書いてあったので、質問のコード(img をクリック)で期待していることができていると思っていたのですが・・・
komatta...

2021/08/27 06:51 編集

回答者様のご指摘でjavascript最終行の記述を直したら、アイコン部分は回転するようになりました。 .style.display = "none"; ただいまだ.img要素ないしlabel要素をクリックしてもhiddenshow部分は表示・非表示ができない状況です。
guest

回答3

0

ベストアンサー

.hiddenshow部分が表示・非表示されない状況

hidden にしかしていないので非表示のままになってしまうのは当然です。
img のように classList.toggle() を使用すれば表示非表示ができます。

サンプルを作ってみたので参考にしてみてください。(ややこしくなるので checkbox は一旦外しました。)

html

1<label for="2021" class="label"> 2 <img src="http://placehold.jp/150x150.png" alt="詳細" class="img"> 3 <h3>2021年</h3> 4</label> 5<div class="hiddenshow"> 6 <dl> 7 <dt>aaaa</dt> 8 <dd>bbbbb</dd> 9 </dl> 10</div>

css

1.label { 2 cursor: pointer; 3 width: 100%; 4 height: 7rem; 5} 6 7.label h3 { 8 padding-left: 3rem; 9} 10 11input { 12 display: none; 13} 14 15.hiddenshow { 16 height: auto; 17 padding: 0; 18 overflow: hidden; 19 opacity: 1; 20 transition: 0.8s; 21} 22 23.img.active { 24 transform: rotate(-90deg); 25} 26 27.hiddenshow.hide { 28 display: none; 29}

js

1const label = document.querySelector('.label'); 2const img = document.querySelector('.img'); 3const hiddenshow = document.querySelector('.hiddenshow'); 4 5label.addEventListener('click', () => { 6 img.classList.toggle('active'); 7 hiddenshow.classList.toggle('hide'); 8});

投稿2021/08/27 09:51

agumon

総合スコア271

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

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

komatta...

2021/08/29 06:32 編集

ありがとうございました!完璧な動きです。ご丁寧な回答のおかげでjavascriptとcssの関係が少し理解できたような気がします。初歩的な話にお付き合いいただいて感謝です。
guest

0

.style.display:none;

プロパティの指定の仕方が間違っています。
プロパティ=値
です。
※リンク先参照

投稿2021/08/27 06:20

m.ts10806

総合スコア80850

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

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

komatta...

2021/08/27 06:49 編集

ありがとうございます。JavaScriptの最終行ですよね? .style.display = "none"; に修正しました。 ですが、やはりimg要素の回転ばかりで、.hiddenshow部分が表示・非表示されない状況です。
guest

0

js

1 2const img = document.querySelector('.label'); 3

ってことですか?

投稿2021/08/27 06:18

kairi003

総合スコア1330

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

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

komatta...

2021/08/27 06:26

```JavaScript前半 const img = document.querySelector('.img'); img.addEventListener('click', ``` ```JavaScript後半 img.classList.toggle('active'); document.querySelector('.hiddenshow').style.display:none; });``` 前半部分、imgアイコンをクリック後に、 後半部分二つの現象を起こしたいという意図で書きましたが、 ご指摘の通り、.label でもできそうですね。動けばどちらでも大丈夫です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問