
HPを作っています。メニューの大項目をクリックすると、フワッと小項目がフェードインしながら下へスライドして表示されるようにしました。ところが、この動作が一度クリックすると二度目以降は普通に小項目がドン!っと表示されるだけになってしまいます。画面を再読み込みすると一度目のクリックでは動作が復活するのですが、二度目以降はやはり動作しません。おおまかなコードは以下の通りです。
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
<title>MENU</title>
<style type="text/css">
a { text-decoration: none; }
<!--
body {letter-spacing: 3px;}
-->
/* Chrome、Safari以外 */
summary {
display: block;}
/* Chrome、Safari */
summary::-webkit-details-marker {
display: none;}
summary {
cursor: pointer;
transition: 0.5s; /* 変化を滑らかに */}
/* ホバー時のスタイル */
summary:hover {
background-color: #EFEFEF;}
details[open] summary {
color: #000000;
background-color: #EFEFEF;}
/* オープン時にアニメーションを設定 */
details[open] .details-content {
animation: fadeIn 0.5s ease;}
@keyframes fadeIn {
0% {
opacity: 0; /* 透明 */
transform: translateY(-10px); /* 上から表示 */}
100% {
opacity: 1;
transform: none;}
</style>
</head>
<body link="#000000" vlink="#ffffff" alink="#008b8b">
<body bgcolor="#ff8000">
<p align="center">
<br><br><details><summary><font size="1"><p align="center"><span title="〇〇">〇〇</span></summary>
<ul style="list-style: none; padding-left: 0">
<font face="MS 明朝" size="4" color="#000000">
123</font><p align="center"></li>
<li><div class="details-content"><p align="center"><span style="border:1px solid;">〇〇</span></p>
<font face="MS 明朝" size="4" color="#000000">
〇〇</font></li>
<li><div class="details-content"><font size="1"><p align="center"><span style="border:1px solid;">〇〇</span><br></p>
<font face="MS 明朝" size="4" color="#000000">
123</font><br></li>
<font size="1"><p align="center">〇〇<br></p></font>
<font face="MS 明朝" size="4" color="#000000">
123</font><br></li>
<p align="center">〇〇<br></p>
<font face="MS 明朝" size="4" color="#000000">
123</font><br></li>
</a>
</ul>
</div>
</details>
<br>
<font size="1"><details><summary><p align="center">〇〇</p></summary>
<font face="MS 明朝" size="4" color="#000000"><ul style="list-style: none; padding-left: 0">
<li><div class="details-content">123
<li><div class="details-content"><p align="center"><font face="MS ゴシック" size="1"><span style="border:1px solid;">〇〇</span></font></p>
123
</font><br></li></ul>
</details>
<br>
<font size="1"><details><summary><p align="center">〇〇</p></summary>
<font face="MS 明朝" size="4" color="#000000"><ul style="list-style: none; padding-left: 0">
<li><div class="details-content">
123</font><br><br></li></ul>
</details>
</body>
</html>
改善策はありますか?どなたかお分かりになる方がいらっしゃいましたらご教授お願い致します。
No.1ベストアンサー
- 回答日時:
こんばんは
fxなどでは、ご希望通りにアニメーションが繰り返されますね。
多分、レンダリングエンジンの違いではないでしょうか?
detailsタグは、元々開閉機能を備えた特殊なタグなので、このような機能上の違いが起きてしまうのかと推測します。
chrome等(Blink系)ではdetailsを「OPENした」(あるいはアニメーションが100%に達した)という情報がどこかに残っていて、二度目以降はアニメーションが行われず、いきなり100%の表示になってしまうようです。
fx(Gecko系)では閉じた時に、ちゃんとクリアされるようです。
>改善策はありますか?
CSSのみでアコーディオンを実現するにしても、他にもいろいろな方法がありますので、特殊な要素であるdetailsを用いない方法で行えば、ご希望のような動作にできるものと思います。
どうしても、detailsで実現したい場合は、Gecko系限定にするか、あるいはスクリプトによるアニメーションに変更するとかでしょうか。
なお、ご質問には関係ありませんけれど・・
・ご提示のHTMLは、開始タグ、終了タグの関係がおかしいですし、目的のよくわからないタグもいろいろありますけれど、できるだけ単純化して整理した方が視認性はよくなります。
・Fontタグが多用されていますが、非推奨となっていますので、CSSに移行なさった方が宜しいでしょう。
https://developer.mozilla.org/ja/docs/Web/HTML/E …
大変わかりやすいご説明ありがとうございます。いろいろ試して、希望に近いものを作れるよう工夫してみます。
Fontタグが非推奨となっているのは知りませんでした…。リンクありがとうございます。大変参考になります。
基本、タグはコピペしてしまうので、とっ散らかっているな…との自覚はありました(笑) もっと勉強して、整理できるように頑張ります。
丁寧なご説明とアドバイス、誠にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- HTML・CSS HTMLで特定の文字だけ色を変えたいのですが、指定した色と違う色が反映してしまいます。 下記、「前」 5 2023/06/27 12:08
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- HTML・CSS CSSがなぜかfont-sizeだけ効かない...記述がまちがっているんでしょうか 5 2022/04/09 17:52
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA メール作成について ...
-
CSSのid名class名の重複回避方...
-
マウスオーバーで下線を表示さ...
-
リストの前後の行間をなくす方...
-
次のGTK+の一連のコマンドが
-
Format 関数 表示書式指定文字...
-
フォントの大きさを2と3の間...
-
テキストエリア内の文字の装飾
-
ホームページビルダー作成HPがi...
-
CSSで特定の場所だけ、vlinkの...
-
<input type="file"> の幅
-
CSSを適用したい
-
HTMLファイルのフォント指定
-
文字の位置、上下のマージンが...
-
background-color: #ddd;の意味...
-
アコーディオンメニューが思う...
-
font-family、font-sizeについて
-
<pre>にフォントを・・・。
-
文字が斜め(斜体、イタリック体...
-
</h1>行とその次の行との間に空...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
リストの前後の行間をなくす方...
-
文字の位置、上下のマージンが...
-
Excel VBA メール作成について ...
-
background-color: #ddd;の意味...
-
Format 関数 表示書式指定文字...
-
リンク文字
-
Excel VBA メール作成について ...
-
テキストエリア内の文字の装飾
-
HTMLで特定の文字だけ色を変え...
-
全角半角含めて等幅で表示したい
-
<pre>にフォントを・・・。
-
fontサイズ指定の ”-(マイナ...
-
htaコードですが、IE6に対応さ...
-
jquery.validationEngine.jsカ...
-
特定の文字のみcssを適用するに...
-
CSSを一部無効にしたい
-
CSSのid名class名の重複回避方...
-
テキストボックス途中で切れて...
-
フォームのスタイルについて教...
-
CSSで14px/1.4の部分の記述は正...
おすすめ情報