Saya menggunakan visibility:hidden
untuk menyembunyikan elemen-elemen tertentu, tetapi mereka masih mengambil ruang di halaman sambil disembunyikan.
Bagaimana saya bisa membuat mereka benar-benar menghilang secara visual, seolah-olah mereka tidak ada di DOM sama sekali (tetapi tanpa benar-benar menghapusnya dari DOM)?
offsetTop
, dandisplay:none
akan menetapkanoffsetTop
ke 0. Solusi saya di sini adalah menggunakanvisibility: hidden
lalu mengatur lebar dan tinggi menjadi 0. Setelah saya perlu membuat elemen terlihat lagi, saya menghapus tiga atribut menggunakan Javascript. Sedikit solusi hacky, tetapi ini bekerja dengan baik untuk hampir semua kasus penggunaan.Jawaban:
Coba pengaturan
display:none
untuk menyembunyikan dan mengaturdisplay:block
untuk ditampilkan.sumber
display: block
, beberapa harus diatur kedisplay: inline
(seperti<span>
atau<a>
atau<img>
elemen DOM).hidden
dengandisplay: none
. Tambahkan kelas ke elemen untuk menyembunyikannya, hapus itu tunjukkan. Saat menghapusnya,display
properti dikembalikan ke elemen default.gunakan gaya bukan suka
sumber
Menggunakan
display:none
adalah pilihan yang baik hanya untuk menghapus elemen TETAPI itu juga akan dihapus untuk pembaca layar . Ada juga diskusi jika efek SEO. Ada artikel pendek yang bagus tentang topik itu di A List ApartJika Anda benar-benar hanya ingin menyembunyikan dan tidak menghapus elemen, gunakan lebih baik:
Seperti ini dapat juga dibaca oleh pembaca layar.
Satu-satunya kelemahan dari metode ini adalah, DIV ini benar-benar dirender dan mungkin mempengaruhi kinerja , terutama pada ponsel.
sumber
visibility: hidden;
, katakanlah Anda memiliki elemen absolut lainnya yang tidak akan memiliki konflik untuk ruang, hanya konflikz-index
. Hanya untuk menyembunyikan elemen saya akan pergi denganvisibility
Lihat, alih-alih menggunakan
visibility: hidden;
gunakandisplay: none;
. Opsi pertama akan bersembunyi tetapi masih membutuhkan ruang dan opsi kedua akan bersembunyi dan tidak memakan ruang.sumber
Jawaban untuk pertanyaan ini adalah mengatakan untuk menggunakan tampilan: tidak ada dan menampilkan: blok, tetapi ini tidak membantu bagi seseorang yang mencoba menggunakan transisi css untuk menampilkan dan menyembunyikan konten menggunakan properti visibilitas.
Ini juga membuatku gila, karena menggunakan display membunuh transisi css.
Salah satu solusinya adalah menambahkan ini ke kelas yang menggunakan visibilitas:
Agar ini berfungsi tergantung pada tata letak, tetapi harus menyimpan konten kosong di dalam div tempatnya.
sumber
Cerita tentang
display:none
danvisibility: hidden
visibility:hidden
berarti tag tidak terlihat, tetapi ruang dialokasikan untuk itu pada halaman.display:none
berarti sepenuhnya menyembunyikan elemen dengan ruangnya. (meskipun Anda masih dapat berinteraksi dengannya melalui DOM)sumber
display:none
untuk menyembunyikan dan mengaturdisplay:block
untuk ditampilkan.sumber
as though they are not in the DOM at all (but without actually removing them from the DOM)
visibility: hidden
hanya menghentikan tampilan konten tetapi masih menggunakan ruang vertikal / horizontal, tampilan: tidak ada yang menghilangkan ruang vertikal / horizontal untuk elemen.Beralih
display
tidak memungkinkan untuk transisi CSS yang lancar. Alih-alih beralih baik ituvisibility
danmax-height
.sumber
transform: translateX(-100%)
. Kami tidak ingindisplay: none
inilah cara lain untuk mengembalikannya: tidak ada. jangan gunakan tampilan: blok / sebaris dll. Sebaliknya (jika menggunakan javascript) atur tampilan properti css ke '' (mis. kosong)
sumber
ini menyembunyikan konten dan juga tidak meninggalkan ruang kosong.
sumber
di atas pengetahuan saya adalah mungkin dalam 4 cara
<button style="display:none;"></button>
#buttonId{ display:none; }
$('#buttonId').prop('display':'none');
&$("#buttonId").css('opacity', 0);
sumber
display: tidak ada yang terbaik untuk menghindari ruang kosong pada halaman
sumber
Gunakan
!important
jika Anda terpaksa mengganti gaya CSS yang ada.sumber