瀏覽代碼

webpage layout v2

huaisianhuang 3 年之前
父節點
當前提交
772dc557f0

二進制
web/assets/Description_fixed.png


二進制
web/assets/Description_img.png


二進制
web/assets/Labinaagu.png


二進制
web/assets/alberto-castillo-q-mx4mSkK9zeo-unsplash.jpg


二進制
web/assets/girl1.png


二進制
web/assets/girl2.png


二進制
web/assets/girl3.png


二進制
web/assets/jarek-ceborski-jn7uVeCdf6U-unsplash.jpg


二進制
web/assets/kelsey-dody-mt2QzllH814-unsplash.jpg


二進制
web/assets/patrick-perkins-3wylDrjxH-E-unsplash.jpg


+ 208 - 178
web/index.html

@@ -1,5 +1,10 @@
-<html>
+<!DOCTYPE html>
+<html lang="en">
 <head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <meta http-equiv="X-UA-Compatible" content="ie=edge">
+  <title>AI Spokesgirl Video Generator</title>
 <!-- Font Awesome -->
 <link
   href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css"
@@ -15,22 +20,23 @@
   href="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/3.3.0/mdb.min.css"
   rel="stylesheet"
 />
+<link rel="stylesheet" type="text/css" href="reset.css">
+<link rel="stylesheet" type="text/css" href="main.css">
 <!-- MDB -->
 <script
   type="text/javascript"
   src="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/3.3.0/mdb.min.js"
 ></script>    
 <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
-<script src="echarts.min.js"></script>
 </head>
-<body>
+<body class="color__grey">
 
 <!-- Navbar -->
-<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
+<nav class="navbar navbar-expand-lg navbar-light bg-white">
     <!-- Container wrapper -->
     <div class="container-fluid">
       <!-- Navbar brand -->
-      <a class="navbar-brand" href="#">Googo Website Traffic</a>
+      <a class="navbar-brand" href="#">AI Spokesgirl Video Generator</a>
   
       <!-- Toggle button -->
       <button class="navbar-toggler" type="button" data-mdb-toggle="collapse"
@@ -52,17 +58,15 @@
             </a>
           </li>
           <li class="nav-item text-center mx-2 mx-lg-1">
-            <a class="nav-link" href="http://news.google.com">
+            <a class="nav-link active" aria-current="page" href="https://telegram.org/">
               <div>
-                <i class="fas fa-globe-americas fa-lg mb-1"></i>
-                <span class="badge rounded-pill badge-notification bg-success">11</span>
+                <i class="fab fa-telegram-plane fa-lg mb-1"></i>
               </div>
-              News
+              Telegram
             </a>
           </li>
         </ul>
         <!-- Right links -->
-  
       </div>
       <!-- Collapsible wrapper -->
     </div>
@@ -70,195 +74,221 @@
   </nav>
   <!-- Navbar -->
 
-
-</br>
-
 <div class="container">
   <div class="row">
-    <div class="col-1 col-lg-1"></div>
-
-    <div class="col-sm-11 col-lg-11">
-        <!-- Search form  -->
-
-        <form id="searchform" class="d-flex input-group w-auto" action="http://139.162.121.30:8787/items" method="post">
-          <input type="search" class="form-control" placeholder="Search" aria-label="Domain Name" name="search_query" id="search_query"/>
-          <button class="btn btn-primary" type="button" data-mdb-ripple-color="dark" >
-            Search
-          </button>
-        </form>
-       
-
-
-        <div class="card text-center">
-          <div class="card-header" id="sitename">Website Traffic</div>
-          <div class="card-body">
-            <h5 class="card-title" id="sitetitle"></h5>
-            <p class="card-text" id="descriptions">
-            </p>
-<!--            <a href="#" class="btn btn-primary" id="globalrank2"></a> -->
-          </div>
-
-
-
-
-
-
-          <div class="row">
-            <div class="col-sm-4">
-              <div class="card">
-                <div class="card-body">
-                  <h5 class="card-title">Global Ranks</h5>
-                  <p class="card-text" >
-                  </p>
-                  <a href="#" class="btn btn-primary" id="globalrank"></a>
-                </div>
+    <!-- <div class="col-1 col-lg-1"></div> -->
+    <div class="col-12">
+      <div class="card card__grback mb-5">
+        <div class="card-body card__left">
+        <!-- 根據搜尋內容顯示網站標題及網站內容簡介 -->
+          <h5 class="card-title card__url" id="sitetitle"><i class="fas fa-book-open card__url__icon"></i>如何使用</h5>
+          <div class="d-flex align-items-center justify-content-between">
+            <div class="mr-4 animate_in">
+              <div>
+                <i class="fas fa-exclamation"></i>
+                連結Telegram 帳號
               </div>
+              <a class="btn download" href="https://telegram.org/">下載Telegram</a>
             </div>
-            <div class="col-sm-4">
-              <div class="card">
-                <div class="card-body">
-                  <h5 class="card-title">Country Ranks</h5>
-                  <p class="card-text">
-                  </p>
-                  <a href="#" class="btn btn-primary" id="countryrank"></a>
-                </div>
-              </div>
+            <div class="card-text card__intro animate_in" id="descriptions">
+              <div class="intro_text pl-4"><span class="intro_num">1</span> 選擇人物 </div>
+              <div class="intro_text pl-3"><span class="intro_num">2</span> 選擇背景</div>
+              <div class="intro_text pl-2"><span class="intro_num">3</span> 輸入腳本文字 </div>
+              <div class="intro_text"><span class="intro_num intro_num_last">4</span> 完成</div>
             </div>
-            <div class="col-sm-4">
-              <div class="card">
-                <div class="card-body">
-                  <h5 class="card-title">Category</h5>
-                  <p class="card-text" id="category">
-                  </p>
-<!--                  <a href="#" class="btn btn-primary" ></a>-->
-
-                </div>
+            <div class="d-flex align-items-center animate_in">
+              <div style="width:7rem;height:12rem;">
+                <img src="assets/Labinaagu.png" alt="" style="width:100%;height:100%;">
               </div>
+              <div class="intro__last"><i class="fas fa-check-circle" style="font-size:1.4rem;color: green;display: block;margin-bottom: 1rem;"></i>等待影片連結傳送至手機</div>
             </div>
-
+            <!-- <div><i class="fab fa-youtube youtube__icon"></i></div> -->
           </div>
-
-
-
-
-
-
-          <div class="card-footer text-muted">Global Website Traffic Rankings</div>
+    <!--  <a href="#" class="btn btn-primary" id="globalrank2"></a> -->
         </div>
-
-
-
-
-
-
-    </div>
-  </div>
-
-</div>
-
-
-
-
-<div class="container">
-  <div class="row">
-    <div class="col-1 col-lg-1"></div>
-
-    <div class="col-sm-11 col-lg-11">
-
-      <!--
-      <button type="button" class="btn btn-primary btn-block mb-4 ripple-surface">Place order</button>
--->
-<div id="main" style="width: 650px;height:400px;"></div>
-
-
-
-    </div>
-  </div>
-
-
-
-</div>
-
-
-
-
-
-
+      </div>
+      <!-- Text input Block  -->
+      <div class="text_input animate_fade">
+        <div class="step d-flex align-items-center">
+          <h3 class='step__text'>Step 1</h3>
+          <hr style="width:8rem;border-top:1.5px dotted grey;margin-right:.5rem;">
+          <span>選擇人物</span>
+        </div>
+        <div class='characs d-flex w-100'>
+          <div class="row justify-content-around">
+            <div class="col-sm-12 col-md-4">
+              <input type="radio" id="num1" name="characs" value="num1" checked>
+              <label for="num1"><div class="card characs_fr"><img src="assets/girl1.png" alt=""></div></label>
+            </div>
+            <div class="col-sm-12 col-md-4">
+              <input type="radio" id="num2" name="characs" value="num2">
+              <label for="num2"><div class="card characs_fr"><img src="assets/girl2.png" alt=""></div></label>
+            </div>
+            <div class="col-sm-12 col-md-4">
+              <input type="radio" id="num3" name="characs" value="num3">
+              <label for="num3"><div class="card characs_fr"><img src="assets/girl3.png" alt=""></div></label>
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="text_input animate_fade">
+        <div class="step d-flex align-items-center">
+          <h3 class='step__text'>Step 2</h3>
+          <hr style="width:8rem;border-top:1.5px dotted grey;margin-right:.5rem;">
+          <span>選擇背景</span>
+        </div>
+        <div class='characs d-flex w-100'>
+          <div class="row justify-content-around">
+            <div class="col-sm-12 col-md-3">
+              <input type="radio" id="back1" name="back" value="back1" checked>
+              <label for="back1"><div class="card back_fr"><img src="assets/patrick-perkins-3wylDrjxH-E-unsplash.jpg" alt=""></div></label>
+            </div>
+            <div class="col-sm-12 col-md-3">
+              <input type="radio" id="back2" name="back" value="back2">
+              <label for="back2"><div class="card back_fr"><img src="assets/alberto-castillo-q-mx4mSkK9zeo-unsplash.jpg" alt=""></div></label>
+            </div>
+            <div class="col-sm-12 col-md-3">
+              <input type="radio" id="back3" name="back" value="back3">
+              <label for="back3"><div class="card back_fr"><img src="assets/jarek-ceborski-jn7uVeCdf6U-unsplash.jpg" alt=""></div></label>
+            </div>
+            <div class="col-sm-12 col-md-3">
+              <input type="radio" id="back4" name="back" value="back4">
+              <label for="back4"><div class="card back_fr"><img src="assets/kelsey-dody-mt2QzllH814-unsplash.jpg" alt=""></div></label>
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="text_input animate_fade">
+        <div class="step d-flex align-items-center">
+          <h3 class='step__text'>Step 3</h3>
+          <hr style="width:8rem;border-top:1.5px dotted grey;margin-right:.5rem;">
+          <span>輸入您的專屬影片的腳本文字</span>
+        </div>
+        <form id="searchform" class="d-flex input-group search__form">
+          <textarea form="searchform" class="search__bar" placeholder="輸入腳本文字" aria-label="Domain Name" id="search_query"></textarea>
+          <!-- <button class="btn btn-primary search__btn" type="button" data-mdb-ripple-color="dark" id="search__btn">
+              完成
+          </button> -->
+        </form>
+      </div>
+      <div class="text_input text-center">
+        <button type="submit" class="submit disabled">送出</button>
+      </div>
+      </div>
+      </div>
+      </div>
+    <footer class="footer text-center p-4 bg-white">
+      <div class="text-muted"> © 2021 Copyright: Choozmo. AI Spokesgirl Video Generator</div>
+    </footer>
+    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@10.16.6/dist/sweetalert2.all.min.js"></script>
+    <!-- <script src="//cdn.jsdelivr.net/npm/sweetalert2@10"></script> -->
 <script>
 
-var input = document.getElementById("search_query");
+const input = document.getElementById("search_query");
+const search__btn = document.getElementById("search__btn");
+const submit__btn = document.querySelector('.submit');
+const search__bar = document.querySelector('.search__bar');
+const text_input = document.querySelectorAll('.text_input');
+const animate_in = document.querySelectorAll('.animate_in');
 
-input.addEventListener("keyup", function(event) {
+search__bar.addEventListener('mouseenter', function() {
+  if(search__bar.value) {
+    submit__btn.classList.remove('disabled');
+  }
+});
+search__bar.addEventListener('mouseleave', function() {
+  if(search__bar.value) {
+    submit__btn.classList.remove('disabled');
+  }
+});
+window.addEventListener("scroll", function(){
+  for(let i = 0;i < text_input.length;i++){
+    const scrollPos = window.innerHeight + window.scrollY;
+    if(scrollPos >= text_input[i].offsetTop){
+      text_input[i].classList.add('fade_up');
+    }
+  }
+});
+window.onload = function() {
+  for(let i = 0;i < animate_in.length;i++) {
+    animate_in[i].classList.add('fade_in');
+  }
+}
+
+/* search__btn.addEventListener("click", function(e) {
+  e.preventDefault();
+  check_form();
+}) */
+/* input.addEventListener("keyup", function(event) {
   // Number 13 is the "Enter" key on the keyboard
   if (event.keyCode === 13) {
     check_form();
     event.preventDefault();
 //    document.getElementById("myBtn").click();
   }
-});
-
-        var myChart = echarts.init(document.getElementById('main'));
+}); */
 
-        var option;
-
-function check_form(){
-    var qry=document.getElementById('search_query').value;
-    axios.get('http://www.googo.org:8080/domain/'+qry)
-  .then((response) => {
-    var sitename = document.getElementById('sitename');
-    var sitetitle = document.getElementById('sitetitle');
-    var descriptions=document.getElementById('descriptions');
-    var globalrank=document.getElementById('globalrank');
-    var countryrank=document.getElementById('countryrank');    
-    var category=document.getElementById('category');    
-
-    console.log(response.data);
-//    alert(response.data.SiteName);
-//    var obj = JSON.parse(response.data);
-//    alert(obj);
-    sitename.innerHTML =response.data.SiteName;
-    descriptions.innerHTML=response.data.Description;
-    globalrank.innerHTML=response.data.GlobalRank.Rank;
-    sitetitle.innerHTML=response.data.Title;
-    countryrank.innerHTML=response.data.CountryRank.Rank;
-    category.innerHTML=response.data.Category;
- 
-    var key_ary=[];
-    var val_ary=[];
-    for (const [key, value] of Object.entries(response.data.EstimatedMonthlyVisits)) {
-      key_ary.push(key);
-      val_ary.push(value);
-}
-option = {
-    xAxis: {
-        type: 'category',
-        boundaryGap: false,
-        data: key_ary
-    },
-    yAxis: {
-        type: 'value'
-    },
-    series: [{
-        data: val_ary,
-        type: 'line',
-        areaStyle: {}
-    }]
-};
-
-        myChart.setOption(option);
-
-
-
-    //    sitename.innerHTML =response.data
-
-    console.log(response.status);
-    console.log(response.statusText);
-    console.log(response.headers);
-    console.log(response.config);
+// const myChart = echarts.init(document.getElementById('main'));
+let option;
 
+ submit__btn.addEventListener('click', function(){
+  Swal.fire({
+  icon: 'success',
+  title: '已送出!正在製作影片',
+  text: '等待Telegram訊息通知傳送影片連結,約2分鐘後收到訊息'
   });
-
-  }
+});
+/* function check_form(){
+    const qry = document.getElementById('search_query').value;
+    axios.get('http://www.googo.org:8080/domain/' + qry)
+    .then((response) => {
+      const sitename = document.getElementById('sitename');
+      const sitetitle = document.getElementById('sitetitle');
+      const descriptions = document.getElementById('descriptions');
+      const globalrank = document.getElementById('globalrank');
+      const countryrank = document.getElementById('countryrank');    
+      const category = document.getElementById('category');    
+
+      console.log(response.data); 
+      //    alert(response.data.SiteName);
+      //    var obj = JSON.parse(response.data);
+      //    alert(obj);
+      itename.textContent =response.data.SiteName;
+      descriptions.textContent=response.data.Description;
+      globalrank.textContent=response.data.GlobalRank.Rank;
+      sitetitle.textContent=response.data.Title;
+      countryrank.textContent=response.data.CountryRank.Rank;
+      category.textContent=response.data.Category;
+  
+      const key_ary=[];
+      const val_ary=[];
+      for (const [key, value] of Object.entries(response.data.EstimatedMonthlyVisits)) {
+        key_ary.push(key);
+        val_ary.push(value);
+      }
+      option = {
+          xAxis: {
+              type: 'category',
+              boundaryGap: false,
+              data: key_ary
+          },
+          yAxis: {
+              type: 'value'
+          },
+          series: [{
+              data: val_ary,
+              type: 'line',
+              areaStyle: {}
+          }]
+      };
+          myChart.setOption(option);
+      //    sitename.innerHTML =response.data
+      console.log(response.status);
+      console.log(response.statusText);
+      console.log(response.headers);
+      console.log(response.config);
+    });
+  } */
 </script>
 
 </body>

+ 237 - 0
web/main.css

@@ -0,0 +1,237 @@
+@import url('https://fonts.googleapis.com/css2?family=Work+Sans:wght@400;500;600&display=swap');
+body {
+    font-family: 'Work Sans', sans-serif;
+    font-size: 1.1rem;
+}
+/* body background */
+.color__grey {
+    background-color: #f5f5f5;
+}
+
+.step__text {
+    margin-right: 2rem;
+    color: white;
+    font-size: 1.4rem;
+    background-color: #1266f1;
+    box-shadow: 1px 1px 3px 1px rgb(168, 168, 168);
+    padding: .5rem .75rem;
+    border-radius: 3.5rem;
+}
+/* search bar */
+.text_input {
+    margin: 1.5rem;
+    padding-top: 2rem;
+    padding-bottom: 2rem;
+}
+.search__form {
+    width: 45rem;
+    margin: 2rem 1.5rem;
+}
+.search__bar {
+    width: 420px;
+    height: 150px;
+    padding: .5rem;
+    transition: all .3s;
+    border: 3px solid rgb(187, 187, 187);
+    border-radius: 10px;
+}
+input[type="radio"] {
+    display: none;
+}
+input[type="radio"]:checked + label {
+    outline: 4px solid #1266f1;
+}
+
+.search__btn {
+    padding: 8px 24px;
+}
+
+.submit.disabled {
+    pointer-events: none;
+    background-color: rgb(148, 147, 147);
+
+}
+.search__form .search__bar:focus {
+    box-shadow: 1px 1px 3px 1px #1266f1;
+    border-radius: 10px;
+}
+
+.h3 {
+    font-size: 2rem;
+}
+
+.characs {
+    margin: 2rem 1.5rem;
+}
+.characs_fr {
+    width: 120px;
+    height: 150px;
+    object-fit: cover;
+}
+.characs_fr > img {
+    width: 100%;
+    height: 100%;
+} 
+
+.back_fr {
+    width: 180px;
+    height: 150px;
+    object-fit: cover;
+}
+.back_fr > img {
+    width: 100%;
+    height: 100%;
+} 
+.submit {
+    color: white;
+    font-size: 1.4rem;
+    background-color: #1266f1;
+    box-shadow: 1px 1px 3px 1px rgb(168, 168, 168);
+    padding: .75rem 2rem;
+    border-radius: 3.5rem;
+    outline: none;
+    transition: all .3s;
+}
+.submit:hover {
+    transform: scale(1.05);
+}
+/* card */
+.card{
+    transition: all .3s;
+    cursor: pointer;
+}
+.card:hover {
+    transform: scale(1.05);
+}
+.card.card__notHover {
+    transform: scale(1);
+}
+.card-title {
+    font-size: 1.3rem;
+}
+/* top card */
+.card__grback {
+    background-image: linear-gradient(105deg, rgba(255, 255, 255, 0.9) 0%, rgba(255, 255, 255, 0.9) 75%, #1266f1 75%, #1266f1 100%);
+    background-position: center;
+    background-size: contain;
+    margin-top: 2rem;
+}
+.card__left {
+    width: 75%;
+}
+.card__url {
+    font-size: 1.8rem;
+    margin-bottom: 1.5rem;
+}
+.card__url__icon {
+    display: inline-block;
+    margin-right: 1rem;
+    font-size: 1.4rem;
+}
+.card__intro {
+    font-size: .9rem;
+    line-height: 1.5rem;
+}
+.intro_text {
+    padding-top: .5rem;
+    padding-bottom: .5rem;
+    padding-left: 4rem;
+}
+.intro_text:nth-of-type(2) {
+    padding-left: 3rem;
+}
+.intro_text:nth-of-type(3) {
+    padding-left: 2rem;
+}
+.intro_text:nth-of-type(4) {
+    padding-left: 1rem;
+}
+.intro_num {
+    display: inline-block;
+    background-color: lightblue;
+    width: 20px;
+    height: 20px;
+    border-radius: 50%;
+    text-align: center;
+    line-height: 20px;
+    position: relative;
+    z-index: 2;
+}
+.intro_num::after{
+    content: " ";
+    position: absolute;
+    top: 100%;
+    left: 0;
+    width: 100%;
+    height: 22px;
+    border-left: 2px solid gray;
+    transform: rotate(25deg);
+    z-index: 1;
+}
+.intro_num_last::after {
+    display: none;
+}
+.download {
+    margin-top: 1.5rem;
+    transition: all .3s;
+}
+.download:hover {
+    background-color: #1266f1;
+    color: white;
+}
+/* rank card */
+.card__rank__title {
+    font-weight: 500;
+}
+.card__rank__title i {
+    display: inline-block;
+    margin-right: .5rem;
+    font-size: 1.2rem;
+}
+.rank__mark {
+    font-size: 1.4rem;
+    line-height: 1.4rem;
+}
+.rank_num {
+    font-size: 2rem;
+}
+/* chart */
+.chart {
+    width: 600px;
+    height:400px;
+    margin:1.5rem auto;
+}
+.animate_fade{
+    opacity: 0;
+    transform: translateY(-30%);
+    transition: all 1.2s;
+  }
+.fade_up{
+    transform: translateY(0%);
+    opacity: 1;
+}
+.intro__last {
+    width: 8rem;
+    height: auto;
+    text-align: center;
+    line-height: 1.5rem;
+}
+.youtube__icon {
+    display: block;
+    font-size: 2rem;;
+}
+.animate_in {
+    opacity: 0;
+    transform: translateX(-30%);
+    transition: all 1s;
+}
+.animate_in:nth-of-type(2) {
+    transition-delay: 1s;
+}
+.animate_in:nth-of-type(3) {
+    transition-delay: 2s;
+}
+.fade_in{
+    transform: translateX(0%);
+    opacity: 1;
+}

+ 48 - 0
web/reset.css

@@ -0,0 +1,48 @@
+/* http://meyerweb.com/eric/tools/css/reset/ 
+   v2.0 | 20110126
+   License: none (public domain)
+*/
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed, 
+figure, figcaption, footer, header, hgroup, 
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	font-size: 100%;
+	font: inherit;
+	vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure, 
+footer, header, hgroup, menu, nav, section {
+	display: block;
+}
+body {
+	line-height: 1;
+}
+ol, ul {
+	list-style: none;
+}
+blockquote, q {
+	quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+	content: '';
+	content: none;
+}
+table {
+	border-collapse: collapse;
+	border-spacing: 0;
+}