HTML, CSS och Javascript: Skillnad mellan sidversioner

Från Wikiskola
Hoppa till navigering Hoppa till sök
 
(48 mellanliggande sidversioner av 2 användare visas inte)
Rad 1: Rad 1:
== Intro till Programmering ==
__NOTOC__
= Intro till Programmering =


{{malruta  |
{{malruta  |
Rad 25: Rad 26:
: [http://www.w3schools.com/html/ TryIt Editor] klicka på den gröna Try it-knappen.
: [http://www.w3schools.com/html/ TryIt Editor] klicka på den gröna Try it-knappen.
: [https://atom.io Atom] är ett bra verktyg för att koda med färg.
: [https://atom.io Atom] är ett bra verktyg för att koda med färg.
: [http://www.barebones.com/products/textwrangler/download.html TextWrangler] Traditinellt verktyg för textredigering.
: [http://www.barebones.com/products/textwrangler/download.html TextWrangler] Traditinellt verktyg för textredigering. (Mac)
: Brackets
: Brackets
: [https://codepen.io/pen/ CodePen]


== HTML, CSS och Javascript ==
= html =


Vi jobbar på [http://www.w3schools.com/ W3School] där det finns gott om övningar. Startsidan visar precis vad det handlar om.
[[File:W3schools website.png|W3schools website|right| 400 px]]


== CSS ==
Vi jobbar på [http://www.w3schools.com/ W3School] där det finns gott om övningar inom html, CSS, Javascript, databaser och mycket mer. Startsidan visar precis vad det handlar om.
 
Du börjar din övning med [https://www.w3schools.com/html/default.asp Html 5 tutorial].
 
W3Schools är faktiskt en norsk sida. {{enwp|w3schools}}.
 
= CSS =
 
: [http://www.w3schools.com/html/html_css.asp CSS intro] i html-kursen
: [http://www.w3schools.com/css/default.asp CSS tutorial] - den riktiga CSS-kursen
 
= Javascript =
 
== Introexempel ==
 
Vi kommer att använda en speciell canvas-funktion som låter oss rita saker på en hemsida med hjälp av Javascript. Det blir tydligare och roligare så.


: [http://www.w3schools.com/html/html_css.asp CSS intro] och
: [http://www.w3schools.com/css/default.asp CSS tutorial]
: [http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_canvas_tut_path2 W3Schools TryIt Editor] med canvas och boll.
: [http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_canvas_tut_path2 W3Schools TryIt Editor] med canvas och boll.
:: Testa gärna [https://www.w3schools.com/tags/canvas_fill.asp html Canvas Fill() method]
:: Testa gärna [https://www.w3schools.com/tags/canvas_fill.asp html Canvas Fill() method]
Rad 41: Rad 56:
Förutom att laborera med CSS för canvas border har vi nu laborerat med koden i scriptet <script> </script>. Vi är nu redo för nästa steg där vi tittar närmare på Javascript.
Förutom att laborera med CSS för canvas border har vi nu laborerat med koden i scriptet <script> </script>. Vi är nu redo för nästa steg där vi tittar närmare på Javascript.


== HTML ==
== Javascript ==
{{joke |
<br>
The programmers wife told him to go to the store and get a loaf of bread, <br>and if they have eggs, to get a dozen.
 
The programmer returned with twelve loafs of bread.
}}


Det enda vi gör med html just nu är att konstatera att det är det skapar en hemsida med vår canvas där vi programmerar i javascript.


== Javascript ==
Läs om hur script-taggen fungerar:
Läs om hur script-taggen fungerar:


Rad 116: Rad 135:
[[Fil:Skärmavbild 2016-11-10 kl. 22.16.37.png|200px|right]]
[[Fil:Skärmavbild 2016-11-10 kl. 22.16.37.png|200px|right]]


Rita ett hus eller en fin bild med hjälp av den html du lärt dig på W3Schools.
Rita ett hus eller en fin bild med hjälp av den html och Javascript du lärt dig på W3Schools.


Du kombinerar alltså linjer, rektanglar, cirklar, färger, gradienter och text till en trevlig bild.
Du kombinerar alltså linjer, rektanglar, cirklar, färger, gradienter och text till en trevlig bild.


Sedan tar du en skärmdump på bilden och sparar för säkerhets skul.,
Sedan tar du en skärmdump på bilden och sparar för säkerhets skull.
 
Spara även koden i en .html-fil. Du kommer att kunna visa detta på din egen personliga hemsida lite senare i kursen.


Du ska lämna in koden.Kopiera koden till Anteckningar och spara den  med ändelsen .html. Den lämnar du in på Canvas - Teknik 1.
}}
}}


Rad 129: Rad 149:
[http://www.w3schools.com/code/tryit.asp?filename=F08J8KPEE5L2 Dimitros hus]
[http://www.w3schools.com/code/tryit.asp?filename=F08J8KPEE5L2 Dimitros hus]


== Funktioner ==
= Funktioner =


När du skapade din bild ovan fick du kopiera kodblock för varje byggelement. Koden blir lång och det kan bli fel. Det är därför lämpligt att samla ihop koden i en funktion som sedan åberopas från huvudprogrammet.  
När du skapade din bild ovan fick du kopiera kodblock för varje byggelement. Koden blir lång och det kan bli fel. Det är därför lämpligt att samla ihop koden i en funktion som sedan åberopas från huvudprogrammet.  
Rad 165: Rad 185:
Skapa en egen funktion som räknar ut något på samma sätt.
Skapa en egen funktion som räknar ut något på samma sätt.


=== Lägg in funktioner i Husbilden ===
Du kan använda funktioner för att förenkla koden i din husbild. Du kan arbeta på detta sätt när du skapar nya bilder, exempelvis en figur (gubbe) till ett kommande spel.


{{uppgruta | '''Funktioner förenklar - skapa en gubbe'''
{{uppgruta | '''Funktioner förenklar - skapa en gubbe'''
Rad 202: Rad 225:
this.myRectangle(50, 20, 50, 70, "Green");
this.myRectangle(50, 20, 50, 70, "Green");
this.myRectangle(90, 200, 50, 70, "Red");
this.myRectangle(90, 200, 50, 70, "Red");
</script>
</body>
</html>
</pre>
}}
=== Använd variabler till funktionerna ===
I exemplet nedan har vi lagt till variabler för att styra var de röda rektanglarna hamnar.
{{Lista | Variabler och funktioner
<pre>
<!DOCTYPE html>
<html>
<body>
<canvas id="myCanvas" width="400" height="500"
style="border:1px solid #d3d3d3;">
Your browser does not support the canvas element.
</canvas>
<script>
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var startX = 40;
var startY = 40;
var distX = 80;
var distY = 110;
var bredd = 50;
function myRectangle(x, y, w, l, color) {
ctx.fillStyle = color;
ctx.fillRect(x, y, w, l);
}
this.myRectangle(startX, startY, bredd, 70, "Red");
this.myRectangle(startX + distX, startY, bredd, 70, "Red");
this.myRectangle(startX + 2*distX, startY, bredd, 70, "Red");
this.myRectangle(startX, startY + distY, bredd, 70, "Red");
this.myRectangle(startX + distX, startY + distY, bredd, 70, "Red");
this.myRectangle(startX + 2*distX, startY + distY, bredd, 70, "Red");
</script>
</script>


Rad 454: Rad 520:
{{clear}}
{{clear}}


== Gör ett spel ==
= Överkurs - Gör ett spel =
[[Fil:Tangentflytt.PNG|400px|höger]]
[[Fil:Tangentflytt.PNG|400px|höger]]


Rad 961: Rad 1 027:
{{clear}}
{{clear}}


== Gör ett ritprogram ==
== Andra plattformar för spelutveckling (med Javascript) ==
 
* [http://phaser.io Phaser]
* [http://processingjs.org/ Processing]
 
= Ritprogrammet =
 
Du behöver skapa två filer:
*index.html
* main.js
 
Använd Anteckningar och spara dem i en egen mapp.
 
== Kod för ritprogrammet ==
 
Programmet nedan är ett halvfärdigt ritprogram. Din uppgift är att förbättra det. Du använder kanske anteckningar eller så har du en redigerare som exempelvis Atom. Börja med att skapa två filer; en index.html och en main.js. Koden hittar du nedan.
 
Testkör programmet och se vad det kan. Du klickar för att rita. Undersök koden för att hitta vilka delar av programmet som gör vad. Du behöver inte förstå hur all kod fungerar.
 
Programmet kan byta färg när man trycker en tangent och det går att ändra radien. Dessutom finns en mouse over-funktion.
 
{{uppgruta | '''Ritprogrammet'''
[[Fil:Skärmavbild 2016-11-10 kl. 08.59.40.png|200px | right]]


[[Fil:Ritprogram1.PNG|400px|höger]]
Ta koden nedan och förbättra till ett fantastiskt ritprogram.


Med följande kod kan du rita på canvas med muspekaren. Det gör att du kan bygga ett Paintliknade program. Nedan finns ett exempel men det kommer fler. Koden behöver städas lite också :-)
Det innebär att du lägger in fler färger, förklarande bokstäver och mousover-funktioner. Du kommer att kopiera från den befintliga koden och ändra vissa parametrar. När du gör detta kommer du att lära dig mer programmering. Lägg in en text som förklarar viilka funktioner ditt ritprogram har.
}}


{{Lista |
=== html-koden ===
 
{{Lista | index.html
<pre>
<pre>
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<html>
<head>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta charset="utf-8">
<style>
<title>CLICK and DRAW</title>
body {
<style>
     margin: 0;
  body {
  overflow: hidden;
  background-color: lightgrey
  }
</style>
</head>
<body>
<canvas>Please update your browser</canvas>
<script src="main.js"></script>
</body>
</html>
</pre>
}}
 
=== Javascriptet ===
 
{{Lista | main.js
<pre>
// Thanks to Jagadesha NH:
// https://medium.com/@jagadeshanh/html5-canvas-click-and-draw-f665e02f5744
 
var canvas = document.getElementsByTagName("canvas")[0];
var context = canvas.getContext("2d");
var height = canvas.height = window.innerHeight;
var width = canvas.width = window.innerWidth;
var mouseClicked = false, mouseReleased = true;
var  x0 = 50;
  y0 = 30;
  bredd =40;
  hojd = 40;
  distance = 40;
  color = "green";
  radie = 10;
  size = 22;
 
document.addEventListener("click", onMouseClick, false);
document.addEventListener("mousemove", onMouseMove, false);
function onMouseClick(e) {
     mouseClicked = !mouseClicked;
}
}
canvas {
function onMouseMove(e) {
     border:1px solid #d3d3d3;
     if (mouseClicked) {
     background-color: #f1f1f1;
        context.beginPath();
        context.arc(e.clientX, e.clientY, radie, 0, Math.PI * 2, false);
        context.lineWidth = 5;
        context.strokeStyle = color;
        context.stroke();
     }
//en mouse over-funktion
if ((e.clientX > x0) && (e.clientX < x0 + bredd) && (e.clientY > y0)
      && (e.clientY < y0 + hojd))  { color = "green"; }
}
}
</style>
</head>
<body onload="startGame()">
<script>
var myGamePiece;
var myUpBtn;
var myDownBtn;
var myLeftBtn;
var myRightBtn;


function startGame() {
// Här börjar koden inspirerad av spelprogrammering.nu
    myGamePiece = new component(30, 30, "red", 10, 120);
    myUpBtn = new component(30, 30, "blue", 50, 10);   
    myDownBtn = new component(30, 30, "blue", 50, 70);   
    myLeftBtn = new component(30, 30, "blue", 20, 40);   
    myRightBtn = new component(30, 30, "blue", 80, 40);               
    myGameArea.start();
}




var myGameArea = {
function myRectangle(x, y, w, l, color)
    canvas : document.createElement("canvas"),
{
    start : function() {
  context.fillStyle = color
        this.canvas.width = 480;
  context.fillRect(x, y, w, l);
        this.canvas.height = 270;
        this.context = this.canvas.getContext("2d");
        document.body.insertBefore(this.canvas, document.body.childNodes[0]);
        this.interval = setInterval(updateGameArea, 20);
        window.addEventListener('mousedown', function (e) {
            myGameArea.x = e.pageX;
            myGameArea.y = e.pageY;
        })
        window.addEventListener('mouseup', function (e) {
            myGameArea.x = false;
            myGameArea.y = false;
        })
        window.addEventListener('touchstart', function (e) {
            myGameArea.x = e.pageX;
            myGameArea.y = e.pageY;
        })
        window.addEventListener('touchend', function (e) {
            myGameArea.x = false;
            myGameArea.y = false;
        })
    },  
    clear : function(){
        this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
    }
}
}


function component(width, height, color, x, y) {
function myText(x, y, size, text, color)
    this.width = width;
{
    this.height = height;
  context.font = size + "pt Helvetica";
    this.speedX = 0;
  context.fillStyle = color;
    this.speedY = 0;
  context.fillText(text, x, y);
    this.x = x;
    this.y = y;  
    this.update = function() {
        ctx = myGameArea.context;
        ctx.fillStyle = color;
      ctx.fillRect(this.x, this.y, this.width, this.height);
    }
    this.clicked = function() {
        var myleft = this.x;
        var myright = this.x + (this.width);
        var mytop = this.y;
        var mybottom = this.y + (this.height);
        var clicked = true;
        if ((mybottom < myGameArea.y) || (mytop > myGameArea.y) || (myright < myGameArea.x) || (myleft > myGameArea.x)) {
            clicked = false;
        }
        return clicked;
    }
}
}


function updateGameArea() {
// rita de f?rgade rutorna
//    myGameArea.clear();
   this.myRectangle(x0, y0, bredd, hojd, "green");
    if (myGameArea.x) {
  this.myRectangle(x0, y0 + distance, bredd, hojd, "blue");
        myGamePiece = new component(30, 30, "green", myGameArea.x, myGameArea.y);
  this.myText(x0-30, y0 + distance+25, 18, "b", "blue");
   
  this.myRectangle(x0, y0 + 2 * distance, bredd, hojd, "yellow");
        if (myUpBtn.clicked()) {
  this.myRectangle(x0, y0 + 3 * distance, bredd, hojd, "pink");
        //   myGamePiece.y -= 1;
 
        }
// v?lj f?rg att rita med
        if (myDownBtn.clicked()) {
window.addEventListener('keydown',this.check,false);
        //    myGamePiece.y += 1;
 
        }
// function check(e) {
        if (myLeftBtn.clicked()) {
//    alert(e.keyCode);
        //   myGamePiece.x += -1;
//}
         }
 
        if (myRightBtn.clicked()) {
function check(e) {
         //    myGamePiece.x += 1;
    var code = e.keyCode
        }
// Ändra färg
     }
    if (code == 71)
    myUpBtn.update();      
         color = "green";
     myDownBtn.update();      
    if (code == 66)
    myLeftBtn.update();      
         color = "blue";
    myRightBtn.update();                               
     if (code == 89)
     myGamePiece.update();
        color = "yellow";
     if (code == 80)
        color = "pink";
// Ändra radie
if (code == 49)
    radie = 5;
if (code == 50)
     radie = 10;
}
}
</pre>
}}


</script>
=== Exempel ===


<p>Click on the blue "buttons" to make the red square move.</p>
: Ett [https://19huhe.ssis.nu/ritprogram/ ritprogram] av Hugo Helm
</body>
: Ett [https://19thli.ssis.nu/wp-content/uploads/2019/09/index.html ritprogram] av Theresia Lindahl.
</html>
<headertabs />
</pre>}}

Nuvarande version från 21 november 2019 kl. 22.07

[redigera]
Mål för undervisningen

Vi kommer att arbeta med Ci 1, dvs det centrala innehållet1:

Teknikutvecklingsprocessens alla delar från idé och modell, produkt eller tjänst till användning och återvinning med praktisk tillämpning av teknik och teknikutveckling inom ett eller flera teknikområden.

Ni kommer att kunna visa förmåga:

3. Förmåga att lösa tekniska problem.
6. Kunskaper om hur teknik har utvecklats och utvecklas i samspel med det omgivande samhället samt kunskaper om befintlig teknik och aktuell teknikutveckling.


Som intro kan man titta på några olika exempelsidor med enkel kodning samt några platser där man kan lära sig koda. Utforska gärna detta på egen hand.

Intro till Turtle Logo programmering
Scratch
Lär dig programmera genom att spela spel
Codecademy
Teori - programmering med en presentation.

Editors

Det finns en editor att ladda ner som heter TextWrangler och den fungerar bra men länkarna nedan går till moderna editorer. Testa dig fram så du hittar vad som passar dig bäst.

TryIt Editor klicka på den gröna Try it-knappen.
Atom är ett bra verktyg för att koda med färg.
TextWrangler Traditinellt verktyg för textredigering. (Mac)
Brackets
CodePen