このHTMLでは、Widthが500px以下の場合、チェックボックスにチェックが入れられたらアニメーションで<ul id="topnav">を表示するのですが、チェックボックスのチェックを外した時にもアニメーションで消えていくようにできません。アニメーションが始まる(表示される範囲)をチェックボックスより下にしたいです。どうしたらいのか教えていただきたいです。フルのHTMLも教えていただきたいです。よろしくお願いいたします。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Menu Example</title>
<style>
/* メニューボタン */
.menu-button {
display: none;
}
/* 横幅が500px以下の場合にul要素を非表示にする */
@media only screen and (max-width: 500px) {
#topnav {
display: none;
}
.menu-button {
display: block;
}
}
/* メニューボタンをクリックしたらul要素を表示する */
@media only screen and (max-width: 500px) {
.menu-button:checked ~ #topnav {
display: block;
animation: slide-down 0.5s ease-out;
}
}
/* スライドダウンアニメーション */
@keyframes slide-down {
0% {
transform: translateY(-100%);
}
100% {
transform: translateY(0);
}
}
/* メニューボタンをクリックしたらul要素を非表示にする */
@media only screen and (max-width: 500px) {
.menu-button:not(:checked) ~ #topnav {
display: none;
animation: slide-up 0.5s ease-out;
}
}
/* スライドアップアニメーション */
@keyframes slide-up {
0% {
transform: translateY(0);
}
100% {
transform: translateY(-100%);
}
}
</style>
</head>
<body>
<input type="checkbox" class="menu-button">
<ul id="topnav">
<li><a>Home</a></li>
<li><a href="about">About</a></li>
<li><a href="contact">Contact</a></li>
</ul>
</body>
</html>
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
No1です。
連投失礼。
見直したら、「-100%」は自分自身の高さにならないので、タイミングが少しおかしくなりますね。
HTMLはそのままで、CSSは以下にしておいた方がよさそうです。
<style>
#topnav {
overflow: hidden;
}
#topnav ul {
transform: translate(0, -120%);
transition: transform 0.8s;
}
.menu-button:checked + #topnav ul {
transform: translate(0, 0);
}
</style>
No.1
- 回答日時:
こんにちは
>チェックを外した時にもアニメーションで消えていくようにできません。
原因は、display:none; を指定しているので、先に非表示になってしまうために、アニメーション効果は見えないですね。
>(表示される範囲)をチェックボックスより下にしたいです。
意味がちょっとはっきりわかりませんけれど、画面の上からではなく、表示される範囲内だけでスライドしたいということと解釈しました。
表示する部分だけをクリップしてアニメーションする方法も考えられますが、簡単なのは包含要素を設けておいて、その範囲内で表示する方法だと思います。
また、アニメーションの内容が単純なので、@keyframesを用いるよりもtransitionで行う仕組みにした方が簡単になります。
仮に、HTMLを
<input type="checkbox" class="menu-button">
<div id="topnav">
<ul>
<li><a>Home</a></li>
<li><a href="about">About</a></li>
<li><a href="contact">Contact</a></li>
</ul>
</div>
のようにしておいて、
※ 以下では @media~ は省略してありますので、常時の表示になります。
<style>
#topnav {
overflow: hidden;
}
#topnav ul {
margin-top: -100%;
transition: margin 0.8s;
}
.menu-button:checked + #topnav ul {
margin-top: 0;
}
</style>
などとすることで、ほぼご質問の内容になると思います。
(細かな設定はいい加減です。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- JavaScript HTMLとJavaScriptで作った表示して検索するWebアプリが正常に動かない 3 2024/01/05 17:48
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
HTMLとJavaScriptで作った表示して検索するWebアプリが正常に動かない
JavaScript
-
PHPでのパスワード制限のセキュリティはどうなのか
PHP
-
かっこいいウェブを作るテク
HTML・CSS
-
-
4
HTMLで画像をポップアップで表示するようにする方法
HTML・CSS
-
5
JavaScriptで作ったアプリが正常に動作しない。改善したい。
JavaScript
-
6
HTMLで作った時報アプリが動きません
JavaScript
-
7
デジタルブックを自分のウェブサイトに設置する方法を教えて
オープンソース
-
8
大至急。webのシングルページを作ろうと考え、イラレでデザインをしました。 それからの手順で悩んでる
HTML・CSS
-
9
HTMLで表をつくったのですがウィンドウの大きさを変化させると、表の真ん中の列だけ補足なり、表の中の
HTML・CSS
-
10
ホームページのURLをコピーしてエクセルのシートに張り付けるとURLの文字が変わる場合があるのはナゼ
HTML・CSS
-
11
無料hp作成ソフトお勧め
オープンソース
-
12
htaccessを利用してurl正規化
SEO
-
13
ワードプレスインストールできない
オープンソース
-
14
プログラマーがHTMLとCSSでウェブデザインをするのは大人の幼稚園なんじゃないかと思い込んでる
その他(プログラミング・Web制作)
-
15
アクセス解析。「直前に見ていたサイト、ページ」の測定方法について詳しい方お願いします。
SEO
-
16
ぱいソン
Ruby
-
17
css初心者 フレックスボックスの適用を一部適用除外したいですが方法が分かりません。
HTML・CSS
-
18
Class ってぱいそんでならったけど使いますか?なんか習う割にはあんまり覚えてないし見ない気がする
Perl
-
19
1ページに全部載せた方がseo的にいい?
SEO
-
20
HTMLとJavaScriptで作ったタイマーアプリが正常に動作しない
JavaScript
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
リストの並べ替え
-
ボタンを横に並べて表示させる方法
-
<ul><li></li></ul>にするメリ...
-
なぜ?マウスオーバーで1pt位置...
-
プルダウンメニューの背景色を...
-
html <ul></ul>の並びで一行空...
-
cssの display: flex;で横並び...
-
レスポンシブWebデザインでリン...
-
円形の配置にするコーディング...
-
アコーディオンがうまくいかない。
-
cssのリストで、番号1と2の間の...
-
htmlで画像を表示する方法につ...
-
HTML5のfooterに見出しを付けて...
-
格子状に並んだdivボックスの効...
-
画像の隙間を埋める方法
-
HTMLで組織図を作成する方法
-
CSSでdiv内を下揃え
-
cssで写真と説明文の表示方法?
-
CSS3グラデーションで、右端だ...
-
番号付きリスト(<Ol><Li>・・...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
リストマーカーをボックス内に...
-
<table>の高さ固定。情報増加時...
-
ulタグやliタグの中でbrタグ...
-
html/cssの、navを2段にする...
-
リストの数字のフォントサイズ...
-
liタグの中に<p>タグやら<dl>を...
-
CSSでつくったメニューのアニメ...
-
htmlの<ol>タグで、数字などを...
-
ページを開いているときのリン...
-
リンク文字同士の間隔を開ける...
-
レスポンシブWebデザインでリン...
-
<ul><li></li></ul>にするメリ...
-
divタグ内のコンテンツが重なっ...
-
HTMLで組織図を作成する方法
-
ulとliで囲った文字の一部を変...
-
HTML5のfooterに見出しを付けて...
-
<ul>~</ul>が二つ続くと間に改...
-
html <ul></ul>の並びで一行空...
-
複数行にまたがる括弧を表示し...
-
画像にリンクを張ると画像がず...
おすすめ情報