2017-10-13 5 views
1

私はカスタムタブコンポーネントを作成しようとしていますが、CSS /レンダリングの問題があります。ここで親の絶対的な子が親の背景を正しく埋めていない

jsBINへのリンクです:あなたは国境半径が適用される非常に小さな赤いがある見ることができるようhttps://gist.github.com/FluksikartonGOD/351d649d4876059f88fd7bc63abfa8e0

。それを修正する方法は?

body { 
 
background-color: red; 
 
} 
 
.switch-container { 
 
    position: relative; 
 
    max-width: 300px; 
 
    height: 60px; 
 
    border: 2px solid white; 
 
    border-radius: 34px; 
 
    overflow: hidden; 
 
    display: flex; 
 
    align-items: center; 
 
    margin: 0 auto 
 
} 
 
.switch-container span { 
 
    flex: 1; 
 
    height: 100%; 
 
    color: white; 
 
    display: flex; 
 
    align-items: center; 
 
    justify-content: center; 
 
    z-index: 1; 
 
    user-select: none; 
 
    transition: all .2s ease-in; 
 
} 
 
.switch-container span.active { 
 
    color: blue 
 
} 
 
.switch-container span:hover { 
 
    cursor: pointer; 
 
} 
 
.switch-container:before { 
 
    content: ""; 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    width: 50%; 
 
    height: 100%; 
 
    border-radius: 34px; 
 
    background-color: white; 
 
    will-change: transform; 
 
    transition: transform .2s ease-in; 
 
} 
 
.switch-container.left-side:before { 
 
    transform: translateX(0); 
 
} 
 
.switch-container.right-side:before { 
 
    transform: translateX(100%); 
 
}
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width"> 
 
    <title>JS Bin</title> 
 
</head> 
 
<body> 
 
    <div class="switch-container"> 
 
       <span class="item flex-item text-center active" target="switchItem1">Something 1</span> 
 
       <span class="item flex-item text-center" target="switchItem2">Something 2</span> 
 
      </div> 
 
</body> 
 
</html>

+0

共有いくつかの実行可能なコード –

+0

がjsBinへのリンクがあり、あなたはそれの全体のコードを編集して見ることができるが、オーバーフローを削除 –

+0

その問題。 –

答えて

2

私は境界のボックスシャドウを使用していたとして、以下の私の答えを見つけます。ボーダーは半径が非常に滑らかではないので。また、影を使用する場合は、コンマ区切りのボックスシャドウに別の値を追加します。解決するために隠された:私は、リンク内のコードを共有している

body { 
 
    background-color: red; 
 
} 
 

 
.switch-container { 
 
    position: relative; 
 
    max-width: 300px; 
 
    height: 60px; 
 
    box-shadow: 0 0 0 2px white inset; 
 
    border-radius: 34px; 
 
    overflow: hidden; 
 
    display: flex; 
 
    align-items: center; 
 
    margin: 0 auto 
 
} 
 

 
.switch-container span { 
 
    flex: 1; 
 
    height: 100%; 
 
    color: white; 
 
    display: flex; 
 
    align-items: center; 
 
    justify-content: center; 
 
    z-index: 1; 
 
    user-select: none; 
 
    transition: all .2s ease-in; 
 
} 
 

 
.switch-container span.active { 
 
    color: blue 
 
} 
 

 
.switch-container span:hover { 
 
    cursor: pointer; 
 
} 
 

 
.switch-container:before { 
 
    content: ""; 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    width: 50%; 
 
    height: 100%; 
 
    border-radius: 34px; 
 
    background-color: white; 
 
    will-change: transform; 
 
    transition: transform .2s ease-in; 
 
} 
 

 
.switch-container.left-side:before { 
 
    transform: translateX(0); 
 
} 
 

 
.switch-container.right-side:before { 
 
    transform: translateX(100%); 
 
}
<div class="switch-container"> 
 
    <span class="item flex-item text-center active" target="switchItem1">Something 1</span> 
 
    <span class="item flex-item text-center" target="switchItem2">Something 2</span> 
 
</div>

関連する問題