Код тебе писать никто не будет, только подскажут, как сделать это самому.
В данном случае алгоритм примерно один - делаешь две функции openMenu и closeMenu. Вешаешь обработчик на кнопку и при нажатии вызываешь openMenu. Вешаешь обработчик на само меню и ловишь клики на ссылки и крестик, при таком клике вызываешь closeMenu.
Для закрытия при нажатии вне менюшки - два основных варианта: либо, как уже сказали, делаешь для менюшки фон(можно добавить затенение) и при клике на этот фон закрываешь меню. Либо вешаешь третий обработчик на body и ловишь клики вне меню и закрываешь меню при таком клике.
Обработчик на body будет довольно медленным, поскольку будет запускаться при каждом клике на странице и проверять, был ли клик внутри меню.