HTML 5 has a local storage feature Check that out.
It's can only store up to 5 meg (on most browsers), If that's not enough you will have no choice to with a native App.
Edit as more info is needed.
Basically there is 2 parts to this:
1) Manifest file This tells the Browser what files need to be stored locally for the web app to work offline. (Basically html and JS files)
So when a user visits your site (while online), the browser sees the manifest file and stores ALL the source files your app need to work in Offline Mode as specified in the Manifest. (of course no server side code can work offline, so this is all html and JS)
Also while your user is online, you save all the data he needs to local storage, any changes made while online needs to be updated your server and Local storage.
When offline, your user has access to all the html and JS he need to run his app, he also has access to the HTMl5 Local storage. He can do what ever he wants (whatever you coded for him to be able to do offline). All updates as saved to the local storge.
Once back online, he visits your site again, you see he made changes offline and you sync up the local storage with the server.
Check out this demo
and read this Entire book