下記URLのcssジェネレーターにてcssでリボンを作りました。
http://www.css3d.net/ribbon-generator/
これをページに導入すると、
リボンの右側の長さ(例えば1000px)が認識されて、横スクロールバーがでてしまします。
リボンの左側のように、1000pxと設定されていても、画面内に収めたいと思っています。
<発生している問題>
右側のwidth(例えば1000px)が認識されて、横スクロールバーが出てしまう。
<該当のソースコード>
[HTML]
<div class="container"> <h1>リボンHTML&CSS</h1> <div class="ribbon-wrapper"> <div class="ribbon-front"> リボンに書きたいテキスト </div> <div class="ribbon-edge-topleft"></div> <div class="ribbon-edge-topright"></div> <div class="ribbon-edge-bottomleft"></div> <div class="ribbon-edge-bottomright"></div> <div class="ribbon-back-left"></div> <div class="ribbon-back-right"></div> </div> </div>
[CSS]
body{background: #ccc;} .container{width: 970px;height: 1000px;margin: 0 auto;background: #fff;padding: 20px;} /* ribbon style */ .ribbon-wrapper { position: relative; } .ribbon-front { background-color: #F60808; height: 40px; width: 1030px; position: relative; left:-30px; z-index: 2; } .ribbon-front, .ribbon-back-left, .ribbon-back-right { -moz-box-shadow: 0px 0px 4px rgba(0,0,0,0.55); -khtml-box-shadow: 0px 0px 4px rgba(0,0,0,0.55); -webkit-box-shadow: 0px 0px 4px rgba(0,0,0,0.55); -o-box-shadow: 0px 0px 4px rgba(0,0,0,0.55); } .ribbon-edge-topleft, .ribbon-edge-topright, .ribbon-edge-bottomleft, .ribbon-edge-bottomright { position: absolute; z-index: 1; border-style:solid; height:0px; width:0px; } .ribbon-edge-topleft, .ribbon-edge-topright { } .ribbon-edge-bottomleft, .ribbon-edge-bottomright { top: 40px; } .ribbon-edge-topleft, .ribbon-edge-bottomleft { left: -30px; border-color: transparent #893131 transparent transparent; } .ribbon-edge-topleft { top: -5px; border-width: 5px 10px 0 0; } .ribbon-edge-bottomleft { border-width: 0 10px 0px 0; } .ribbon-edge-topright, .ribbon-edge-bottomright { left: 990px; border-color: transparent transparent transparent #893131; } .ribbon-edge-topright { top: 0px; border-width: 0px 0 0 10px; } .ribbon-edge-bottomright { border-width: 0 0 5px 10px; } .ribbon-back-left { position: absolute; top: -5px; left: -1020px; width: 1000px; height: 40px; background-color: #D70A0A; z-index: 0; } .ribbon-back-right { position: absolute; top: 5px; right: -1020px; width: 1000px; height: 40px; background-color: #D70A0A; z-index: 0; } ```/* ribbon style */以下が、ジェネレーターがはじき出したCSS bodyと.containerが私が追記したCSSです。 .container を970pxに設定していて、 そこに「.ribbon-front」に該当する箇所がおおいかぶさって文字(見出し)が書けて、 左右のリボンは、横スクロールを出さずに画面いっぱいになるようにしたいです。 <試したこと> .ribbon-back-rightのwidthを ①autoにしてみた ②calc(100% - (任意の数字)px)を使用 ①に関しても②に関してもまったく効かず。 ②に関しては「任意の数字」を追記した分は、右のリボンの長さは減っていましたが、 「100%の残り」という動きにはなりませんでした。 <消極案> ○bodyにoverflow-x:hiddenを記述 ※これは(横スクロールバーを消すという意味では)うまくいったのですが、実際に追加したいページにはトップに戻るボタンがついており、 そのボタンが消えてしまったので却下。 下記ページを参考に、 ▼[jQuery] overflow-x を使うと scrollTop で値がとれなくなった http://www.d-wood.com/blog/2014/07/10_6462.html bodyの直下にクラス名を降り、 overflow-x:hidden(横スクロールを消す為) overflow-y:hidden(縦スクロールが2つになってしまった為) こちらで対応していますが、 根本的な概念(やり方)を知りたいと思っています。 お手数ですが、みなさまのご教授をお待ちしております。 よろしくお願いいたします。