I am creating a project where the navigation bar style changes according to the device type [PC/Mobile] but I don’t know how to change the CSS method
according to this website we can do it but it’s using the old version of react and when I tried in mine then its full of error
So, my code:
I need to animate that <div className="mobileMode">
import React from 'react'; import {Link} from 'react-router-dom'; import "./NavigationStyle.css" function NavigationBar(){ return( <nav> <div className="mobileMode"> <div className="line"></div> <div className="line"></div> <div className="line"></div> </div> <ul> <Link className="navLink" to="/"> <li>Home</li> </Link> <Link className="navLink" to="/myprojects"> <li>Projects</li> </Link> <Link className="navLink" to="/contact"> <li>Contact</li> </Link> </ul> </nav> ) } export default NavigationBar;
and the css part: See I need to animate onClick to that .navLink.open
and that li.fade
I Have got this code from YouTube
// -- Code -- @media screen and (max-width:510px){ // -- Code -- .navLink{ position: fixed; background-color: rgb(44, 44, 44); width: 100%; height: 100vh; flex-direction: column; clip-path: circle(100px at 90% -10%); -webkit-clip-path: circle(100px at 90% -10%); transition: all 1s ease-out; color: rgb(226, 241, 255); } .navLink.open{ clip-path: circle(900px at 90% -10%); -webkit-clip-path: circle(900px at 90% -10%); pointer-events: all; } .navLink li{ opacity: 0; } .navLink li:nth-child(1){ transition: all 0.5s ease 0.2s; } .navLink li:nth-child(2){ transition: all 0.5s ease 0.2s; } .navLink li:nth-child(3){ transition: all 0.5s ease 0.2s; } li.fade{ opacity: 1; } }
whole code is there at: Github
Advertisement
Answer
The problem was where you placed style with the clip-path
option. You have specified for each child .navLink, but must be a parent ul.
I’m did replicate in the sandbox. example
ul { display: flex; height: 100%; justify-content: space-around; align-items: center; margin-left: auto; width: 50%; } @media screen and (max-width: 510px) { ul { display: flex; position: fixed; background-color: rgb(44, 44, 44); width: 100%; height: 100vh; flex-direction: column; clip-path: circle(30px at 95% 2%); -webkit-clip-path: circle(30px at 95% 2%); transition: all 1s ease-out; } ul.open { clip-path: circle(150vh at 90% -10%); -webkit-clip-path: circle(150vh at 90% -10%); pointer-events: all; } }