Header Component
import React from 'react'; import './header.scss'; import utility from '../utility'; class Header extends React.Component{ constructor(props){ super(props); this.state = {}; } async fetchAPI(){ let url = '/api'; try{ let res = await fetch(url); return await res.json(); }catch(error){ console.log(error); } } mobielMenu = () => { var x = document.getElementById("myTopnav"); if (x.className === "topnav") { x.className += " responsive"; } else { x.className = "topnav"; } } async componentDidMount(){ this.setState(await this.fetchAPI()); document.title = this.state.siteTitle; utility.clock(); const options = {weekday: 'long', year: 'numeric', month: 'long', day: 'numeric'}; document.getElementById('date').innerHTML = (new Date()).toLocaleDateString('en-US', options); } render(){ return( <div className="header"> <section id="header"> <div className="top-menu-outer"> <div className="top-menu region"><span id="date"></span><span id="kh-clock" className="time">time</span></div> </div> <div className="title-outer"> <h1 className="site-title region"> <span><a href="/" >{this.state.siteTitle}</a></span> <img className="news" alt="" src={'/images/newspaper.png'} /> <span><img alt="" className="tvlive" src={'/images/livetv.png'}/></span> </h1> </div> </section> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"></link> <div className="main-menu-outer"> <nav className='main-menu region'> <div className="topnav" id="myTopnav"> <a id="house" href="/" className="active"><img alt="" src="/images/house.png" /></a> <a href="#news">News</a> <a href="#contact">Contact</a> <a href="#about">About</a> <a href="/admin">Login</a> <a onClick={(e) => {e.preventDefault()}} className="icon" onClick={()=>this.mobielMenu()}> <i className="fa fa-bars"></i> </a> </div> </nav> </div> </div> ); } } export default Header;
*{ padding:0; margin:0; box-sizing: border-box; } body{ font:14px Vidaloka; } a{ color:#e20000; text-decoration: none; } a:hover{ opacity:.7; } .region{ max-width: 1100px; margin:0 auto; } #header{ background:#e20000; color:white; .top-menu-outer{ padding:5px 0; border-bottom: 5px solid black; } .top-menu{ display: grid; grid-template-columns: auto auto; text-align:left; align-items: center; .time{ text-align: right; } } .title-outer{ background: #3d3d3d; padding: 10px 0; } .site-title{ display: grid; grid-template-columns:auto auto auto; text-align:left; align-items: center; font:55px/1.75 PirataOne; text-shadow:0px 0px 0 rgb(231,231,231), 1px 1px 0 rgb(216,216,216), 2px 2px 0 rgb(202,202,202), 3px 3px 0 rgb(187,187,187), 4px 4px 0 rgb(173,173,173), 5px 5px 0 rgb(158,158,158), 6px 6px 0 rgb(144,144,144), 7px 7px 6px rgba(0,0,0,0.6), 7px 7px 1px rgba(0,0,0,0.5), 0px 0px 6px rgba(0,0,0,.2); a{ color:white; } img{ width: 150px; } .tvlive{ float: right; } .news{ margin: 0 auto; width:120px; } } } .main-menu-outer{ background: black; position: -webkit-sticky; position: sticky; top: 0; z-index: 999; } .topnav { background-color:transparent; overflow: hidden; a { float: left; display: block; color: #f2f2f2; text-align: center; padding: 12px 16px; text-decoration: none; font: 16px/1.5 Oswald, Bayon; } #house{ padding-top:0; padding-bottom:10px; img{ width: 40px; position: relative; top:5px; } } a:hover { background-color:rgb(34, 34, 34); } a.active { background-color: rgb(46, 46, 46); color: white; } .icon { display: none; } } @media only screen and (max-width:600px){ #header{ .top-menu{ padding: 0 10px; grid-template-columns: 100%; span, .time{ text-align:center; } } .site-title{ grid-template-columns:100%; text-align:center; .tvlive{ float: none; } .news{ margin: 10px auto; } } } } @media screen and (max-width: 600px) { .topnav{ a:not(:first-child) { display: none; } a.icon { float: right; display: block; } } } @media screen and (max-width: 600px) { .topnav.responsive { position: relative; a.icon { position: absolute; right: 0; top: 0; } a { float: none; display: block; text-align: left; } } }
class Utility{ clock(){ var period = 'AM'; var today = new Date(); var h = today.getHours(); if(h>12){ h = h-12; period = 'PM'; } var m = today.getMinutes(); var s = today.getSeconds(); m = utility.checkTime(m); s = utility.checkTime(s); document.getElementById('kh-clock').innerHTML = h + " : " + m + " : " + s+' '+period; setTimeout(utility.clock, 500); } checkTime(i) { if (i < 10){i = "0" + i}; return i; } }//end class const utility = new Utility(); export default utility;
GitHub: "https://github.com/Sokhavuth/emultimedia
Heroku: https://khmerweb-emultimedia.herokuapp.com/
Comments
Post a Comment