見出し画像

レスポンシブに役立つCSS(1)縦横中心に置く

巷に溢れてますが、直感的にわかりずらいので書きます。htmlまるっとコピーして使えます。

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>CodingSample/センター合わせ</title>

<style type="text/css">
  
  body, html {
      /*ウインドウの余白をなくす*/
      margin: 0;
      padding: 0;
  }
  
  * { /*全て*/
      box-sizing: border-box; /*線は内側に引く*/
  }

  .Box {
      width: 100%; /*ウインドウ幅いっぱい*/
      height: 100vh; /*ウインドウ高さいっぱい*/
      border: #cc0000 solid; /*わかりやすいように赤線*/
      border-width: 10px; /*線の太さ10ピクセル*/
  }
  
  .inBox {
      display: inline-block; /*ブロック要素にする*/
      position: absolute; /*Box(親要素)内の絶対位置*/
      top: 50%; /*上から50%*/
      left: 50%; /*左から50%*/
      transform: translate(-50%,-50%);/*inBox(自身の位置)を戻す(横位置-50%,縦位置-50%)*/
      border: #000000 solid; /*わかりやすいように黒線*/
      border-width: 1px; /*線の太さ1ピクセル*/
      padding: 50px; /*わかりやすいように余白50ピクセル*/
  }
  
</style>

</head>

<body>
  
<div class="Box">
    <div class="inBox">高さが任意の中に入っている要素</div>
</div>
  
  
</body>
</html>

左右センターは相対地にしても良いけど、子要素・孫要素へのセンター揃えはどこかで戻さないと永遠に受け継がれる。コード自体は理解しやすい。

<style type="text/css">
  
  body, html {
      /*ウインドウの余白をなくす*/
      margin: 0;
      padding: 0;
  }
  
  * { /*全て*/
      box-sizing: border-box; /*線は内側に引く*/
  }

   .Box {
      width: 100%; /*ウインドウ幅いっぱい*/
      height: 100vh; /*ウインドウ高さいっぱい*/
      border: #cc0000 solid; /*わかりやすいように赤線*/
      border-width: 10px; /*線の太さ10ピクセル*/
      text-align: center; /*センターに合わせる*/
  }
  
  .inBox {
      display: inline-block; /*ブロック要素にする*/
      position: relative; /*Box(親要素)内の相対地位置*/
      top: 50%; /*上から50%*/
      transform: translateY(-50%);/*inBox(自身の位置)を戻す(縦位置y軸-50%)*/
      border: #000000 solid; /*わかりやすいように黒線*/
      border-width: 1px; /*線の太さ1ピクセル*/
      padding: 50px; /*わかりやすいように余白50ピクセル*/
  }
  
</style>

よろしければ「スキ」をお願いしますm(_ _)m

この記事が気に入ったらサポートをしてみませんか?