Search code examples
htmlcssposition

How to place main method to the top of the screen


The problem that I am having is that anything that I type in the <main> tag starts in the center of the screen, but I need the <main>tag for the animation on the navbar. Does anybody know how to fix this?

This is one of my very first 'projects' and am interested if anybody could help me out with making it secure as well. =)

(function() {

  var nav = $('nav'),
      menu = $('nav h1'),
      main = $('main'),
      open = false,
      hover = false;

    menu.on('click', function() {
    open = !open ? true : false;
      nav.toggleClass('menu-active');
      main.toggleClass('menu-active');
      nav.removeClass('menu-hover');
      main.removeClass('menu-hover');
      console.log(open);
  });

    menu.hover( 
      function() {
        if (!open) {
          nav.addClass('menu-hover');
          main.addClass('menu-hover');
        }
      },
      function() {
        nav.removeClass('menu-hover');
        main.removeClass('menu-hover');
      }
    );

})();
	   div{
	   	color: white;
	   }

	   html, body{
	height: 100%;
    }

    *{
	box-sizing: border-box;
	margin: 0;
  	padding: 0;
  	}

    body{
	background: #353441;
	font-family: tahoma;
	line-height: 1.7;
	perspective-origin: 0% 50%;
	perspective: 800px;
  	}

  	main{
	margin-top: 0;
  	}

  	nav,main{
	transition: transform 150ms ease-out;
  	}

  	nav{
	z-index: 100;
	position: absolute;
	top: 0;
	left: 0;
	bottom: 0;
	width: 16em;
	background-color: #353441;
	transform: translateX(-16em);
  	}

  	nav.menu-active{
	transform: translateX(0);
  	}
  	
  	nav.menu-hover{
	transform: translateX(-15em);
  	}

  	nav h1{
	z-index: 100;
	display: block;
	position: absolute;
	top: 0;
	right: -65px;
	height: 60px;
	width: 65px;
	line-height: 60px;
	font-size: .8em;
	font-weight: 300;
	letter-spacing: 1px;
	color: white;
	text-transform: uppercase; 
	text-align: center;
	background-color: #353441; 
	cursor: pointer;
  	}

  	nav h1:hover{
	color: white;
  	}

  	nav ul{
	margin: 0;
	padding: 0; 
  	}

  	nav li{
	display: inline-block;
	padding: 0 1em;
	width: 100%;
	height: 60px;
	color: #9dc6d1;
	line-height: 60px;
	background-color: #353441;
	transition: all .5s ease-in;
  	}

  	nav li:nth-of-type(2n){
	background-color: #3a3947;
  	}

  	nav li:hover{
	background: orangered;
	color: white;
  	}

  	main{
	z-index: 0;
	position: absolute;
	top: 0;
	left: 0;
	bottom: 0;
	right: 0;
	display: flex;
	align-items: center;
	overflow: hidden; 
  	}

  	main:after{
	content: '';
	display: block;
	position: absolute;
	z-index: 1;
	top: 0;
	left: 0;
	bottom: 0;
	right: 0;
	background: linear-gradient(to right, transition, rgba(33,33,45,.5));
	visibility: hidden;
	opacity: 0;
	transition: opacity 150ms ease-out, visibility 0s 150ms;
  	}

  	main.menu-active{
	border-radius: 0.001px;
	transform: translateX(16em) rotateY(15deg);
  	}

  	main.menu-active:after{
	visibility: visible;
	opacity: 1;
	transition: opacity 150ms ease-out, visibility 0s;
  	}

  	main.menu-hover{
	border-radius: 0.001px;
	transform: translateX(1em) rotateY(1deg); 
  	}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


		<!--Navigation Bar-->

		<nav class="menu-activea">
			<h1>---</h1>
			<ul>
				<li>Domov</li>
				<li>Majice</li>
				<li>Puloverji</li>
				<li>Skodelice</li>
				<li>Galerija</li>
				<li>O nas</li>
				<li>Kontakt</li>
			</ul>
		</nav>

		<main>

			<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit,   	  	  	 
      sed do eiusmod
			tempor incididunt ut labore et dolore magna aliqua. Ut enim ad   	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 
     minim veniam,
			quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
			consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
			cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
			proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</div>

		</main>


Solution

  • Your main tag is defined with a display of flex and it's aligning the items to the centre. Remove the css align-items: center for the main tag and everything will be pushed to the top:

    (function() {
    
      var nav = $('nav'),
          menu = $('nav h1'),
          main = $('main'),
          open = false,
          hover = false;
    
        menu.on('click', function() {
        open = !open ? true : false;
          nav.toggleClass('menu-active');
          main.toggleClass('menu-active');
          nav.removeClass('menu-hover');
          main.removeClass('menu-hover');
          console.log(open);
      });
    
        menu.hover( 
          function() {
            if (!open) {
              nav.addClass('menu-hover');
              main.addClass('menu-hover');
            }
          },
          function() {
            nav.removeClass('menu-hover');
            main.removeClass('menu-hover');
          }
        );
    
    })();
    div{
    	   	color: white;
    	   }
    
    	   html, body{
    	height: 100%;
        }
    
        *{
    	box-sizing: border-box;
    	margin: 0;
      	padding: 0;
      	}
    
        body{
    	background: #353441;
    	font-family: tahoma;
    	line-height: 1.7;
    	perspective-origin: 0% 50%;
    	perspective: 800px;
      	}
    
      	main{
    	margin-top: 0;
      	}
    
      	nav,main{
    	transition: transform 150ms ease-out;
      	}
    
      	nav{
    	z-index: 100;
    	position: absolute;
    	top: 0;
    	left: 0;
    	bottom: 0;
    	width: 16em;
    	background-color: #353441;
    	transform: translateX(-16em);
      	}
    
      	nav.menu-active{
    	transform: translateX(0);
      	}
      	
      	nav.menu-hover{
    	transform: translateX(-15em);
      	}
    
      	nav h1{
    	z-index: 100;
    	display: block;
    	position: absolute;
    	top: 0;
    	right: -65px;
    	height: 60px;
    	width: 65px;
    	line-height: 60px;
    	font-size: .8em;
    	font-weight: 300;
    	letter-spacing: 1px;
    	color: white;
    	text-transform: uppercase; 
    	text-align: center;
    	background-color: #353441; 
    	cursor: pointer;
      	}
    
      	nav h1:hover{
    	color: white;
      	}
    
      	nav ul{
    	margin: 0;
    	padding: 0; 
      	}
    
      	nav li{
    	display: inline-block;
    	padding: 0 1em;
    	width: 100%;
    	height: 60px;
    	color: #9dc6d1;
    	line-height: 60px;
    	background-color: #353441;
    	transition: all .5s ease-in;
      	}
    
      	nav li:nth-of-type(2n){
    	background-color: #3a3947;
      	}
    
      	nav li:hover{
    	background: orangered;
    	color: white;
      	}
    
      	main{
    	z-index: 0;
    	position: absolute;
    	top: 0;
    	left: 0;
    	bottom: 0;
    	right: 0;
    	display: flex;
    	/* align-items: center; */
    	overflow: hidden; 
      	}
    
      	main:after{
    	content: '';
    	display: block;
    	position: absolute;
    	z-index: 1;
    	top: 0;
    	left: 0;
    	bottom: 0;
    	right: 0;
    	background: linear-gradient(to right, transition, rgba(33,33,45,.5));
    	visibility: hidden;
    	opacity: 0;
    	transition: opacity 150ms ease-out, visibility 0s 150ms;
      	}
    
      	main.menu-active{
    	border-radius: 0.001px;
    	transform: translateX(16em) rotateY(15deg);
      	}
    
      	main.menu-active:after{
    	visibility: visible;
    	opacity: 1;
    	transition: opacity 150ms ease-out, visibility 0s;
      	}
    
      	main.menu-hover{
    	border-radius: 0.001px;
    	transform: translateX(1em) rotateY(1deg); 
      	}
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    
    		<!--Navigation Bar-->
    
    		<nav class="menu-activea">
    			<h1>---</h1>
    			<ul>
    				<li>Domov</li>
    				<li>Majice</li>
    				<li>Puloverji</li>
    				<li>Skodelice</li>
    				<li>Galerija</li>
    				<li>O nas</li>
    				<li>Kontakt</li>
    			</ul>
    		</nav>
    
    		<main>
    
    			<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit,   	  	  	 
          sed do eiusmod
    			tempor incididunt ut labore et dolore magna aliqua. Ut enim ad   	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 
         minim veniam,
    			quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
    			consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
    			cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
    			proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</div>
    
    		</main>