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

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

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

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

CSS

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

Q&A

解決済

5回答

2168閲覧

クリックしたら実行できることをcssだけでやる方法

aba623ky

総合スコア63

HTML

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

CSS

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

0グッド

0クリップ

投稿2016/10/02 08:17

クリックしたら実行できることを疑似要素を使ってcssだけで実行したいです。
普通なら、javascriptを使わなくちゃいけないと思いますが、cssだけで実行したいです。
下のコードをもとにクリックしただけで実行できますか?
下のコードはドロップダウンメニューのコードです。
わかりづらい説明ですみません。

css

1<style> 2 td.nav table { 3 display:none; 4} 5td.nav:hover table { 6 display:block; 7} 8td.nav a { 9 padding:10px; 10 display:block; 11 color:#fff; 12 text-align:center; 13 text-decoration:none; 14} 15td.nav:hover a { 16 background-color:#666; 17} 18td.nav:hover a:hover { 19 background-color:#ccc; 20} 21</style>

html

1 echo '<tr>'; 2 echo '<td class="nav">'; 3 echo '<a href="#">'; 4 echo 'メニュー'; 5 echo '</a>'; 6 echo '<table>'; 7 echo '<tr>'; 8 echo '<td>'; 9 echo $r->access; 10 echo '</td>'; 11 echo '</tr>'; 12 echo '<tr>'; 13 echo '<td>'; 14 echo $r->non_smoking; 15 echo '</td>'; 16 echo '</tr>'; 17 echo '</table>'; 18 echo '</table>'; 19

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

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

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

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

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

guest

回答5

0

ベストアンサー

「CSSだけでドロップダウンメニュー」 は出来なくはないです。

【参考1『CSSで作ったドロップダウンメニューのドロップの動きいろいろ』】

↑このような感じになります。
ただし、この作り方の場合、メニュー表示のアクションは「:hover」のタイミングのみです。「クリックで表示」には対応できません。
また、メニューのHTML構造はul要素またはol要素になります。table要素では実現できません。

【参考2『CSSだけでメニューが開いたり閉じたりするアコーディオンを作る!javascript不要』】

こちらはドロップダウンメニューではなく「アコーディオン」になりますが、開閉に使用するボタンをinput要素(チェックボックス)にすることで、「クリック」をトリガーとしてメニューを開くことができます。(※厳密には「クリックイベント」を取得しているのではなく、チェックされているかどうかを表す「:ckecked」擬似クラスを利用しています)

どうしてもJavaScriptを使うのが嫌(もしくは使えない事情がある)なのであれば、
このあたりの情報を参考にして無理矢理作ろうと思えばできなくもなさそうです。
※やったことはありませんので保証はしませんが。。。

まぁどちらにせよ今やろうとしているHTML構造では実現不可能ですので、
「実現できる可能性があるHTML構造」に変更することが大前提ですね。
それすらできないのであれば、完全に道は閉ざされます。

投稿2016/10/02 10:14

aKusano

総合スコア3763

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

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

aba623ky

2016/10/02 10:42

CSSだけでメニューが開いたり閉じたりするアコーディオンを作りたいです。
aKusano

2016/10/02 10:45

ならば回答に示した「参考2」のブログがちょうどやりたいことの答えになるかと思います。そちらを参考にしてみてはどうですか?
aba623ky

2016/10/02 11:46

参考2のブログを参考して書くには、どう書けばいいですか?
aKusano

2016/10/02 12:23 編集

参考サイトにHTMLもCSSも全部記載されてますから、 それをそっくりそのままコピーするなり、部分的にHTML要素やid/class名を希望のものに変更するなりすればよろしいのでは?
guest

0

JavaScript の click を置き換えるものではありませんが、:target 疑似クラスで似たような事は出来ます。
http://coliss.com/articles/build-websites/operation/css/target-pseudo-class-trick.html

他に :focus でも同じような事が出来るでしょう(勿論、フォーカスが外れれば適用されたスタイルも外れます)。

これらは完全な代替ではないので、最終的には「これらの動作を要件として認められるかどうか」にかかっています。

Re: aba623ky さん

投稿2016/10/02 12:58

think49

総合スコア18162

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

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

0

車があってアクセルを踏んで動かしたいというのであれば、CSSではできない。エンジンをかけることすら出来ない。CSSにできるのは、車にキャラクターの絵を描いてデコ車にするくらいではないか。
javascriptを使わなくちゃいけないと思っているのにどうしてCSSだけで動かすことにこだわっているのか。
その理由を書くだけでも答えが違うと思います。
また、echoはHTMLではなくPHPなのではと思います。
echoを外せばHTMLでもいいとは思いますがね。

投稿2016/10/02 08:36

toutou

総合スコア2050

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

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

aba623ky

2016/10/02 10:42

CSSだけでメニューが開いたり閉じたりするアコーディオンを作りたいです。
toutou

2016/10/02 10:56

題名を「CCSでアコーディオンメニューを作る」などとすれば的確なアドバイスをしてくれる方が集まるかもしれません。 どこにもアコーディオンと書いてなかったのでなにがしたいかいまいちわかりませんでした。
aba623ky

2016/10/02 11:32

すみませんでした。ごめんなさい。
toutou

2016/10/02 11:48

新しい項目を作るのはかまいませんがこちらはどうなるんでしょうか?なにをしたら解答済みになるんでしょうか?
aba623ky

2016/10/02 14:35

アコーディオンのコードが知りたいんです。
toutou

2016/10/02 14:38

教えてもらったサイトに行きそこでコードを見ればわかると思います。粘ってでも直でコードを書いてくれる方はいないと思います。
guest

0

前回の質問にも書きましたがCSSはあくまでスタイル(見た目)の担当のみです。
リンクの飛び先などの制御はできません。

投稿2016/10/02 08:28

gin

総合スコア2722

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

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

aba623ky

2016/10/02 10:42

CSSだけでメニューが開いたり閉じたりするアコーディオンを作りたいです。
gin

2016/10/02 11:50

それは前回の質問でやり方を示しましたよね? ですが質問者さんが望んでいるリンク先の自動設定まではできません。 何度も言いますがCSSは見た目だけです。
guest

0

JavaScriptには Clickイベントを取得する機能がありますが、CSSはそもそも装飾のための機能です。可能なのはmouseocer に相当する Hover 以外の実装はありませんので、絶対不可能です。可能性すらありません。

投稿2016/10/02 08:20

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

aba623ky

2016/10/02 10:42

CSSだけでメニューが開いたり閉じたりするアコーディオンを作りたいです。
退会済みユーザー

退会済みユーザー

2016/10/02 11:25 編集

ちゃんと回答を読めないのでしょうか? それとも意味がわからないのでしょうか?
aba623ky

2016/10/02 11:32

すみませんでした。ごめんなさい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問