CSSでは、どうすればこのようなことができます:
width: 100% - 100px;
これはかなりシンプルだと思いますが、それを示す例を見つけるのは少し難しいです。
width: calc(100% - 100px);
それをサポートしていると答えたので、答えはいくつかあります。質問者が彼の質問を更新してくれることを願っています:) :)
CSSでは、どうすればこのようなことができます:
width: 100% - 100px;
これはかなりシンプルだと思いますが、それを示す例を見つけるのは少し難しいです。
width: calc(100% - 100px);
それをサポートしていると答えたので、答えはいくつかあります。質問者が彼の質問を更新してくれることを願っています:) :)
回答:
最近のブラウザーは次をサポートします:
width: calc(100% - 100px);
サポートされているブラウザバージョンのリストを確認するにはチェックアウト:calc()をCSSユニット値として使用できますか?
jQueryフォールバックがあります:css幅:calc(100%-100px); jqueryを使用した代替
calc(100% - 6px)
たとえば、それがと表示されcalc(94%)
ていたときに使用していたときに、次のようにエスケープする必要がありましたが、動作しますwidth: calc(~"100% - 6px");
-
(または+
)文字の周りに空白が必要であることに注意してください。この作品:calc(100% - 100px);
:そして、これはそうではないcalc(100%-100px);
padding: 0.25em; width: calc(100% - 2 * 0.25em - 2em);
は0.25em
、2か所を変更する必要があります。
あなたが巣を持つdiv要素でしたmargin-left: 50px;
し、margin-right: 50px;
内部<div>
ではwidth: 100%;
?
あなたはこれを試すことができます...
<!--First Solution-->
width: calc(100% - 100px);
<!--Second Solution-->
width: calc(100vh - 100px);
vw:ビューポートの幅
vh:ビューポートの高さ
calc(100% - 6px)
それが表示された、たとえばとしてcalc(94%)
次のように私はそれを逃れるために持っていたし、今では動作しますが、width: calc(~"100% - 6px");
私のコード、そしてそれはIE6で動作します:
<style>
#container {margin:0 auto; width:100%;}
#header { height:100px; background:#9c6; margin-bottom:5px;}
#mainContent { height:500px; margin-bottom:5px;}
#sidebar { float:left; width:100px; height:500px; background:#cf9;}
#content { margin-left:100px; height:500px; background:#ffa;}
</style>
<div id="container">
<div id="header">header</div>
<div id="mainContent">
<div id="sidebar">left</div>
<div id="content">right 100% - 100px</div>
<span style="display:none"></span></div>
</div>
100%-100pxにするコンテンツdivのコンテナーが必要です
#container {
width: 100%
}
#content {
margin-right:100px;
width:100%;
}
<div id="container">
<div id="content">
Your content here
</div>
</div>
</div>
コンテンツdivがオーバーフローしている場合は、最後の直前にclear divを追加する必要がある場合があります。
<div style="clear:both; height:1px; line-height:0"> </div>
本文のマージンを0に設定し、外側のコンテナーの幅を100%に設定し、50ピクセルの左/右マージンを持つ内側のコンテナーを使用すると機能するようです。
<style>
body {
margin: 0;
padding: 0;
}
.full-width
{
width: 100%;
}
.innerContainer
{
margin: 0px 50px 0px 50px;
}
</style>
<body>
<div class="full-width" style="background-color: #ff0000;">
<div class="innerContainer" style="background-color: #00ff00;">
content here
</div>
</div>
</body>
ブートストラップパネルを使用して、ヘッダーパネルに「削除」リンクを配置する方法を探していましたが、これは長い隣接要素によって隠されません。そしてここに解決策があります:
html:
<div class="with-right-link">
<a class="left-link" href="#">Long link header Long link header</a>
<a class="right-link" href="#">Delete</a>
</div>
css:
.with-right-link { position: relative; width: 275px; }
a.left-link { display: inline-block; margin-right: 100px; }
a.right-link { position: absolute; top: 0; right: 0; }
もちろん、インデントに応じて、「上」と「右」の値を変更できます。ソース
できますか:
margin-right: 50px;
margin-left: 50px;
編集: 私の解決策は間違っています。幅100%のdivを使用し、マージンを使用して別のdivをネストすることを提案するAric TenEyckによって投稿されたソリューションは、より正確に思われます。
width:100%
。明示的に指定width
しfloat
たり、絶対配置を使用したりしてオーバーライドしない限り、divは自動的にコンテナを埋めます。divにマージンを追加すると、コンテナーを埋めるだけで、マージンで指定された量が減ります。
外側のdivにパディングすると、望ましい効果が得られます。
<html>
<head>
<style>
#outer{
padding: 0 50px;
border:1px solid black; /*for visualization*/
}
#inner{
border:1px solid red; /*for visualization*/
}
</style>
</head>
<body>
<div id="outer">
<div id="inner">
100px smaller than outer
</div>
</div>
</body>
</html>
この一般的なシナリオに役立つ2つのテクニックがあります。それぞれに欠点がありますが、どちらも役立つ場合があります。
box-sizing:border-boxは、アイテムの幅にパディングとボーダー幅を含みます。たとえば、divの幅を20px 20pxパディングと1pxボーダーで100pxに設定すると、実際の幅は142pxになりますが、border-boxでは、パディングとマージンの両方が100pxの内側になります。
.bb{
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
-moz-box-sizing: border-box; /* Firefox, other Gecko */
box-sizing: border-box;
width: 100%;
height:200px;
padding: 50px;
}
これに関する優れた記事は次のとおりです:http : //css-tricks.com/box-sizing/そしてここにフィドルhttp://jsfiddle.net/L3Rvw/
そして、位置があります:絶対
.padded{
position: absolute;
top: 50px;
right: 50px;
left: 50px;
bottom: 50px;
background-color: #aefebc;
}
もちろん、どちらも完璧ではありません。要素が実際には100%-100pxではなく100%幅であるため、box-sizingは質問に正確に適合しません(ただし、子divはそうです)。また、絶対配置はすべての状況で使用できるわけではありませんが、親の高さが設定されている限り、通常は問題ありません。
CSSは、アニメーションやイベントのスタイル変更には使用できません。
唯一の方法は、指定された要素の幅を返すjavascript関数を使用して、100pxを減算し、新しい幅のサイズを設定することです。
jQueryを使用しているとすると、次のようなことができます。
oldWidth = $('#yourElem').width();
$('#yourElem').width(oldWidth-100);
そしてネイティブのjavascriptで:
oldWidth = document.getElementById('yourElem').clientWidth;
document.getElementById('yourElem').style.width = oldWidth-100+'px';
100%のcssスタイルセットがあると想定します。
標準モードを使用していますか?この解決策は私が思うに依存します。
2つの列を作成しようとしている場合は、次のようにすることができます。
<div id="outer">
<div id="left">
sidebar
</div>
<div id="main">
lorem ispsum etc...
</div>
</div>
次に、CSSを使用してスタイルを設定します。
div#outer
{
width:100%;
height: 500px;
}
div#left
{
width: 100px;
height: 100%;
float:left;
background: green;
}
div#main
{
width: auto;
margin-left: 100px; /* same as div#left width */
height: 100%;
background:red;
}
2列が必要ない場合は、おそらく削除できます <div id="left">
これは機能します:
margin-right:100px;
width:auto;
簡単に言えば、CSSではこれを行わないでください。Internet ExplorerはCSS式と呼ばれるものをサポートしていますが、これは標準ではなく、FireFoxなどの他のブラウザーではサポートされていません。
JavaScriptでこれを行う方がよいでしょう。