Jawaban:
The visibilityproperti hanya memberitahu browser apakah akan menampilkan elemen atau tidak. Bisa terlihat ( visible- Anda bisa melihatnya), atau tidak terlihat ( hidden- Anda tidak bisa melihatnya).
The displayproperti memberitahu browser bagaimana untuk menarik dan menunjukkan unsur, jika sama sekali - apakah itu harus ditampilkan sebagai inlineelemen (yaitu mengalir dengan teks dan elemen inline lain) atau blockelemen-tingkat (yaitu memiliki tinggi dan lebar sifat yang Anda dapat mengatur, itu apung, dll), atau inline-block(yaitu bertindak seperti kotak blok tapi diletakkan inline bukan) dan beberapa orang lain ( list-item, table, table-row, table-cell, flex, dll).
Saat Anda menyetel elemen ke display: blocktetapi juga menyetel visibility: hidden, browser masih memperlakukannya sebagai elemen blok, kecuali Anda tidak melihatnya. Seperti bagaimana Anda menumpuk kotak merah di atas kotak yang tidak terlihat: kotak merah tampak seperti mengambang di udara padahal sebenarnya kotak itu berada di atas kotak fisik yang tidak dapat Anda lihat.
Dengan kata lain, ini berarti elemen dengan displayyang tidak noneakan tetap memengaruhi aliran elemen di halaman, terlepas dari apakah elemen itu terlihat atau tidak. Kotak yang mengelilingi elemen dengan display: noneakan berperilaku seolah-olah elemen itu tidak pernah ada (meskipun tetap di DOM).
display: none;, maka elemen itu dihapus dari DOM? atau apakah saya benar-benar bingung?
visibilitas: tersembunyi;
tampilan: tidak ada;
catatan tambahan:
tampilan: tidak ada; akan menghapus gaya visual / ruang fisik elemen DOM dari DOM, sedangkan visibility: hidden; tidak akan menghapus elemen, tetapi hanya menyembunyikannya. Jadi div yang menempati 300px ruang vertikal di DOM Anda MASIH akan menempati 300px lebar vertikal ketika disetel ke visibility: hidden; tetapi jika disetel ke display: none; gaya visualnya dan ruang yang ditempati disembunyikan dan ruang tersebut kemudian "dibebaskan" karena tidak ada kata yang lebih baik.
[EDIT] - Beberapa waktu yang lalu saya menulis hal di atas, dan apakah saya tidak cukup berpengetahuan atau mengalami hari yang buruk, saya tidak tahu, tetapi kenyataannya adalah, elemen tersebut TIDAK PERNAH dihapus dari hierarki DOM. Semua 'gaya' tampilan level blok sepenuhnya 'tersembunyi' saat menggunakan display: none, sedangkan dengan visibility: hidden; elemen itu sendiri tersembunyi tetapi masih menempati ruang visual di DOM. Saya harap ini membereskan semuanya
display: none akan menghapus elemen dari DOM. Elemennya masih ada, hanya saja tidak ditampilkan .