Lektion 3 HTML, CSS och JavaScript

Relevanta dokument
Lektion 2 - CSS. CSS - Fortsätt så här

Lektion 4 HTML, CSS och PHP

ORDLISTA WEBBDESIGN 100P

Lektion 2 Del 1 Kapitel 6

/*formatering för html och body elementen - elementens höjd sträcker sig över hela webbläsarfönstrets höjd*/ html, body { height: 100%; }

Labora&on 4 CSS och validering samt fråga D övningar/uppgi?er

Labora&on 4 CSS och validering övningar/uppgi9er

<Webbutvecklare lektion="02"> Kursledare: Mahmud Al Hakim

F07 Stilmallar Dagens agenda

21/01/2016. Stilmallar. styra utseendet av webbplatsen DEL 1. Karin Fahlquist. index.html. recept.html frukt.html grönsaker.html

12/9/2010 REGLER WEBBPRODUKTION WEBBDESIGN CASCADING STYLE SHEETS CSS LOKALA STILMALLAR GLOBALA STILMALLAR. Selektor. Deklaration

Inför prov 1 i webbdesign

Labora&on 5 CSS och layout samt fråga E övningar/uppgi>er

En stiligare portal Laboration 3

TDDD52 CSS. Färger. Färger 1/3/13

Förkunskaper: Tim Berners Lees vision webbläsarkriget W3C strukturtagg <h1> layout-tagg <font size="6">

Labora&on 6 CSS och responsiv webbdesign övningar/uppgi:er

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

En grundkurs i hemsidor och hur de är uppbyggda

Labora&on 1 Variabler och beräkningar övningar/uppgi9er

EDA095 HTML. Per Andersson. April 26, Lund University Innehåll: HTML, CSS, DOM, JavaScript

JAVASCRIPT. Beteende

Repetition. Hypertext. Internet HTTP. Server och klient Föreläsning 2. Text försedd med länkar till andra texter. Många sammankopplade nät

Repetition. Hypertext. Internet HTTP. Server och klient Text försedd med länkar till andra texter. Många sammankopplade nät

HTML och CSS. Eric Elfving Institutionen för datavetenskap. 18 augusti 2015

Att styla webbsidor. Nivå. Uppgiften

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

En bortsprungen katt

CSS. TNMK30 - Elektronisk publicering

WEBDESIGN A - DTR 1210

Introduk+on +ll programmering i JavaScript

Lägga till artiklar i Joomla

HTML och CSS. Eric Elfving Institutionen för Datavetenskap (IDA)

Föreläsning 4. CSS Stilmallar för webben

Webbdesign vt Innehållsförteckning

JavaScript del 2 DocumentWrite, Prompt och ParseInt

JavaScript del 3 If, Operatorer och Confirm

Laboration 2. Webbproduktion En stiligare webbsida HT2015

Sophia Prosell DREAM WEAVER SKAPA OCH PUBLICERA EFFEKTIVA WEBBSIDOR

CSS. Cascading Style Sheets

Spelprogrammering med JavaScript och HTML5

Laboration 2: Xhtml och CSS.

Frågor och svar - Diagnostisk prov ht14 - Webbutveckling 1

Tillämpad fysik och elektronik Per Kvarnbrink m.fl. Laboration 2: HTML och CSS.

CSS-övningar. 1. Grunder

Sidan kommer inte läggas upp någonstans utan du redovisar den för mig på något handledningstillfälle.

Internet och WWW Laboration 3 VT10 Högskolan Dalarna Hans Rosendahl. Laboration 3 CSS del 2. 1 av 20

Internet A. HTML Grunder Maximilien Chiang 1

TNMK30. Elektronisk publicering

Webbdesign vt Innehållsförteckning

För att få respektive betyg krävs: 25 för godkänt, 37,5 för väl godkänt (obs betyget gäller tentan, inte kursen som helhet)

Labora&on 5 Dynamisk HTML och &mers övningar/uppgi=er

Struktur & Layout med CSS

Laboration 6 Formulär och stränghantering övningar/uppgifter

Labora&on 8 Formulär övningar/uppgi6er

Labbrapport: HTML och CSS

Övning (X)HTML 2. Sidan 1 av

Användarmanual för. 1(1)

Användarhandledning Version 1.2

Xhtml och CSS.Tillämpad fysik och elektronik Per Kvarnbrink (redigering Ulf Holmgren 2011)

Övnings hemtentamen med förslag till lösning, webbprogrammering

Lektion 5 HTML, CSS, PHP och MySQL

Webbutveckling Laboration 1: HTML5 och CSS3.

Webbteknik för ingenjörer

WEBDESIGN A - DTR 1210

Styla med CSS3. Översikt. Lektion 1: Styla text med CSS3

Carl-Oscar Hermansson WEBB DESIGN

WEBBUTVECKLING Kursplanering

6. Nu skall vi ställa in vad som skall hända när man klickar på knappen samt att markören skall ändra sig till en hand när markören är på knappen.

TENTAMEN I INTRODUKTION TILL MEDIEPRODUKTION, 5p

Tentamen ITK:P2. Inga hjälpmedel tillåtna förutom penna och papper. Skriv tydligt och texta gärna. 14 st frågor, 70 poäng.

«Sida 2 av 4 Till kursens framsida Sida 4 av 4»

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

Labora&on 2 HTML och validering övningar/uppgi:er

Guide till Mynewsdesk Hosted Newsroom - Kom igång och spegla ditt pressrum!

JavaScript del 9 Dynamik och animeringar

DOM (Document Object Model) är modellen efter vilken en webbläsaren är uppbyggd. Alla objekt/element i webbläsaren finns hierarkiskt ordnade i DOM.

Anvä ndärguide Nyä Expeditionsresor

Övningar i CSS för anpassning till olika enheter

Gesällprov. Webbutveckling klient- och serversidan. Tomas Pålson topa4233

Lab5 för prgmedcl04 Grafik

Vägen till en lyckad responsiv webbdesign.

Användargränssittet (Front-end) i mobilversionen bygger i stor utsträckning på jquery Mobile-ramverket.

Vilken skillnad gör det var du placerar det? Prova båda.

Skapa en webbplats med WordPress

Vi börjar med en penna som ritar när du drar runt den på Scenen.

JS & beteende. TNMK30 - Elektronisk publicering

Manual. Anpassad för CMS Made Simple version 1.9.x (uppdaterad ) Birger Eriksson webblots.se

Frågor och svar Gränssnittsdesign/Webbutveckling

E07 "Greased Lightning"

Materialspecifikationer

Appar med ryggrad. Introduktion till JavaScriptramverket Backbone

Lathund för spel med karta

Widgetguiden Vad är Publits widgetshop?

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Innehåll Introduktion... 3 InteractiveScene.config... 3 Scener <scenes>... 3 Typsnitt <fonts>... 3 Övergångar <transitions>...

CSS-WORKSHOP. Nätverksträff för it-bibliotekarier, 7 mars 2013 Sara Britta Jadelius Trollhättans Stadsbibliotek

Övningar i JavaScript del 5

Nätet. Uppgiften. Nivå

Transkript:

Lektion 3 HTML, CSS och JavaScript I den här lektionen behandlas HTML, CSS och JavaScript (JS). Det förutsätts att lektion 1 och 2 är gjord, eller att du har tillräckliga kunskaper i grundläggande HTML och CSS för att klara den här lektionen. I denna lektion kommer JS att användas för att förändra innehållet i en webbsida (dvs HTML), och för att förändra utseendet (dvs CSS). HTML - Börja så här 1. Skapa ett nytt html-dokument. 2. Skriv Lektion 2 som titel. 3. Sedan ska själva strukturen, fyrkanterna, för webbsidan göras. Dessa fyrkanter skapas med hjälp av <div>. En div är ett generiskt element som kan innehålla andra element, och som är lätt att placera på webbsidan. Läs mer om div här: http://www.w3schools.com/html/html_layout.asp http://www.w3schools.com/tags/tag_div.asp Skapa fyra divar med följande id: left, mid, right, och textbox. Dessa ska tillhöra en klass som kan kallas content. Koden bör nu se ut så här ungefär: <!doctype html> <html> <head> <meta charset="utf-8"> <link href="style.css" media="screen" rel="stylesheet" type="text/css"/> <title>lektion 2</title> </head> <body> <div id="left" class="content" ></div> <div id="mid class="content" ></div> <div id="right" class="content" ></div> <div id="textbox" class="content" ></div> </body> </html> 4. I textbox ska ett stycke läggas till med siffran 0 i. Ge stycket id t clickcounter, vilket kommer att utnyttjas i JS senare. <div id= textbox ><p id="clickcounter" >0</p></div> CSS - Fortsätt så här 1. En div som inte har något innehåll syns inte på webbsidan. För att kunna se vad som gjorts hittills i lektionen, behövs en CSS-fil skapas. I CSS-filen ska body få #6a6a6a som bakgrundsfärg. #left och #right ska få #a6a6a6 som bakgrundsfärg och mid ska få #ff7d00 som bakgrundsfärg. #textbox behöver ingen bakgrundsfärg utan bakgrundsfärgen från body får gälla. 2. Klassen content ska få bredd respektive höjd till 20vw. Det betyder att varje element som tillhör klassen content ska vara 20% av viewport width i höjd och i bredd. Viewport width innebär bredden på browserfönstret. Detta är ett bra sätt att få innehållet på webbsidan att bli mer responsiv eftersom storleken på elementen anpassas efter storleken på fönstret. Läs mer här:

https://css-tricks.com/viewport-sized-typography/ Så här bör CSS-koden se ut ungefär: body { background-color: #6a6a6a;.content { width: 20vw; height: 20vw; #textbox { #left { #mid { background-color: #ff7d00; #right { 3. Om CSS-filen sparas och webbsidan laddas kommer en mörkgrå bakgrund användas. Till vänster i fönstret finns en ljusare grå ruta, med en orange ruta under, under den en ljusgrå ruta, och längst ned siffran 0. 4. Detta är helt ok, men de tre färgade rutorna ska ligga horisontellt bredvid varandra. Detta görs genom att lägga till float: left; i CSS-filen under.content. Float innebär att elementen flyter och hamnar bredvid varandra justerade åt vänster. För att inte siffran 0 också ska flyta och justera sig åt vänster, men till höger om fyrkanterna måste clear: left användas i #textbox. Läs mer om float här: http://www.w3schools.com/css/css_float.asp 5. Nu är det dags att snygga till fyrkanterna. Först ska de få marginal mot omkringliggande element med margin: 2vw;. 6. Nästa steg är att göra fyrkanterna mindre kantiga genom att ändra border-radius till 2vw. Detta rundar av hörnen. Läs mer här: http://www.w3schools.com/cssref/css3_pr_border-radius.asp 7. Sedan ska fyrkanterna få en vit kant/ram runt om. Det görs med border, och ramen ska vara solid 2px tjock och vit. Det skrivs så här: border: solid 2px #fff;. Läs mer om border här: http://www.w3schools.com/css/css_border.asp 8. Därefter ska rutorna få en skuggning mot bakgrunden. Detta görs med boxshadow. Box-shadow har fem saker att specificera: horisontell skugga, vertikal skugga, suddighet i skuggan, spridning av skuggan, samt färg på skuggan. Färgen sätts som RGB-värde med komma mellan varje färgkanal samt alphakanalen (genomskinligheten). Sätt skuggan så här: box-shadow: 0 6px 12px 3px rgba(0, 0, 0, 0.4);. Läs mer om skugga här: http://www.w3schools.com/cssref/css3_pr_box-shadow.asp 9. Spara CSS-filen och ladda om webbsidan. Nu syns fyrkanterna som de ska, även om den undre inte är placerad på rätt ställe. Detta fixas genom att ändra marginalinställningarna för #textbox. Testa margin: 2vw 26vw; vilket ser ok ut, även om det inte blir helt perfekt.

p { 10. Nu är det dags att se över siffran 0. I p i CSS-filen ska teckensnittet ändras med font-family till 'Open Sans Condensed', sans-serif;. Sätt storleken till 8vw, fontvikten (dvs smal via normal till fet) till 300, färgen till orange, och centrera texten. Så här: font-family: 'Open Sans Condensed', sans-serif; font-size: 8vw; font-weight: 300; color: #ff7d00; text-align: center; Läs mer här: http://www.w3schools.com/cssref/pr_font_font-family.asp http://www.w3schools.com/cssref/pr_font_font-size.asp http://www.w3schools.com/cssref/pr_font_weight.asp http://www.w3schools.com/cssref/pr_text_text-align.asp 11. Nu ser 0:an bättre ut, även om den sitter lite för långt ned i rutan. Detta ordnas genom att förändra radhöjden för text i diven texten sitter i, dvs textbox i detta fall. Ange: line-height: 5vw;. http://www.w3schools.com/cssref/pr_dim_line-height.asp 12. Det fyra fyrkanterna ska vara klickbara, och det ska visas genom att musmarkören får ett nytt utseende när den är över fyrkanterna. Detta åstadkoms med cursor: pointer;. Läs mer om cursor här: http://www.w3schools.com/cssref/pr_class_cursor.asp JS - Äntligen är det dags 1. Det går att skriva JS direkt i HTML-dokumentet, men det ska vi inte göra. Det är bättre att samla en eller flera funktioner i en egen fil. Denna fil länkas till från headern i HTML-dokumentet precis som till CSS-filen. På så sätt kan flera HTMLdokument använda samma uppsättning JS i stället för att samma JS ska skrivas i varje HTML-dokument. JS-filen kan i sin tur innehålla flera funktioner. I stället för link används script och vilken källa (src) som avses. Script-taggen måste också avslutas till skillnad mot link. Så här: <script src="lektion2.js"></script> 2. Kommentarer i JS skrivs för en rad med // följt av kommentaren, eller för flera rader /* följt av ett antal rader med kommentarer, och avslutas med */. 3. Skapa nu en ny textfil. Döp den till lektion2.js. 4. En funktion i JS skrivs som function namnetpåfunktionen(eventuella variabler för att ta emot data) { och avslutas sedan med. Till exempel så här: function changecolor(id){ alert(id); 5. Innan det skrivs något i JS behövs HTML-filen ändras något. Fyrkanterna left, mid, och right ska ropa på en funktion som heter changecolor. Det görs med onclick, så här: onclick="changecolor(this.id). Det innebär att när något klickas på anropas funktionen changecolor och id t på elementet som klickades på skickas med. Läs mer här: http://www.w3schools.com/jsref/event_onclick.asp

6. Nu är det dags att skriva JS. Funktionen ska heta changecolor och den ska ta emot id t och spara det i en variabel som kallas id. Sedan ska en alert visas som i sin tur visar id t på elementet som klickades på. En alert visar en ruta, ett nytt litet browserfönter, med textinformation till användaren. Denna alertruta har en Ok-knapp. En alert är också ett ganska smidigt sätt att använda för felsökning, då till exempel olika alerts kan visas beroende på var man är i en if-sats eller för att visa innehållet i en variabel. Läs mer om alerts här: http://www.w3schools.com/js/js_popup.asp 7. Spara JS-filen, och ladda om webbsidan och testa att det fungerar. Om allt fungerar som det ska är det dags att ta bort alerten från funktionen, och börja koda JS på allvar. Det första som ska göras är att låta JS läsa in värdet som finns i siffran som visas på webbsidan, dvs i id="clickcounter". Detta värde ska sparas i en variabel. En variabel i JavaScript deklareras som var variabelnsnamn = värde; (till exempel: var x = 5;). Tänk på att alltid använda bra variabelnamn som visar vad variabeln faktiskt används till, detta kommer att underlätta all kodning och felsökning. Läs mer om variabler i JS här: http://www.w3schools.com/js/js_variables.asp 8. Sedan ska värdet i clickcounter läsas på webbsidan. Det görs med följande kod: document.getelementbyid("clickcounter").textcontent. Det innebär att textinformationen (textcontent) i clickcounter (getelementbyid("clickcounter")) hämtas från webbsidan (document). Läs mer här: http://www.w3schools.com/jsref/prop_node_textcontent.asp 9. Då kommer siffran att läsas ut till en sträng. En sträng går inte att räkna matematik med varför strängen behöver göras om till ett heltal (integer). Genom att använda parseint görs siffran i strängen om till ett heltal. Läs mer här: http://www.w3schools.com/jsref/jsref_parseint.asp https://developer.mozilla.org/en-us/docs/web/javascript/ Reference/Global_Objects/parseInt Läs mer om strängar här: http://www.w3schools.com/js/js_strings.asp Detta ger en kodrad liknande denna: var numberofclicks = parseint(document.getelementbyid("clickcounter").textcontent); 10. Nu läses siffran från webbsidan, men varje klick som görs på rutorna ska göra att denna siffra uppdateras. Det görs genom att använda i stort sett samma kod som tidigare, men denna gång ska clickcounter få värdet av numberofclicks + 1. Så här: document.getelementbyid("clickcounter").textcontent = numberofclicks+1; 11. Spara JS-filen och ladda om webbsidan. Nu ska siffran uppdateras varje gång någon av de tre fyrkanterna klickas på. Det enda sättet att åter nollställa siffran är dock att ladda om sidan. Det är tråkigt. Därför ska rutan med siffran i göras klickbar och den ska kalla på (med hjälp av onclick) en ny funktion som kallas resetpage. Ändra i HTML-koden så att textbox har en onclick. Skriv sedan en ny funktion i JS-filen som sätter clickcounter = 0.

12. Nu ska rutorna byta färg och den som klickas på ska bli orange medan de övriga ljusgrå. Detta kan göras på olika sätt, men i detta fall ska en if-sats i funktionen changecolor användas. En if-sats kollar om ett specifikt villkor uppfyllts och om så är fallet ska vissa saker ske eller ändras. En if-sats skrivs som if (villkor) { vad som ska ske. I detta fall: Om left klickas på ska den bli orange och då ska mid samt right bli ljusgrå. Om mid klickas på ska den bli orange och de andra ljusgrå. Om right klickas på ska den bli orange medan de andra blir ljusgrå. Detta skulle kunna skrivas som tre if-satser, men det är bättre att skriva en if-sats som innehåller else if (annars om). Villkoren för else if kollas om villkoren i den första if inte uppfyllts. Sist kan man ha en else (annars). Uppfylls inte villkoren i tidigare kontroller så gäller alltid else. Så här kan vi skriva if-satsen: if (id == "left") { else if (id == "mid") { else { Detta fungerar eftersom det bara är left, mid eller right som anropar funktionen. Och är det left som klickades ska left bli orange, eller om det är mid så ska mid bli orange, annars är det right som klickades och då ska right bli orange. Läs mer om if-satser här: http://www.w3schools.com/js/js_if_else.asp För att kunna skriva if-satser korrekt måste man känna till hur operatorerna för jämförelser skrivs. Lika med, som ska användas i detta fall, skrivs med två ==. Läs mer om operatorer här: http://www.w3schools.com/js/js_comparisons.asp 13. Nu ska färgen på rutorna ändras. Det görs på samma sätt som för siffran som räknas upp, men i stället för textcontent ska backgroundcolor ändras. Det görs först genom att påpeka att det är CSS som ska ändras med style följt av backgroundcolor. Det id som klickas på ska få "#ff7d00" medan övriga id ska få "#a6a6a6". Varje del av if-satsen behöver alltså få tre rader som sätter färgen för varje fyrkant. document.getelementbyid("left").style.backgroundcolor = "#ff7d00"; 14. Spara JS-filen och ladda om sidan och kolla att allt fungerar. Ändra i funktionen resetpage så att fyrkanternas bakgrundsfärger återställs med orange i mitten och ljusgrått till vänster och till höger. Sedan är all kod JS färdigskriven. CSS - En sista finess 1. Avslutningsvis ska en sista finess göras i CSS-filen. Det som ska ändras är att ändringen av bakgrundsfärg i de tre fyrkanterna ska göras med en snabb fade (transition). Övertoningen (faden) mellan orange och ljusgrått, och vice versa, ska vara snabb, 0.2 sekunder. Problemet med transition är att standarden inte är helt bestämd, utan varje webbrowser tolkar koden lite olika. Därför blir vi tvungna att skriva flera rader kod för att vara säkra på att övertoningen ska fungera bra. Övertoningseffekten ska ligga i klassen.content för att påverka alla fyrkanterna.

-webkit-transition: background-color 0.2s ease-in-out; -moz-transition: background-color 0.2s ease-in-out; -o-transition: background-color 0.2s ease-in-out; -khtml-transition: background-color 0.2s ease-in-out; transition: background-color 0.2s ease-in-out; Läs mer här: http://www.w3schools.com/css/css3_transitions.asp Och här om browserkompatibilitet: http://caniuse.com/#feat=css-transitions 2. När all kodning är klar, testa den i en validator för att få hjälp att upptäcka syntaxfel. HTML: https://validator.w3.org/ CSS: https://jigsaw.w3.org/css-validator/ 3. Om allt stämmer enligt validatorerna, har vi nu en enkel webbsida som innehåller ett utbud av vanliga element, en del CSS-finesser samt JS som ändrar både innehåll (HTML) samt utseende (CSS). HTML-koden: <!doctype html> <html> <head> <meta charset="utf-8"> <link href="style.css" media="screen" rel="stylesheet" type="text/css"/> <script src="lektion2.js"></script> <title>lektion 2</title> </head> <body> <div id="left" class="content" onclick="changecolor(this.id)"></div> <div id="mid" class="content" onclick="changecolor(this.id)"></div> <div id="right" class="content" onclick="changecolor(this.id)"></div> <div id="textbox" class="content" onclick="resetpage()"> <p id="clickcounter">0</p> </div> </body> </html> CSS-koden: body { background-color: #6a6a6a;.content { float: left; width: 20vw; height: 20vw; margin: 2vw; border-radius: 2vw; border: solid 2px #fff; box-shadow: 0 6px 12px 3px rgba(0, 0, 0, 0.4); cursor: pointer; -webkit-transition: background-color 0.2s ease-in-out;

-moz-transition: background-color 0.2s ease-in-out; -o-transition: background-color 0.2s ease-in-out; -khtml-transition: background-color 0.2s ease-in-out; transition: background-color 0.2s ease-in-out; #textbox { clear: left; margin: 2vw 26vw; line-height: 5vw; p { font-family: 'Open Sans Condensed', sans-serif; font-size: 8vw; font-weight: 300; color: #ff7d00; text-align: center; #left { #mid { background-color: #ff7d00; #right { JS-koden: function changecolor(id){ var numberofclicks = parseint(document.getelementbyid("clickcounter").textcontent); document.getelementbyid("clickcounter").textcontent = numberofclicks+1; if (id == "left") { document.getelementbyid("left").style.backgroundcolor = "#ff7d00"; document.getelementbyid("mid").style.backgroundcolor = "#a6a6a6"; document.getelementbyid("right").style.backgroundcolor = "#a6a6a6"; else if (id == "mid") { document.getelementbyid("left").style.backgroundcolor = "#a6a6a6"; document.getelementbyid("mid").style.backgroundcolor = "#ff7d00"; document.getelementbyid("right").style.backgroundcolor = "#a6a6a6"; else { document.getelementbyid("left").style.backgroundcolor = "#a6a6a6"; document.getelementbyid("mid").style.backgroundcolor = "#a6a6a6"; document.getelementbyid("right").style.backgroundcolor = "#ff7d00"; function resetpage(){ document.getelementbyid("clickcounter").textcontent = 0; document.getelementbyid("left").style.backgroundcolor = "#a6a6a6"; document.getelementbyid("mid").style.backgroundcolor = "#ff7d00"; document.getelementbyid("right").style.backgroundcolor = "#a6a6a6";