• ベストアンサー

HTML・CSS 目次を閉じている時のみ不具合

HTML・CSS超初心者です。 この方のブログ https://webwork-plus.com/content/design/open-area.html#2 を参考にして、目次の開閉を作成しました。 が、目次を開いている時は問題ありませんが、目次を閉じている場合のみ、その目次直下の文章をクリックすると同じページ内のまったく違う場所に飛んでしまいます。 ソースコードは ■HTML■ <div class="open-box"> <input type="checkbox" id="switch" class="on-off" /> <label for="switch" class="open-label"></label> <div class="open"> <p> <ol class="numbering">   <li><a href="#1">imgにposition:absoluteで文字を重ねる</a> <ol> <li><a href="#2">文字を中央に重ねる</a></li> <li><a href="#3">文字を左上に重ねる</a></li> <li><a href="#4">文字を左下に重ねる</a></li> </ol> </li>   <li> <a href="#5"> まとめ</a></li> </ol> <p> </div> </div> ■CSS■ /*inputを非表示*/ input[type="checkbox"].on-off{ opacity: 0; } /*ラベル(「開く」ボタン)*/ .open-label{ width: 200px; margin: 0 1.5em; padding: 0.8em; display: block; color: #ffffff; font-weight: bold; text-align: center; box-shadow: 5px 5px 5px #aaa; /* 影を付ける */ background: linear-gradient(-80deg, #ff65ff, #65ffff); /* グラデーションの背景色 */ border: 2px solid #ff0000; /* 線の太さ 線のタイプ 線の色 */ border-radius: 20px; /* 角を丸く */ } /*エフェクト*/ .open-label:active{ box-shadow: 5px 5px 5px #aaa; /* 影を付ける */ } .open-label:hover{ background: -webkit-linear-gradient(bottom, #fff4e0 1%,orange 80%); background: #ffb8b3; } /*ラベルに表示するテキスト*/ .open-label::after{ content:'※目次[開く]'; } .on-off:checked ~ .open-label::after{ content: '※目次[閉じる]'; } /*開閉エリア*/ .open{ padding: 0 1em; height: 0; opacity: 0; transition: .5s; width: 500px; box-shadow: 5px 5px 5px #aaa; /* 影を付ける */ background: #ffeff9; border: 2px solid #ff95d5; /* 線の太さ 線のタイプ 線の色 */ border-radius: 20px; /* 角を丸く */ } /*「開く」をタップで表示*/ .on-off:checked ~ .open{ padding: 1.5em 1em; height: auto; opacity: 1; } よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

>またOKWEBに質問すればお答え頂けますでしょうか? 特に相手を選んでるわけじゃないので、 私じゃなくても誰かは回答するので、 どんどん質問していいですよ! (別に私運営じゃないので、宣伝する意味はないですから^^) ただの、酔っ払い暇人ですんで。 今回のは、まっさらにして、ひとまず、 display:none / blockで いったん終わらせて次のステップに行く方が 良いかと思います。 今回いいものが出来ても、その次を作った時 「なんか、違うな~」なんてこともあります。 ある一点を見るより、完成したらこんな感じ? って目で見て、後回しにできる部分では、 時間を無駄にせず、どんどん進む方が、 いい結果が出やすいかと! (もちろん、好みですけどね)

musicchan
質問者

補足

本当にいろいろとありがとうございました。 おっしゃる通りにして、また探してみます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

回答No.5

>何度もお手を煩わせてすみません。 それは、かまわないのですが。 >とは具体的にはどの場所のことでしょうか? の件ですが、お勧めできないパターンになりますよ。 今書いているshow/hide(display:block/none)の やり方が一番、やりたいことには近いと思います。 positionを使うのは、それでできない場合の話なので、 今みたいに、基準にしているサンプルが悪いのであれば、 その上に肉盛りしても、どんどんきつくなるだけですよ。 ってことで一度、今書いた、 show/hide(display:block/none)方式でやってみてはいかがでしょうか? >目次開閉と目次の内容の間にかなりの行数が開いてしまいます。 で、これの解決をすると、 同じ位置に2つのパーツが同時に存在するのが、わかりますでしょうか? なので、表示物の優先度で制御することで、対処はできる反面 「結局どっちも表示されてる」って問題が出るんです。 しかし、行数が開いた!って事に関してのみは、解決なので。 回答として書いただけで、全く今の件で使うべきではないですよ。 物事をややこしくするだけです。 で、正直、基準にしているサンプルを変更することを お勧めします。

musicchan
質問者

補足

AsarKingChangさん、何度もありがとうございます。 >サンプルを変更する おっしゃる通りですね。 先程気付いたのですが、現在の目次だとPCは良いのですが、スマホで見ると見切れてしまっているようです。 わたしもググってようやく今の目次に辿り着いたのですが、AsarKingChangさんお勧めの目次の載っているサイトはないでしょうか? 希望としましては 1,開閉できる 2,目次内容が入れ子 3,自動ナンバリング 4,入れ子が1-1、1-2という表示 もしくはAsarKingChangさんが作成された目次 一番いいのはAsarKingChangさんが作成された目次ですが。 勝手なことばかり言って申し訳ございません。 それとヘッダー部分のハンバーガーメニュー等、質問したいことがまだまだ山積みですが、またOKWEBに質問すればお答え頂けますでしょうか? よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
回答No.4

見てみましたが、そもそも、動かなかったようでした。 恐らくHTML側のセレクタが変更になっているのでしょう。 それらが開示なかったので、判断できなかったとなります。 ひとまず、 /*開閉エリア*/ .open{ padding: 0 1em; height: 0; /* opacity: 0; */ display: none; ←これ transition: .5s; width: 500px; box-shadow: 5px 5px 5px #aaa; /* 影を付ける */ background: #ffeff9; border: 2px solid #ff95d5; /* 線の太さ 線のタイプ 線の色 */ border-radius: 20px; /* 角を丸く */ } /*「開く」をタップで表示*/ .on-off:checked ~ .open{ padding: 1.5em 1em; height: auto; /* opacity: 1; */ display: block; ←これ } 手っ取り早くやるならこれだけでよいかと。 または、基準にしているサンプルのサイトを変えるか? >目次開閉と目次の内容の間にかなりの行数が開いてしまいます。この行数を詰める方法はないでしょうか? >目次の内容のCSSは次のとおりです。 この場合は、 基準位置に、position: relative; 動的に動くものに、position: absolute; として、動くときだけ、z-indexをあげてあげれば 上に「重なるように」作れます。 なので、その動的なパーツのサイズをopenとcloseで変化させれば、 レイアウトはそろいますが。ただ!これとアンカータグも 相性が悪いので、あまりお勧めはできないかな~ ある程度凝った物になってきたら、素直にJS書く方が 精神的にも楽かもしれませんが。あくまでCSSだけで 行くならこんな感じかと。

musicchan
質問者

補足

AsarKingChangさん、何度もお手を煩わせてすみません。 超初心者で申し訳ございませんが、 >基準位置に、position: relative; >動的に動くものに、position: absolute; >として、動くときだけ、z-indexをあげてあげれば >上に「重なるように」作れます。 とは具体的にはどの場所のことでしょうか? 本当にお手を煩わせて申し訳ございません。

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

>何度も申し訳ありませんが、お教え頂ければ幸いです。 後で見ておくので、この板は少しの間開けておいてくださいね。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

>displayに変更すると目次の内容自体が見えなくなってしまいます。 入れるとしたらこっちね。 open{ } .on-off:checked ~ .open{ } ただ、半透明の効果はなく、いきなり消えるので、 そうなると元々のサンプルが邪魔なだけになるでしょうね。 となると、結果、頑張った意味なくないかな?には なりますが。 上のセレクタ部に入れれば、こちらでは動作確認取れてます。

musicchan
質問者

補足

AsarKingChangさん、再度のご投稿ありがとうございます。 自分でもいろいろと試した結果 /*開閉エリア*/に overflow: hidden; を追加することで何とかなりました。 ただ、現在の設定では下記の通り https://maakochannel.blog.fc2.com/blog-entry-2.html 目次開閉と目次の内容の間にかなりの行数が開いてしまいます。この行数を詰める方法はないでしょうか? 目次の内容のCSSは次のとおりです。 ■CSS ol.numbering, ol.numbering ol{ counter-reset: list; list-style: none; padding: 0; width:470px; font: 16px/1.6 'arial narrow', sans-serif; } ol.numbering ol{ margin: 0 0 0 35px; width:315px; } .numbering a{ position: relative; display: block; padding: 4px 4px 4px 31px; margin: 7px 0; background: #fef6f3; color: #333; font-weight: bold; text-decoration: none; border-radius: 5px; -webkit-transition: all .3s ease-out; -moz-transition: all .3s ease-out; -ms-transition: all .3s ease-out; -o-transition: all .3s ease-out; transition: all .3s ease-out; } .numbering a:hover{ background: #b3d5ed; } .numbering a:hover:before{ left: -10px; -moz-transform: rotate(360deg); -webkit-transform: rotate(360deg); -moz-transform: rotate(360deg); -ms-transform: rotate(360deg); -o-transform: rotate(360deg); transform: rotate(360deg); } .numbering a:before{ content: counter(list); counter-increment: list; position: absolute; top: 50%; left: -15px; height: 35px; width: 35px; margin-top: -15px; background: #F6A38B; color: #fff; line-height: 26px; border: 3px solid #fff; text-align: center; font-weight: bold; border-radius: 26px; -webkit-transition: all .3s ease-out; -moz-transition: all .3s ease-out; -ms-transition: all .3s ease-out; -o-transition: all .3s ease-out; transition: all .3s ease-out; } 何度も申し訳ありませんが、お教え頂ければ幸いです。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

結論サンプルが悪い .open{ height: 0; opacity: 0; } /*「開く」をタップで表示*/ .on-off:checked ~ .open{ height: auto; opacity: 1; } この部分。 確かに高さを変えているが、しっかりそのサイズは確保されており それを、透明度で変化させてるだけなので、 見えてないだけで、元々そこに全部いるんですよね。 なので、一番確実なのは、 opacity: やめて、displayにすることでしょうね。 質問者さんがミスしたわけじゃなく、元々のサンプルも 恐らく同じ挙動だと思います。

musicchan
質問者

補足

ご投稿ありがとうございます。 >opacity: やめて、displayにすることでしょうね。 displayに変更すると目次の内容自体が見えなくなってしまいます。 また、opacityに該当する部分3箇所 /*inputを非表示*/ input[type="checkbox"].on-off{ opacity: 0; } /*開閉エリア*/ .open{ padding: 0 1em; height: 0; opacity: 0; /*「開く」をタップで表示*/ .on-off:checked ~ .open{ padding: 1.5em 1em; height: auto; opacity: 1; } すべてdisplayに変更すると目次が表示されたままになってしまいます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • CSS目次開閉でチェックボックスが現れる

    CSSで目次開閉を作成したのですが、左上に四角いチェックボックスが現れてしまいます。 このチェックボックスを消す方法はありますでしょうか。 HTML <div class="open-menu"> <input id="open-1" type="checkbox"> <label for="open-1">≡目次</label> <div class="open-menu-inside"> <ol class="numbering"> <li><a href="#1"> </a></li> <li><a href="#2"></a></li> <li><a href="#3"></a></li> </ol> </div> </div> CSS .open-menu input { display: none; } .open-menu label { width: 180px; color: #000000; font-size: 20px; line-height: 2; font-weight: bold; text-align: left; margin: 20px; box-shadow: 5px 5px 5px #aaa; padding: 20px; cursor: pointer; position: relative; display: block; } /* ここから追加 */ .open-menu label { border: 2px solid #ff0000; border-radius: 20px; } .open-menu label:hover { background: #ffb8b3; opacity: 0.5; } .open-menu label:after { position: absolute; right: 10px; top: 50%; -webkit-transform : translateY(-50%); transform : translateY(-50%); content: "[開く]"; } .open-menu input:checked ~ label::after { content: "[閉じる]"; } .open-menu div { height: 0; overflow: hidden; opacity: 0; transition: 0.3s; } .open-menu input:checked ~ div { height: auto; max-width: 80%; opacity: 1; padding: 20px; background: #ffeff9; border: 2px solid #ff95d5; box-shadow: 5px 5px 5px #aaa; border-radius: 20px; overflow: hidden; } .open-menu-inside { color: #333333; font-size: 15px; line-height: 2; } チェックボックスを消す方法があれば、教えていただきたいです。 よろしくお願いいたします。

    • 締切済み
    • CSS
  • HTMLやcssに詳しい方教えてください

    HTML、cssに詳しい方、助言お願いします。 footerの部分なのですが、footerより上の部分(サイドのナビやメイン部分)にj Query、javascriptを入れる(入れたのはアコーディオン)と、footerの部分がおかしくなります(footerのbackground-colorが一部消えるなど) どなたか、もしおかしい部分があるのでしたら、おかしい部分の指摘をお願いします。xxxはテキストを入れている部分です。 footerのHTML <div class="footercolor clearfix"> <div id="footer"> <div class="footerbox1"> <ul class="footertext1"> <li><a href="../ranking.html">xxx</a></li> <li><a href="../area-top/area.html">xxx</a></li> </ul></div> <div class="footerbox2"> <ul class="footertext2"> <li><a href="../index.html">xxx</a></li> <li><a href="../site.html">xxx</a></li> <li><a href="../info.html">xxx</a></li> <li><a href="../system.html">xxx</a></li> </ul></div> <div class="footerbox3"> <ul class="footertext3"> <li><a href="../inquiry.html">xxx</a></li> </ul></div> </div> <address class="copyright">Copyright (C) xxx.com 2014 All Rights Reserved.</address> footerのcss .footercolor{ background-color:#FFCC99; } #footer{ width:960px; margin:0 auto; } .footerbox1{ width:320px; float:left; } .footerbox2{ width:320px; float:left; } .footerbox3{ width:320px; float:left; } .footertext1{ text-align:center; margin-top:12px; list-style:none; padding:3px; } .footertext2{ margin-top:12px; list-style:none; padding:3px; text-align:left; margin-left:80px; } .footertext3{ text-align:center; margin-top:12px; list-style:none; padding:3px; margin-left:50px; } .footertext1 a:hover{ filter:alpha(opacity=50); -moz-opacity: 0.5; opacity: 0.5; } .footertext2 a:hover{ filter:alpha(opacity=50); -moz-opacity: 0.5; opacity: 0.5; } .footertext3 a:hover{ filter:alpha(opacity=50); -moz-opacity: 0.5; opacity: 0.5; } .copyright{ clear:both; text-align:center; font-weight:bold; padding-top:50px; padding-bottom:10px; }

    • 締切済み
    • SEO
  • xhtmlでページを作ったらcssのhoverの部分がFirefoxで

    xhtmlでページを作ったらcssのhoverの部分がFirefoxでは動くのにIEでは上手く動きません。 どうしたらいいのでしょうか? --xhtml-- <div class="menu"> <ul> <li><a href="#"target="content">link1</a><br/></li> <li><a href="#"target="content">link2</a><br/></li> <li><a href="#"target="content">link3</a><br/></li> </ul> </div> --css-- .menu{ width:100%; position:absolute; bottom:25%; font-weight:bolder; filter: alpha(opacity=70); -moz-opacity:0.70; opacity:0.70; } .menu ul{ margin:0; padding:0; } .menu li{ margin-bottom:1px; list-style-type:none; float:none; font-size:1.3em; line-height:0; } .menu li a{ display:block; width:100%; line-height:25px; background-color:#ba2029; color:#ffffff; text-align:center; text-decoration:none; border-left:solid 10px #880000; } .menu li a:hover{ background-color:#95195a; }

    • ベストアンサー
    • HTML
  • HTML・CSSタグの書き方教えてください!

    画像では見づらいのですが、HOMEの左側にボーダーがピンク色で表示されています。 このHOMEの左側のボーダーを消したい(又は見えなくする)タグを教えてください。 最初のリンクのところだけグループ化して, CSSに{border-left-style: none;}と加えてみたり、 .menu ul li a .first {border-left: none;}等してみたのですが、 変わらず…。 どういうタグを加えれば、左側のボーダーが見えなくなりますでしょうか? よろしくお願いいたします。 <HTML> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv= "content-style-type" content= "text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <link href="css/style.css"rel="stylesheet" type="text/css" /> </head> <body> <div id="wrapper"> <div id="header"> <h1> 作りかけページ </h1> <p>テストページ</p> </div><!-- header終わり --> <div class="menu"> <ul> <li><a href="#">HOME</a></li> <li><a href="#">サービス概要</a></li> <li><a href="#">会社概要</a></li> <li><a href="#">お問い合わせ</a></li> <li><a href="#">サイトマップ</a></li> </ul> </div><!-- menu終わり --> <div id="main"> <div id="contents"> ***コンテンツ*** </div><!-- contents終わり --> <div id="leftsidebar"> ***左サイドバー*** </div><!-- sidebar終わり --> </div><!-- main終わり --> <div id="rightsidebar"> ***右サイドバー*** </div><!-- sidebar終わり --> <div id="footer"> ***フッター*** </div><!-- footer終わり --> </div><!-- wrapper終わり --> </body> </html> <CSS> <style type="text/css"> * { margin: 0; padding: 0; } #wrapper{ width: 760px; /*全体の幅(#wrapper)を760pxの固定幅とする。 */ position: absolute;/*絶対位置*/ left: 50%;/*左端から右方向の位置を指定する */ margin-left: -380px;/*はみ出た半分を戻す */ } /*ヘッダー*/ #header{ width: 758px;/*ヘッダー部分の幅(#content)を758pxとする。*/ height: 200px; background-color:#ffd700; background-repeat: no-repeat; background-position: -50px -70px; text-align: right; border: solid 1px gray; } #header h1{ margin: 0; font-size: 30px; padding: 20px 10px 0px 0px; font-family:arial unicode ms; } #header p{ margin: 0; font-size: 1em; padding-right: 10px; margin-top: 8px; } /*ヘッダー終わり*/ /*body*/ /*menu部分*/ .menu {font-size:20px; height:30px; background-color:#0c907c; text-align:center; } .menu ul{ margin: 0; padding: 0; 760px; } .menu ul li{ float: left; list-style: none; margin: 0; padding: 0; } .menu ul li a{ display:block; width: 151.2px; line-height: 30px; border-left: solid 1px #FF3366; color:#ffffff; text-align: center; text-decoration: none; } .menu ul li a:hover{background-color: #99cc00} /*menu部分終わり*/ #contents{ width: 388px;/*コンテンツ部分の幅(#content)を388pxとする。*/ background-color:#0000FF; float: right;/* 右に配置 */ } #leftsidebar{ width: 166px; /*左サイドバー部分の幅を166pxとする。*/ background-color:#0000FF; float: left;/* 左に配置 */ } #main{ width: 574px; float: left;/* 左に配置 */ } #rightsidebar{ width: 166px;/*右サイドバー部分の幅を166pxとする。*/ background-color:#0000FF; float: right;/* 右に配置 */ } #footer{ width:760px; background-color:#FF3366; clear: both;/* float解除 */ height: 50px; }

    • ベストアンサー
    • HTML
  • HTML/CSSで配置の仕方がわかりません。

    メニューバーの下に画像を挿入すると、メニューバーが消えてしまいます。 また文章を挿入しようとすると、メニューバーの下から文章が続かず、中盤からはじまってしまいます。 すいませんが原因がわかりません。下記にHTMLコード・CSSコードを記載したので、すいませんがわかる方がおりましたら、教えてください。 HTML;<!DOCTYPE html> <html> <link rel="stylesheet" type="text/css" href="test.css"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <title>What is HTML?</title> </head> <body> <div id="header-top"> <div id="menu1"> <ul id="down1"> <li><a href="#" class="pic"><img src="house.png" width="20" height="20"></a></li> <li><a href="#" class="pic"><img src="house.png" width="20" height="20"></a></li> <li><a href="#" class="pic"><img src="house.png" width="20" height="20"></a></li> </ul> </div> </div> <ul id="dropmenu"> <li><a href="#">Home</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 href="#">About US</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 href="#">Buy</a> <ul> <li><a href="#">サブメニュー</a></li> <li><a href="#">サブメニュー</a></li> <li><a href="#">サブメニュー</a></li> </ul> </li> <li><a href="#">Q&A</a> <ul> <li><a href="#">サブメニュー</a></li> <li><a href="#">サブメニュー</a></li> </ul> </li> <li><a href="#">Contact</a> <ul> <li><a href="#">サブメニュー</a></li> <li><a href="#">サブメニュー</a></li> <li><a href="#">サブメニュー</a></li> </ul> </li> </ul> <p class="test">Hello</p>    ← 問題の箇所、中盤から始まる。 CSS: /*As for header */ #header-top{ width: 100%; position: fixed; top: 0; left: 0; background: linear-gradient(90deg, #05a 10%, #21b3b2 90%); height: 60px; } } #header-in{ width: 997px; margin: 0 auto; } /*As for header top of website */ #menu1 ul{ margin-left: 1000px; margin-top: 10px; padding :0; list-style: none; } #menu1 li{ padding: 0; margin: 0; float: left; } #menu1 li a{ background: url(最初の画像のアドレス) no-repeat left center; padding: 2px 0px 3px 18px; color: #555; width: 100px; margin: 1px 0px; text-decoration: none; border-bottom: 1px dotted #666666; font-size: 18px; } #menu1 li a:hover{ background: url(入れ替わる画像のアドレス) no-repeat left center; } /* drop menuw */ #dropmenu{ list-style-type: none; width: 800px; height: 10px; margin: 30px auto 300px; padding: 0; background: #8a9b0f; border-bottom: 5px solid #535d09; border-radius: 3px 3px 0 0; } #dropmenu li{ position: relative; width: 20%; float: left; margin: 0; padding: 0; text-align: center; } #dropmenu li a{ display: block; margin: 0; padding: 15px 0 11px; color: #fff; font-size: 14px; font-weight: bold; line-height: 1; text-decoration: none; } #dropmenu li ul{ list-style: none; position: absolute; top: 100%; left: 0; margin: 0; padding: 0; border-radius: 0 0 3px 3px; } #dropmenu li:last-child ul{ left: -100%; width: 100% } #dropmenu li ul li{ overflow: hidden; width: 200%; height: 0; color: #ff33ff; -moz-transition: .2s; -webkit-transition: .2s; -o-transition: .2s; -ms-transition: .2s; transition: .2s; } #dropmenu li ul li a{ padding: 13px 15px; background: #ff33ff; text-align: left; font-size: 12px; font-weight: normal; } #dropmenu li:hover > a{ background: none; color: #ff33ff; } #dropmenu > li:hover > a{ border-radius: 3px 3px 0 0; } #dropmenu li:hover ul li{ overflow: visible; height: 38px; border-top: 1px solid #7c8c0e; border-bottom: 1px solid #616d0b; } #dropmenu li:hover ul li:first-child{ border-top: 0; } #dropmenu li:hover ul li:last-child{ border-bottom: 0; } #dropmenu li:hover ul li:last-child a{ border-radius: 0 0 3px 3px; } #top-pic{ } #test{ float: right; }

    • ベストアンサー
    • HTML
  • HTMLとCSSを使い、

    HTMLとCSSを使い、 メニューボタンを作成しました。 しかしIE8やgooglchromeではきちんと表示されるのに対して Firefoxではメニューボタンの背景に設定した画像が表示されません。 以下にコーディングを記します。 ************************************************************** <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>無題ドキュメント</title> <style type="text/css"> <!-- #outline #ul { margin: 0px; padding: 0px; height: 69px; width: 336px; list-style-type: none; } #outline #ul a .menu { font-family: "MS P明朝", "MS PMincho", "ヒラギノ明朝 Pro W3", "Hiragino Mincho Pro", serif; font-size: 30px; line-height: 69px; color: #FFF; text-decoration: none; background-image: url(1.gif); background-repeat: no-repeat; text-align: center; padding: 0px; float: left; height: 69px; width: 158px; margin-right: 5px; margin-left: 5px; } --> </style> </head> <body> <div id="outline"> <ul id="ul"> <a href="#"><li class="menu">ホーム</li></a> <a href="#"><li class="menu">トップ</li></a> </ul> </div> </body> </html> ************************************************************** メニュー背景ボタンはPhotoshop、色はRGBで作成しました。 ちなみに、 <a href="#"><li class="menu">ホーム</li></a> <a href="#"><li class="menu">トップ</li></a> を <a href="#" class="menu"><li>ホーム</li></a> <a href="#" class="menu"><li>トップ</li></a> に変更すると画像は表示されるようになりますが、 本来ホームとトップの裏に1つづつ表示されるはずの画像が テキストの無い所でもう1つづつ表示されてしまいます。計4つです。 かといって <a href="#"><li class="menu">ホーム</li></a> <a href="#"><li class="menu">トップ</li></a> を <li class="menu"><a href="#">ホーム</a></li> ><li class="menu"><a href="#">トップ</a></li> に変更しても、 a:hoverで色違いの同じ画像を背景にせっとするときにサイズなどがうまくいきません。 ボタンを全て画像にして、ビヘイビアでイメージをスワップさせるという手もありますが、 それは避けたいと思います。 Firefoxでもきちんと表示される正しいコーディングを教えてください。

    • ベストアンサー
    • HTML
  • 階層番号について(CSS、html)

    ブログの目次を作成しています。 1. 見出し1 2. 見出し2  2.1 見出し2-1  2.2 見出し2-2 3. 見出し3 このようにしたいのですが、上手くいきません。 修正箇所を教えて頂けると助かります。 【html】 <div class="toc-001"> <div> 目次 </div> <ol> <li><a href="#">見出し1</a></li> <li> <a href="#">見出し2</a> <ol> <li><a href="#">見出し2-1</a></li> <li><a href="#">見出し2-2</a></li> </ol> </li> <li><a href="#">見出し3</a></li> </ol> </div> 【css】 .toc-001 { margin-bottom: 30px; padding: 1em 1em 1em 2em; border: 1px solid #999; background-color: #f7f7f7; } .toc-001 div { display: flex; align-items: center; margin: 0; padding: 5px 0; } .toc-001 div::before { display: inline-block; width: 1em; height: 1em; margin-right: 5px; background-image: url('data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%23333%22%3E%3Cpath%20d%3D%22M3.8%2017.2h-3c-.5%200-.8.4-.8.8v3c0%20.4.3.8.8.8h3c.4%200%20.8-.3.8-.8v-3c-.1-.4-.4-.8-.8-.8zm0-15h-3c-.5%200-.8.4-.8.8v3c0%20.4.3.8.8.8h3c.4%200%20.8-.3.8-.8V3c-.1-.4-.4-.8-.8-.8zm0%207.6h-3c-.5%200-.8.3-.8.7v3c0%20.4.3.8.8.8h3c.4%200%20.8-.3.8-.8v-3c-.1-.4-.4-.7-.8-.7zM23.2%2018h-15c-.4%200-.8.3-.8.8v1.5c0%20.4.3.8.8.8h15c.4%200%20.8-.3.8-.8v-1.5c0-.5-.3-.8-.8-.8zm0-15h-15c-.4%200-.7.3-.7.8v1.5c0%20.4.3.7.7.7h15c.5%200%20.8-.3.8-.8V3.8c0-.5-.3-.8-.8-.8zm0%207.5h-15c-.4%200-.8.3-.8.8v1.5c0%20.4.3.8.8.8h15c.4%200%20.8-.3.8-.8v-1.5c0-.5-.3-.8-.8-.8z%22%2F%3E%3C%2Fsvg%3E'); content: ''; } .toc-001 ol { list-style-type: decimal; margin: 0; padding: 0 1.2em; overflow: hidden; } .toc-001 ol ol { margin-top: 5px; } .toc-001 li { padding: 5px 0; } .toc-001 a { color: #166c9d; } どうぞ、よろしくお願い致します。

    • ベストアンサー
    • CSS
  • インラインフレーム、cssの質問です。

    下記の3カラムのページを練習で作っているのですが、 右端のサイドバーをインラインフレームで表示させようとしたところ レイアウトが崩れてしまいます。 そもそもインラインフレーム以前のCSSの問題なのかもしれないのですが 色々調べてはみたのですが 直せなくて困っています。 どなたかお分かりになる方ご回答お願いします。 HTML,CSS,インラインフレームのHTMLの順で貼っています。 HTMLソース------------------------------ <?xml version="1.0" encoding="shift_jis"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <html> <head> <title></title> <link rel="stylesheet" href="C:/Documents and Settings/abc/デスクトップ/gear crafter/test2.css" type="text/css" /> </head> <body> <div id="container"> <div id="header"> <a href=><img src="http://gearcrafter.web.fc2.com/image/testtop2.jpg" alt="" id="top" /></a></div> <div id="headermenue"> <ul class="topmenue"><a href=><li>cart</li></a><li><a href=>about us</a></li><li><a href=>Q & A</a></li> </ul> </div> <div id="side"> カテゴリ <ul type="square" compact="compact" class="sidecate"> <li><a href=>財布</a></li><li></li><li></li><li></li><li></li><li></li><li></li> <li></li><li></li><li></li> </ul> </div> <div id="main"><a href=><img src="http://gearcrafter.web.fc2.com/image/test1.gif" alt="" /></a> <a href=><img src="http://gearcrafter.web.fc2.com/image/test1.gif" alt="" /></a> <a href=><img src="http://gearcrafter.web.fc2.com/image/test1.gif" alt="" /></a> <a href=><img src="http://gearcrafter.web.fc2.com/image/test1.gif" alt="" /></a> <a href=><img src="http://gearcrafter.web.fc2.com/image/test1.gif" alt="" /></a> <a href=><img src="http://gearcrafter.web.fc2.com/image/test1.gif" alt="" /></a></div> <div id="side2">sgad<iframe src="side2.html" width="80" scrolling="no" frameborder="0"></iframe> </div> <div id="footer"></div> </div> </body> </html> --------------------------------------------------------------- --CSS--------------------------------------------------------- @charset "shift-jis"; /*画像*/ img { border-style:none; } a img { border-style:none; } a:hover img{opacity:0.8;filter:alpha(opacity=80);-ms-filter: "alpha( opacity=80 )";} /*リンク*/ a:link{ text-decoration:none; color:#34494e;} a:visited{ color:#34494e;} a:hover{color:#245ba6;} a:active{color:#245ba6;} a { text-decoration: none; } /*レイアウト*/ ul.topmenue { margin-right:0px; margin-left:auto; width:29em; } ul.topmenue li { float: right; width: 8em; margin-left: 5px; padding: 2px; border: 1px #b3bc6f solid; background-color: #b3bc6f; text-align: center; } ul.sidecate { width: 2em; margin-left: 1px; margin-top: 0px; padding: 1px; border: 1px #b3bc6f solid; background-color: #d8ddb6; text-align: center; width:194px;} ul.sidecate li {text-align: left; width:194px; } #container { width : 980px; margin-left: auto; margin-right: auto; background-color :#222222;} } #header {width :960px; } #headermenue {width : 960px;} #side { float: left; margin-left: 5px; padding-top: 5px; width: 200px; background-color: #b3bc6f; text-align:center;} #main {margin: 0px 110px 0px 220px; width: 630px;} #side2 {background-color: #b3bc6f; float: right; width: 80px; margin-right: 5px;} #footer {clear: both; width: 960px; } --------------------------------------------------------------- --インラインフレーム---------------------------------------------- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <?xml version="1.0" encoding="shift_jis"?> <style type="text/css"> <!-- body { background-color: #000000; width:80px; color:#ffffff; margin-top:0px; } --> </style> <html> <head> </head> <body> test text </body></html>

    • ベストアンサー
    • CSS
  • HTMLのborderについてです

    このHTMLとCSSを見てください HTML部分 <div id="frame"> <h2>Bookmark</h2> <ul> <li><a target="_blank" href="">ブログ</a></li> <li><a target="_blank" href="">google</a></li> </ul> </div> CSS部分 #frame { border-style:solid; border-width:1px; border-color:black; width: 200px; padding:0 1px; } h2{ background-image: url("ex05_titlebg.png"); background-repeat: repeat*20; border: #808080 2px solid; padding: 0 7px 0 } ul>li>a { text-decoration: none; } これで表示したときに上下の線と内容の間に隙間があいてしまいますこの隙間を埋めるにはどうしたらいいでしょうか? あとliのところが左側に寄ってくれてなくて左側の線と間があいてしまっているのでこちらの間も埋めたいです 調べてみましたが分からず周りに詳しい知り合いもいないので質問しました もしこういう質問に特化した掲示板などがあるならそちらも合わせて教えていただきたいです

    • ベストアンサー
    • HTML
  • CSSレイアウト マージンについて

    下記のタグにてメインスペースを両側10pxにしたいのですが、うまくいきません。 下記のようなレイアウトにてうまくmarginなどを行う場合は どのようにしたらよろしいでしょうか? なお簡単にタグを記載してくださいますと幸いです。 CSS body {    margin:3em; color:#339900; background:#ffffff; } h1 { padding:0.1em; text-align:center; leter-specing:1em; border-top: 1px solid #000000; border-bottom: 1px solid #000000; } .mainspace { background:#aaaaaa; width:480px;       margin-right:10px;       margin-left:10px ; position:absolute; left:260px; } .leftmenu { background:#bbbbbb; width:200px; position:absolute; left:50px; } .rightmenu { background:#cccccc; width:200px; position:absolute; right:50px; } HTML <h1>メインタイトル</h1> <div class="mainspace"> <h2>サブタイトル</h2> <p> ただいまテスト中です。<br> ただいまテスト中です。<br> ただいまテスト中です。<br> ただいまテスト中です。<br> ただいまテスト中です。<br> </p> </div> <div class="leftmenu"> <ul> <li>メニュー</li> <li>メニュー</li> <li>メニュー</li> <li>メニュー</li> <li>メニュー</li> </ul> </div> <div class="rightmenu"> <ul> <li>メニュー</li> <li>メニュー</li> <li>メニュー</li> <li>メニュー</li> <li>メニュー</li> </ul> </div>

    • ベストアンサー
    • HTML