• ベストアンサー

背景色が重なるもしくはつかない

こんばんは、お世話になります。 背景色が重なる、もしくは色がつかないのですが どのようにしたらよいでしょうか? 因みにヘッダーのメニューの後ろにも灰色を付けています。 ご教示お願いします。 @charset "utf-8"; body { color: lightblue; } .wrapper { width: 960px; margin: 0 auto; overflow: hidden; padding: 0px 0px 10px 10px; } .wrapper .col { float: left; width: 25%; } .wrapper .col .item { display: block; margin: 5px 5px 5px 5px; padding: 10px; } .imgbox img { width: 100%; height: 100%; object-fit: cover; vertical-align: bottom; border-radius:15%; } .fadein { opacity : 0; transform : translate(0, 100px); transition : all 1s; } .fadein.active{ opacity : 1; transform : translate(0, 0); } a.header { display: block; text-decoration: none; } .header { background-color: rgba(0,0,0,.1); margin: 0; } ul{ display: flex; flex-wrap: wrap; } .header ul { display: flex; justify-content: center; } .header li { font-size: 15px; list-style-type: none; } .header li:not(:first-of-type) { margin-left: 1rem; } .header a { color: #000; padding: 20px; } .text li{ width: 50%; padding: 20px; box-sizing: border-box; /* 透過・非表示 */ opacity: 0; visibility: hidden; /* 要素の位置指定・アニメーション */ translate: 0 20px; transition: 1s; } img{ width: 100%; height: auto; } /* クラス付与で表示する */ .is-active{ opacity: 1; visibility: visible; translate: 0 0; } header li{ opacity: 1; visibility: visible; display: block; /* 縦に並べる*/ list-style-type: none; padding: 0.5em; background: #ccc; }

  • CSS
  • 回答数7
  • ありがとう数5

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

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

>試して見た所、ズームアップするかのようにどんどんデカくなってきて >画像が表示されました。 はい!真ん中から、各itemが正しい位置に移動するようにアニメさせてます。 画面の「リサイズ」にも反応してます。 this.offset[i]={ xOff: (document.documentElement.clientWidth-item[i].clientWidth)/2, yOff: (document.documentElement.clientHeight-item[i].clientHeight)/2, xTo: 0, yTo: 0 初期位置はここで設定してます。 document.documentElement.clientWidth,document.documentElement.clientHeight はブラウザのInner側のサイズ。 そこから、itemのサイズを引いたものを2で割る=つまり、センターを指してます。 masonry??のような、外部プラグインなし、Jqueryもなしなので、 これが、嫌いじゃない??なら、ポータビリティーは結構高いんじゃないかな~って 感じてます。 邪魔なら、別ファイルで、なんとか.jsでインポートしちゃえば <script> /* これが本体 */ let j=new JackTheRipper99(); </script> だけになるので、シンプル??かなと。 後は、このサンプルに、フェード処理でも、いろんなエフェクトを 加えてもいいでしょうね。 いわゆる一つのDIVをスプライト(移動可能な箱のようなパーツ)として 扱ってるので、どんな風にも、対応できますからね~ 例えば、これを「2個」用意して。 1個目メニューを押すと、1個目のitemたちが出現? そのまま2個目メニューを押すと、 「1個目のitemたちをどこかにしまうような動き+2個目のitemたちを出現させるなど」 にも、対応できるでしょうから^^ 好きに改造しちゃってください~。 (でいいのかな?)

JackTheRipper99
質問者

お礼

回答ありがとうございます。 ちょっと難しくて理解はあんまりできなかったのですが 改造させて頂きます(弄れる範囲で)

その他の回答 (6)

回答No.6

<script> /* itemのwidthは自動になりましたので、CSSで指定した値でOKです */ function JackTheRipper99(){ this.offset=[]; this.timer=false; this.timer_count=0; window.onload = this.load.bind(this); window.onresize = this.resize.bind(this); }; JackTheRipper99.prototype.setTimer=function(){ clearTimeout(this.timer); this.timer_count=5; /* ターン数 */ this.setTimerNext(); }; JackTheRipper99.prototype.setTimerNext=function(){ this.timer = setTimeout(this.animTo.bind(this),100); /* アニメ速度 */ }; JackTheRipper99.prototype.getItem=function(){ // let item=$('.wrapper .item'); let wrapper = document.getElementsByClassName('wrapper'); let item = wrapper[0].getElementsByClassName('item'); return item; }; JackTheRipper99.prototype.getXMax=function(){ let item=this.getItem(); let xMax=item[0].clientWidth; for (let i=0;i<item.length;i++) { if (xMax<item[i].clientWidth) { xMax=item[i].clientWidth; } } return xMax; }; // JackTheRipper99.prototype.getYMax=function(){ // let item=this.getItem(); // let yMax=item[0].clientHeight; // for (let i=0;i<item.length;i++) { // if (yMax<item[i].clientHeight) { // yMax=item[i].clientHeight; // } // } // return yMax; // }; JackTheRipper99.prototype.setOffset=function(item,x,y){ item.style.left = x; item.style.top = y; }; /* 現在のYラインの最小のインデックスを返す */ JackTheRipper99.prototype.getMinT=function(y_table){ let x_index=0; let y_min=y_table[0]; for (let i=0;i<y_table.length;i++) { if (y_min>y_table[i]) { x_index=i; y_min=y_table[i]; } } return x_index; }; JackTheRipper99.prototype.setTo=function(){ let item=this.getItem(); // let screen_width = $(window).width(); let screen_width = document.documentElement.clientWidth; // ワーク変数 let x_index,y_table=[],i; let x_index_max=(screen_width / this.xMax)|0; for (x_index=0;x_index<x_index_max;x_index++) { y_table[x_index]=0; } for (i=0;i<item.length;i++) { x_index=this.getMinT(y_table); this.offset[i]['xTo']=this.xMax*x_index; this.offset[i]['yTo']=y_table[x_index]; y_table[x_index]+=item[i].clientHeight; } this.setTimer(); }; JackTheRipper99.prototype.animTo=function(){ let item=this.getItem(); for (let i=0;i<item.length;i++) { this.offset[i]['xOff']+=(this.offset[i]['xTo']-this.offset[i]['xOff'])/this.timer_count; this.offset[i]['yOff']+=(this.offset[i]['yTo']-this.offset[i]['yOff'])/this.timer_count; this.setOffset(item[i],this.offset[i]['xOff'],this.offset[i]['yOff']); } this.timer_count--; if (this.timer_count>0) this.setTimerNext(); }; JackTheRipper99.prototype.load=function(){ let item=this.getItem(); this.xMax=this.getXMax(); // this.yMax=this.getYMax(); for (let i=0;i<item.length;i++) { this.offset[i]={ xOff: (document.documentElement.clientWidth-item[i].clientWidth)/2, yOff: (document.documentElement.clientHeight-item[i].clientHeight)/2, xTo: 0, yTo: 0 }; this.setOffset(item[i],this.offset[i]['xOff'],this.offset[i]['yOff']); } this.setTo(); }; JackTheRipper99.prototype.resize=function(){ this.setTo(); }; /* これが本体 */ let j=new JackTheRipper99(); </script> HTML部分は、そのままでOKです。 特性上、下の方が隙間ができやすいので、背景になじみやすいゴミパーツを数個置いた方が綺麗に見えるので、そこだけ^^ ウネウネアニメを入れちゃってます(w) で、パラメーターが「なし」ですが、 <div class="wrapper"> これの"wrapper"などをパラメタに入れる事で、 同じような、敷き詰め&スライダーを何個も配置できるので 必要なら改造を! あと、アニメのターンを関数で制御してるので、 フェードなどをしたいなら、その辺でいじればOKですよ。 (意味もなく、開始時「画面中心」から飛ばしてるので、  これを、上から?下から?左?右?とか、いじっても  面白いかもね) ってことで、なお、これ「ブラウザ画面のサイズ」を 基準にしてるので、DIVなどの中に出す時は、 基準サイズの取得部を変更してみてください~ ってことで!

JackTheRipper99
質問者

お礼

ありがとうございます。 試して見た所、ズームアップするかのようにどんどんデカくなってきて 画像が表示されました。

回答No.5

この板ちょい、残しておいてくだされ~ 別バージョン?作ってみますので~ あはは(でも遊びなんですけどね)

JackTheRipper99
質問者

お礼

回答ありがとうございます。 了解しましたー。

回答No.4

差分にて失礼。 強制敷き詰めバージョン <script> /* 横幅を例えば200と決める */ var item_width=200; /* 現在のYラインの最小のインデックスを返す */ function min_y(y_table) { let x_index=0; let y_min=y_table[0]; for (let i=0;i<y_table.length;i++) { if (y_min>y_table[i]) { x_index=i; y_min=y_table[i]; } } return x_index; } function init() { // let item=$('.wrapper .item'); let wrapper = document.getElementsByClassName('wrapper'); let item = wrapper[0].getElementsByClassName('item'); // let screen_width = $(window).width(); let screen_width = document.documentElement.clientWidth; // ワーク変数 let x_index,y_table=[],i; let x_index_max=(screen_width / item_width)|0; for (x_index=0;x_index<x_index_max;x_index++) { y_table[x_index]=0; } for (i=0;i<item.length;i++) { x_index=min_y(y_table); item[i].style.left = item_width*x_index; item[i].style.top = y_table[x_index]; y_table[x_index]+=item[i].clientHeight; } }; window.onload = init; window.onresize = init; </script> Yの最小位置を次のパーツの配置位置として それに、heightを加算(これで最小じゃなくなる) の繰り返し。 特性上「順番バランバラン」 しかたないか~ ってな感じで?遊んでみました^^ (暇つぶしなので、遊べたらいいかな~程度で) なお、itemは数が変わらないのだから、 それのオフセットを取っておくと、 「新しい位置にアニメ移動する?」なんて 演出もできますよ。

回答No.3

クソ投げやりバージョン^^のmasonry.jsも作ってみました。 (あそびですからね^^) ------------------- <html> <head> <style> .wrapper { display: flex; flex-wrap: wrap; position: relative; } .imgbox { background-color:pink; position: absolute; width:200; /* ここと、item_widthをあわせてね! */ } img { /* 画像が「x」になるので、嘘サイズを入れてるだけ */ background-color:green; width:120; height:120; } </style> <script> /* 横幅を例えば200と決める */ var item_width=200; function init() { // let item=$('.wrapper .item'); let wrapper = document.getElementsByClassName('wrapper'); let item = wrapper[0].getElementsByClassName('item'); // let screen_width = $(window).width(); let screen_width = document.documentElement.clientWidth; // ワーク変数 let x_index,y_table=[],i; let x_index_max=(screen_width / item_width)|0; for (x_index=0;x_index<x_index_max;x_index++) { y_table[x_index]=0; } x_index=0; for (i=0;i<item.length;i++) { item[i].style.left = item_width*x_index; item[i].style.top = y_table[x_index]; y_table[x_index]+=item[i].clientHeight; x_index++; if (x_index>=x_index_max) { x_index=0; } } }; window.onload = init; window.onresize = init; </script> </head> <body> <header class="header"> <nav> <ul class="enjoy"> <li class="text"><a href="#About" id="link_sample">ABOUT</a< /li> <li class="text"><a href="#Works" id="link_sample">WORKS</a></li> <li class="text"><a href="#Archive" id="link_sample">Archive</a></li> </ul> </nav> </header> <div class="wrapper"> <div class="item imgbox" style="height: 290px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 250px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 290px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 240px;"><img src="dfasfasdf.jpg " class="fadein"></div> <div class="item imgbox" style="height: 280px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 270px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 240px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 260px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 220px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 230px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 210px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 290px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 250px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 290px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 240px;"><img src="dfasfasdf.jpg " class="fadein"></div> <div class="item imgbox" style="height: 280px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 270px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 240px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 260px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 220px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 230px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 210px;"><img src="dfasfasdf.jpg" class="fadein"></div> </div> </body> </html> ------------------- ただ、結局、どこ空きがあるか?を見てないと、 特定の場所が「ガラッ」とあいた感じになってしまう事もあり あんまり、美しくなかったりはしますね。。 なので、次のYラインに来た時、 最小のYを見つけて、そこにパーツを置く。 を繰り返した方が、敷き詰め感が増し増す。 ただ、X方向配置、その後Y方向?って 雰囲気が壊れるので、表示される順番が、 グダグダになるという特性はどうしてもあるでしょうね。 多分、それやると、思ってる通りの敷き詰め感には なるかと思います^^

回答No.2

>cssだけでこのcssを書き換えて画面いっぱいにmasonryの様な >レイアウトを敷き詰める方法も知りたいです。 >上のメニュー画面より下に敷き詰めようと考えております。 敷き詰めるだけでいいなら、floatか、flexだけでできますよ。 -------- <html> <body> <header class="header"> <nav> <ul class="enjoy"> <li class="text"><a href="#About" id="link_sample">ABOUT</a< /li> <li class="text"><a href="#Works" id="link_sample">WORKS</a></li> <li class="text"><a href="#Archive" id="link_sample">Archive</a></li> </ul> </nav> </header> <!-- 本来ここにあるべきではないが、説明のためにここに配置 --> <style> .wrapper { display: flex; flex-wrap: wrap; } /* 1つ当たりのitem imgboxが見えないので、背景を色付けただけ */ .imgbox { background-color:pink; } /* 嘘画像を緑として、サイズを適当に180x200とみなす */ img { background-color:green; width:180; height:200; } </style> <div class="wrapper"> <div class="item imgbox" style="height: 290px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 250px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 290px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 240px;"><img src="dfasfasdf.jpg " class="fadein"></div> <div class="item imgbox" style="height: 280px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 270px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 240px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 260px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 220px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 230px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 210px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> </div> </body> </html> -------- 基本的に高さを「見てない」ので、縦に関して揃わないですが、 敷き詰めるだけならそれで行けます。 しかしその、「縦」の隙間を詰めたい?となると、 HTML/CSSだけでは無理なので、JSの力を借りるしかありません。 ってのも、このやり方 「縦が自動=つまり、要素としてはサイズ0なんです」 なので、CSSだけでは計算ができない! ということにはなりますが。 一応質問の メニューの下のみで開始され、それ以外を全部敷き詰めた物。 さらに、JavaScriptを使わずCSSのみで! という事では、こうなります。

JackTheRipper99
質問者

お礼

回答ありがとうございます。 なるほど縦はcssだけでは難しいんですね。 となると、やっぱりmasonry先生に頼むしかないかな・・・ (masonry.jsなしでも一応できたのだが・・・) masonry先生は使いづらい。

JackTheRipper99
質問者

補足

すみません、htmlの続きです。 </body> <script> $(function () { var totalRows = 4, itemCol = 0; for (var rowCount = 0; rowCount < totalRows; rowCount++) { newCol = document.createElement('div'); newCol.className = 'col'; document.getElementsByClassName('wrapper')[0].appendChild(newCol); } for (var itemCount = 0; itemCount < document.getElementsByClassName('item').length; itemCount++) { document.getElementsByClassName('col')[itemCol].appendChild(document.getElementsByClassName('item')[0]); if (itemCol < totalRows - 1) { itemCol++; } else { itemCol = 0; } } }); </script> <script> $(function () { $(window).scroll(function () { $('.fadein').each(function () { var position = $(this).offset().top; var scroll = $(window).scrollTop(); var windowHeight = $(window).height(); if (scroll > position - windowHeight + 500) { $(this).addClass('active'); } }); }); }); </script> </body> </html>

回答No.1

CSSのみで、よくわからんかった^^ 該当部だけ抜粋したやつ、作ってくれたら調査はするよ~ (わたしでよければね!)

JackTheRipper99
質問者

お礼

回答ありがとうございます。 因みにこちらがHTMLです。 <!DOCTYPE html> <html lang="ja"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <title>Document</title> <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script> </head> <body> <header class="header"> <nav> <ul class="enjoy"> <li class="text"><a href="#About" id="link_sample">ABOUT</a< /li> <li class="text"><a href="#Works" id="link_sample">WORKS</a></li> <li class="text"><a href="#Archive" id="link_sample">Archive</a></li> </ul> </nav> </header> <div class="wrapper"> <div class="item imgbox" style="height: 290px;"><a href="#illust"><img src="dfasfasdf.jpg" alt="girl" class="fadein"></a></div> <div class="item imgbox" style="height: 250px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 290px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 240px;"><img src="dfasfasdf.jpg " class="fadein"></div> <div class="item imgbox" style="height: 280px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 270px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 240px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 260px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 220px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 230px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 210px;"><img src="dfasfasdf.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> <div class="item imgbox" style="height: 200px;"><img src="sdfsafasfas.jpg" class="fadein"></div> </div> </body> <script> $(function () { var totalRows = 4, itemCol = 0; for (var rowCount = 0; rowCount < totalRows; rowCount++) { newCol = document.createElement('div'); newCol.className = 'col'; document.getElementsByClassName('wrapper')[0].appendChild(newCol); }

JackTheRipper99
質問者

補足

因みに文字が書けなくなったので補足に書きますが masonry.jsやらimagesloaded.js等は全く使っておりません。 cssだけでこのcssを書き換えて画面いっぱいにmasonryの様な レイアウトを敷き詰める方法も知りたいです。 上のメニュー画面より下に敷き詰めようと考えております。

関連するQ&A

  • CSSでの<ul><li id=n><a>での表示に付いて

    初めて質問させて頂きます。仮に作ったサイト名が次の通りです。 http://yusukeinoue.web.fc2.com/271p/271p.html Firefox、Operaで<#sidenavi>での<ul><li id=n><a>のCSSが間違っているのかimgが表示されないのです。CSSは以下の様な感じで } #wrapper #sidenavi ul { list-style-type: none; font-size: 10px; margin: 0px; padding: 0px; display: block; } #wrapper #sidenavi li a { display: block; margin: 0px; padding: 0px; height: 30px; width: 200px; font-size: 12px; text-decoration: none; } #sidenavi li#1 { background-image: url(images/bButton1.gif); background-repeat: no-repeat; margin: 0px; padding: 0px; height: 30px; width: 200px; } #sidenavi li#2 { background-image: url(images/bButton2.gif); background-repeat: no-repeat; margin: 0px; padding: 0px; height: 30px; width: 200px; id=liはそのあとも続くのですが、<em></em>で非表示にしています } #sidenavi em { visibility: hidden; } 使用環境はMacOX10.4.7、DreamweaverMXです。safariでは問題なく表示されます。 参考書籍通りに<ul><li>をボックス化して、インラインにし背景画像を 埋め込むと言う作業でした。 それ以上は書いていないので分かりません。。。 ご教授のほどお願いいたします

    • ベストアンサー
    • CSS
  • 縦型 レスポンシブ対応 多階層プルダウンウンリスト

    www.oct.ac.jp こちらの専門学校と同じ体裁のサイトを作りたいです。 左は固定(可変でも可)、右は可変 にしたい。 <HTML> <div class="content"> <div class="frame-left"> <div class="aaa"> <ul class="nav"> プルダウンリスト </ul> </div> </div> <div class="frame-right"> メイン記事内容 </div> </div><!--.content--> <CSS> ここでつまずきました。 .content{ display: -webkit-flex; display: flex;} .frame-left{ width:20%; } .frame-right{ width:80%; } .aaa { overflow: hidden; width: 750px; height: 300px; margin: 0 auto; padding: 0; box-sizing: border-box; display: flex; } .nav { width: 150px; margin: 0; padding: 0; } .nav li { position: relative; width: 150px; height: 40px; } .nav > li { border-bottom: none; } .nav li:last-child { border-bottom: none; } .nav li:hover > ul > li { border-bottom: none; } .nav li > ul > li:last-child { border-bottom: none; } .nav li a { display: block; width: 150px; height: 40px; color: #fff; font-size: 14px; line-height: 2.8; padding: 0 5px; background: #9fb7d4; border-bottom: 1px solid #eee; box-sizing: border-box; text-decoration: none; transition: 0.5s; } .nav > li:hover > a {/*layer-1*/ color: orange; background: #afc6e2; transition: 0.5s; } .nav > li li:hover > a {/*layer-2*/ color: olive; background: #afc6e2; } .nav li:hover > ul > li { overflow: visible; top: -40px; left: 110px; height: 40px; } .nav li ul li { overflow: hidden; height: 0; left: 110px; list-style: none; transition: 0.2s; } .nav li ul li a { background: #9fb7d4; transition: 0.5s; } .nav li ul:before { position: absolute; content: ""; top: 14px; left: 140px; border: 5px solid transparent; border-left: 5px solid #fff; } 1)これだと2階層目が上から下までの全幅にならない 2)画面を縮小すると、プルダウンメニューがはみ出す width:auto; などにしてみましたが、上手くいきませんでした。 やり方を教えていただきたく、よろしくお願い致します。 ※できればCSSだけでなんとかしたいですが、無理ならJavaScriptや jQueryなどを使って実現したいです。

    • ベストアンサー
    • CSS
  • CSSの左横に隙間ができてしまいます。

    画像の左横に謎の隙間(8mmほど)ができて埋まりません。 そのため、4枚収めたい画像のうち、最後の1枚が改行されてしまっています。 padding や vartical-align、text-alignなど試してみましたが、ダメでした。 とても困っています、どなたかご教示くださいますようお願いいたします。 << CSS >> #header { width:940px; height:59px; margin: 0 0 20px 0; } #logo { width:300px; height:59px; float:left; margin: 0 20px 0 0; } #menu { width:620px; height: 59px; padding: 0; margin: 0; float:right; } #menu img { padding-top:8px; border:none; } #menu ul { margin:0; } #menu ul li { margin: 0px; padding: 0px; list-style-type: none; display:inline; float:left; } << HTML >> <div id="header"> <div id="logo"> <img src="img/logo.gif" width="298" height="59" alt="ロゴ"> </div><!-- /#logo --> <div id="menu"> <ul> <li><img src="img/btn_A.gif" width="194" height="51"></li> <li><img src="img/btn_B.gif" width="140" height="51"></li> <li><img src="img/btn_C.gif" width="149" height="51"></li> <li><img src="img/btn_D.gif" width="137" height="51"></li> </ul> </div><!-- /#menu --> </div><!-- /#header -->

    • ベストアンサー
    • CSS
  • WordPressで画像に枠が入ってしまいます。

    wordpress でホームページを制作していますが、写真に枠線が入ってしまいます。どの部分を消したらいいのかがわかりません。有料テンプレートを買ってしまって特にわかりません。。。どなたかお助けください。 CSSは @charset "UTF-8"; /* CSS Document */ /* -------------------------------------------------- setting ----------------------------------------------------- */ body { background:#ededed url(images/bg/default.gif);} p { font-size: 110%; line-height:1.6em } li{list-style:none;} .row { width: 980px; } @media only screen and (max-width: 767px) { p { font-size: 115%; } } /* -------------------------------------------------- header ----------------------------------------------------- */ header.row { padding-top:23px; padding-bottom:20px; } header.row .nine.columns{ padding:0; } header h1 { margin:0; padding:7px 0 0 0; line-height:1em; font-size: 36px; color:#666; font-family:Georgia, "Times New Roman", Times, serif; font-weight:lighter; float:left; text-align:left; } header img{ border:none; } header h1 a { color:#666; text-decoration:none; } header h1 a:hover { color:#fff; } header #tagline { color:#333; font-size:small; float:left; line-height:37px; padding-top:7px; padding-left:15px; } header #contact { text-align:right; } header #contact #phone { font-weight:bold; font-size: large; color:#666; line-height:1em; } header #contact #phone a { color:#666; } header #contact #icon img { margin-left:5px; vertical-align:middle;} header h3 { margin:0; margin-bottom:5px; padding-left:7px; font-size:14px; } header .widget_RGBdesign_Contact#contact h3 { border-left:0px #FFFFFF solid; padding-left:0px; padding-bottom:5px; } header .widget_search#contact h3, header .widget_search#contact label { display:none; } header form, header p { margin:0; padding:0; } header .widget_search#contact #s {width:70%; float:left; margin:0; padding:0;} header .widget_search#contact #searchsubmit {width:30%: float:right; margin:0; padding:0; font-size: 20px; margin-top:0.3em;} header .widget ul li { display: inline; } header:after { visibility: hidden; display: block; font-size: 0; content: " "; clear: both; height: 0; }

  • ディスプレイサイズにあわせた背景画像

    html、cssは独学、javaはネットに上がっているものを活用させていただく程度の質問者です。 メインコンテンツ<wrapper>と<body>にかけて右角にラインの画像を斜めに貼り付けたサイトを作成しようと思っています。 今のところ下記のように書いているのですが、これだとlineのwidth=300pxのせいで、ブラウザに横スクロールが出来てしまいます。この横スクロールが出ないように設定したいのです。 例えば、ディスプレイのサイズを取得してlineのwidthを調整するとかlineを斜めにリピートするとか。 なにかよい方法がありましたら、お教え下さい。よろしくお願い致します。 *****html部分************************************ <body> <div id="wrapper"> <div id="header"> <div class="line"></div> </div> </body> ************************************************ *****css部分************************************ body{ width:auto; margin:0; padding:0; background:url(../images/body_bg.jpg) repeat; } div#wrapper{ width:850px; margin:0 auto; padding:0; background:url(../images/wrapper_bg.gif) repeat-y; } div#header{ width:850px; height:210px; margin:0 auto; background:url(../images/header_bg.gif) no-repeat;//ライン画像の一部 position:relative; } div#header div.line{ width:300px; height:200px; background:url(../images/line.jpg) repeat-x;//ライン画像 position:absolute; left:850px; top:0; } ************************************************

  • 【CSS】firefoxで背景が表示されない-ナビゲーション(画像置換リンク)

    「li」に背景画像を指定して、ナビゲーションをつくってみたところ・・・ Firefox、Operaで表示されません。 (IEでは表示されます。) ヘッダー左にロゴ(これはどのブラウザでも表示される)、右側にナビゲーションを配置した作りです。 ハックなど色々調べてみたのですが、解決できず・・・。 力をお貸しいただけないでしょうか。 g_nav.gif・・・グローバルナビゲーション一枚画像550px×30px。(上部:ロールオーバー前、下部:ロールオーバー時) 【HTML】 <!--headerここから--> <div id="header"> <!--logoここから--> <div id="logo"> <h1><a href="aaa.html">logo</a></h1> </div> <!--logoここまで--> <!--naviここから--> <div id="nav"> <ul> <li id="nav01"><a href="aaa.html">あああ</a></li> <li id="nav02"><a href="aaa.html">あああ</a></li> <li id="nav03"><a href="aaa.html">あああ</a></li> <li id="nav04"><a href="aaa.html">あああ</a></li> <li id="nav05"><a href="aaa.html">あああ</a></li> </ul> </div> <!--naviここまで--> </div> <!--headerここまで--> 【CSS】 #header{ width:800px; height:70px; margin:0 auto; padding:0; } #logo { width:216px; height:70px; background-image:url(../cmn_img/logo.gif); float:left; } #nav{ width:550px; height:30px; float:right; margin:40px 0 0 0; padding:0; text-indent:-999em; } #nav ul{ margin:0; padding:0; list-style-type:none; } #nav li{ display:inline; } #nav li#nav01 a,#nav li#nav02 a,#nav li#nav03 a,#nav li#nav04 a,#nav li#nav05 a,{ display:block; background-image:url(../cmn_img/g_nav.gif); overflow:hidden; float:left; } #nav li#nav01 a{width:110px; height:30px; background-position:0 0;} #nav li#nav02 a{width:110px; height:30px;background-position:-110px 0;} #nav li#nav03 a{width:110px; height:30px;background-position:-220px 0;} #nav li#nav04 a{width:110px; height:30px;background-position:-330px 0;} #nav li#nav05 a{width:110px; height:30px;background-position:-440px 0;} #nav li#nav01 a:hover{width:110px; height:30px;background-position:0 -30px;} #nav li#nav02 a:hover{width:110px; height:30px;background-position:-110px -30px;} #nav li#nav03 a:hover{width:110px; height:30px;background-position:-220px -30px;} #nav li#nav04 a:hover{width:110px; height:30px;background-position:-330px -30px;} #nav li#nav05 a:hover{width:110px; height:30px;background-position:-440px -30px;} 【下記ハック使用】 #header:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } #header {display: inline-table;} /* Hides from IE-mac \*/ * html #header {height: 1%;} #header {display: block;} /* End hide from IE-mac */

    • 締切済み
    • CSS
  • ディスプレイのサイズに合わせた背景画像

    html、cssは独学、javaはネットに上がっているものを活用させていただく程度の質問者です。 メインコンテンツ<wrapper>と<body>にかけて右角にラインの画像を斜めに貼り付けたサイトを作成しようと思っています。 今のところ下記のように書いているのですが、これだとlineのwidth=300pxのせいで、ブラウザに横スクロールが出来てしまいます。この横スクロールが出ないように設定したいのです。 例えば、ディスプレイのサイズを取得してlineのwidthをちょうせいする。とかlineを斜めにリピートするとか。 なにかよい方法がありましたら、お教え下さい。よろしくお願い致します。 *****html部分************************************ <body> <div id="wrapper"> <div id="header"> <div class="line"></div> </div> </body> ************************************************ *****css部分************************************ body{ width:auto; margin:0; padding:0; background:url(../images/body_bg.jpg) repeat; } div#wrapper{ width:850px; margin:0 auto; padding:0; background:url(../images/wrapper_bg.gif) repeat-y; } div#header{ width:850px; height:210px; margin:0 auto; background:url(../images/header_bg.gif) no-repeat; position:relative; } div#header div.line{ width:300px; height:200px; background:url(../images/line.jpg) repeat-x; position:absolute; left:850px; top:0; } ************************************************

    • 締切済み
    • CSS
  • メニューの横並びで改行されてしまう。

    ul li を使用して、横並びのメニューを作成したいのですが、 最後の項目が、横に並びきれなくて、下の段に移ってしまいます。 border幅や、marginも計算してpxで指定しているつもりですが、上手くいきません(TдT) 何故ですかね? HTML <body> <div id="wrapper"> <header> <nav> <ul> <li><a href="#">about</a></li> <li><a href="#">information</a></li> <li><a href="#">party</a></li> <li><a href="#">access</a></li> <li><a href="#">contact</a></li> </ul> </nav> </header> <!-- /wrapper --></div> CSS #wrapper { width: 985px; margin-top: 0px; margin-right: auto; margin-bottom: 0px; margin-left: auto; } nav ul { list-style-type:none; } nav li { float:left; width:190px; border: 1px #ffb366 solid; text-align:center; margin-right:5px; }

    • ベストアンサー
    • CSS
  • CSSレイアウト・背景グラデーション

    初めまして <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" でCSSでヘッダー・右袖・左メイン・フッターとレイアウトしてます。 ヘッダーから下は右・左・フッターとコンテンツIDでまとめてます。 bodyと#wrapperを使いセンター表示にしてますがページによって テキストボリュームの差がかなりあるのでそれぞれのheightは設定してません。 autoでも非設定でも複数ブラウザで大丈夫だったので省きました。 このレイアウトでIE・Safari・FireFoxなどでレイアウト崩れはしないのですが、枠線を付けたり背景画像で境界線に影を付けたりすると問題が出ます。 FireFoxとSafariだけヘッダー部分にしか影が出ません。 IEやSleipnirではフッターまで反映されます。 ページ毎のテキストボリュームが違うためheight設定してませんが数値指定するとすべてのブラウザで反映されます。 heightに数値いれるとテキストが少ないページでは無駄な表示域がでてしまうので避けたいです。 解決策や当方の設定に問題点があるでしょうか? 影画像は820pxで制作#wapperの背景に指定してます。 よろしくお願いします。 body { text-align: center; padding: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; } #wrapper { text-align: left; width: 800px; margin-top: 0px; margin-bottom: 0px; margin-right: auto; margin-left: auto; padding: 0px; } #header { margin: 0px; padding: 0px; width: 800px; height: 300px; } #contents { padding: 0px; margin-top: 10px; margin-right: 0px; margin-left: 0px; width: 800px; height: auto; margin-bottom: 0px; } #contents #left { margin: 0px; padding: 0px; width: 200px; float: left; height: auto; } #contents #right { padding: 0px; float: right; width: 600px; margin: 0px; height: 1280px; } #footer { margin: 0px; padding: 0px; width: 800px; height: 60px; } 上では#wrapperに画像設定してませんが#wrapperに背景設定してます。 どのブラウザでもレイアウト崩れは起きてないです。 よろしくお願いします。

    • ベストアンサー
    • CSS
  • 背景の色がコンテンツ部分にも表示されてしまいます

    サイトに背景色をつけて、コンテンツ部分は白にしたのですが、どうしても背景色が表示されてしまいます。今はbody以外の各divの背景を白にしていますが、contentsの右下が背景色が表示されてしまします。 お手数ですが、ご指摘頂けると幸いです。よろしくお願いいたします。 <html> <body> <div id="wrapper"> <div id="header"></div> <div id="contents"> <div id="banner"></div> <div id="navi"> <h2><a href="../service/index.html"><em>あああ</em></a></h2> 中略 </div> <div id="bread"><a href="index.html">トップページ</a> &gt; あああ</div> <div id="main"> <p>あああ</p> </div> <div id="sidenavi"> <h3>あああ</h3> <p>あああ</p> </div> <div id="pagetop"><a href="#"></a></div> <div id="footer">Copyright (c) 2009 All Right Reserved </div> </div> </body> </html> <css> body { text-align: center; margin: 0px; padding: 0px; background: #FFCCFF; } #wrapper { text-align: left; margin: 0px auto; padding: 0px; height: 800px; width: 850px; background: #FFFFFF; } #header { margin: 0px; padding: 0px; height: auto; width: 850px; background: #FFFFFF; } #contents #banner { background: url(image/banner.jpg) no-repeat; margin: 0px; padding: 0px; height: 304px; width: 850px; } #contents #navi { background: url(image/menu.jpg) no-repeat; margin: 0px; padding: 0px; height: 61px; width: 850px; } #contents #navi2 { background: url(image/menu2.jpg) no-repeat; margin: 0px; padding: 0px; height: 61px; width: 850px; } #navi h2 { font-size: 12px; margin: 0px; padding: 0px; float: left; } #navi em { visibility: hidden; } #navi2 h2 { font-size: 12px; margin: 0px; padding: 0px; float: left; } #navi2 em { visibility: hidden; } #contents { margin: 0px; padding: 0px; height: 500px; width: 850px; background: #FFFFFF; } #contents #sidenavi p { font-size: 95%; line-height: 1.1em; margin-right: 5px; margin-left: 5px; } #sidenavi h3 { font-size: 105%; font-weight: bold; border-left: 7px solid #FF3366; padding-left: 5px; background: #FFCC33; margin: 0px; padding-top: 5px; padding-bottom: 5px; } #navi a { margin: 0px; padding: 0px; height: 61px; width: 169.5px; display: block; text-decoration: none; } #navi2 a { margin: 0px; padding: 0px; height: 61px; width: 170px; display: block; text-decoration: none; } #contents #main { margin: 10px 0px 0px; padding: 0px 10px 10px; height: auto; width: 610px; float: left; font-family: "MS Pゴシック", Osaka, "ヒラギノ角ゴ Pro W3", "メイリオ"; background: #FFFFFF; } #contents #pagetop { clear: both; background: #FFFFFF; margin: 0px; padding: 0px; } #contents #sidenavi { margin: 10px 5px 0px 0px; padding: 0px; float: right; width: 200px; border: 1px dashed #FF3399; background: #FFFFFF; } #footer { font-size: 90%; color: #FF3366; text-align: center; margin: 0px; padding: 10px 0px 0px; clear: both; border-top: 1px dotted #333333; border-right-color: #333333; border-bottom-color: #333333; border-left-color: #333333; background: #FFFFFF; } #main p { font: bold 120% "MS Pゴシック", Osaka, "ヒラギノ角ゴ Pro W3"; color: #FF3399; padding: 0px; margin-top: 5px; margin-bottom: 5px; } #pagetop img { text-align: center; padding-top: 10px; margin: 0px; padding-bottom: 10px; padding-left: 5px; } .p1 { font-size: 130px; color: #FF3366; padding: 10px; width: 590px; border: 2px dashed #FF3399; background: #FFCCFF; margin: 10px; text-align: center; } #main img { margin: 0px; padding: 0px 0px 10px; } #contents #bread { margin: 5px 0px 0px; padding: 5px 5px 0px 10px; font-size: 100%; width: 830px; }

専門家に質問してみよう