0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

position: relativeは安易に使わない方が良いのかも。。

Posted at

アプリ作成にて学んだ心構えを書いていきます。

それはズバリ! 、、、

position: relativeは極力使わない!!

これです。

このcssプロパティ、position: relativeは、
役割として、指定した要素を基準点とする機能となっています。

普通にdiv要素を積むと、
index.html.erb

<div class='red'>
</div>
<div class='blue'>
</div>

css

.red {
  height: 50vh;
  width: 50vw;
  background-color: red;
}

.blue {
  height: 50vh;
  width: 50vw;
  background-color: blue;
}

Image from Gyazo

こんな感じで、積み木の概念で左端から積まれていきます。
この赤い要素にposition: relativeを入力すると、
赤い要素を基準として、他要素の表示箇所を定めることができます。

表示箇所を定めたい要素に対して、
position: absoluteを入力して、top,leftなど調整したい方向を入力すると、
position: relativeした要素を起点に適用されます。


css

.red {
  height: 30vh;
  width: 50vw;
  background-color: red;
  position: relative; ←これを追加
}

.blue {
  height: 30vh;
  width: 30vw;
  background-color: blue;
  position: absolute; ←これを追加
  top: 10vh;  ←これを追加
  left: 10vw; ←これを追加
}

Image from Gyazo

上記のようになります!
ただブロック要素を積むだけでは要素同士が重なることは起きないですが、
position: relativeの作用で赤い要素が基準点となったことでこの表示になりました。

ビューファイル実装にあたって、
要素毎に並びを調整したいところが出てくると思います。
そういった時に活用できるコードになります!
ただ!こちらを使用すると、
レイアウト崩れを起こしやすいリスクに気付きました:sweat:

要素が少なくシンプルなものは支障ないかと思います。
細かな要素を組み合わせていく場合、
調整や修正が複雑になってくるんですよね:sweat:

私の場合、実装を進める中でレイアウト変更を試みた時に、
position: relativeされた要素があるために配置したい場所にうまく置けないことや、
スペース配分が分かりにくくなり苦戦することがありました。

振り返ってみて

ビューファイル編集を行うときは、
極力Flexboxや、margin・paddingプロパティを組み合わせていく方が、
修正や変更を加える際も分かりやすくて良いなと感じました。
色々と反省しながら頭に入れていけるので、
0からの実装は収穫が大きいと感じます:smiley:
まだまだ日々勉強あるのみ。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?