body { color: #777; } :root { --leftPanel: 150px; --negativeLeftPanel: -150px; --mobileLeftPanel: 150px; --mobileNegativeLeftPanel: -150px; } .pure-img-responsive { max-width: 100%; height: auto; } /* Add transition to containers so they can push in and out. */ #layout, #menu, .menu-link { -webkit-transition: all 0.2s ease-out; -moz-transition: all 0.2s ease-out; -ms-transition: all 0.2s ease-out; -o-transition: all 0.2s ease-out; transition: all 0.2s ease-out; } /* This is the parent `
` that contains the menu and the content area. */ #layout { position: relative; left: 0; padding-left: 0; &.active { & .menu-link { left: var(--leftPanel); } & #menu { left: var(--leftPanel); width: var(--leftPanel); } } } /* The `#menu` `
` is the parent `
` that contains the `.pure-menu` that appears on the left side of the page. */ #menu { margin-left: var(--negativeLeftPanel); /* "#menu" width */ width: var(--leftPanel); position: fixed; top: 0; left: 0; bottom: 0; z-index: 1000; /* so the menu or its navicon stays above all content */ background: #191818; overflow-y: auto; -webkit-overflow-scrolling: touch; //All anchors inside the menu should be styled like this. & a { color: #999; border: none; padding: 0.6em 0 0.6em 0.6em; } //Remove all background/borders, since we are applying them to #menu. & .pure-menu, & .pure-menu ul { border: none; background: transparent; } //Add that light border to separate items into groups. & .pure-menu ul, & .pure-menu .menu-item-divided { border-top: 1px solid #333; } //Change color of the anchor links on hover/focus. & .pure-menu li a:hover, & .pure-menu li a:focus { background: #333; } //This styles the selected menu item `
  • `. & .pure-menu-selected, & .pure-menu-heading { background: #1f8dd6; } //This styles a link within a selected menu item `
  • `. & .pure-menu-selected a { color: #fff; } //This styles the menu heading. & .pure-menu-heading { font-size: 110%; color: #fff; margin: 0; } } /* -- Dynamic Button For Responsive Menu -------------------------------------*/ /* The button to open/close the Menu is custom-made and not part of Pure. Here's how it works: */ /* `.menu-link` represents the responsive menu toggle that shows/hides on small screens. */ .menu-link { position: fixed; display: block; /* show this only on small screens */ top: 0; left: 0; /* "#menu width" */ background: #000; background: rgba(0,0,0,0.7); font-size: 16px; /* change this value to increase/decrease button size */ z-index: 10; width: min-content; height: auto; padding: 14px; &:hover, &:focus { background: #000; } } /* -- Responsive Styles (Media Queries) ------------------------------------- */ /* Hides the menu at `48em`, but modify this based on your app's needs. */ @media (min-width: 48em) { .header, .content { padding-left: 2em; padding-right: 2em; } #layout { padding-left: var(--leftPanel); /* left col width "#menu" */ left: 0; } #menu { left: var(--leftPanel); } .menu-link { position: fixed; left: var(--leftPanel); display: none; } #layout.active .menu-link { left: var(--leftPanel); } } @media (max-width: 48em) { /* Only apply this when the window is small. Otherwise, the following case results in extra padding on the left: * Make the window small. * Tap the menu to trigger the active state. * Make the window large again. */ #layout.active { position: relative; left: var(--leftPanel); } }