
はじめまして。大変困っていたので教えていただけると助かります。
スマホアコーディオンメニューを作成中だったのですが、アコーディオンメニューをアクティブにすると下のメニューがかくれてしまい困っています。
宜しくお願いします。
----------------------------
html
----------------------------
<nav>
<div id="menubg">
<div id="headnav">
<ul class="main-nav clearfix">
<li><a href="/">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
<li>
<a class="toggle">〇〇〇〇〇〇</a>
<ul>
<li><a href="/">〇〇〇〇〇〇</a></li>
<li><a href="/">〇〇〇〇〇〇</a></li>
<li><a href="/">〇〇〇〇〇〇</a></li>
<li><a href="/">〇〇〇〇〇〇</a></li>
</ul>
</li>
<li><a class="toggle">〇〇〇〇〇〇</a>
<ul>
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
</ul>
</li>
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="/">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
</ul>
</div>
</div>
</nav>
-----------------------
css
-----------------------
@media screen and (max-width: 800px) {
#menubg {
}
.menubtn {
display: none;
position: fixed;
bottom: 10px;
right: 10px;
width: 50px;
height: 60px;
background: #336699;
cursor: pointer;
z-index: 999;
}
.menubtn:after {
content: 'メニュー';
position: absolute;
left: 3px;
bottom: 2px;
color: #fff;
font-size: 11px;
white-space: nowrap;
}
.menubtn-inner {
padding: 10px 0 0 10px;
}
.button {
width: 30px;
height: 24px;
background: url(../img/base/btn.png) no-repeat top;
}
#headnav {
position: fixed;
display: block;
left: auto;
top: 0;
right: -200px;
width: 200px;
overflow-y: auto;
padding: 5px 5px;
box-sizing: border-box;
height: 100%;
-webkit-overflow-scrolling: touch;
-webkit-transition: right .2s;
transition: right .2s;
background-color: rgba(255, 255,255, 0.8);
z-index: 10000;
will-change: transform;
}
#headnav.sliding-menu {
right: 0;
}
.menubtn {
display: block;
}
/* main-nav */
.main-nav {
position: absolute;
margin: 0;
padding: 0;
width: auto;
z-index:9999;
}
.main-nav ul{
list-style-type: none;
}
.main-nav li{
padding:7px 0;
opacity:1;
display: inline;
float:none;
width:auto;
margin-bottom:3px;
border:none;
}
.main-nav li:first-child{
display: inline;
float:none;
width:auto;
margin:0;
padding:7px 0;
border:none;
}
.main-nav li+ li {
border-left: 0;
border-right:0;
}
.main-nav li a{
display: block;
padding:15px 20px;
width:160px;
background-color:#488a8a;
color:#fff;
font-size:1.2em;
text-align:center;
text-decoration:none;
border-bottom:1px solid #fff;
font-family:
"ヒラギノ明朝 ProN W3",
"HiraMinProN-W3",
"HG明朝E",
"MS P明朝",
"MS PMincho",
"MS 明朝",
serif;
}
.main-nav li ul{
list-style: none;
top:auto;
left:auto;
margin: 0 auto;
padding: 0 auto;
}
.main-nav li ul li{
width:50%;
}
.main-nav li ul li a{
padding: 17px 20px;
border-top: 1px solid #fff;
background: #99ccff;
text-align: center;
}
.main-nav ul li a:after, .main-nav ul li a.active:after{
font-size: 12px;
right: 12px;
top: 0;
color: #fff;
}
}
------------------------------------
js
------------------------------------
<script type="text/javascript">
// ACCORDION
$(function() {
function accordion() {
$(this).toggleClass("active").next().slideToggle(300);
}
$(".main-nav .toggle").click(accordion);
});
</script>
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
なんでそんな酷いHTMLやCSS書くのですか?他人は無論、自分でもメンテナンスできないのでは???
そのままコピペしたけど動作しないし、どうアコーディオンさせたいかもわからないのですが、
HTMLには、文書構造をマークアップするだけで、デザインは考慮しない。
プレゼンテーションは、その文書構造に基づいてセレクタで指定してデザインしていくのですよ。
<div id="menubg">
<div id="headnav">
<ul class="main-nav clearfix">
なんて、idやclassどころか、div要素も一切不要です。
HTMLには、これだけしか書かない!!
<body>
<header>
<nav>
<ul>
<li><a href="/">〇〇〇〇〇〇</a></li>
<li><a href="/profile">〇〇〇〇〇〇</a></li>
<li><a href="#products">〇〇〇〇〇〇</a>
<ul id="products">
<li><a href="/">〇〇〇〇〇〇</a></li>
<li><a href="/">〇〇〇〇〇〇</a></li>
<li><a href="/">〇〇〇〇〇〇</a></li>
<li><a href="/">〇〇〇〇〇〇</a></li>
</ul>
</li>
<li><a href="#books">〇〇〇〇〇〇</a>
<ul id="books">
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
</ul>
</li>
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="/">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
</ul>
</nav>
</header>
これで、.main-nav ul{}なんて書かなくてもheader nav ul{}とCSSからも分かりやすくなるし、詳細度も 003 と低く抑えられる。
HTMLには、文書構造をマークアップするだけで、デザインは考慮しない。
プレゼンテーションは、その文書構造に基づいてセレクタで指定してデザインしていくのですよ。
<div id="menubg"><-- 文書構造上意味ない!!、
<div id="headnav"><-- 文書構造からわかる
<ul class="main-nav clearfix"><--- クリアフィクスしなくなったときはどうするの(^^)
なんて、idやclassどころか、div要素も一切不要です。
HTMLには、これだけしか書かない!!
<body>
<header>
<nav>
<ul>
<li><a href="/">〇〇〇〇〇〇</a></li>
<li><a href="/profile">〇〇〇〇〇〇</a></li>
<li><a href="#products">〇〇〇〇〇〇</a>
<ul id="products">
<li><a href="/">〇〇〇〇〇〇</a></li>
<li><a href="/">〇〇〇〇〇〇</a></li>
<li><a href="/">〇〇〇〇〇〇</a></li>
<li><a href="/">〇〇〇〇〇〇</a></li>
</ul>
</li>
<li><a href="#books">〇〇〇〇〇〇</a>
<ul id="books">
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
</ul>
</li>
<li><a href="//">〇〇〇〇〇〇</a></li>
<li><a href="/">〇〇〇〇〇〇</a></li>
<li><a href="//">〇〇〇〇〇〇</a></li>
</ul>
</nav>
</header>
これで、.main-nav ul{}なんて書かなくてもheader nav ul{}と、HTMLは無論、CSSからも分かりやすくなるし、詳細度も 003 と低く抑えられる。
これをどうデザインするかのサンプルは後で・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- HTML・CSS htmlについて質問です! 写真のように写真の部分が?になってしまいます。 ファイルもしっかり選べて 1 2023/07/09 21:17
- HTML・CSS インラインブロックの中のテキストを上下中央に合わせたい 1 2022/12/24 17:46
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSS:liで作成したメニュー...
-
疑似クラス :activeが効きません
-
CSSによるレイアウトが崩れてし...
-
CSSのみで画像とテキストに同時...
-
(CSS)縦メニューを一枚画像で作...
-
ボックスの幅を内容に合わせたい
-
ページを開いているときのリン...
-
画像横のテキストをセンターに...
-
li 3列表示
-
動画の上に文字を乗せたい(HTM...
-
<ul>タグを使うと勝手に<p>...
-
文法チェックの<A>と</A>の間が...
-
【webサイト】シングルページの...
-
背景色を交互にしたいのですが...
-
IE7で背景画像がテキスト文字幅...
-
ulタグやliタグの中でbrタグ...
-
メニューの折り畳み階層化について
-
レスポンシブWebデザインでリン...
-
ulとliで囲った文字の一部を変...
-
可変幅でabsolute指定で中央配...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
リストマーカーをボックス内に...
-
html/cssの、navを2段にする...
-
ulタグやliタグの中でbrタグ...
-
liタグの中に<p>タグやら<dl>を...
-
リストの数字のフォントサイズ...
-
画像にリンクを張ると画像がず...
-
複数行にまたがる括弧を表示し...
-
レスポンシブWebデザインでリン...
-
HTMLで組織図を作成する方法
-
html <ul></ul>の並びで一行空...
-
htmlの<ol>タグで、数字などを...
-
divタグ内のコンテンツが重なっ...
-
ページを開いているときのリン...
-
ドロップダウンメニューが隠れ...
-
【CSS】メニュー上部に固定させ...
-
<ul><li></li></ul>にするメリ...
-
番号付きリスト(<Ol><Li>・・...
-
ulとliで囲った文字の一部を変...
-
list-style-type部分だけ大きく...
-
<li>の中の<h>だから!ルール違...
おすすめ情報
回答ありがとうございます。
頼まれて修正していたのですが、この書き方で書かれていたので、かなり戸惑っていました…
確かに一から書き直したほうが早いと思うのですが…
詳しい回答ありがとうございます。
サンプル楽しみにしております。