私はこの質問を実装しようとしています:How to set background image of outer div only to the right of inner div?なぜ親要素のdivに従って計算されない:: after要素の幅の幅ですか?
それは、このcodepenに提示されている:私が欲しいものhttp://codepen.io/anon/pen/WpNVmJ
はイエロー画像自体を繰り返すことです。それは完全にそのcodepenで動作していますが、私は実際のコードで実装しようとするとうまくいきません。
実際にはイメージは単色ではなく、ヘッダーに一致するストライプです。勾配に基づく解決法はこれに対しては機能しません。
これは私の本当のhtmlです:
<div class="off-canvas-wrap" data-offcanvas>
<div class="inner-wrap">
<header>
<div class="top-row">
<a href="/index.html" class="clickable-area"></a>
<div class="top-ad">
<script>
</script>
</div>
</div>
...
</header>
...
</div>
</div>
は、これは、関連するSCSSである:私は基礎5 SCSSを必要とするのでcodepen作業を取得
.top-row {
position: relative;
@media #{$large-up} {
height: 110px;
}
}
.top-row::after {
content: "";
display: block;
background: url("../images/above-menu-graphic-215-1px.png") repeat-x;
position: absolute;
top: 0px;
right:0px;
height: 110px;
width: calc(50% - #{$row-width/2});
}
は不可能か、あまりにも多くの仕事です。クロムで検査
は、私はちょうどcalc(50%)
またはちょうど50%
それが600px
を示しする幅を変更すると::は、要素の後に0
の幅を持っていることを示しています。
top-row
の幅は1200pxに制限されていますが、ヘッダーはブラウザのサイズと同じです。
幅は、ではなく、header
の50%である必要があります。
より正確には、calc(50% - $row-width/2)
であり、$ row-width/2は600px(実際には覚えている)として正しく計算されるため、問題はありません。
this :: after要素の幅が親のように設定されるのはなぜですかで、<header>
ではないのですか?
どのように動作させるには?
そのブラウザで正しい演算子の優先順位が従っていますか? '50% - $ row-width/2 'でなければ' 0 'として出力されます。 ( '(600px - 600px)/ 2'のように) – Ouroborus
codepenで、親は1000pxであり、擬似要素は' 500%-500px'となります。これは500 - 500 = 0です。 – pol
@Ouroborus - chromiumは 'calc(50%-37.5rem)'としてコンパイルされた結果を表示します。 –