Styling the Base Template

#controllers/index.py
from flask import render_template
from flask_classful import FlaskView, route
 
class Index(FlaskView):
  def __init__(self):
    super().__init__()
 
  @route('/')
  def index(self):
    return render_template('index.html', data={'siteTitle':'ទូរទស្សន៍​យើង'})
<!--templates/base.html-->
<!DOCTYPE html>
<html>
  <head>
    {% block head %}
    <meta charset="UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title>{{data['siteTitle']}}</title>
    <script src="/static/scripts/jQuery.js"></script>
    <script src='/static/scripts/base.js'></script>
    <link href="/static/styles/base.css" rel="stylesheet">
    <link href="/static/fonts/setup.css" rel='stylesheet'>
    <link href="/static/images/site_logo.png" rel="icon">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    {% endblock %}
  </head>
  <body>
    <section>
    {% block header %}
    <nav id='menu'>
      <div class="menu-outer region">
        <div id="logo">
          <a href="/"><img src="/static/images/site_logo.png" /></a>
          <a href="/">{{ data['siteTitle'] }}</a>
        </div>
        <div class="topnav " id="myTopnav">
          <a href="#">ព័ត៌មាន</a>
          <a href="#">កំសាន្ត</a>
          <a href="#">កីឡា</a>
          <a href="#">រឿងភាគ</a>
          <a href="javascript:void(0);" class="icon" onclick="myFunction()">
            <i class="fa fa-bars"></i>
          </a>
        </div>
        <form id="search">
          <input type="text" placeholder="Search" required />
          <input type="submit" value="ស្វែងរក" />
        </form>
      </div>
      <script>
        function myFunction() {
          var x = document.getElementById("myTopnav");
          if (x.className === "topnav") {
            x.className += " responsive";
          } else {
            x.className = "topnav";
          }
        }
      </script>
    </nav>
    {% endblock %}
    </section>

    <section id="main" class="main region">
      {% block main %}
      <div id="content">
      {% block content %}
        Content
      {% endblock %}
      </div>
      <div id="sidebar">
      {% block sidebar %}
        Sidebar
      {% endblock %}
      </div>
      {% endblock %}
    </section>

    <section id="footer" class="footer region">
      {% block footer %}
      &copy; Copyright 2020 by <a href="https://www.khmerweb.app/">Khmer Web</a>
      <script></script>
      {% endblock %}
    </section>
  </body>
</html>
/*static/styles/base.css*/
*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
a{
  text-decoration: none;
  color: orange;
}
a:hover{
  opacity: .7;
}
.region{
  max-width: 1200px;
  margin: 0 auto;
}
body{
  font: 14px/1.5 Vidaloka, OdorMeanChey;
  background: rgb(22, 22, 22);
  color: white;
}
#menu{
  background: rgb(48, 48, 48);
}
.menu-outer{
  display: grid;
  grid-template-columns: 25% auto 20%;
  align-items: center;
}
.menu-outer #logo{
  display: grid;
  grid-template-columns: 50px auto;
  align-items: center;
  grid-gap: 5px;
  font: 26px/1.5 Oswald, Moul;
}
.menu-outer #logo img{
  width: 100%;
}
.menu-outer #search{
  text-align: right;
  display: grid;
  grid-template-columns: auto 25%;
  
}
.menu-outer #search input{
  font: 14px/1.5 Vidaloka, OdorMeanChey;
  padding: 0 5px;
  
}
/* Add a black background color to the top navigation */
.topnav {
  background-color: #333;
  overflow: hidden;
}

/* Style the links inside the navigation bar */
.topnav a {
  float: left;
  display: block;
  text-align: center;
  padding: 14px 16px;
  font: 16px/1.5 Oswald, Bayon;
}

/* Add an active class to highlight the current page */
.topnav a.active {
  color: orangered;
}

/* Hide the link that should open and close the topnav on small screens */
.topnav .icon {
  display: none;
}

@media screen and (max-width: 600px) {
  .topnav a:not(:first-child) {display: none;}
  .topnav a.icon {
    float: right;
    display: block;
  }
}

@media screen and (max-width: 600px) {
  .topnav.responsive {position: relative;}
  .topnav.responsive a.icon {
    position: absolute;
    right: 0;
    top: 0;
  }
  .topnav.responsive a {
    float: none;
    display: block;
    text-align: left;
  }
}
@media only screen and (max-width: 600px){
  .menu-outer{
    grid-template-columns: 100%;
    padding: 10px;
  }
}

GitHub: "https://github.com/Sokhavuth/ETV
Heroku: https://khmerweb-etv.herokuapp.com/

Comments

Popular posts from this blog