Di CSS, apa perbedaan antara pemosisian statis (default) dan pemosisian relatif?
Jawaban:
Pemosisian statis adalah model pemosisian default untuk elemen. Mereka ditampilkan di halaman tempat mereka dirender sebagai bagian dari aliran HTML normal. Elemen statis diposisikan tidak mematuhi left
, top
, right
dan bottom
aturan:
Pemosisian relatif memungkinkan Anda untuk menentukan offset tertentu ( left
, top
dll) yang relatif terhadap posisi normal elemen dalam aliran HTML. Jadi jika saya memiliki kotak teks di dalam a, div
saya dapat menerapkan pemosisian relatif pada kotak teks untuk menampilkannya di tempat tertentu relatif terhadap tempat biasanya ditempatkan di dalam div
:
Ada juga pemosisian absolut - di mana Anda menentukan lokasi yang tepat dari elemen relatif terhadap seluruh dokumen, atau elemen yang diposisikan secara relatif berikutnya lebih jauh dari pohon elemen :
Dan ketika a position: relative
diterapkan ke elemen induk dalam hierarki:
Perhatikan bagaimana elemen posisi-absolut kita terikat oleh elemen yang memiliki posisi relatif.
Dan terakhir ada yang diperbaiki. Pemosisian tetap membatasi elemen ke posisi tertentu di viewport, yang tetap di tempatnya selama pengguliran:
Anda juga dapat mengamati perilaku bahwa elemen dengan posisi tetap tidak menyebabkan scroll karena tidak dianggap terikat oleh viewport:
Sedangkan elemen yang diposisikan secara mutlak masih terikat oleh viewport dan akan menyebabkan pengguliran:
..kecuali tentu saja elemen induk Anda gunakan overflow: ?
untuk menentukan perilaku scroll (jika ada).
Dengan pemosisian absolut dan pemosisian tetap, elemen diambil dari aliran HTML.
static
dan relative
elemen adalah sama, kecuali dengan yang terakhir Anda dapat memposisikan ulang relatif ke posisi aslinya , bukan ke elemen yang memuatnya - di situlah tempatnya absolute
. Juga, seperti elemen apa pun yang diposisikan menggunakan nilai selain static
yang dapat Anda gunakan z-index
.
position: static;
alih-alih hanya menggantinya dengan position: relative;
secara default? Jika seseorang tidak ingin memposisikan item selain top: 0;
dan left: 0;
kemudian jangan melakukannya, bukan? Apakah ada alasan yang mendasari mengapa position: static;
masih diperlukan sebagai bagian dari CSS?
Anda dapat melihat gambaran umum sederhana di sini: W3School
Juga, jika saya ingat dengan benar, ketika mendeklarasikan relatif elemen, secara default akan tetap di tempat yang sama seperti yang seharusnya, tetapi Anda mendapatkan kemampuan untuk benar-benar memposisikan elemen di dalamnya secara relatif ke elemen ini, yang menurut saya sangat berguna di masa lalu.
Sebagai jawaban atas "mengapa CSS masih mengimplementasikan position: static;" dalam satu scenerio, menggunakan position: relative untuk induk dan position: absolute untuk anak membatasi lebar penskalaan anak. Dalam sistem menu horizontal, di mana Anda bisa memiliki 'kolom' link, menggunakan 'width: auto' tidak bekerja dengan orang tua relatif. Dalam hal ini, mengubahnya menjadi 'statis' akan memungkinkan lebar menjadi variabel yang bergantung pada konten di dalamnya.
Saya menghabiskan beberapa jam bertanya-tanya mengapa saya tidak bisa menyesuaikan wadah saya berdasarkan jumlah konten di dalamnya. Semoga ini membantu!
Posisi relatif memungkinkan Anda menggunakan atas / bawah / kiri / kanan untuk penentuan posisi. Statis tidak akan membiarkan Anda melakukan ini kecuali Anda menggunakan parameter margin. Ada perbedaan antara Top dan margin-top.
Anda tidak perlu menggunakan statis seperti defaultnya
Posisi relatif relatif terhadap aliran normal. Posisi relatif elemen itu (dengan offset) adalah relatif terhadap posisi di mana elemen tersebut akan normal jika tidak dipindahkan.
Matthew Abbott punya jawaban yang sangat bagus.
Mutlak dan barang-barang diposisikan relatif taat top
, left
, right
dan bottom
perintah (offset) di mana statis diposisikan item tidak.
Item yang diposisikan secara relatif memindahkan offset dari tempatnya biasanya di html.
Item yang diposisikan absolut memindahkan offset dari dokumen atau elemen yang diposisikan relatif berikutnya ke atas pohon DOM.
statis dan relatif adalah atribut posisi. relatif digunakan untuk banyak kegunaan. Tidak untuk satu pun. Namun perlu diingat bahwa statis dan relatif tidak membahayakan aliran dokumen normal Html. static adalah posisi default ketika Anda menulis elemen apa pun ke Html. Jika sebuah elemen memiliki posisi relatif, elemen itu dapat diposisikan relatif terhadap tempat asalnya. Jika Anda ingin mengatur elemen dari ruang kecil, gunakan relative position sehingga Anda tidak perlu menambahkan margin, padding, dll jika elemen tersebut memiliki posisi relative dan memiliki elemen turunan. Di sini kita bisa melakukan pengukuran relatif terhadap induknya. Jika Anda menambahkan lebar 10% ke anak, itu berarti (lebar + bantalan) x10%. Tetapi Anda tidak menambahkan kata kunci relatif, Anda mendapatkan lebarx10%. Selain itu, penggunaan kerabat yang paling penting adalah; Anda dapat memposisikan elemen apa pun di atasnya.
position: relative
, dan Anda tidak pernah mengetikposition: static
:)