:::

1. 安裝PHP開發環境與BootStrap響應式框架

一、關於本課程

  1. 本課程是承接上一期吳弘凱老師「前端技術入門」的系列課程中的第三個學程,屬較進階部份,因此,有任何聽不懂的:隨時發問!
  2. 上課歡迎起來走動,互相觀摩交流,盡量別保持安靜。飲食部份請至走廊食用。
  3. 上課時間為週六9:00~12:00及13:30~16:30,共計六次。
  4. 上課歡迎拍照、錄音、錄影,能和同學分享更好。
  5. 座位基本上沒有強制性,但也不建議每次都換來換去。自備筆電更佳!
  6. 課程網站:https://www.facebook.com/groups/109xoops/

二、網頁建構流程

  1. 靜態網頁:常見副檔名為【.htm】、【.html】, 並不需要任何伺服器,可直接在瀏覽器打開。
    • HTML5:也就是做網頁,用來撰寫系統外觀架構、表單...等。
    • BootStrap5:美化網頁用,快速導入自適應框架,讓您的系統在手機看起來也一樣美觀。
  2. 動態網頁: 搭配伺服器與資料庫共同運作,可以讓使用者操作送出資料,讓管理者收到使用者的需求。
    • PHP8可以與網頁做互動的編譯器。但PHP必須透過網頁伺服器去做編譯,所以需有網頁伺服器(如:Apache)。
    • Smarty:PHP樣板引擎,讓版面製作變得更一致、更簡單。
    • MySQL:也就是SQL資料庫語言,我們的資料都要放進資料庫中。

三、開發工具:Visual Studio Code文字編輯器

  1. Visual Studio Code編輯器官網:https://code.visualstudio.com/ 請將之裝在D或E磁碟機。
  2. 安裝繁體中文包:Chinese(Traditional)Language
  3. 做好編輯器設定:(settings.json)
    {
      "workbench.colorTheme": "Monokai",
      // 控制字型大小 (以像素為單位)。
      "editor.fontSize": 18,
      //  - 'bounded' (當檢視區縮至最小並設定 'editor.wordWrapColumn' 時換行).
      "editor.wordWrap": "on",
      // 控制編輯器是否應自動設定貼上的內容格式。格式器必須可供使用,而且格式器應該能夠設定文件中一個範圍的格式。
      "editor.formatOnPaste": true,
      // 使用滑鼠滾輪並按住 Ctrl 時,縮放編輯器的字型
      "editor.mouseWheelZoom": true,
      // 在儲存時設定檔案格式。格式器必須處於可用狀態、檔案不得自動儲存,且編輯器不得關機。
      "editor.formatOnSave": true,
      // 控制已變更之檔案的自動儲存。接受的值: 'off'、'afterDelay、'onFocusChange' (編輯器失去焦點)、'onWindowChange' (視窗失去焦點)。若設為 'afterDelay',可以在 "files.autoSaveDelay" 中設定延遲。
      "files.autoSave": "onFocusChange",
      "files.associations": {
        "*.tpl": "html"
      },
      // 指向 PHP 可執行檔。
      "php.validate.executablePath": "D:/xampp/php/php.exe",
      // 讓 tab 也可以自動完成
      "editor.tabCompletion": "on",
    }

     

  4. 接著安裝以下套件:
    • Chinese (Traditional) Language Pack for Visual Studio Code :中文介面
    • phpfmt :格式化PHP程式碼用,請加入設定:
      // php executable path
      "phpfmt.php_bin": "D:/xampp/php/php.exe",
      // enable auto align of ST_EQUAL and T_DOUBLE_ARROW
      "phpfmt.enable_auto_align": true,
      // fixes visibiliy order for method in classes - PSR-2 4.2
      "phpfmt.visibility_order": true,
      // convert multistatement blocks into multiline blocks
      "phpfmt.smart_linebreak_after_curly": true,
      // Enable per-language
      "[php]": {
        "editor.formatOnSave": true
      },

       

    • vscode-goto-documentation :快速文件搜尋
    • AutoFileName : 讓編輯器自動完成圖片或檔案路徑。
    • Auto Rename Tag : 讓成對的標籤自動一起修改。
    • Auto Close Tag : 讓標籤自動閉合的。
    • Bootstrap 5 Snippets shrikant.bootstrap5:插入Bootstrap 5 語法片段。
    • Bootstrap 5 & Font Awesome Snippets : 插入Bootstrap 5 或 Font awesome 語法片段。
    • Prettier - Code formatter :美化HTML、JavaScript、CSS...等格式器。
        //singleQuote 使用單引號
        "prettier.singleQuote": true,
        //semi 結束是否加分號
        "prettier.semi": false,
        //printWidth 行寬
        "prettier.printWidth": 120,
        //tabWidth 縮排空幾格
        "prettier.tabWidth": 2,

       

    • indent-rainbow :以顏色標出縮排。
    • Material Icon Theme :精美的檔案圖示。
    • PHP intelephense :自動提示。
    • Fake Image Snippet Collection :假圖產生
  5. 常用快捷鍵:
    • Ctrl+ N:建立新檔
    • Ctrl+ C複製
    • Ctrl+ V貼上
    • Ctrl+ S儲存
    • Ctrl+ F搜尋
    • Ctrl+ Shift+ F跨檔搜尋
    • Ctrl+ H取代
    • Ctrl+ /註解
    • Shift+ Alt+ A區塊註解
    • Ctrl+ `開終端機
    • Ctrl+ B:關閉左側工具
    • Ctrl+ X:刪除目前行
    • Ctrl+ G:跳至某行
    • Ctrl+ end:跳至文件結尾
    • Ctrl+ Z:回上個動作(復原)
    • Ctrl+ Y:回下個動作(再做)
    • shift+ alt+ F:美化(格式化)語法
    • shift+ alt+ 滑鼠左鍵:區塊標記
    • 完整快捷鍵整理:https://poychang.github.io/vscode/

四、安裝程式運行環境

  1. 安裝XAMPP(https://www.apachefriends.org/zh_tw/download.html
  2. node.js :https://nodejs.org/en/ ,讓功能更完整(務必安裝 > 6.0 版本)。
  3. https://getcomposer.org/download/ 下載 Composer(或直接按這裡下載Windows版

五、幾個您要知道的位置(假設裝在D:)

  1. 網頁(程式)目錄的位置:D:\xampp\ htdocs
    • 請至Visual Studio Code編輯器開啟該資料夾以做為專案
  2. 資料庫的存放位置:D:\xampp\mysql\data
  3. PHP 設定檔 php.ini 的位置:D:\xampp\php\php.ini
  4. MySQL設定檔 my.ini 的位置:D:\xampp\mysql\data\my.ini
  5. 網站連結位置:http://電腦IP或http://localhost或http://127.0.0.1
  6. phpMyAdmin 的連結位置:http://localhost/phpmyadmin/

六、HTML基礎

  1. 基礎HTML5頁面:(先切成HTML,輸入!),並存成 index.html
    <!DOCTYPE html>
    <html lang="zh-TW">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>待辦清單</title>
    </head>
    
    <body>
    </body>
    
    </html>
    • 簡潔的DOCTYPE:HTML5 只有一個簡單的文檔類型:<!DOCTYPE html>
    • 簡單易記的語言標籤:<html lang="en">或<html lang="zh-Hant-TW">
    • 簡單易記的編碼類型:<meta charset="utf-8">
    • viewport 的作用是告訴瀏覽器,目前裝置有多寬(或多高),以便在縮放時有個基準。尤其當設定頁面寬度需自動調整時,如寬度100%或螢幕由垂直轉為水平, viewport 大小是一個根據。
      // 指定螢幕寬度為裝置寬度,畫面載入初始縮放比例 100%
      <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

      網頁寬度 width 通常設為手機寬度 device-width ,用意是適應各家裝置的大小,這樣寫CSS時就能放心的把版面寬度設為100%。

    • HTML標籤通常是一對的:
      • <html></html>一整個HTML頁面
      • <head></head>通常裡面會有 meta 標籤,及<title></title>來設定頁面名稱
      • <body></body>主要內容區。
      • meta 標籤主要用於網頁的內容說明,以利自己或搜索引擎使用,有無 meta 標籤,並不影響網頁正常顯示,其最大目的在於提供網頁各種資訊及產生特殊效果。
  2. HTML常用基本標籤
    • 完整標籤列表:http://www.runoob.com/tags/html-reference.html
    • 常用基本標籤:
      標題
      <h1></h1>(1~6)除了作為標題外,一般也拿來當作網站的架構或大綱。
      段落 <p></p> 區塊容器 <div></div> 行內容器 <span></span>
      換行 <br> 輸出標籤 <pre></pre> 引用 <blockquote></blockquote>
      水平線 <hr> 註釋標籤 <!--註釋-->    
    • 練習
      • 標題一:我的待辦事項清單
      • 水平線
      • 段落:日期
        <p>
          <span style="margin-left: 2em;">
            教育部發放400萬份,每份價值500元的「動滋券」,7月20日至7月26日登記抽籤,依身分證尾數單雙數分流。
          </span><br>
          但動滋券網站從凌晨起就被塞爆,許多民眾興匆匆上網登記,網頁無法正常運作,持續一片空白轉圈圈,最後顯示「無法連上這個網站」。
        </p>

         

  3. 項目符號或清單列表

    有序列表

    無序列表

    定義列表

    <ol>

    <li>項目1</li>

    <li>項目2</li>

    </ol>

    <ul>

    <li>項目1</li>

    <li>項目2</li>

    </ul>

    <dl>

    <dt>項目名稱</dt>

    <dd>項目說明</dd>

    </dl>

    • 常被拿來做選單、列表、縮略圖...等用途。
    • 練習:列表今天到期:1、逾期:2
  4. 表格標籤<table>

    <table>

    <tr><th>表頭1</th><th>表頭2</th></tr>

    <tr><td>表格1</td><td>表格2</td></tr>

    </table>

    1. <table>屬性:border(框寬度)

    2. <th>及<td>屬性:colspan(水平合併)、rowspan(垂直合併)、headers(定義表頭關聯)

    3. <th>還支援scope(定義表頭)屬性

    • 更複雜的 HTML 表格也可能包括 <caption>、<col>、<colgroup>、<thead>、 <tfoot> 以及 <tbody> 標籤。
    • 練習:表格標籤-表頭、樣式 border="1"  width="1920" 及表格
    • 是否完成 標題 到期日 優先順序 指派對象
  5. 圖片<img src="圖片" alt="說明">
    • 屬性:src(圖片位置)、alt(取代文字)、width(寬)、height(高)、ismap(地圖對應,需有連結)、usemap(使用圖片地圖,需對應map)
    • 網頁圖片支援三種規格jpg(全彩、壓縮、相片)、png(全彩、透明)、gif(256色、透明背景、動畫)
    • 相對路徑(相對於自身html檔)較常用,絕對路徑通常為:http://網址/圖檔.jpg
  6. 連結標籤<a href="連結位置">顯示文字</a>
    • 連結位置可以是網頁、圖片、網站、文件、檔案、FTP站、Email...等。
    • 屬性:連結位置href、錨點名稱name、框架位置target(_blank開新視窗, _parent上個框架, _self原視窗, _top跳出框架)。
    • 錨點名稱用法
      • (1)  先命名:<a name="top">某元素</a>
      • (2)  連結寫法:<a href="#top">回頂端</a>或<a href="index.html#top">回頂端</a>
    • Email連結:<a href="mailto:主信箱?cc=副本&bcc=密件副本&subject=主題&body=內容">連結呈現文字</a> 

七、安裝美化HTML工具:BootStrap5 & Font Awesome

  1. BootStrap 官網:https://getbootstrap.com/
  2. BootStrap 中文網站:https://bootstrap5.hexschool.com/
  3. 用 npm 安裝 BootStrap 5
    • 打開VSCode終端機,先切換到網頁目錄下(D:\xampp\htdocs),並將底下XAMPP預設的檔案及目錄都刪除。
      cd D:\xampp\htdocs
      npm init -y
      npm install bootstrap@next

       

    • 初始化專案後會產生 package.json 檔,此檔會紀錄我們這個專案會用到哪些前端套件,以及各個套件之間的相依性等資訊。
    • @next 表示要裝最新的版本(有可能不是正式版),不加則會安裝最新的正式版本。
    • 裝好後,會多一個 node_modules 目錄,裡面就有我們要使用的前端套件。
  4. 用Font Awesome圖示
    • Font Awesome 官網:https://fontawesome.com/
    • 安裝 Font Awesome,按 Ctrl+ ` 開啟終端機,並貼上:
      npm install --save @fortawesome/fontawesome-free

       

  5. 引入BootStrap5檔案及font-awesome檔案 ,修改  index.html
    <!DOCTYPE html>
    <html lang="zh-TW">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <link rel="stylesheet" href="/node_modules/bootstrap/dist/css/bootstrap.min.css" />
      <script src="/node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
      <link rel="stylesheet" href="/node_modules/@fortawesome/fontawesome-free/css/all.min.css" />
      <title>待辦清單</title>
    </head>
    
    <body>
      <!-- 省略-->
    </body>
    
    </html>
    • 用npm安裝的套件一律裝在 node_modules 下,且正式檔案一般都在 dist 目錄中
    • bootstrap.bundle.min.js 可以取代 popper.min.js + bootstrap.min.js
  6. Font Awesome

八、BootStrap響應式框架

  1. 格線系統
    • 容器:「.container」最大寬度為1320px左右;「.container-fluid」則是滿版容器。
    • 格線系統:將畫面分成12格(等份),透過行 (row) 與欄 (column) 的組合建立頁面佈局。
      • 在 Visual Studio Code 中輸入 b5-row 按 Enter 可以快速產生語法。

      • .row 代表一個橫列,以確保裡面的欄位可以對齊、排序。

      • .col-sm 斷點前綴詞,後面接的是欄位寬度設定,預設滿版為12欄

      • 若超過12欄,則會自動新增一個 .row

        <div class="row">
          <div class="col-sm-3">
            <p>
              日期:2021/03/13
            </p>
          </div>
          <div class="col-sm-9">
            <ul>
              <li>今天到期:1</li>
              <li>逾期:2</li>
            </ul>
          </div>
        </div>

         

      • BootStrap將螢幕依解析度分成六種:
          超小屏幕
        <576px
        小屏幕
        ≥576px
        中等屏幕
        ≥768px
        大屏幕
        ≥992px
        超大屏幕
        ≥1200px
        特大屏幕
        ≥1400px
        .container 100% 540px 720px 960px 1140px 1320px
        .container-sm 100% 540px 720px 960px 1140px 1320px
        .container-md 100% 100% 720px 960px 1140px 1320px
        .container-lg 100% 100% 100% 960px 1140px 1320px
        .container-xl 100% 100% 100% 100% 1140px 1320px
        .container-xxl 100% 100% 100% 100% 100% 1320px
        .container-fluid 100% 100% 100% 100% 100% 100%
      • class=" col-sm-9 " 代表螢幕解析度≥576px時「右邊區域」佔了9欄

      • 左右若想交換,就把2、7行對調一下即可。

  2. 表格

    • 快速產生:在 Visual Studio Code 中輸入 b5-table Enter 可以快速產生表格的語法。

    • 響應式表格:
      <div class="table-responsive">
        <table class="table">
          ...
        </table>
      </div>

       

  3. 導覽列

    • 快速產生:在 Visual Studio Code 中輸入 b5-nav-default Enter 可以快速產生表格的語法。(需修改 data-toggle 為 data-bs-toggle ,data-target 為 data-bs-target )

    • 修改標題:超連結屬性練習連結位置href、框架位置target。

      • target="_self":在本頁(自己)切換,與不加 target 相同。
      • target="任意":指定開啟一個新視窗,後續開啟之新視窗會蓋掉前面已開啟的舊視窗。
      • target="_blank":開啟一個新的視窗,後續開啟之新視窗會產生另一個新的視窗,不會蓋掉前面已開啟的舊視窗。
    • 加入圖片:假圖產生
      <img src="https://picsum.photos/1920/240?random=1" class="img-fluid" alt="我的代辦清單">

       

    • 導覽列加小圖:https://getbootstrap.com/docs/5.0/components/navbar/#nav
    • https://www.iconfinder.com/search/?q=list&price=free
      <!-- Image and text -->
      <nav class="navbar navbar-light bg-light">
        <div class="container-fluid">
          <a class="navbar-brand" href="#">
            <img src="/docs/5.0/assets/brand/bootstrap-logo.svg" alt="" width="30" height="24"
              class="d-inline-block align-top">
            Bootstrap
          </a>
        </div>
      </nav>
    • 欄位推移
      • .me-auto (bootstrap4 .mr-auto) 把空位放到右邊。
      • .mx-auto 把空位平均分散到左右兩邊 。
      • .ms-auto (bootstrap4 .ml-auto) 把空位放到左邊 。
        <ul class="navbar-nav ms-auto">
          <li class="nav-item">
            <a class="nav-link" href="#">回首頁</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">發布待辦事項</a>
          </li>
        </ul>