2012-01-20 22 views
4

Cssの「バグ」原因:インセットボックスシャドウと周囲の境界線との間に1ピクセル透明の境界線のいくつかの種類があるように見えますボックスシャドウと境界線の描画バグが

div { 
    width: 100px; 
    height: 100px; 
    background-color: transparent; 
    box-shadow: 0 0 15px 20px #000 inset; 
    border: 100px solid #000 ; 
    border-radius: 150px; 
} 

を。

私はクロム、FirefoxとIEの最後のリリースとすごみをレンダリングすることを再現することができ、this live exampleを見てください。 (形状が円形でない場合には起こらない、換言すれば)

(従ってエンジン依存レンダリングせず)及びより低い境界半径と起こらない

EDIT:

この問題を解決する方法はありませんでしたが、低い不透明度を使用するとほとんど見えません。 解決策が現れるまで、私はそのテクニックを使用しています(質問を開いたままにします)。

答えて

4

ボックスシャドーのバグのように見えます(広がったargを使用する場合)。回避策としては、オーバーレイdivを使用するだけです。 CSS

<div></div> 
<div class="overlay"></div> 

div { 
    margin:10px; 
    width: 100px; 
    height: 100px; 
    background-color: transparent; 
    box-shadow: 0 0 15px 20px #000 inset; 
    border: 100px solid #000 ; 
    border-radius: 150px; 
} 
div.overlay { 
    margin-top:-310px; 
} 

はここでフィドルです:http://jsfiddle.net/eX3cy/1/

編集:

はここでぼかしとフィドルだと

HTML:ここでは、コードです調整されたスプレッドも同様に(同じ結果が不要な部分を除いて得られることを示しています)。http://jsfiddle.net/wgpzL/

+0

バグがあまり見えなくても、うまくいきません。もしそれが役に立つのであれば、それは広がりには関係なく、四角形ごとに1つずつ、4つの影を使うことで同じ効果が得られます: 'box-shadow:15px 0 15px#000 inset、-15px 0 15px#000 inset、0 15px 15px#000 inset、0 -15px 15px#000 inset'(そして、まだ拡散していないバグはここにあります) – Pioul

+0

@Pioulあなたが与えた例では、拡散を0に設定すると、姿を消す。このバグの原因は、ブラウザの開発者が診断/修正することです。私たちができることは、私たちが持っているものと一緒に働くことだけです。この場合、上記のコードは、望ましくない線/円を使用せずに、コードと同じ結果を生成します。それは、ブラウザが動作を変更するように更新されない限り、それが得られるほど良いものです。 – vdbuilder

+0

ああ、普及したことに同意した。しかし、あなたが与えたコードは、バグのないエフェクトを作り出します。それはそれを目立たなくします(しかし、それはまだここにあり、まだ私を邪魔しています - 私は迷惑です:D)。それを見えにくくするもう1つの方法は、はるかに明るい色を使用することです(バックグラウンドが#fffの場合は#eeeのように)。しかし、ええ、バグはまだここにあります:/ – Pioul

関連する問題