次のコードを見てください。これは、私が抱えているより大きな問題の単純化されたバージョンです。
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
div {border-width:0px 5px; border-style:solid; border-color:black; width:400px; margin:0; padding:0; background:red;}
div:nth-child(2) {background:green;}
p {color:yellow; text-transform:uppercase; font-size:40px;margin:0;padding:0;}
</style>
</head>
<body>
<div><p>Hello World</p></div>
<div><p>Hello World</p></div>
</body>
</html>
次のようなものを作成する必要があります。
クライアントが要求したのは、黒の左枠と黒の右枠を黄色のテキストとまったく同じ高さにすることです。つまり、黒いバーの高さには、黄色のテキストの上部と下部、およびコンテナーの上部と下部の間の余分なスペースを含めないでください。
これを行う方法の 1 つは、含まれている div に固定の高さを設定してから、div に overflow:hidden を与えることです。次に、p タグで負の margin-top を使用します。
誰もがより良いアプローチを考えることができますか? 私のクライアントはデザインナチであり、さまざまなオペレーティングシステム、さまざまなブラウザー、さまざまな画面解像度でピクセルパーフェクトであることを期待しているため、私が言及したアプローチは本当に好きではありません. 私の経験から、ピクセル値を CSS にハードコーディングして要素を配置しようとしても、それらの要素が (動的コンテンツのために) サイズが異なる要素に対して相対的である必要がある場合、悪夢になる可能性があります。
私の懸念は正当なものですか?もしそうなら、境界線をテキストとまったく同じ高さにするより良い方法はありますか?