เขียนเขียนโปรแกรมสร้างเว็บไซต์ Front-End Developers จาก Figma Front-End Designers ที่ได้ออกแบบไว้
ทำต่อจากบทความนี้ https://www.glurgeek.com/education/figmawebdesigner/
1. ทำการสร้าง Folder เพื่อสร้างที่เก็บไฟล์ สำหรับเตรียม Materials ทำ Website
สร้าง Folder ชื่อเว็บไซต์ และ Sub Folder ชื่อ images สำหรับเก็บรูปต่าง ๆ ที่ใช้
2. ทำการแปลง Logo และ Contact ต่าง ๆ จากข้อความ ให้เป็นรูปภาพ .SVG
ใช้ไฟล์ .svg จะทำให้เวลาทำเว็บไซต์ Zoom in แล้วภาพจะไม่แตก
เลือก Navigation Bar ทำการ Unlock ตรงส่วน GlurGeek ในงานให้ Right Click –> Outline Stroke เพื่อปรับให้คมชัดและเวลาแสดงหน้าผลหน้าจอจะปรับให้เหมาะสมกับ Devices ขนาดต่าง ๆ
ลอง Zoom In (Control/Command + Scroll Mouse) ไปที่โลโก้ GlurGeek ให้ไปด้านขวาล่างตรง Export เปลี่ยนเป็น .SVG –> Export GlurGeek เพื่อให้ได้รูปภาพ
นำไปเก็บไว้ใน Folder ของ images
ทำ Icon ส่วน Contact ต่าง ๆ ให้เป็นรูปภาพ .SVG เช่นเดียวกัน
ไปที่ Contact ทำการ Unlock แล้วเลือกทีละ Icon ทำการ Export เลือกเป็น SVG –> Export ให้เป็นรูปภาพทีละรูป
นำรูปที่ได้ไปใส่ไว้ใน Folder ชื่อ images
ไปที่ Feature Bar ทำการ Unlock เลือกรูปภาพ ไปที่ Export อันนี้จะใช้เป็น JPG ความละเอียด 2x –> Export ทั้ง 2 รูปของ Feature Bar
ตั้งชื่อรูป programming.jpg
ตั้งชื่อรูป aiot.jpg
แสดง Folder ของ images
3. เขียนโปรแกรม HTML CSS สำหรับ Front-End Developers ด้วย Visual Studio Code
เปิดโปรแกรม VS Code นำ Folder ของ glurgeek ที่ได้จัดทำไว้ลากมาใส่
ทำการ New File สร้าง 2 ไฟล์ คือ index.html และ styles.css
ให้ดูองค์ประกอบต่าง ๆ ของ Figma Website ที่เราออกแบบ จะแบ่งเป็น Header, Body และ Footer
3.1 เขียนโปรแกรม HTML ไฟล์ index.html
แบ่งเป็น 3 ส่วน ได้แก่ 1. ส่วน Header (Navigation Bar) 2. ส่วน Contents (Content Font และ Content) และ 3. ส่วน Footer (Feature Bar)
โครงร่างของ index.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>GlurGeek Website</title> <meta name="description" content="profile"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="styles.css"> </head> <body> <main> <!-- Navigation Bar --> <header> </header> <!-- Contents --> <section class="info"> </section> <!-- Feature Bar --> <section class="feature"> </section> </main> </body> </html>
ไฟล์ index.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>GlurGeek Website</title> <meta name="description" content="profile"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="styles.css"> </head> <body> <main> <!-- Navigation Bar --> <header> <nav> <img class="logo" src="images/logo.svg" alt="logo"> <div class="links"> <a href="#">About</a> <a href="#">Docs</a> <button class="button_med" href="#">Login</button> </div> </nav> </header> <!-- Contents --> <section class="info"> <h1 class="content_font1">Online Creative Community</h1> <h4 class="content_font2">by Aj. NesT the Series </h4> <div class="icons"> <div class="icon"> <img src="images/email.svg" alt="email"> <p class="icon_info">ajnesttheseries@gmail.com</p> </div> <div class="icon"> <img src="images/facebook.svg" alt="facebook"> <p class="icon_info">Aj. NesT the Series</p> </div> <div class="icon"> <img src="images/youtube.svg" alt="youtube"> <p class="icon_info">Aj. NesT the Series</p> </div> <div class="icon"> <img src="images/twitter.svg" alt="twitter"> <p class="icon_info">Aj. NesT the Series</p> </div> </div> </section> <!-- Feature Bar --> <section class="feature"> <div class="feature"> <img src="images/programming.jpg" alt="programming"> <div class="feature_info"> <p class="feature_top">Programming</p> <p class="feature_bottom">Enjoy Coding and Playing HTML, CSS,JavaScript</p> </div> </div> <div class="feature"> <img src="images/aiot.jpg" alt="aiot"> <div class="feature_info"> <p class="feature_top">AIoT and Robotics</p> <p class="feature_bottom">Enjoy Coding and Playing Python, ROS, Mechanics</p> </div> </div> <div class="feature"> <div class="feature_info"> <p class="feature_top">Learn More</p> </div> </div> </section> </main> </body> </html>
ผลลัพธ์ที่สร้างขึ้นของไฟล์ index.html
ถ้าใส่ <body style=”background-color: antiquewhite;”> ก็จะเห็น logo เนื่องจากทำเป็นสีขาวไว้
ในที่นี้เป็นการแสดงให้เห็น ของจริงจะไปเขียนใส่ในไฟล์ styles.css แทน
มาถึงตรงนี้ไฟล์ index.html ก็มีทุกอย่างครบแล้ว ต่อไปเราจะไปทำการจัดระเบียบด้วยไฟล์ styles.css
3.2 เขียนโปรแกรม CSS ไฟล์ styles.css
Part 1
เลือก Font ที่อยากจะใช้เพื่อทำเว็บไซต์ให้สวยงาม
ใช้ Google Fonts ในที่นี้เลือกใช้ Lato https://fonts.google.com/specimen/Lato
เลือกขนาด 400 และ 700 ทำการ Copy ตัว CSS Code ตรง @import นำมาใส่ในไฟล์ styles.css
@import url('https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,700;1,400&display=swap');
ไฟล์ styles.css
นำไฟล์ background ใส่ใน Folder ของ images
ทดลองเขียน sytles.css เบื้องต้น
PX to REM Converter
https://nekocalc.com/px-to-rem-converter
ไฟล์ styles.css Part 1
/* Add Fonts */ @import url('https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,700;1,400&display=swap'); /* All Class using same dataset */ :root{ /* Define Variables */ --accent : #FD6B6B; /* Check Color Code from Figma */ --accentHover : #F3B6B6; /* Mouse Hover -> Light */ --dark80 : rgba(68, 90, 139, 0.8); /* 0.8 = 80% */ --dark60 : rgba(68, 90, 139, 0.6); /* 0.6 = 60% */ --light : #FFFFFF; --transition : all 0.3s ease 0s /* Define delay time */ } /* All Section */ *{ /* Clear margin and padding */ box-sizing: border-box; margin: 0; padding: 0; } html, body{ height: 100%; /* Fixed Height using Scroll */ overflow: auto; /* Enter New Line */ } body{ /* Gradient Shade of Color */ background: linear-gradient( var(--dark60), var(--dark60) ), url(./images/background.jpg); background-repeat: no-repeat; background-position: center; background-size: cover; /* Scale Fixed Screen */ } a, button, p{ font-family: "Lato", sans-serif; color: var(--light); } a, button, .logo{ cursor: pointer; /* Link Element (Login) --> Hand Cursor */ } main{ height: 100%; display: grid; /* Work on grid*/ grid-template-columns: minmax(60px, 1fr) repeat(6,minmax(50px,190px)) minmax(60px,1fr); } header{ grid-column: 2 / span 6; /* header start 2nd col & others last column */ } nav{ display: flex; align-items: center; height: 150px; } /* Class */ .links{ margin-left: auto; } .links a, .links button{ font-size: 1.5rem; font-weight: 400; transition: var(--transition); /* Action */ } .links a{ margin-right: 20px; } .links a:hover{ color: var(--accentHover); /* Cursor Hover -> Change Color*/ } .button_med{ border: none; background-color: var(--accent); padding: 8px 25px; transition: var(--transition); /* Action */ } .button_med:hover{ color: var(--accentHover); } .info{ grid-column: 3 / span 4; margin-top: 23%; text-align: center; } .content_font1{ font-family: "Lato", sans-serif; color: black; font-size: 3.5rem; } .content_font2{ font-family: "Lato", sans-serif; color: var(--light); font-size: 1.5rem; } .icons{ margin-top: 10%; display: flex; }
ผลลัพธ์ที่ได้ของ ไฟล์ styles.css Part 1
ไฟล์ index.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="description" content="profile"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>GlurGeek Website</title> <link rel="stylesheet" href="styles.css"> </head> <body> <main> <!-- Navigation Bar --> <header> <nav> <img class="logo" src="images/logo.svg" alt="logo"> <div class="links"> <a href="#">About</a> <a href="#">Docs</a> <button class="button_med" href="#">Login</button> </div> </nav> </header> <!-- Contents --> <section class="info"> <h1 class="content_font1">Online Creative Community</h1> <h4 class="content_font2">by Aj. NesT the Series</h4> <div class="icons"> <div class="icon"> <img src="images/email.svg" alt="email"> <p class="icon_info">ajnesttheseries@gmail.com</p> </div> <div class="icon"> <img src="images/facebook.svg" alt="facebook"> <p class="icon_info">Aj. NesT the Series</p> </div> <div class="icon"> <img src="images/youtube.svg" alt="youtube"> <p class="icon_info">Aj. NesT the Series</p> </div> <div class="icon"> <img src="images/twitter.svg" alt="twitter"> <p class="icon_info">Aj. NesT the Series</p> </div> </div> </section> <!-- Feature Bar --> <section class="features"> <div class="feature"> <img src="images/programming.jpg" alt="programming"> <div class="feature_info"> <p class="feature_top">Programming</p> <p class="feature_bottom">Enjoy Coding and Playing HTML, CSS, JavaScript</p> </div> </div> <div class="feature"> <img src="images/aiot.jpg" alt="aiot"> <div class="feature_info"> <p class="feature_top">AIoT and Robotics</p> <p class="feature_bottom">Enjoy Coding and Playing Python, ROS, Mechanics</p> </div> </div> <div class="feature"> <div class="feature_info"> <p class="feature_more">Learn More</p> </div> </div> </section> </main> </body> </html>
ไฟล์ stylesheet.css
/* Add Google Fonts */ @import url('https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap'); /* All Class using same dataset */ :root{ /* Define Variables */ --accent : #FD6B6B; /* Button Color from Figma */ --accentHover : #FFA3A3; /* Mouse Hover -> Light */ --dark60 : rgba(68, 90, 139, 0.6); /* 0.6 = 60% */ --light : #FFFFFF; --transition : all 0.3s ease 0s /* Define delay time */ } /* All Section */ *{ /* Clear margin and padding */ box-sizing: border-box; margin: 0; padding: 0; } html, body{ height: 100%; /* Fixed Height using Scroll */ overflow: auto; } body{ /* Gradient Shade of Color */ /* background: linear-gradient( var(--dark60), var(--dark60) ), url(./images/background.jpg); */ background-image: url("images/background.jpg"); background-repeat: no-repeat; background-position: center; background-size: cover; /* Fixed Scale Screen */ } a, button, p{ font-family: "Lato", sans-serif; color: var(--light); } a, button, .logo{ cursor: pointer; /* Link Element Logo & Button --> Hand Cursor */ } main{ height: 100; display: grid; /* Work on grid */ grid-template-columns: minmax(60px, 1fr) repeat(6, minmax(50px, 190px)) minmax(60px, 1fr); } header{ grid-column: 1 / span 7; /* header start 1nd col and others last column */ margin-left: 5%; } nav{ display: flex; align-items: center; height: 150px; } /* Class */ .links{ margin-left: auto; } .links a, .links button{ font-size: 1.5rem; font-weight: 400; transition: var(--transition); /* Action */ } .links a{ margin-right: 20px; } .links a:hover{ color: var(--accentHover); /* Cursor Hover --> Change Color */ } .button_med{ border: none; background-color: var(--accent); padding: 8px 25px; transition: var(--transition); } .button_med:hover{ color: var(--accentHover); } .info{ grid-column: 3 / span 4; margin-top: 23%; text-align: center; } .content_font1{ font-family: "Lato", sans-serif; color: black; font-size: 3.5rem; } .content_font2{ font-family: "Lato", sans-serif; color: var(--light); font-size: 1.5rem; text-align: center; } .icons{ margin-top: 10%; display: flex; } .icon{ margin-right: 30px; } .icon img{ width: 60px; height: 60px; } .icon_info{ text-align: center; } /* Edit Line 48 --> class ="features" */ .features{ grid-column: 2 / span 7; background-color: #EBFF00; margin-top: 6%; /* top right bottom left */ padding: 30px 0px 0px 20px; display: flex; align-items: left; } .feature{ display: flex; /* top right bottom left */ margin: 0px 10px 30px 10px; } .feature img{ width: 130px; height: 80px; margin-right: 20px; } .feature_info p{ color: black; } .feature_top, .feature_more{ font-size: 20px; font-weight: bold; text-transform: uppercase; margin-bottom: 20px; } .feature_bottom{ font-size: 15px; font-weight: normal; } .feature:nth-child(3){ align-self: flex-start; } .feature_more{ cursor: pointer; transition: var(--transition); } .feature_more:hover{ color: var(--accent); } /* Responsive Website*/ @media only screen and (max-width:1100px){ .icon img{ height: 55px; width: auto; } .content_font1 .content_font2{ font-size: 2.75rem; } .feature{ grid-column: 1 / span 7; } } @media only screen and (max-width:850px) { .info{ grid-column: 2 / span 6; } .icons{ flex-direction: column; } .content_font1 .content_font2{ font-size: 1.75rem;; } .features{ flex-direction: column; } }
Output ผลลัพธ์ไฟล์ของการทดลองนี้
https://github.com/ajnesttheseries/htmlcssfontend/tree/main/glurgeek
บทเรียนก่อนหน้านี้
1. เรียน NodeJS Back-End Developers (เริ่มสร้าง Back-End Development)
https://www.glurgeek.com/education/startnodejs
2. Figma ออกแบบเว็บไซต์ สำหรับ Front-End Designers (เตรียม Front-End Design)
https://www.glurgeek.com/education/figmawebdesigner
คุณอยู่บทเรียนที่ 3
3. Figma ออกแบบเว็บไซต์ สำหรับ Front-End Designers (เตรียม Front-End Development)
https://whttps://www.glurgeek.com/education/htmlcssdesigntodev
บทเรียนถัดไป
4. เรียน NodeJS Back-End เชื่อมต่อ EJS HTML CSS Front-End Developments (เขียนให้ Back-End เชื่อมต่อ Front-End Developments)
https://www.glurgeek.com/education/startnodejsandfrontend