実際、あなたdiv.toc
は適切に配置されています。問題はあなたにあります<iframe>
。
ボックスモデルを覚えておいてください...幅と高さは、マージンとパディングとは別に計算されます...

したがって、width: 100%;
plus iframe.toc
amargin-left: 0.5em
を使用することで、基本的にブラウザに次のように伝えます。
親要素の全幅を使用0.5em
し、左にオフセットします。
総有効幅: 100% + 0.5em
あなたが本当に言いたいことは次のとおりです。
0.5em
左側のパディングとして使用する親要素の全幅から減算し、これを幅として使用します。
総有効幅: 100% - 0.5em (望ましい)
したがって、解決策は簡単です... margin-left
fromiframe.toc
を削除してpadding-left: 0.5em
on にしdiv.toc
ます。
div.toc {
background-color: #f0f0f0;
position: fixed;
top: 5em;
right: 0;
width: 21em;
height: 38em;
padding-left: .5em;
border-left: 1px solid #ccc;
border-bottom: 1px solid #ccc;
border-top: 1px solid #ccc;
z-index: 1;
}
iframe.toc {
background-color: #f0f0f0;
border: 0;
width: 100%;
height: 30em;
border-bottom: 1px solid #ccc;
}