2016-08-17 6 views
0

これは、CSS HTMLとJavaScriptを使用して、B上でAを、C上でBを、C上でCを行うことは可能ですか?このようなこれは、CSS HTMLとJavaScriptを使用して、B上でAを、C上でBを、C上でCを行うことは可能ですか?

:あなたは図形のintersecionsを着色することによって、これをachiveでき

enter image description here

+0

としての要素のうちの1つをレンダリングなし、あなたがの少なくとも一つを分割する必要がありこれらは2つの部分/層に分かれており、一方の層はスタックの下にあり、他方の層(上半分)は上にある。一番下のA、B、Cの順に、そしてAのコピーをスタックの上の領域だけを覆うように部分的にマスクします。 – Thomas

+0

笑、質問をより建設的にする必要があります。それは可能ですか? .....はい実際には –

+0

あなたのレイヤー(カラーまたは背景画像のみ)*の具体的な内容に応じて、このマスクされたコピーをCSSと擬似要素( ':after')で作成することができます。 – Thomas

答えて

2

、唯一のChromeは変換形式をサポートしています保つ-3D要素レベルではなくピクセルレベルで表示されます。ピクセルレベルで行われるので、要素の一部は別の要素の前にレンダリングされ、後にはレンダリングされます。だから、

body { 
 
    transform-style: preserve-3d; 
 
} 
 

 
div { 
 
    width: 200px; 
 
    height: 100px; 
 
    line-height: 100px; 
 
    text-align: center; 
 
    position: absolute; 
 
    transform-style: preserve-3d; 
 
} 
 
.A { 
 
    background-color: tomato; 
 
    left: 50px; 
 
    top: 0px; 
 
    transform: rotateY(3deg); /* this does the trick */ 
 
} 
 

 
.B { 
 
    background-color: lightgreen; 
 
    left: 50px; 
 
    top: 0px; 
 
    transform: rotate(120deg); 
 
    transform-origin: center bottom; 
 
} 
 

 
.C { 
 
    background-color: lightblue; 
 
    left: 50px; 
 
    top: 0px; 
 
    transform: rotate(-120deg); 
 
    transform-origin: center bottom; 
 
}
<div class="A">Some fancy text</div> 
 
<div class="B">Some fancy text</div> 
 
<div class="C">Some fancy text</div>

、瞬間のために、あなたがトリックを使用するように制限されます - 基本的に2つの異なる要素

1

。ここで重要なのは、メインの形状のoverflow: hidden;を使用してposition: relative; ここで交差部を設定するスニペットいます:この時点で

.box1 { 
 
    width: 200px; 
 
    height: 200px; 
 
    background: red; 
 
    position: relative; 
 
    top: 40px; 
 
} 
 
.box2 { 
 
    width: 250px; 
 
    height: 250px; 
 
    background: navy; 
 
    border-radius: 0%; 
 
    position: absolute; 
 
    left: 75px; 
 
    top: 50px; 
 
    overflow: hidden; 
 
} 
 
.box3 { 
 
    width: 200px; 
 
    height: 200px; 
 
    background: black; 
 
    position: absolute; 
 
    left: 50px; 
 
    top: 150px; 
 
    overflow: hidden; 
 
} 
 

 
#top-left { 
 
    width: 150px; 
 
    height: 150px; 
 
    background: red; 
 
    position: relative; 
 
    left: -25px; 
 
} 
 

 
#top_right { 
 
    width: 150px; 
 
    height: 150px; 
 
    background: navy; 
 
    position: relative; 
 
    left: 50px; 
 
}
<div class="box1"> 
 
    <div class="box2"> 
 
    <div id="top-left"></div> 
 
    </div> 
 
    <div class="box3"> 
 
    <div id="top_right"></div> 
 
    </div> 
 
</div>

関連する問題