2017-06-26 15 views
3

私はdivの4つのコンテナを持っています。すべての内divは絶対位置と同じサイズを持っています。私はスライスされたケーキのいくつかの種類を受け取る代わりに、円の境界線を追加する場合:境界線の間に認識されないスペース

broken circle

このスペースはから来て、なぜどこ? jsfiddle link

.container { 
 
    position: relative; 
 
    background: black; 
 
    width: 250px; 
 
    height: 250px; 
 
    margin: auto; 
 
    padding: 50px; 
 
} 
 
.container > div { 
 
    position: absolute; 
 
    content: ''; 
 
    border-width: 50px; 
 
    border-style: solid; 
 
    border-radius: 50%; 
 
} 
 
.container > div:nth-child(1) { 
 
    border-color: transparent transparent transparent green; 
 
} 
 
.container > div:nth-child(2) { 
 
    border-color: transparent transparent green transparent; 
 
} 
 
.container > div:nth-child(3) { 
 
    border-color: transparent green transparent transparent; 
 
} 
 
.container > div:nth-child(4) { 
 
    border-color: green transparent transparent transparent; 
 
}
<div class="container"> 
 
    <div></div> 
 
    <div></div> 
 
    <div></div> 
 
    <div></div> 
 
</div>

+0

を解決?あなたが必要とするものに応じて、ただ1つを使用してこのアーティファクトを避けることができます – mikepa88

+0

私はアニメーションを作成したい、それはキーフレームになります。メインコンテナの 'div'が回転し、スライスが分割されます。 –

答えて

1

ない非常にきれいな回避策を、それが右に見えます。問題はレンダリングアーティファクトと思われるので、本当の素晴らしい解決策は不可能だと思います。

.container { 
 
    position: relative; 
 
    background: black; 
 
    width: 250px; 
 
    height: 250px; 
 
    margin: auto; 
 
    padding: 50px; 
 
} 
 
.container > div { 
 
    position: absolute; 
 
\t \t content: ''; 
 
\t \t border-width: 50px; 
 
\t \t border-style: solid; 
 
\t \t border-radius: 50%; 
 
} 
 
.container > div:nth-child(1) { 
 
    border-color: transparent transparent transparent green; 
 
    transform: translate3d(1px, 0 , 0); 
 
} 
 
.container > div:nth-child(2) { 
 
\t border-color: transparent transparent green transparent; 
 
    transform: translate3d(0, -1px , 0); 
 
} 
 
.container > div:nth-child(3) { 
 
    border-color: transparent green transparent transparent; 
 
    transform: translate3d(-1px, 0 , 0); 
 
} 
 
.container > div:nth-child(4) { 
 
    border-color: green transparent transparent transparent; 
 
    transform: translate3d(0, 1px , 0); 
 
}
<div class="container"> 
 
    <div></div> 
 
    <div></div> 
 
    <div></div> 
 
    <div></div> 
 
</div>

+0

このバグはどこで報告できますか?どのコミュニティにありますか? –

+0

すべてのブラウザに同じ問題があるようです。それはバグとは認められないかもしれませんが、あなたがやりたいことは変です。どこにデザインされているかはわからない。スライスをクリップパスで行うほうがいいかもしれません。 – mikepa88

+0

私はちょうどラインのない別の出力を期待しています。そして、私は、ほとんど誰もがラインがどこから来たのか分からないと思う。私は自分の仕事を別の方法で作ったが、ブラウザの問題はまだ開いている。私は仕事を解決したくない、私は知りたい、なぜ私はこの出力を持っています。 4つのボーダーを持つ1つの要素と1つのボーダーを持つ4つの要素の違いは何ですか? –

-1

のdivに背景色を追加します。

.container { 
    position: relative; 
    background: black; 
    width: 250px; 
    height: 250px; 
    margin: auto; 
    padding: 50px; 
} 
.container > div { 
    position: absolute; 
     content: ''; 
     border-width: 50px; 
     border-style: solid; 
     border-radius: 50%; 
     background-color:green; 
} 
.container > div:nth-child(1) { 
    border-color: transparent transparent transparent green; 
} 
.container > div:nth-child(2) { 
    border-color: transparent transparent green transparent; 
} 
.container > div:nth-child(3) { 
    border-color: transparent green transparent transparent; 
} 
.container > div:nth-child(4) { 
    border-color: green transparent transparent transparent; 
} 
+0

なぜ、複数のdivを境界線セクションで使用するのですか? – mikepa88

0
なぜ

わからない、しかし、あなたが代わりに1の4つの異なるdiv要素を持っている必要がありますなぜこれがあなたの問題

.container > div:nth-child(4) { 
    border-color: green; 
} 

.container { 
 
    position: relative; 
 
    background: black; 
 
    width: 250px; 
 
    height: 250px; 
 
    margin: auto; 
 
    padding: 50px; 
 
} 
 
.container > div { 
 
    position: absolute; 
 
\t \t content: ''; 
 
\t \t border-width: 50px; 
 
\t \t border-style: solid; 
 
\t \t border-radius: 50%; 
 
} 
 
.container > div:nth-child(1) { 
 
    border-color: transparent transparent transparent green; 
 
} 
 
.container > div:nth-child(2) { 
 
\t border-color: transparent transparent green transparent; 
 
} 
 
.container > div:nth-child(3) { 
 
    border-color: transparent green transparent transparent; 
 
} 
 
.container > div:nth-child(4) { 
 
    border-color: green; 
 
}
<div class="container"> 
 
    <div></div> 
 
    <div></div> 
 
    <div></div> 
 
    <div></div> 
 
</div>

+2

最後のdivは(1つのスライスだけでなく)完全に塗りつぶされているので、その背後にあるものを隠します。彼が別々のdivでスライスを必要とするならば、それを行うのは無駄です。残りの部分を取り除き、1つの境界線の色で1つのdivを残すほうが簡単です。 – mikepa88

+0

私はまだそれがなぜ最初に起こっているのか分かりません。 – viCky

+0

私はそのレンダリングの成果を見ています。 – mikepa88

関連する問題