これはtransform
、 が親要素に適用されるためです。これを完全に取り除く方法はありませんが、背面を非表示にし、 ( Woodrow Barlow のコメントtranslateZ(0)
で述べたように) を追加することで、大幅に取り除くことができます。追加の変換は、0px でのみ変換されるため、望ましくない影響を引き起こすことはありません。
backface-visibility: hidden;
transform: skew(10deg) translateZ(0); /* translateZ(0) was added */
注:プロパティにはブラウザのbackface-visibility
プレフィックスが必要です。接頭辞付きのバージョンを作成しないように、スニペットで接頭辞なしのライブラリを使用しました。
#BlockOutside {
background-color: #cfcfcf;
padding: 5px;
padding-left: 3px;
padding-right: 3px;
height: 50px;
width: 30px;
transform: skew(10deg) translateZ(0);
backface-visibility: hidden;
}
#BlockInside {
background-color: gray;
width: 100%;
height: 100%;
box-shadow: inset 0 0 5px black;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
<div id="BlockOutside">
<div id="BlockInside"></div>
</div>
さらに、以下のスニペットのように非表示の 1 ピクセルの境界線を追加すると、ギザギザのエッジがさらに均一になります。これにより少しぼかし効果が追加されますが、エッジは上記のスニペットよりもギザギザが少ないことに注意してください。必要に応じて、このオプションを使用または無視できます。
#BlockOutside {
background-color: #cfcfcf;
padding: 4px 6px 6px 4px;
height: 50px;
width: 30px;
transform-style: preserve3d;
transform: skew(10deg) translateZ(0);
backface-visibility: hidden;
border: 1px solid transparent;
}
#BlockInside {
background-color: gray;
width: 100%;
height: 100%;
box-shadow: inset 0 0 5px black;
border: 1px solid transparent;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
<div id="BlockOutside">
<div id="BlockInside"></div>
</div>