visibility:hidden залишає елемент у нормальному потоці сторінки, і він все ще займає місце. display:none видаляє елемент із нормального потоку сторінки, що дозволяє іншим елементам заповнити його місце.