docsifyjs / docsify

🃏 A magical documentation site generator.
https://docsify.js.org
MIT License
27.57k stars 5.67k forks source link

option to specify screen width at which point navbar is merged into sidebar #1272

Open trusktr opened 4 years ago

trusktr commented 4 years ago

Feature request

The existing mergeSidebar option is nifty: it allows you to merge the navbar into the sidebar for smaller screens, otherwise it won't look right.

However, the navbar can still look funky at certain sizes that are bigger than the mobile size (768px and up).

For example:

bad-navbar

What problem does this feature solve?

An option would prevent cases when the navbar doesn't fit well at the top, even if the screen width is bigger than mobile.

What does the proposed API look like?

A new option (maybe something like mergeNavbarAtWidth) would allow us to specify a width at which the navbar should be merged.

How should this be implemented in your opinion?

We need to update the mergeNavbar feature to operate at runtime any time the width of the Docsify app is updated, instead of only at the beginning. Then, we need to merge the navbar when the width is below the specified size in the mergeNavbarAtWidth option.

We need to make this operate on resizes because people may resize their window.

At the moment, the merging only happens once initially, but if we resize our window from desktop size to mobile size then the navbar will not be merged. In this video I shrink my window and the menu does not get merged:

no-merge

If you visit the site on your mobile phone (https://lume.io/docs), or do a refresh when your desktop browser window is on mobile size, then you will see the menu inside of the sidebar like the following:

mobile-menu

Are you willing to work on this yourself?

trusktr commented 4 years ago

More examples from the showcase that look bad in smaller windows:

navbar-covers-sidebar Screenshot from 2020-07-05 18-54-26