I want to have one canvas for all my scenes, so when I switch between scenes I can destroy specific UI elements in the canvas. Is this possible?

Yes. You can mark the canvas as ‘Dont Destroy on Load’. Then the script managing the UI (which should be on the canvas), turns things on and off with a function of


  void OnSceneLoaded(Scene scene, LoadSceneMode mode)


Excellent, got it working as I wanted. Thanks!