fix(learn): implemented responsive header for mobile devices (#17467)
This commit is contained in:
committed by
mrugesh mohapatra
parent
b5adcf2084
commit
90747a8000
@ -17,7 +17,7 @@ function NavLogo() {
|
||||
) : (
|
||||
<img
|
||||
alt='learn to code at freeCodeCamp logo'
|
||||
className='nav-logo logo'
|
||||
className='nav-logo logo-glyph'
|
||||
src={fCCglyph}
|
||||
/>
|
||||
)
|
||||
|
@ -15,6 +15,7 @@
|
||||
border-color: #f1a02a;
|
||||
color: #292f33 !important;
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
|
||||
height: auto;
|
||||
}
|
||||
.signup-btn:hover,
|
||||
.signup-btn:focus {
|
||||
|
@ -7,7 +7,7 @@ header {
|
||||
|
||||
#top-nav {
|
||||
background: #006400;
|
||||
height: 38px;
|
||||
height: 40px;
|
||||
margin-bottom: 0px;
|
||||
border-radius: 0;
|
||||
border: none;
|
||||
@ -16,12 +16,6 @@ header {
|
||||
padding: 0 30px 0 15px;
|
||||
}
|
||||
|
||||
@media screen, (max-width: 630px) {
|
||||
#top-nav {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
#top-nav .home-link {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@ -39,6 +33,7 @@ header {
|
||||
margin: 0;
|
||||
list-style: none;
|
||||
justify-content: space-around;
|
||||
background-color: #006400;
|
||||
}
|
||||
|
||||
#top-right-nav a,
|
||||
@ -81,6 +76,11 @@ header {
|
||||
color: #006400;
|
||||
}
|
||||
|
||||
li.user-state-link {
|
||||
position: relative;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
li.user-state-link,
|
||||
li.user-state-link:hover,
|
||||
li.user-state-link:focus,
|
||||
@ -121,3 +121,73 @@ li.user-state-link > a:focus {
|
||||
.ais-Hits {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.mobile-menu {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
background-color: #006400;
|
||||
color: #fff;
|
||||
margin-top: -40px;
|
||||
height: 40px;
|
||||
z-index: 300;
|
||||
}
|
||||
|
||||
.mobile-menu .menu-button {
|
||||
margin: 0 20px 0 12px;
|
||||
padding: 2px 14px;
|
||||
border: 1px solid #fff;
|
||||
border-radius: 3px;
|
||||
cursor: pointer;
|
||||
justify-self: flex-end;
|
||||
}
|
||||
|
||||
.header-search {
|
||||
position: relative;
|
||||
top: 2px;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.mobile-menu .header-search {
|
||||
top: -1px;
|
||||
}
|
||||
|
||||
@media (max-width: 734px) {
|
||||
#top-nav {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.opened #top-right-nav {
|
||||
transform: translate(0, 40px);
|
||||
padding-bottom: 10px;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
#top-right-nav {
|
||||
transform: translate(0, -300px);
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
min-height: 180px;
|
||||
margin: 0;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
#top-right-nav li:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.mobile-menu img {
|
||||
margin: 0 0 0 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 420px) {
|
||||
.mobile-menu img {
|
||||
margin: 0 0 0 5px;
|
||||
}
|
||||
|
||||
.mobile-menu .menu-button {
|
||||
margin: 0 10px 0 4px;
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
import React from 'react';
|
||||
import React, { Component, Fragment } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Link } from 'gatsby';
|
||||
import Media from 'react-media';
|
||||
import FCCSearch from 'react-freecodecamp-search';
|
||||
|
||||
import NavLogo from './components/NavLogo';
|
||||
@ -8,43 +9,89 @@ import UserState from './components/UserState';
|
||||
|
||||
import './header.css';
|
||||
|
||||
function Header({ disableSettings }) {
|
||||
return (
|
||||
<header>
|
||||
<nav id='top-nav'>
|
||||
<Link className='home-link' to='/'>
|
||||
<NavLogo />
|
||||
</Link>
|
||||
{disableSettings ? null : <FCCSearch />}
|
||||
<ul id='top-right-nav'>
|
||||
<li>
|
||||
<Link to='/learn'>Curriculum</Link>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
class Header extends Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
isMenuOpened: false
|
||||
};
|
||||
this.toggleClass = this.toggleClass.bind(this);
|
||||
}
|
||||
|
||||
toggleClass() {
|
||||
this.setState({
|
||||
isMenuOpened: !this.state.isMenuOpened
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
const { disableSettings } = this.props;
|
||||
return (
|
||||
<header className={this.state.isMenuOpened ? 'opened' : null}>
|
||||
<nav id='top-nav'>
|
||||
|
||||
<Media query='(min-width: 735px)'>
|
||||
<Fragment>
|
||||
<Link className='home-link' to='/'>
|
||||
<NavLogo />
|
||||
</Link>
|
||||
{disableSettings
|
||||
? null
|
||||
: <div className="header-search">
|
||||
<FCCSearch />
|
||||
</div>
|
||||
}
|
||||
</Fragment>
|
||||
</Media>
|
||||
|
||||
<ul id='top-right-nav'>
|
||||
<li>
|
||||
<Link to='/learn'>Curriculum</Link>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href='/forum'
|
||||
rel='noopener noreferrer'
|
||||
target='_blank'
|
||||
>
|
||||
Forum
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
Forum
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href='/news'
|
||||
rel='noopener noreferrer'
|
||||
target='_blank'
|
||||
>
|
||||
News
|
||||
</a>
|
||||
</li>
|
||||
<li className='user-state-link'>
|
||||
<UserState disableSettings={disableSettings} />
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
);
|
||||
News
|
||||
</a>
|
||||
</li>
|
||||
<li className='user-state-link'>
|
||||
<UserState disableSettings={disableSettings} />
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<Media query='(max-width: 734px)'>
|
||||
<div className="mobile-menu">
|
||||
<Link className='home-link' to='/'>
|
||||
<NavLogo />
|
||||
</Link>
|
||||
{disableSettings
|
||||
? null
|
||||
: <div className="header-search">
|
||||
<FCCSearch />
|
||||
</div>
|
||||
}
|
||||
<span className="menu-button" onClick={this.toggleClass}>
|
||||
Menu
|
||||
</span>
|
||||
</div>
|
||||
</Media>
|
||||
|
||||
</header>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Header.propTypes = {
|
||||
|
@ -2,6 +2,7 @@
|
||||
max-height: 100%;
|
||||
height: 70px;
|
||||
font-size: 40px;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.big-heading {
|
||||
|
@ -95,7 +95,7 @@
|
||||
|
||||
@media (max-width: 400px) {
|
||||
.fcc_searchBar .ais-Hits {
|
||||
width: 80%;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@ -150,7 +150,7 @@
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
@media (min-width: 735px) {
|
||||
.logo-glyph {
|
||||
display: none;
|
||||
}
|
||||
|
Reference in New Issue
Block a user