bryant_huang
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    ###### tags: `前端設計工程師養成班` # DD106 Web/APP前端設計工程師養成班 # wewbpack - webpack 官網 https://www.webpackjs.com/concepts/ 安裝套件 - github https://github.com/sexfat/webpack_106 https://webpack.js.org/loaders/css-loader/ https://webpack.js.org/plugins/html-webpack-plugin/ ```jsx= plugins: [ //html 5 plugin new HtmlWebpackPlugin({ template: './src/index.html' }) ] ``` 打開瀏覽器 "open" :"webpack-dev-server --open" - webpack 安裝 `npm i webpack webpack-cli -D` - 指令 `npx webpack index.js` # Git 安裝 https://git-scm.com/ # github 帳號註冊 https://github.com/ # Sourcetree 安裝 https://www.sourcetreeapp.com/ ## 識別資料的建立 要登入遠端資料庫時,通常要有帳號密碼,所以要在本機端建立識別資料,以利遠端登入 git remote add origin https://github.com/sexfat/dd106test.git git push -u origin master # 分組名單 ```htmlmixed= G1: 李昇翰, 柴道融, 樂憲均, 蘇韋竹, 張益豪, 林宛萱, 李杰奇

 G2: 汪禹承, 林于暄, 張峯誠, 何京軒, 李凱鐘, 張紹逸, 林循安

 G3: 廖奎舜, 陳玥妘, 施冠卉, 李昆峰, 曾立杰, 高健傑, 張彤心
 ``` # Scrollmagic https://scrollmagic.io/ ```htmlmixed= <script src="node_modules/scrollmagic/scrollmagic/minified/ScrollMagic.min.js"></script> <script src="node_modules/scrollmagic/scrollmagic/minified/plugins/animation.gsap.min.js"></script> <script src="node_modules/scrollmagic/scrollmagic/minified/plugins/debug.addIndicators.min.js"></script> ``` https://scrollmagic.io/docs/index.html#usage ```jsx= // 場景最上方 var controller = new ScrollMagic.Controller(); //左右場景 var controller = new ScrollMagic.Controller({vertical: false}); //動畫 let scroll = TweenMax.to('.box_scoll' , 1,{ x: 400 }); //觸發事件 new ScrollMagic.Scene({ triggerElement : '#keypoint01',//觸發點 triggerHook : 0.5, //觸發點位置 瀏覽器 offset: 200, //觸發點位置 場景 reverse: true, //返回 duration : 300 //scroll 距離 平均分配動畫長度 }).setTween(scroll).addIndicators().addTo(controller) ``` # 觸發 css 動畫 - html ```htmlmixed= <section class="bg2"> <div class="title animation_title">看不見我 </div> </section> ``` - css ```css= .bg2 { background-color: rgb(82, 73, 23); transition: all 1s ease-in-out; .title { color: rgb(82, 73, 23); text-align: center; font-size: 80px; position: relative; top: 120px; } &.on{ background-color: rgb(43, 5, 68); } } ``` - 場景二 ```jsx= let title_animation = TweenMax.fromTo('.animation_title', 1, { y: 0, opacity: 0 }, { y: 100 , opacity: 1 }) new ScrollMagic.Scene({ triggerElement: '#keypoint02', triggerHook: 0.5, }).setClassToggle('.bg2', 'on').setTween(title_animation).addIndicators().addTo(controller) ``` - 場景三 - html ```htmlmixed= <div id="keypoint03"></div> <section class="bg3"> <div class="box scrollstick_01"></div> <div class="box scrollstick_02"></div> <div class="box scrollstick_03"></div> </section> ``` - css ```css .box { background-color: rgba(255, 255, 0, 0.913); width: 100px; height: 50px; } .bg3 { background-color: rgb(133, 141, 255); .box { margin-bottom: 10px; width: 300px; } ``` - js ```jsx= let stick = new TimelineMax(); stick.to('.scrollstick_01' , 1 , { x: 300 }).to('.scrollstick_02' , 1 , { x: 400 }).to('.scrollstick_03' ,1 , { x: 500}); new ScrollMagic.Scene({ triggerElement: '#keypoint03', triggerHook: 0, duration: '300%' }).setPin('.bg3').setTween(stick).addIndicators().addTo(controller) ``` ## 滾動視差 - html ```htmlmixed= <div id="keypoint04"></div> <section class="bg4"> <div class="box boxpallax1"></div> <div class="box boxpallax2"></div> <div class="box boxpallax3"></div> </section> ``` - css ```css .bg4 { background-color: rgb(204, 164, 255); background-image: url(https://placem.at/people); background-size: cover; .box { margin-bottom: 10px; width: 300px; } .boxpallax1 { position: relative; top: 300px; left: 600px; } .boxpallax2 { position: relative; top:300px; left: 700px; } .boxpallax3 { position: relative; top: 200px; left: 800px; } } ``` ```jsx= //滾動視差 var tlp = new TimelineMax(); var parallax01 = TweenMax.to('.boxpallax1' ,1, { y: '-10%', }); var parallax02 = TweenMax.to('.boxpallax2' ,1, { y: '100%', }); var parallax03 = TweenMax.to('.boxpallax3' ,1, { y: '-220%', }); tlp.add([parallax01 , parallax02 , parallax03]); new ScrollMagic.Scene({ triggerElement: '#keypoint04', // triggerHook: 0, duration: '100%' }).setTween(tlp).addIndicators().addTo(controller) ``` # nodejs 安裝11.15.0 https://nodejs.org/download/release/v11.15.0/ node-v11.15.0-x64.msi node-v11.15.0-x86.msi # sass 安裝 https://sass-lang.com/install ## 動畫套件 gsap https://greensock.com/docs/v2 ## npm 安裝 `npm i gsap@2.1.3` ## ease https://greensock.com/docs/v2/Easing ## 參數集介紹 option ```jsx= //位移跟大小 scaleX:1.5, x: 140, y: 0, boxShadow: "0px 0px 20px red",//陰影 scale:2, //放大 delay: 2,//延遲幾秒 repeat: 3,//重複幾次 repeatDelay: 2,//重複延遲時間 yoyo: true,//動畫順序1-2-2-1 alpha:0,//透明度 autoAlpha: 0 //透明度 ease: Power3.easeInOut//動畫效果 //旋轉要件 rotationY: 360, //旋轉 rotationX: 360 , //旋轉 transformOrigin : 'right top' //定位點 //透明度 autoAlpha: 0 //自動消失 //修改classname //增加一組class className: "+=box10" //覆蓋掉本來的class className: "box10" ``` ## bezier 貝茲曲線路徑 ``` TweenMax.to('.box04', 4, { bezier: { curviness: 1.25, values: [{ x: 100, y: 300 }, { x: 400, y: 300 }, { x: 600, y: 100 }, { x: 1000, y: 300 } ]} }) ``` ### vscode setting ``` "liveSassCompile.settings.formats": [ { "format": "expanded", "extensionName": ".css", "savePath": "/css/" } ], ``` # sass ### 變數 $ ```css= $fontSize : 14px; $color : hsl(0, 0%, 75%); $fontFamily: 'arial' san-serif; body { font-size: $fontSize; font-family: $fontFamily; padding: 266px; color: $color; } div { font-size: $fontSize; } h1 { font-size: $fontSize * 5; } h2 { font-size: $fontSize *4; } ``` ### Nesting ```css .wrappers { width: 1200px; background-color: rgb(255, 189, 67); margin: 0 auto; h1 { font-size: $fontSize * 5; span { font-size: $fontSize; font-weight: 300; display: block; position: relative; left: 5px; } } } ``` ### mixin ```css @mixin margins() { margin: 20px; } @mixin marginAuto(){ .marginAuto { margin: 0 auto; } } @mixin paddings() { padding: 20px; } .box-10 { @include margins(); @include paddings(); } .box-all { @include paddings(); } @include marginAuto(); ``` ### mixin 帶值 > 注意 變數有分 區域變數 跟 全域變數 ```css @mixin h1title($fontSize) { h1 { font-size: $fontSize * 5; span { font-size: $fontSize * 2; } } } @mixin h2title($fontSize) { h2 { font-size: $fontSize * 5; span { font-size: $fontSize * 2; } } } @include h1title(20px); @include h2title(15px); ``` ### 帶多值 ```css @mixin rect($width , $height, $bgc) { width: $width; height: $height; background-color: $bgc; } .box{ @include rect(100px, 30px , #fff) } ``` ### 空值 ```css @mixin borderline($width, $borderColor:null) { width: $width; height: $width * 0.5; border: 1px solid $borderColor; } .borderline { @include borderline(100px); } ``` ### 預設值 ```css= @mixin rect($width:400px, $height:300px, $bgc:#fff) { width: $width; height: $height; background-color: $bgc; border: 1px solid $bgc; } ``` ### 運算 ```css= //運算 .section { width: 10rem + 10rem ; height: 10px - 100 ; font-size: 10 * 10px ; font: (100 / 20) + em; } ``` ```css= $fontSize : 14px; h1 { font-size: round($fontSize * 5.3);//四捨五入 } h2 { font-size: floor($fontSize * 4.2);//無條件捨去 } h3 { font-size: ceil($fontSize * 3.7);//無條件進位 } h4 { font-size: $fontSize * 1.8; } h5 { font-size: $fontSize * 1; } ``` ### 判斷式 ```css= $num : 110; @if $num <= 100 { .num { width: 100px; } }@else if $num == 80 { .num { width: 80px; } }@else { .num { width: 0px; } } ``` ### 判斷式運用 ```css= @mixin marginAuto() { margin: 0 auto; } @mixin layout-full($width:100) { @if $width==100 { width: 100%; display: block; } @else { width: $width + px; @include marginAuto(); } } ``` ### 偽類 ```css= @mixin mode(){ &::before , &::after{ content: ''; @content } } .nav { ul { li { width: 100px; margin: 10px; display: inline-block; a { color: red; &:hover { color: blue; } &:active { color: green; } @include mode(){ padding: 10px //屬性 }; } } } } ``` ### 跳脫符號 #{變數} ```css= @mixin btn( $class, $w, $p, $bgc, $fontSize) { #{$class}{ width: $w; padding: $p; text-align: center; background-color: $bgc; font-size: $fontSize; cursor: pointer; margin: 2px; display: inline-block; transition: all 1s; &:hover{ // background: darken($bgc, 20); background: lighten($bgc, 30); } } } @include btn('.btn', 100px, 10px, rgb(247, 252, 0), $fontSize); ``` ## @for 迴圈 `@for $var from <start> through <end>` `@for $var from <start> to <end-1>` ```css //through 跟 to 的差異 @mixin boxs($num) { @for $i from 1 through $num { .box_#{$i} { width: $i * 1px; } } } @include boxs(10); ``` ## Grid ```css @mixin grid($num) { @for $i from 1 through $num { .col-md-#{$i} { width: ($i / $num) * 100%; @content } } } @include grid(12){ display: inline-block; background-color: rgb(255, 241, 49); height: 20px; }; ``` ## @each ```css @each $var in a1 , a2 , a3 { .img_#{$var} { background-image: url('./img/#{$var}.jpg'); } } ``` ```css= @mixin imgUrl($val) { @each $var in $val {k .img_#{$var} { background-image: url('./img/#{$var}.jpg'); } } } @include imgUrl(a1 a2 a3 b2); ``` ```css= @mixin imgUrl($file , $link) { @if $file==jpg { @each $var in $link { .img_#{$var} { background-image: url('./img/#{$var}.jpg'); @content } } } @else if $file==png { @each $var in $link { .img_#{$var} { background-image: url('./img/#{$var}.png'); @content } } } }; @include imgUrl(jpg , a1 b1 img2 ); .wrapper { @include imgUrl(jpg , a1 b1 img2 ); } .wrapper-about { @include imgUrl(png , a12 b12 img3 ){ width: 100%; }; } ``` ## @extend ```css @mixin rectbox() { width: 100px; height: 30px; margin-bottom: 10px; } %rectbox { width: 100px; height: 30px; margin-bottom: 10px; } .box-red { @extend %rectbox; background-color: #f70000; } .box-blue { @extend %rectbox; background-color: #0004ff; } // .box-red { // width: 100px; // height: 30px; // margin-bottom: 10px; // background-color: #f70000; // } // .box-blue { // width: 100px; // height: 30px; // margin-bottom: 10px; // background-color: #0004ff; // } ``` ## @extend ```css %attr { display: inline-block; background-color: rgb(255, 241, 49); height: 30px; } @include grid(12) { @extend %attr; // display: inline-block; // background-color: rgb(255, 241, 49); // height: 20px; } ``` ## RWD ```css= @mixin rwd($breakpoint) { @if $breakpoint== desktop { @media all and (min-width: $desktop) { @content; } } @else if $breakpoint==medium { @media all and (min-width: $medium) { @content; } } @else if $breakpoint== small { @media all and (min-width: $small) { @content; } } } @include rwd(medium) { //平板 /* 平板 */ .wrappers { font: 100px; } } ``` ## @map ```css= $maps: ( h1 : 40px, h2 : 30px, h3: 20px, h4: 18px, h5 : 14px ); @each $key, $value in $maps { #{$key}{ font-size:$value; } } ``` ## each RWD ```css $breakpoint-rwd :(moblie : 721px, medium : 996px, desktop : 1200px, xl-desktop : 2000px ); @mixin rwd-each($a) { @each $viewpoint,$num in $breakpoint-rwd { @if $a==$viewpoint { @media all and (min-width : $num) { @content } } } }; @include rwd-each(desktop){ body { font-size: 30px; } } ``` ```css= $list : 10px 20px 30px 40px 50px; .boxlist { width: length($list); height: nth($list, 2) } ``` ```css= @mixin margin-auto($val...) { @if length($val)==0 { margin: 0 auto; } @else if length($val)==1 { margin: $val auto; } @else { margin: nth($val, 1) auto nth($val, 2); } } .box-auto { width: 100px; @include margin-auto(10px , 20px); } ``` # Gulp - gulpfile.js ```jsx= var gulp = require('gulp'); gulp.task('concatjs' , function() { gulp.src('js/*').pipe(gulp.dest('assets/js')); }) gulp.task('concatcss' , function() { gulp.src('css/*').pipe(gulp.dest('assets/css')); }) ``` ```jsx= var cleanCSS = require('gulp-clean-css'); gulp.task('minicss', function () { gulp.src('css/*.css') .pipe(cleanCSS({ compatibility: 'ie8' })) .pipe(gulp.dest('css/mini/')); }); ``` # gulp-sass `npm install node-sass gulp-sass --save-dev` https://www.npmjs.com/package/gulp-sass ```jsx= var sass = require('gulp-sass'); gulp.task('sass', function () { gulp.src('sass/*.scss') .pipe(sass().on('error', sass.logError)) .pipe(gulp.dest('css/')) }); ``` ## minicss + sass ```jsx= gulp.task('sass', function () { gulp.src('sass/*.scss') .pipe(sass().on('error', sass.logError)) .pipe(gulp.dest('css/')) }); gulp.task('minicss',['sass'], function () { gulp.src('css/*.css') //壓縮 .pipe(cleanCSS({ compatibility: 'ie8' })) //完成搬家 .pipe(gulp.dest('css/mini/')); }); ``` # gulp file include https://www.npmjs.com/package/gulp-file-include `npm install --save-dev gulp-file-include` # 講義 https://bryant-huang.gitbook.io/-1/ # 專案樣板下載 https://github.com/sexfat/dd105g4/tree/master/dev/sass # html 測驗 https://docs.google.com/forms/d/e/1FAIpQLSelZV549JOKFjKIhv8LumENb3kAzSKi-ZDX2Ourr_lJqpnTRA/viewform # caniuse https://caniuse.com/ # 上課檔案 https://github.com/sexfat/dd106 # html講義 https://cookies.gitbook.io/dev-something/ # 動畫原理 https://hackmd.io/llIBNZDFR7qMTrQQGUCuCw # ui 資源分享 http://collectui.com/designs https://www.pinterest.com/ https://bm.s5-style.com/ https://dribbble.com/ - 學姊ppt 參考 http://140.115.236.71/demo-personal/DD103/web/%e7%b0%a1%e5%a0%b1PDF/T1900826%ef%bc%bf%e8%b3%b4%e6%80%a1%e5%ae%89%ef%bc%bf%e8%8a%b1%e7%b3%b8.pdf - design system https://designsystemsrepo.com/design-systems/ https://uxmovement.com/products/flow-patterns-make-site-flows-in-fine-visual-detail/?fbclid=IwAR3xO7KCzEmxdGqu-Bpj5wDJMbtkF13MTEFZjX89M8oCCmIAf-fUwg5VtE0 # chrome plugin - 網站技術分析 https://chrome.google.com/webstore/detail/wappalyzer/gppongmhjkpfnbhagpmjfkannfbllamg?hl=zh-TW - grid 尺規 https://chrome.google.com/webstore/detail/grid-ruler/joadogiaiabhmggdifljlpkclnpfncmj - colorpick https://chrome.google.com/webstore/detail/colorpick-eyedropper/ohcpnigalekghcmgcdcenkpelffpdolg - 同文堂 https://chrome.google.com/webstore/detail/new-tong-wen-tang/ldmgbgaoglmaiblpnphffibpbfchjaeg?hl=zh-TW - 字體 https://chrome.google.com/webstore/detail/fontface-ninja/eljapbgkmlngdpckoiiibecpemleclhh - rwd grid https://chrome.google.com/webstore/detail/design-grid-overlay/kmaadknbpdklpcommafmcboghdlopmbi - 結構 https://chrome.google.com/webstore/detail/pesticide-for-chrome/bblbgcheenepgnnajgfpiicnbbdmmooh # 網站資源分享 1. https://ogdesign.tw/resources#?category=web-desgin 2. https://trello.com/b/aBDsBWHg/%E5%A5%BD%E7%AB%99%E8%B3%87%E6%BA%90%E5%88%86%E4%BA%AB - https://www.cssawards.net/ - https://dribbble.com/ - https://www.awwwards.com/ - http://nipponcolors.com/#tonoko - https://www.behance.net/ - http://4db.cc/ - https://codemyui.com/ - https://tympanus.net/codrops/ # icon 分享 https://www.flaticon.com/ https://www.iconfinder.com/ # 用戶與伺服器 - 連接到網路的電腦稱為用戶端(client)與伺服器端(server)。彼此的連結原理如圖所示: ![image alt](https://blobscdn.gitbook.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-LQ24OwwZlyZzSLuZtcx%2F-LRaTAFaOj-KrOaNW9hR%2F-LRaU1ORrP9DcCiA1E8s%2FClient-server.jpg?alt=media&token=e4c7727e-ff12-4957-bd8f-9f5e2de6ffad) # 網頁溝通流程 - 網路連線:讓你可以在網路傳送與接收資料。 - TCP/IP:傳輸控制協定和網際網路協定(Transmission Control Protocol and Internet Protocol)是定義資料如何在網路通行的通訊協定。這就像是方便你去商店買東西的交通工具。 - DNS:網域名稱系統(Domain Name Servers)就像是網站的電話簿。當你在瀏覽器輸入網址時,瀏覽器會在取得網站前,先去看 DNS 以查到網站的真實地址。瀏覽器需要找到哪個伺服器在託管指定的網站、這樣才能把 HTTP 訊息傳送到對的地方。 - HTTP超文本傳輸協定(Hypertext Transfer Protocol)是定義用戶端語言,和伺服器如何對話的應用協議。可以想成你買東西時會用來溝通的語言。 - Component files:網站由許多不同的文件組成 程式檔:網站主要是由 HTML、CSS、JavaScript 建立 其他檔案 : 這是構成網站其他內容的集體名稱,裡面可能包含圖像、音樂、影片、Word、PDF …… ![](https://i.imgur.com/WlAk9A3.png) # 編輯器安裝 1. https://code.visualstudio.com/ 2. https://www.sublimetext.com/ 3. http://brackets.io/ 4. https://atom.io/ # vscode 工作區域 ![](https://i.imgur.com/KwSmRUb.png) # 各家瀏覽器佔有率 https://gs.statcounter.com/ # html架構 ```htmlmixed= <!--註釋文字 --> <!-- 第1行為代碼註釋標籤,代碼註釋的作用是幫助程序員標註代碼的用途,不會直接呈現在網頁上,我們會通過這樣的方式讓大家來了解一個網頁 --> <!--<!DOCTYPE> 不是html標籤,但它會告訴瀏覽器html的版本,下面這個寫法就是html5啦 --> <!DOCTYPE html> <html> <!-- 文檔的頭部描述了文檔的各種屬性和信息,包括文檔的標題等、Meta以及css等外部鏈接的引入--> <head lang="en"> <!-- meta標籤定義了網頁的一些信息,比如charset是編碼格式,http-equiv向瀏覽器傳回一些有用的信息,以幫助正確和精確地顯示網頁內容,viewport,則定義頁面的寬度與打開頁面的屏幕寬度的關係等,keywords和description則是SEO的關鍵,大家可以去研究一下大網站的頭部信息 --> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="keywords" content=""> <meta name="description" content=""> <!-- 網頁的title標籤會在瀏覽器中的標題欄上顯示(包括微信瀏覽器)用於告訴用戶和搜索引擎這個網頁的主要內容是什麼。搜索引擎可以通過網頁標題,迅速的判斷出網頁的主題,所以它也是SEO幾乎最為關鍵的信息。 每個網頁的內容都是不同的,每個網頁都應該有一個獨一無二的title。 --> <title>HackWork官方網站</title> <!--link 標籤通常會引入css或者icon小圖標,css樣式引入有三種寫法,這是其中之一 --> <link href="css/style.css" rel="stylesheet"> <!--script 標籤會引入javasript文件,通常情況下,這個會放在網站的尾部 --> <script src="js/index.js"></script> <!--style標籤是網站的css樣式,css樣式引入有三種寫法,這是其中之一 --> <style></style> </head> <!-- 在<body>和</body>標籤之間的內容是網頁的主要內容,在網頁上要展示出來的頁面內容一定要放在body標籤中。 --> <body> <!-- 這是一段註釋,以後大部分的代碼都會寫在body標籤裡面 --> 要寫Hello,World麼?會不會太簡單。 </body> </html> ``` # table - css ```css= table, th, td { border: 1px solid black; } th, td { padding: 0 15px; text-align: center; } ``` ![](https://i.imgur.com/pJk05vJ.png) # 何謂 UI UI(User Interface)使用者介面,主要專業是設計頁面上的功能、顧及使用的便利性與整個設計的美學,網站的美觀性和他息息相關 # 何謂 UX UX(User Experience)使用者體驗,則是根據使用者的習慣,安排整個網站頁面的內容規劃,像是哪些區塊的內容要先在網站上出現,行動呼籲按鈕(Call to Action, CTA)的位置應該擺在哪裡。 # 最終 終端使用者與公司網站的互動行為的總和,而此行為的目的是要達成一個目標(取得資訊、下訂單、連絡公司等等)就對了 # 產品故事 1. **選定主題** (假設)資訊分享平台 (* 當選定主題後,開始分析研究) 2. **產品介紹** - 我們的產品主要是做什麼服務的,能夠你們有效的完成哪些事 - 我們整理許多主題讓分享更輕鬆,因此您可以專注於真正重要的事情,讓客戶過上更好的生活。我們正在與您一起努力,體驗的未來。 3. **產品目標** - 關於這個產品提供哪些服務,主要是解決哪類的問題 4. **使用主族群** - 應用產業 :科技業 - 目標用戶 :工程師 5. **案例研究** - 電商研究 6. **需求列表** - list log更動列表 - 注意事項 7. **開始專案** - sitemap ![](https://i.imgur.com/njWAHHm.png) - wireframe ![](https://i.imgur.com/8E4jtRh.jpg) - ui flow ![](https://i.imgur.com/cZvn7Fn.jpg) - prototype - mockup 8. 開發階段 ## UI 設計流程 - ### 1. 格線系統 - ### 2. UI Kit ( psd or ai etc... ) - ### 3. 產品組成 - 產品的組成大約可以拆分成 頁面 > 元件 > 元素 > 圖(影片)、文字、icon、表單、互動 等。 - 各元素都可能需要制定 色彩、透明度、尺寸、間距、檔案格式、品質、風格 等。互動包含 手勢操作、過場動畫、特效、音效、震動 等。 ## 網頁介面組成 ![](https://i.imgur.com/P5XalcN.png) ### 選單元件 ![](https://i.imgur.com/P5XalcN.png) ![](https://i.imgur.com/IleGkOw.jpg) <br> ![](https://i.imgur.com/uPpKgv8.png) <br> ![](https://i.imgur.com/bsraOHn.png) 範例網址:http://demo.smartaddons.com/templates/html/market/intro-new/ #### Header要注意的 - [x] logo不能置頂 貼邊 - [x] 選單要標示所在位址 - [x] 是否有 會員登入/註冊 的標示 - [x] 購物網站是否有購物車 的標示 - [x] 功能列,主選單,次選單層級 是否清楚 - [x] 選單是否有對齊 ### Hero product ![](https://i.imgur.com/VbN5849.jpg) <br> ![](https://i.imgur.com/DJ4b1a4.jpg) <br> ![](https://i.imgur.com/SKUJRwH.png) ### Ecommerce ![](https://i.imgur.com/vc1xSxV.png) - 電商的ui kit https://dlex.design/e-commerce-ui-kit/ <br> - Nike https://www.nike.com/gb/hurley <br> - 受歡迎電商大全 https://themeforest.net/popular_item/by_category?category=ecommerce - collection UI 靈感牆 http://collectui.com/designs 工具 https://zeplin.io/ # RWD 1. https://sexfat.github.io/rwd/index.html 2. https://sexfat.github.io/rwd/index2.html 3. https://sexfat.github.io/rwd/index3.html 4. https://sexfat.github.io/rwd/index4.html 5. https://sexfat.github.io/rwd/index5.html

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully