visibility:hidden скрывает элемент, но по-прежнему занимает место в макете.
display:none удаляет элемент из документа. Не занимает места.