<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sv">
	<id>https://webbling.se/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PGJ</id>
	<title>Webbling - Användarbidrag [sv]</title>
	<link rel="self" type="application/atom+xml" href="https://webbling.se/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PGJ"/>
	<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Special:Bidrag/PGJ"/>
	<updated>2026-09-20T21:10:10Z</updated>
	<subtitle>Användarbidrag</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://webbling.se/index.php?title=CSS-egenskapslista&amp;diff=5104</id>
		<title>CSS-egenskapslista</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=CSS-egenskapslista&amp;diff=5104"/>
		<updated>2026-08-30T01:45:20Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Här är en lista på de flesta [[CSS-egenskap]]erna. Då [[CSS]] är en ständigt föränderlig standard (eller snarare flera delstandarder), täcker inte denna lista varenda liten egenskap som finns tillgänglig. Dock så bör detta vara ett bra urval.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-danger&amp;quot;&amp;gt;&lt;br /&gt;
Det finns även en hel del CSS-egenskaper som är specifika för olika webbläsare. Generellt sett bör man undvika att använda sig av dessa och hålla sig till de som är standardiserade. Då blir din webbsida mer framtidssäker och mer tillgänglig för dina användare.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
== A ==&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[align-content]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Styr hur innehållet i flexboxar ska läggas ut när det inte får plats på en enda rad. Påverkar enbart om &amp;lt;code&amp;gt;flex-wrap: wrap&amp;lt;/code&amp;gt; gäller för flexbehållaren. Se [[flexbox_grunder|flexbox grunder]] och [[avancerad_flexbox|avancerad flexbox]] för mer information.&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[align-items]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Justerar hur en flexbehållares innehåll placeras ut längs med korsaxeln.  Se [[flexbox_grunder|flexbox grunder]] och [[avancerad_flexbox|avancerad flexbox]] för mer information och specifikt [[Mer_flexbox#align-items|detta]].&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[align-self]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Styr hur ett individuellt flexföremål ska placeras ut längs med korsaxeln. Används oftast då man vill undanta ett element från det som satts med &amp;lt;code&amp;gt;[[align-items]]&amp;lt;/code&amp;gt;. Se [[flexbox_grunder|flexbox grunder]] och [[avancerad_flexbox|avancerad flexbox]] för mer information och specifikt [[Mer_flexbox#align-items|detta]].&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[all]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Nollställer alla egenskaper, förutom &amp;lt;code&amp;gt;direction&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;unicode-bidi&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation&amp;lt;/code&amp;gt;===&lt;br /&gt;
Samlingsegenskap som används för att sätta de flesta animationsegenskaper samtidigt.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation-delay&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur lång tid som ska förflyta innan animationen börjar spelas.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation-direction&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger om animationen ska spelas baklänges varannan cykel (pingpong-animation).&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation-duration&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur lång tid en animationscykel ska ta.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation-fill-mode&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger på vilket sätt de animerade egenskaperna ska sättas på elementet, såväl före som efter animationen körs.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation-iteration-count&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur många gånger en animation ska spelas upp innan den avslutas helt.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation-name&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger namnet på en animationssekvens.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation-play-state&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger om en animation spelas upp eller om den är stoppad.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation-timing-function&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger vilken tidsfunktion som ska användas när en en animation spelas upp.&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
=== &amp;lt;code&amp;gt;background&amp;lt;/code&amp;gt; ===&lt;br /&gt;
En samlingsegenskap som sätter alla värden som har med bakgrunden att göra.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;background-attachment&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om en bakgrund ska fixeras eller om den ska skrollas med.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;background-blend-mode&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur utritningen av en bakgrund ska mixas med annat material. Fungerar ungefär som Photoshops blendmodes.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;background-clip&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om bakgrunden ska sträcka sig in under eventuell kantlinje eller ej.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[background-color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att ändra bakgrundsfärgen på ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;background-image&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger en bild som ska användas som bakgrund.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;background-origin&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger var någonstans i en bild som bakgrunden ska hämtas. Används om man vill ha en viss bit ur en större bild.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;background-position&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger var i elementet bakgrunden ska placeras ut.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;background-repeat&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om en bakgrund ska repeteras eller ej.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;background-size&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Storleken på eventuell bakgrund.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för skapa en kantlinje runt ett element. Detta är en samlingsegenskap med vilken man kan ange alla egenskaper som har med kantlinjer att göra (förutom &amp;lt;code&amp;gt;[[border-radius]]&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;[[border-image]]&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*|border-bottom]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för skapa en kantlinje på botten av ett element. Detta är en samlingsegenskap med vilken man kan ange alla egenskaper som har med kantlinjen att göra.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-color | border-bottom-color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjefärgen på en kantlinje på botten av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-*-radius|border-bottom-left-radius]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta skapa ett rundat hörn på ett element, i detta fall det nedre, vänstra hörnet.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-*-radius|border-bottom-right-radius]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta skapa ett rundat hörn på ett element, i detta fall det nedre, högra hörnet.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-style|border-bottom-style]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjetyp på en kantlinje på botten av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-width|border-bottom-width]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta bredden på en kantlinje på botten av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-collapse]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur kanterna i tabellelement ska falla samman.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjefärgen på en eller flera kantlinje på ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-image]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
En samlingsegenskap som används för att sätta allt som har att göra med grafik i kantlinjer.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-image-outset]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur långt utanför kantlinjen som grafiken ska sticka ut.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-image-repeat]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om grafiken i en kantlinje ska repeteras eller ej.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-image-slice]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Ange om grafiken för en kantlinje ska använda sig av så kallad nine-slice.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-image-source]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger URL:en som leder till grafiken för en kantlinje.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-image-width]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger bredden på grafiken för en kantlinje.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*|border-left]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för skapa en kantlinje på vänsterkanten av ett element. Detta är en samlingsegenskap med vilken man kan ange alla egenskaper som har med kantlinjen att göra.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-color | border-left-color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjefärgen på en kantlinje på vänstersidan av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-style|border-left-style]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjetyp på en kantlinje på vänstersidan av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-width|border-left-width]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta bredden på en kantlinje på vänstersidan av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-radius]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta skapa rundade hörn på ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*|border-right]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för skapa en kantlinje på högerkanten av ett element. Detta är en samlingsegenskap med vilken man kan ange alla egenskaper som har med kantlinjen att göra.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-color | border-right-color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjefärgen på en kantlinje på högersidan av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-style|border-right-style]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjetyp på en kantlinje på högersidan av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-width|border-left-width]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta bredden på en kantlinje på högersidan av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*|border-top]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för skapa en kantlinje på toppen av ett element. Detta är en samlingsegenskap med vilken man kan ange alla egenskaper som har med kantlinjen att göra.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-style]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjetypen på en eller flera kantlinje på ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-color | border-top-color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjefärgen på en kantlinje på toppen av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-*-radius|border-top-left-radius]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta skapa ett rundat hörn på ett element, i detta fall det övre, vänstra hörnet.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-*-radius|border-top-right-radius]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta skapa ett rundat hörn på ett element, i detta fall det nedre, högra hörnet.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-style|border-top-style]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjetyp på en kantlinje på toppen av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-width|border-left-width]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta bredden på en kantlinje på toppen av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-width]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjebredden på en eller flera kantlinje på ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[bottom]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger var den botten på ett element ska placeras. Hur detta tolkas varierar med vilken typ av &amp;lt;code&amp;gt;[[position]]&amp;lt;/code&amp;gt; som angetts för elementet.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[box-shadow]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att skapa en, eller flera, skuggor kring en box.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[box-sizing]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Väljer vilken [[boxmodellen|boxmodell]] som ska gälla för ett blockelement.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[break-after]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om det ska ske en brytning efter ett skapat element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[break-before]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om det ska ske en brytning före ett skapat element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[break-inside]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om det ska ske brytningar ska kontrolleras inuti ett skapat element.&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[caption-side]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger var en illustrations bildtext ska placeras.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[clear]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om flytande element ska ligga mot varandra eller ej. Se [[Layout]] för mer info.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[clip-path]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Klipper ut en del av ett element så det inte visas. Kan användas för att åstadkomma andra former än rent rektangulära regioner.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att ändra förgrundsfärgen på ett element. Mestadels är detta för att förändra textfärgen, men även andra egenskaper påverkas...&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[content]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används tillsammans med &amp;lt;code&amp;gt;::before&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;::after&amp;lt;/code&amp;gt; för att lägga till innehåll i dessa.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[counter-increment]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att öka en [[CSS-räknare]] med ett angivet värde.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[counter-reset]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att nollställa en [[CSS-räknare]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[cursor]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilken typ av cursor som ska användas i ett element.&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
===&amp;lt;code&amp;gt;[[direction]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger i vilken riktning innehåll ska läggas ut, speciellt gäller detta för text. Vi kan sätta om texten ska ritas ifrån vänster till höger, dvs &amp;quot;vanlig&amp;quot; text eller om den ska ritas ut ifrån höger till vänster, t.ex. om det är arabiska.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[display]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger vilken layouttyp ett element ska ritas ut med. I de enklaste fallen kan det vara om ett element är ett blockelement eller ett inlineelement.&lt;br /&gt;
&lt;br /&gt;
== E ==&lt;br /&gt;
===&amp;lt;code&amp;gt;empty-cells&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur tomma celler i en tabell ska hanteras.&lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
===&amp;lt;code&amp;gt;[[filter]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger ett grafikfilter för ett element. Kan användas för att t.ex. göra innehållet i ett element suddigt.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[flex]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
En samlingsegenskap för att sätta &amp;lt;code&amp;gt;[[flex-basis]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[flex-grow]]&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;[[flex-shrink]]&amp;lt;/code&amp;gt; på en och samma gång.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[flex-basis]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger startstorleken på ett flexelement. Se [[Flexbox - sätta storlek]] för mer info.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[flex-direction]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger i vilken riktning flexaxeln ska gå. Se [[Flexbox - sätta riktning]] för mer info.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[flex-flow]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
En samlingsegenskap för att sätta &amp;lt;code&amp;gt;[[flex-direction]]&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;[[flex-wrap]]&amp;lt;/code&amp;gt; på en och samma gång.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[flex-grow]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur mycket ett flexelement ska växa till sig i förhållande till andra flexelement. Se [[Flexbox - sätta storlek]] för mer info.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[flex-shrink]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur mycket ett flexelement ska krympa i förhållande till andra flexelement. Se [[Flexbox - sätta storlek]] för mer info.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[flex-wrap]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur en flexbehållare ska bete sig när det blir &amp;quot;fullt&amp;quot; på flexaxeln. Ska innehållet delas upp på flera rader/kolumner? Se [[Flexbox - flexbehållare med flera rader]] för mer info.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[float]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger om ett element ska vara flytande och hur det i så fall ska positioneras. Det traditionella sättet på vilket man skapar layout i CSS. Se [[layout]] för mer info. [[Flexbox grunder|Flexbox]] är ett modernare och bättre sätt på vilket man kan skapa layout.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
En samlingsegenskap som kan användas för att sätta många av värdena som har med teckensnitt att göra.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-family]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger vilket teckensnitt som ska användas i ett element.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-feature-settings]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Används för att styra egenskaper hos OpenType-teckensnitt.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-kerning]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger för att styra hur mellanrummet mellan bokstäver hanteras.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-language-override]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Används för att hantera tecken som är specifika för speciella språk.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-size]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger vilken storlek som teckensnittet i ett element ska ha.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-size-adjust]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger om storleken på ett teckensnitt ska baseras på dess versaler eller dess gemena (stora/små bokstäver).&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-stretch]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Används för att välja mellan olika typer i ett teckensnitt.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-style]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Används för att ändra mellan olika teckensnittsstilar, t.ex. kursiv.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-synthesis]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Kontrollerar hur och om webbläsaren ska &amp;quot;skapa&amp;quot; tecken som saknas i ett teckensnitt.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-variant]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
En samlingsegenskap som används för att ange värden för alla egenskaperna av typen &amp;lt;code&amp;gt;font-variant-*&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-variant-alternates]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur alternativa tecken som definerats med &amp;lt;code&amp;gt;@font-feature-values&amp;lt;/code&amp;gt; ska hanteras.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-variant-caps]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur versala (stora) bokstäver ska hanteras.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-variant-east-asian]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur asiatiska tecken ska hanteras.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-variant-ligatures]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Används för att ange hur sammanbundna tecken, dvs ligaturer, ska hanteras. &lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-variant-numeric]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Används för att ange hur tecken för siffror ska hanteras.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-variant-position]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur alternativa tecken ska placeras i förhållande till de &amp;quot;vanliga&amp;quot; tecknen.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-weight]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur tjockt ett teckensnitt ska återges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
&lt;br /&gt;
== H ==&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[height]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att ange höjden på ett blockelement. Fungerar lite olika beroende på vilken [[boxmodellen|boxmodell]] man valt.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;hyphens&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur &amp;quot;-&amp;quot;-tecknet ska hanteras när ord bryts.&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;isolation&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger om det ska skapas ett nytt [[stacking context]] för ett element.&lt;br /&gt;
&lt;br /&gt;
== J ==&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[justify-content]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Justerar hur en flexbehållares innehåll placeras ut längs med flexaxeln.  Se [[flexbox_grunder|flexbox grunder]] och [[avancerad_flexbox|avancerad flexbox]] för mer information och specifikt [[Mer_flexbox#justify-content|detta]].&lt;br /&gt;
&lt;br /&gt;
== K ==&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[left]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur den vänstra hörnet ska placeras på ett positionerat element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[letter-spacing]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur mycket utrymme som ska vara mellan varje bokstav.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[line-height]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger höjden på textrader.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[list-style]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
En samlingsegenskap för &amp;lt;code&amp;gt;[[list-style-type]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[list-style-image]]&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;[[list-style-position]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[list-style-image]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger en bild som ska användas för att markera innehållsraderna i en lista.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[list-style-position]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger var innehållsmarkeringen ska placeras i en lista.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[list-style-type]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur vilken typ av innehållsmarkering som ska användas i en lista.&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[margin]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur mycket yttermarginal ett element ska ha. Detta är en samlingsegenskap med vilken man kan sätta marginalerna för alla sidor på samma gång. Se även [[boxmodellen]] för mer information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[margin-*|margin-bottom]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger den nedre yttermarginalen på ett [[element]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[margin-*|margin-left]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger den vänstra yttermarginalen på ett [[element]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[margin-*|margin-right]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger den högra yttermarginalen på ett [[element]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[margin-*|margin-top]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger den övre yttermarginalen på ett [[element]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[marks]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger klippningsmarkeringar på ett dokument.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[mask]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger att enbart vissa delar av ett element ska visas.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[mask-type]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilken typ av mask en SVG-mask är.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[max-height]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger den maximala höjden på ett [[element]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[max-width]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger den maximala bredden på ett [[element]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[max-zoom]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur mycket användaren maximalt ska kunna zoom in.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[min-height]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger den minimala höjden på ett [[element]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[min-width]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger den minimala bredden på ett [[element]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[min-zoom]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vad som är den minsta inzoomning som användaren ska få utföra.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[mix-blend-mode]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur ett element ska blandas med innehållet som ligger under det. Påminner om PhotoShops blendmodes.&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[negative]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Används med [[CSS-räknare]] för bestämma hur negativa tal ska visas.&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[object-fit]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur ett objekts storlek ska justeras gentemot föräldraelementet.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[object-position]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur ett objekts position ska justeras gentemot föräldraelementet.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[opacity]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur genomskinligt ett element ska vara. Detta påverkar allt innehåll i elementet.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[order]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger i vilken ordning ett &amp;quot;flexibelt&amp;quot; element ska placeras i förhållande till övriga flexibla element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[orientation]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur ett dokument ska vara orienterat i förhållande till viewport. Används främst för surfplattor/telefoner.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[orphans]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger det minimala antalet rader som ska vara kvar i slutet på ett blockelement. Används främst för att styra sidbrytningar.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[outline]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger att man vill att det ska ritas en konturlinje kring ett element. Detta påminner om kantlinjer, men är till för att dra uppmärksamheten till sig och visa att något är speciellt med elementet. Detta är en samlingsegenskap där alla outline-egenskaper går att sätta samtidigt.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[outline-color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger färgen på konturlinjen kring ett element.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[outline-offset]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur långt ifrån elementet konturlinjen ska ritas.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[outline-style]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger med vilken linjetyp konturlinjen ska ritas, t.ex. streckad eller heldragen.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[outline-width]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger bredden på konturlinjen.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[overflow]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vad som ska hända om innehållet i elementet flödar över/hamnar utanför. Om man t.ex. vill få upp en scrollbar eller liknande. Detta är en samlingsegenskap som gäller såväl horisontellt som för vertikalt.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[overflow-x]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vad som ska hända om innehållet i elementet flödar över/hamnar utanför i X-led. Om man t.ex. vill få upp en scrollbar eller liknande.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[overflow-y]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vad som ska hända om innehållet i elementet flödar över/hamnar utanför i Y-led. Om man t.ex. vill få upp en scrollbar eller liknande.&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[padding]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur mycket utfyllnad ett element ska ha. Detta är en samlingsegenskap med vilken man kan sätta utfyllnaden för alla sidor på samma gång. Se även [[boxmodellen]] för mer information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[padding-*|padding-bottom]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur mycket utfyllnad som ska finnas i botten av ett element. Se även [[boxmodellen]] för mer information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[padding-*|padding-left]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur mycket utfyllnad som ska finnas på vänstra sidan av ett element. Se även [[boxmodellen]] för mer information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[padding-*|padding-right]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur mycket utfyllnad som ska finnas på högra sidan av ett element. Se även [[boxmodellen]] för mer information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[padding-*|padding-top]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur mycket utfyllnad som ska finnas i toppen av ett element. Se även [[boxmodellen]] för mer information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[page-break-after]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om en sidbrytning ska läggas till efter ett element. Elementet kan inte vara tomt eller positionerat.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[page-break-before]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om en sidbrytning ska läggas till före ett element. Elementet kan inte vara tomt eller positionerat.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[page-break-inside]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om en sidbrytning får förekomma inuti ett element. Elementet kan inte vara tomt eller positionerat.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[perspective]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att styra perspektivet på 3D-element.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[position]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att styra vilken typ av positionering ett element ska ha.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[perspective-origin]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att styra perspektivet på 3D-element.&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[quotes]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilken typ av citationstecken som ska användas för citat.&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[resize]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om ett elements storlek ska kunna ändras av användaren.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[right]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger var den högra kanten på ett element ska placeras. Hur detta tolkas varierar med vilken typ av &amp;lt;code&amp;gt;[[position]]&amp;lt;/code&amp;gt; som angetts för elementet.&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[table-layout]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilken [[algoritm]] som ska användas för att skapa layouten för en tabell.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[tab-size]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur stort utrymme ett tabb-tecken ska uppta.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-align]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur elementet ska placeras horisontellt i relation till andra element.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-align-last]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur den sista textraden i ett elementet ska placeras horisontellt i relation till andra element.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-decoration]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta olika typer av textstilar, såsom t.ex. understrykning. Detta är en samlingsegenskap som kan användas för att sätta alla text-decoration-egenskaperna på en gång.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-decoration-color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger färg på understrykningar och liknande textutsmyckningar.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-decoration-line]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilken typ av linje som ska läggas till på en text, t.ex. en understrykning.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-decoration-style]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilken typ av linje som ska läggas till på en text, t.ex. &amp;lt;code&amp;gt;dotted&amp;lt;/code&amp;gt; för en punkt-linje.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-indent]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur den första textraden i ett stycke ska indenteras.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-justify]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur ett text stycke ska justeras, t.ex. center-justering eller höger-justering.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-overflow]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur text som flödar ut ur ett element ska hanteras, t.ex. om den ska klippas av och inte visas.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-shadow]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger en, eller flera textskuggor.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-transform]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om en text ska omvandlas så den visas med t.ex. enbart versaler.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[top]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger var den toppen på ett element ska placeras. Hur detta tolkas varierar med vilken typ av &amp;lt;code&amp;gt;[[position]]&amp;lt;/code&amp;gt; som angetts för elementet.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transform]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur ett objekt ska förflyttas, roteras, skalas osv.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transform-box]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger en layoutbox, som tjänar som referenspunkt för en &amp;lt;code&amp;gt;[[transform]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transform-origin]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger utifrån vilken punkt en &amp;lt;code&amp;gt;[[transform]]&amp;lt;/code&amp;gt; ska beräknas, t.ex. om man vill sätta en bestämd rotationspunkt.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transform-style]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om transformationer ska vara 2D eller 3D.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transition]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
En samlingsegenskap som används för att sätta allt som har med övergångar att göra.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transition-delay]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur lång tid det ska ta innan övergången körs igång.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transition-duration]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur lång tid en övergång ska ta.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transition-property]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilka egenskaper som ska påverkas av en övergång.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transition-timing-function]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilken tidsfunktion som ska kontrollera en övergång.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== U ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[unicode-bidi]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur sidan ska hantera text som är skriven i olika riktningar, t.ex. om man blandar arabiska och svenska på samma sida.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[unicode-range]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilket spann av unicode-tecken som ska laddas ner.&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[vertical-align]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur ett element av typen &amp;lt;code&amp;gt;inline&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;table-cell&amp;lt;/code&amp;gt; ska placeras vertikalt i relation till dess föräldraelement.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[visibilty]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om ett element är synligt eller ej. Även om det inte är synligt så tar det upp plats i sidan.&lt;br /&gt;
&lt;br /&gt;
== W ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[white-space]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur [[white space]] (dvs, mellanslag, tabs, return osv) ska hanteras i ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[width]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att ange bredden på ett blockelement. Fungerar lite olika beroende på vilken [[boxmodellen|boxmodell]] man valt.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[will-change]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Talar om för webbläsaren att ett element antagligen kommer att förändras på något vis, t.ex. animeras eller något liknande.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[word-break]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur ord ska avstavas när en rad blir för lång.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[word-spacing]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger storleken på mellanrummet mellan ord.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[word-wrap]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om ord ska avstavas när en rad blir för lång&lt;br /&gt;
&lt;br /&gt;
== Z ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[z-index]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Styr hur olika element ska överlappa. Förflyttar elementen längs en tänkt Z-axel.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[zoom]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger default-zoomvärde.&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=CSS-egenskapslista&amp;diff=5103</id>
		<title>CSS-egenskapslista</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=CSS-egenskapslista&amp;diff=5103"/>
		<updated>2026-08-30T01:44:43Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Här är en lista på de flesta [[CSS-egenskap]]erna. Då [[CSS]] är en ständigt föränderlig standard (eller snarare flera delstandarder), täcker inte denna lista varenda liten egenskap som finns tillgänglig. Dock så bör detta vara ett bra urval.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bg-primary&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-danger&amp;quot;&amp;gt;&lt;br /&gt;
Det finns även en hel del CSS-egenskaper som är specifika för olika webbläsare. Generellt sett bör man undvika att använda sig av dessa och hålla sig till de som är standardiserade. Då blir din webbsida mer framtidssäker och mer tillgänglig för dina användare.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
== A ==&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[align-content]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Styr hur innehållet i flexboxar ska läggas ut när det inte får plats på en enda rad. Påverkar enbart om &amp;lt;code&amp;gt;flex-wrap: wrap&amp;lt;/code&amp;gt; gäller för flexbehållaren. Se [[flexbox_grunder|flexbox grunder]] och [[avancerad_flexbox|avancerad flexbox]] för mer information.&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[align-items]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Justerar hur en flexbehållares innehåll placeras ut längs med korsaxeln.  Se [[flexbox_grunder|flexbox grunder]] och [[avancerad_flexbox|avancerad flexbox]] för mer information och specifikt [[Mer_flexbox#align-items|detta]].&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[align-self]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Styr hur ett individuellt flexföremål ska placeras ut längs med korsaxeln. Används oftast då man vill undanta ett element från det som satts med &amp;lt;code&amp;gt;[[align-items]]&amp;lt;/code&amp;gt;. Se [[flexbox_grunder|flexbox grunder]] och [[avancerad_flexbox|avancerad flexbox]] för mer information och specifikt [[Mer_flexbox#align-items|detta]].&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[all]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Nollställer alla egenskaper, förutom &amp;lt;code&amp;gt;direction&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;unicode-bidi&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation&amp;lt;/code&amp;gt;===&lt;br /&gt;
Samlingsegenskap som används för att sätta de flesta animationsegenskaper samtidigt.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation-delay&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur lång tid som ska förflyta innan animationen börjar spelas.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation-direction&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger om animationen ska spelas baklänges varannan cykel (pingpong-animation).&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation-duration&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur lång tid en animationscykel ska ta.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation-fill-mode&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger på vilket sätt de animerade egenskaperna ska sättas på elementet, såväl före som efter animationen körs.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation-iteration-count&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur många gånger en animation ska spelas upp innan den avslutas helt.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation-name&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger namnet på en animationssekvens.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation-play-state&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger om en animation spelas upp eller om den är stoppad.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;animation-timing-function&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger vilken tidsfunktion som ska användas när en en animation spelas upp.&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
=== &amp;lt;code&amp;gt;background&amp;lt;/code&amp;gt; ===&lt;br /&gt;
En samlingsegenskap som sätter alla värden som har med bakgrunden att göra.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;background-attachment&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om en bakgrund ska fixeras eller om den ska skrollas med.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;background-blend-mode&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur utritningen av en bakgrund ska mixas med annat material. Fungerar ungefär som Photoshops blendmodes.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;background-clip&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om bakgrunden ska sträcka sig in under eventuell kantlinje eller ej.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[background-color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att ändra bakgrundsfärgen på ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;background-image&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger en bild som ska användas som bakgrund.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;background-origin&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger var någonstans i en bild som bakgrunden ska hämtas. Används om man vill ha en viss bit ur en större bild.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;background-position&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger var i elementet bakgrunden ska placeras ut.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;background-repeat&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om en bakgrund ska repeteras eller ej.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;background-size&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Storleken på eventuell bakgrund.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för skapa en kantlinje runt ett element. Detta är en samlingsegenskap med vilken man kan ange alla egenskaper som har med kantlinjer att göra (förutom &amp;lt;code&amp;gt;[[border-radius]]&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;[[border-image]]&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*|border-bottom]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för skapa en kantlinje på botten av ett element. Detta är en samlingsegenskap med vilken man kan ange alla egenskaper som har med kantlinjen att göra.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-color | border-bottom-color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjefärgen på en kantlinje på botten av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-*-radius|border-bottom-left-radius]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta skapa ett rundat hörn på ett element, i detta fall det nedre, vänstra hörnet.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-*-radius|border-bottom-right-radius]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta skapa ett rundat hörn på ett element, i detta fall det nedre, högra hörnet.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-style|border-bottom-style]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjetyp på en kantlinje på botten av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-width|border-bottom-width]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta bredden på en kantlinje på botten av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-collapse]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur kanterna i tabellelement ska falla samman.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjefärgen på en eller flera kantlinje på ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-image]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
En samlingsegenskap som används för att sätta allt som har att göra med grafik i kantlinjer.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-image-outset]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur långt utanför kantlinjen som grafiken ska sticka ut.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-image-repeat]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om grafiken i en kantlinje ska repeteras eller ej.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-image-slice]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Ange om grafiken för en kantlinje ska använda sig av så kallad nine-slice.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-image-source]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger URL:en som leder till grafiken för en kantlinje.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-image-width]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger bredden på grafiken för en kantlinje.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*|border-left]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för skapa en kantlinje på vänsterkanten av ett element. Detta är en samlingsegenskap med vilken man kan ange alla egenskaper som har med kantlinjen att göra.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-color | border-left-color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjefärgen på en kantlinje på vänstersidan av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-style|border-left-style]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjetyp på en kantlinje på vänstersidan av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-width|border-left-width]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta bredden på en kantlinje på vänstersidan av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-radius]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta skapa rundade hörn på ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*|border-right]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för skapa en kantlinje på högerkanten av ett element. Detta är en samlingsegenskap med vilken man kan ange alla egenskaper som har med kantlinjen att göra.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-color | border-right-color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjefärgen på en kantlinje på högersidan av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-style|border-right-style]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjetyp på en kantlinje på högersidan av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-width|border-left-width]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta bredden på en kantlinje på högersidan av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*|border-top]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för skapa en kantlinje på toppen av ett element. Detta är en samlingsegenskap med vilken man kan ange alla egenskaper som har med kantlinjen att göra.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-style]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjetypen på en eller flera kantlinje på ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-color | border-top-color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjefärgen på en kantlinje på toppen av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-*-radius|border-top-left-radius]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta skapa ett rundat hörn på ett element, i detta fall det övre, vänstra hörnet.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-*-radius|border-top-right-radius]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta skapa ett rundat hörn på ett element, i detta fall det nedre, högra hörnet.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-style|border-top-style]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjetyp på en kantlinje på toppen av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-*-width|border-left-width]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta bredden på en kantlinje på toppen av ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[border-width]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta linjebredden på en eller flera kantlinje på ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[bottom]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger var den botten på ett element ska placeras. Hur detta tolkas varierar med vilken typ av &amp;lt;code&amp;gt;[[position]]&amp;lt;/code&amp;gt; som angetts för elementet.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[box-shadow]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att skapa en, eller flera, skuggor kring en box.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[box-sizing]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Väljer vilken [[boxmodellen|boxmodell]] som ska gälla för ett blockelement.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[break-after]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om det ska ske en brytning efter ett skapat element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[break-before]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om det ska ske en brytning före ett skapat element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[break-inside]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om det ska ske brytningar ska kontrolleras inuti ett skapat element.&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[caption-side]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger var en illustrations bildtext ska placeras.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[clear]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om flytande element ska ligga mot varandra eller ej. Se [[Layout]] för mer info.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[clip-path]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Klipper ut en del av ett element så det inte visas. Kan användas för att åstadkomma andra former än rent rektangulära regioner.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att ändra förgrundsfärgen på ett element. Mestadels är detta för att förändra textfärgen, men även andra egenskaper påverkas...&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[content]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används tillsammans med &amp;lt;code&amp;gt;::before&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;::after&amp;lt;/code&amp;gt; för att lägga till innehåll i dessa.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[counter-increment]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att öka en [[CSS-räknare]] med ett angivet värde.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[counter-reset]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att nollställa en [[CSS-räknare]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[cursor]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilken typ av cursor som ska användas i ett element.&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
===&amp;lt;code&amp;gt;[[direction]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger i vilken riktning innehåll ska läggas ut, speciellt gäller detta för text. Vi kan sätta om texten ska ritas ifrån vänster till höger, dvs &amp;quot;vanlig&amp;quot; text eller om den ska ritas ut ifrån höger till vänster, t.ex. om det är arabiska.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[display]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger vilken layouttyp ett element ska ritas ut med. I de enklaste fallen kan det vara om ett element är ett blockelement eller ett inlineelement.&lt;br /&gt;
&lt;br /&gt;
== E ==&lt;br /&gt;
===&amp;lt;code&amp;gt;empty-cells&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur tomma celler i en tabell ska hanteras.&lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
===&amp;lt;code&amp;gt;[[filter]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger ett grafikfilter för ett element. Kan användas för att t.ex. göra innehållet i ett element suddigt.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[flex]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
En samlingsegenskap för att sätta &amp;lt;code&amp;gt;[[flex-basis]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[flex-grow]]&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;[[flex-shrink]]&amp;lt;/code&amp;gt; på en och samma gång.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[flex-basis]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger startstorleken på ett flexelement. Se [[Flexbox - sätta storlek]] för mer info.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[flex-direction]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger i vilken riktning flexaxeln ska gå. Se [[Flexbox - sätta riktning]] för mer info.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[flex-flow]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
En samlingsegenskap för att sätta &amp;lt;code&amp;gt;[[flex-direction]]&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;[[flex-wrap]]&amp;lt;/code&amp;gt; på en och samma gång.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[flex-grow]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur mycket ett flexelement ska växa till sig i förhållande till andra flexelement. Se [[Flexbox - sätta storlek]] för mer info.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[flex-shrink]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur mycket ett flexelement ska krympa i förhållande till andra flexelement. Se [[Flexbox - sätta storlek]] för mer info.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[flex-wrap]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur en flexbehållare ska bete sig när det blir &amp;quot;fullt&amp;quot; på flexaxeln. Ska innehållet delas upp på flera rader/kolumner? Se [[Flexbox - flexbehållare med flera rader]] för mer info.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[float]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger om ett element ska vara flytande och hur det i så fall ska positioneras. Det traditionella sättet på vilket man skapar layout i CSS. Se [[layout]] för mer info. [[Flexbox grunder|Flexbox]] är ett modernare och bättre sätt på vilket man kan skapa layout.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
En samlingsegenskap som kan användas för att sätta många av värdena som har med teckensnitt att göra.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-family]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger vilket teckensnitt som ska användas i ett element.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-feature-settings]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Används för att styra egenskaper hos OpenType-teckensnitt.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-kerning]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger för att styra hur mellanrummet mellan bokstäver hanteras.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-language-override]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Används för att hantera tecken som är specifika för speciella språk.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-size]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger vilken storlek som teckensnittet i ett element ska ha.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-size-adjust]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger om storleken på ett teckensnitt ska baseras på dess versaler eller dess gemena (stora/små bokstäver).&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-stretch]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Används för att välja mellan olika typer i ett teckensnitt.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-style]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Används för att ändra mellan olika teckensnittsstilar, t.ex. kursiv.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-synthesis]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Kontrollerar hur och om webbläsaren ska &amp;quot;skapa&amp;quot; tecken som saknas i ett teckensnitt.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-variant]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
En samlingsegenskap som används för att ange värden för alla egenskaperna av typen &amp;lt;code&amp;gt;font-variant-*&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-variant-alternates]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur alternativa tecken som definerats med &amp;lt;code&amp;gt;@font-feature-values&amp;lt;/code&amp;gt; ska hanteras.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-variant-caps]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur versala (stora) bokstäver ska hanteras.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-variant-east-asian]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur asiatiska tecken ska hanteras.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-variant-ligatures]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Används för att ange hur sammanbundna tecken, dvs ligaturer, ska hanteras. &lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-variant-numeric]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Används för att ange hur tecken för siffror ska hanteras.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-variant-position]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur alternativa tecken ska placeras i förhållande till de &amp;quot;vanliga&amp;quot; tecknen.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[font-weight]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur tjockt ett teckensnitt ska återges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
&lt;br /&gt;
== H ==&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[height]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att ange höjden på ett blockelement. Fungerar lite olika beroende på vilken [[boxmodellen|boxmodell]] man valt.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;hyphens&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur &amp;quot;-&amp;quot;-tecknet ska hanteras när ord bryts.&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;isolation&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger om det ska skapas ett nytt [[stacking context]] för ett element.&lt;br /&gt;
&lt;br /&gt;
== J ==&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[justify-content]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Justerar hur en flexbehållares innehåll placeras ut längs med flexaxeln.  Se [[flexbox_grunder|flexbox grunder]] och [[avancerad_flexbox|avancerad flexbox]] för mer information och specifikt [[Mer_flexbox#justify-content|detta]].&lt;br /&gt;
&lt;br /&gt;
== K ==&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[left]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur den vänstra hörnet ska placeras på ett positionerat element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[letter-spacing]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur mycket utrymme som ska vara mellan varje bokstav.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[line-height]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger höjden på textrader.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[list-style]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
En samlingsegenskap för &amp;lt;code&amp;gt;[[list-style-type]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[list-style-image]]&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;[[list-style-position]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[list-style-image]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger en bild som ska användas för att markera innehållsraderna i en lista.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[list-style-position]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger var innehållsmarkeringen ska placeras i en lista.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[list-style-type]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur vilken typ av innehållsmarkering som ska användas i en lista.&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[margin]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur mycket yttermarginal ett element ska ha. Detta är en samlingsegenskap med vilken man kan sätta marginalerna för alla sidor på samma gång. Se även [[boxmodellen]] för mer information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[margin-*|margin-bottom]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger den nedre yttermarginalen på ett [[element]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[margin-*|margin-left]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger den vänstra yttermarginalen på ett [[element]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[margin-*|margin-right]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger den högra yttermarginalen på ett [[element]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[margin-*|margin-top]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger den övre yttermarginalen på ett [[element]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[marks]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger klippningsmarkeringar på ett dokument.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[mask]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger att enbart vissa delar av ett element ska visas.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[mask-type]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilken typ av mask en SVG-mask är.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[max-height]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger den maximala höjden på ett [[element]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[max-width]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger den maximala bredden på ett [[element]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[max-zoom]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur mycket användaren maximalt ska kunna zoom in.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[min-height]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger den minimala höjden på ett [[element]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[min-width]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger den minimala bredden på ett [[element]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[min-zoom]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vad som är den minsta inzoomning som användaren ska få utföra.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[mix-blend-mode]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur ett element ska blandas med innehållet som ligger under det. Påminner om PhotoShops blendmodes.&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;[[negative]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Används med [[CSS-räknare]] för bestämma hur negativa tal ska visas.&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[object-fit]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur ett objekts storlek ska justeras gentemot föräldraelementet.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[object-position]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur ett objekts position ska justeras gentemot föräldraelementet.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[opacity]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur genomskinligt ett element ska vara. Detta påverkar allt innehåll i elementet.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[order]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger i vilken ordning ett &amp;quot;flexibelt&amp;quot; element ska placeras i förhållande till övriga flexibla element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[orientation]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger hur ett dokument ska vara orienterat i förhållande till viewport. Används främst för surfplattor/telefoner.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[orphans]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger det minimala antalet rader som ska vara kvar i slutet på ett blockelement. Används främst för att styra sidbrytningar.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[outline]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger att man vill att det ska ritas en konturlinje kring ett element. Detta påminner om kantlinjer, men är till för att dra uppmärksamheten till sig och visa att något är speciellt med elementet. Detta är en samlingsegenskap där alla outline-egenskaper går att sätta samtidigt.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[outline-color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger färgen på konturlinjen kring ett element.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[outline-offset]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur långt ifrån elementet konturlinjen ska ritas.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[outline-style]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger med vilken linjetyp konturlinjen ska ritas, t.ex. streckad eller heldragen.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[outline-width]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger bredden på konturlinjen.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[overflow]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vad som ska hända om innehållet i elementet flödar över/hamnar utanför. Om man t.ex. vill få upp en scrollbar eller liknande. Detta är en samlingsegenskap som gäller såväl horisontellt som för vertikalt.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[overflow-x]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vad som ska hända om innehållet i elementet flödar över/hamnar utanför i X-led. Om man t.ex. vill få upp en scrollbar eller liknande.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[overflow-y]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vad som ska hända om innehållet i elementet flödar över/hamnar utanför i Y-led. Om man t.ex. vill få upp en scrollbar eller liknande.&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[padding]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur mycket utfyllnad ett element ska ha. Detta är en samlingsegenskap med vilken man kan sätta utfyllnaden för alla sidor på samma gång. Se även [[boxmodellen]] för mer information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[padding-*|padding-bottom]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur mycket utfyllnad som ska finnas i botten av ett element. Se även [[boxmodellen]] för mer information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[padding-*|padding-left]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur mycket utfyllnad som ska finnas på vänstra sidan av ett element. Se även [[boxmodellen]] för mer information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[padding-*|padding-right]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur mycket utfyllnad som ska finnas på högra sidan av ett element. Se även [[boxmodellen]] för mer information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[padding-*|padding-top]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur mycket utfyllnad som ska finnas i toppen av ett element. Se även [[boxmodellen]] för mer information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[page-break-after]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om en sidbrytning ska läggas till efter ett element. Elementet kan inte vara tomt eller positionerat.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[page-break-before]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om en sidbrytning ska läggas till före ett element. Elementet kan inte vara tomt eller positionerat.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[page-break-inside]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om en sidbrytning får förekomma inuti ett element. Elementet kan inte vara tomt eller positionerat.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[perspective]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att styra perspektivet på 3D-element.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[position]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att styra vilken typ av positionering ett element ska ha.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[perspective-origin]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att styra perspektivet på 3D-element.&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[quotes]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilken typ av citationstecken som ska användas för citat.&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[resize]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om ett elements storlek ska kunna ändras av användaren.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[right]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger var den högra kanten på ett element ska placeras. Hur detta tolkas varierar med vilken typ av &amp;lt;code&amp;gt;[[position]]&amp;lt;/code&amp;gt; som angetts för elementet.&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[table-layout]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilken [[algoritm]] som ska användas för att skapa layouten för en tabell.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[tab-size]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur stort utrymme ett tabb-tecken ska uppta.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-align]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur elementet ska placeras horisontellt i relation till andra element.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-align-last]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur den sista textraden i ett elementet ska placeras horisontellt i relation till andra element.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-decoration]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att sätta olika typer av textstilar, såsom t.ex. understrykning. Detta är en samlingsegenskap som kan användas för att sätta alla text-decoration-egenskaperna på en gång.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-decoration-color]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger färg på understrykningar och liknande textutsmyckningar.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-decoration-line]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilken typ av linje som ska läggas till på en text, t.ex. en understrykning.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-decoration-style]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilken typ av linje som ska läggas till på en text, t.ex. &amp;lt;code&amp;gt;dotted&amp;lt;/code&amp;gt; för en punkt-linje.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-indent]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur den första textraden i ett stycke ska indenteras.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-justify]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur ett text stycke ska justeras, t.ex. center-justering eller höger-justering.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-overflow]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur text som flödar ut ur ett element ska hanteras, t.ex. om den ska klippas av och inte visas.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-shadow]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger en, eller flera textskuggor.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[text-transform]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om en text ska omvandlas så den visas med t.ex. enbart versaler.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[top]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger var den toppen på ett element ska placeras. Hur detta tolkas varierar med vilken typ av &amp;lt;code&amp;gt;[[position]]&amp;lt;/code&amp;gt; som angetts för elementet.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transform]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur ett objekt ska förflyttas, roteras, skalas osv.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transform-box]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger en layoutbox, som tjänar som referenspunkt för en &amp;lt;code&amp;gt;[[transform]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transform-origin]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger utifrån vilken punkt en &amp;lt;code&amp;gt;[[transform]]&amp;lt;/code&amp;gt; ska beräknas, t.ex. om man vill sätta en bestämd rotationspunkt.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transform-style]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om transformationer ska vara 2D eller 3D.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transition]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
En samlingsegenskap som används för att sätta allt som har med övergångar att göra.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transition-delay]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur lång tid det ska ta innan övergången körs igång.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transition-duration]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur lång tid en övergång ska ta.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transition-property]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilka egenskaper som ska påverkas av en övergång.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[transition-timing-function]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilken tidsfunktion som ska kontrollera en övergång.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== U ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[unicode-bidi]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur sidan ska hantera text som är skriven i olika riktningar, t.ex. om man blandar arabiska och svenska på samma sida.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[unicode-range]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger vilket spann av unicode-tecken som ska laddas ner.&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[vertical-align]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur ett element av typen &amp;lt;code&amp;gt;inline&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;table-cell&amp;lt;/code&amp;gt; ska placeras vertikalt i relation till dess föräldraelement.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[visibilty]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om ett element är synligt eller ej. Även om det inte är synligt så tar det upp plats i sidan.&lt;br /&gt;
&lt;br /&gt;
== W ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[white-space]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur [[white space]] (dvs, mellanslag, tabs, return osv) ska hanteras i ett element.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[width]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att ange bredden på ett blockelement. Fungerar lite olika beroende på vilken [[boxmodellen|boxmodell]] man valt.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[will-change]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Talar om för webbläsaren att ett element antagligen kommer att förändras på något vis, t.ex. animeras eller något liknande.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[word-break]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger hur ord ska avstavas när en rad blir för lång.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[word-spacing]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger storleken på mellanrummet mellan ord.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[word-wrap]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger om ord ska avstavas när en rad blir för lång&lt;br /&gt;
&lt;br /&gt;
== Z ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[z-index]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Styr hur olika element ska överlappa. Förflyttar elementen längs en tänkt Z-axel.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[zoom]]&amp;lt;/code&amp;gt;===&lt;br /&gt;
Anger default-zoomvärde.&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Villkorssatser&amp;diff=5102</id>
		<title>Villkorssatser</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Villkorssatser&amp;diff=5102"/>
		<updated>2026-08-11T22:37:33Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;När man programmerar använder man sig ofta av villkorssatser för att styra programflödet. &lt;br /&gt;
Med hjälp av en villkorssats kan man styra hur programmet ska uppföra sig då ett visst villkor är uppfyllt.&lt;br /&gt;
== &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser ==&lt;br /&gt;
&lt;br /&gt;
Den vanligaste villkorssatsen är &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satsen. Man har då en sektion med kod som enbart utförs när villkoret är sant, till exempel;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if (villkor) &lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;kodblocket utförs endast om villkor är sant&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;Här fortsätter koden oavsett om if-kodblocket kördes eller ej&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eller för att skriva det på vanlig svenska; om &amp;lt;code&amp;gt;villkor&amp;lt;/code&amp;gt; är sant gör det här…&lt;br /&gt;
&lt;br /&gt;
Om &amp;lt;code&amp;gt;villkor&amp;lt;/code&amp;gt; inte är sant, fortsätter programmet att köra koden som finns efter ”&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;”-tecknet.&lt;br /&gt;
&lt;br /&gt;
=== Vad är &amp;lt;code&amp;gt;villkor&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;code&amp;gt;villkor&amp;lt;/code&amp;gt; är någonting som i slutändan kommer att bli &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. Man brukar kalla denna typ av &amp;lt;code&amp;gt;villkor&amp;lt;/code&amp;gt; för ett booleskt värde eller för ett sanningsvärde.&lt;br /&gt;
&lt;br /&gt;
Boolesk algebra är en typ av matematik som behandlar hanteringen av utsagor som enbart kan vara sanna eller falska. Vi återkommer till detta.&lt;br /&gt;
&lt;br /&gt;
Vad är det då som kan bli &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;? Ett vanligt exempel på detta är jämförelse, t.ex. om vi vill kontrollera om en variabel innehåller ett visst värde.  Det kan se ut så här:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  if( värde == 1)&lt;br /&gt;
  {&lt;br /&gt;
    // Utförs om värde är lika med 1, om inte så hoppas detta block över&lt;br /&gt;
  }&lt;br /&gt;
  // Här fortsätter koden&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; jämförelse, likhet ===&lt;br /&gt;
I exemplet användes jämförelse-operatorn; &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; för att kontrollera om &amp;lt;code&amp;gt;värde&amp;lt;/code&amp;gt; är lika med &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Lägg märke till att det är två &amp;quot;&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;&amp;quot;-tecken.&lt;br /&gt;
&lt;br /&gt;
För jämförelser använder vi &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; och för tilldelning använder vi &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;.  Det är ett rätt så vanligt fel att råka skriva enbart ett &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;, när vi egentligen ville ha två. Så var uppmärksam på det!&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt; jämförelse, olikhet ===&lt;br /&gt;
För att kontrollera om två saker skiljer sig från varandra använder vi oss av &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  if( värde != 1)&lt;br /&gt;
  {&lt;br /&gt;
    // Utförs om värde INTE är lika med 1, om inte så hoppas detta block över&lt;br /&gt;
  }&lt;br /&gt;
  // Här fortsätter koden&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I JavsScript betyder &amp;quot;!&amp;quot;-tecknet &amp;quot;not&amp;quot; eller &amp;quot;inte&amp;quot;. Dvs, &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt; betyder alltså &amp;quot;not equal&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Vi återkommer till &amp;lt;code&amp;gt;villkor&amp;lt;/code&amp;gt; och sanningsvärden i nästa sektion.&lt;br /&gt;
=== &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Man kan även begära att något annat ska utföras i de fall som villkoret &#039;&#039;inte&#039;&#039; är sant. Då gör man så här;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( villkor ) &lt;br /&gt;
{&lt;br /&gt;
  // &amp;lt;utförs endast om villkor är sant&amp;gt;&lt;br /&gt;
} else {&lt;br /&gt;
  // &amp;lt;utförs endast om villkor är falskt&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
// Här fortsätter körningen oavsett vilket av ovan kodblock som kördes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Med den programkoden säger man; om &amp;lt;code&amp;gt;villkor&amp;lt;/code&amp;gt; är sant gör det som står i första blocket, i annat fall gör det som står i &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;-blocket.&lt;br /&gt;
&lt;br /&gt;
Man kör alltså antingen det ena eller det andra blocket. Det finns inget fall då bägge blocken kan bli att köras!&lt;br /&gt;
&lt;br /&gt;
=== Nästlade &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser ===&lt;br /&gt;
Om man vill kan man lägga &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser inuti andra &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser. Det kallas nästlade eller inkapslade &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:ar.&lt;br /&gt;
&lt;br /&gt;
Sådana kan man använda om man vill att programmet ska kolla om flera saker är sanna. Men som ni kommer att se i nästa sektion, går det ofta att lösa dylika situationer på ett mer effektivt sätt. &lt;br /&gt;
&lt;br /&gt;
Ett exempel på nästlade &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( villkor1) &lt;br /&gt;
{&lt;br /&gt;
  if ( villkor2) &lt;br /&gt;
  {&lt;br /&gt;
    // &amp;lt;utförs endast om både villkor1 och villkor2 är sanna&amp;gt;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
För att koden längst in ska utföras måste alltså såväl den första &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:en och den andra ha &amp;lt;code&amp;gt;villkor&amp;lt;/code&amp;gt; som är sanna.&lt;br /&gt;
&lt;br /&gt;
I princip kan man nästla hur många &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:ar som helst. Men, som sagt, man kan lösa detta på ett effektivare sätt. För att kunna göra det behöver vi kunna utföra operationer som fungerar med sanningsvärden. Vilket vi återkommer till nästa sektion.&lt;br /&gt;
&lt;br /&gt;
== Överkurs ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Följande är lite överkurs, men det kan vara bra att känna till.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; ==&lt;br /&gt;
När man vill testa något som kan ha många olika värden kan det lätt bli många &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:ar. För att lösa såna situation på ett snyggare sätt så kan man använda sig av &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
switch( testuttryck ) &lt;br /&gt;
{&lt;br /&gt;
  case testvärde1:&lt;br /&gt;
    break;&lt;br /&gt;
  case testvärde2:&lt;br /&gt;
    break;&lt;br /&gt;
  case testvärde3:&lt;br /&gt;
    break;&lt;br /&gt;
 default:&lt;br /&gt;
   break; // Egentligen inte nödvändig, då switchen tar slut efter detta&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Med detta kommando kan man alltså testa ett och samma uttryck mot flera möjliga värden.&lt;br /&gt;
&lt;br /&gt;
Lägg märke till att varje &amp;lt;code&amp;gt;case&amp;lt;/code&amp;gt; avslutas med en &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;. Detta görs för att koden inte ska fortsätta in i efterkommande &amp;lt;code&amp;gt;case&amp;lt;/code&amp;gt;. När ett &amp;lt;code&amp;gt;case&amp;lt;/code&amp;gt; blivit uppfyllt så kommer alla efterföljande &amp;lt;code&amp;gt;case&amp;lt;/code&amp;gt; också att anses som uppfyllda.  Om vi inte satte en &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; skulle körningen alltså fortsätta in i alla efterföljande &amp;lt;code&amp;gt;case&amp;lt;/code&amp;gt;. I vissa fall vill vi att det ska vara så. Låt säga att något ska ske om ett värde är; &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. Då kanske vi skulle skriva så här:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
switch( testuttryck ) &lt;br /&gt;
{&lt;br /&gt;
  case 0:&lt;br /&gt;
  case 1:&lt;br /&gt;
  case 2:&lt;br /&gt;
    // Utförs om testuttryck är 0, 1 eller 2&lt;br /&gt;
    break;&lt;br /&gt;
   case 3:&lt;br /&gt;
     // Utförs enbart om uttryck är 3&lt;br /&gt;
     break;&lt;br /&gt;
 default:&lt;br /&gt;
     // Utförs bara om ingen av ovanstående körts&lt;br /&gt;
   break; // Egentligen inte nödvändig, då switchen tar slut efter detta&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Så &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; används oftast då man har många olika alternativ att välja mellan och det skulle ha blivit jobbigt/fult att köra massa &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:ar på raken.&lt;br /&gt;
&lt;br /&gt;
Kanske man har en meny, där användaren kan välja mellan olika alternativ. Låt säga att alternativen anges med den siffra och det finns tre möjliga val. Då skulle vår &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; kunna se ut så här:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
switch( alternativ ) &lt;br /&gt;
{&lt;br /&gt;
  case 1:&lt;br /&gt;
    // Användaren valde alternativ ett&lt;br /&gt;
    break;&lt;br /&gt;
  case 2:&lt;br /&gt;
    // Användaren valde alternativ två&lt;br /&gt;
    break;&lt;br /&gt;
  case 3:&lt;br /&gt;
    // Användaren valde alternativ tre&lt;br /&gt;
    break;&lt;br /&gt;
 default:&lt;br /&gt;
    // Användaren valde inget av ovanstående!&lt;br /&gt;
   break&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Kommandot &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; används alltså för att ange vad som ska ske om inget av de övriga alternativen uppfylldes. Ofta kan detta vara en plats där man vill ange ett felmeddelande. Låt säga att användaren ska kunna ange en siffra mellan 1 och 3, då vill vi kanske skriva ut ett felmeddelande när något annat anges. Kanske ett felmeddelande som säger nåt i stil med; &amp;quot;Du får bara ange 1, 2 eller 3&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;Ternary-operatorn&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Ett kompakt sätt att göra en villkorlig tilldelning är att använda sig av ternary-operatorn (kallas även trinary-operatorn). Den heter så på grund av att den består av tre delar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
let a = testvillkor ? sant : falskt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vi tilldelar alltså ett värde till variabeln &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Vad som tilldelas beror på ett villkor. Detta villkor skrivs direkt efter &amp;quot;&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;&amp;quot;-tecknet, dvs &amp;lt;code&amp;gt;testvillkor&amp;lt;/code&amp;gt; i detta fall.&lt;br /&gt;
&lt;br /&gt;
Därefter följer ett frågetecken, vilket är det som anger att vi vill köra en ternary-operation. Om villkoret var sant tilldelas det första värdet till variablen. Om villkoret var falskt så tilldelas det sista värdet. Det vill säga det värde som följer efter &amp;quot;&amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&amp;quot;-tecknet.&lt;br /&gt;
&lt;br /&gt;
Det här är inte så jättevanligt att man använder sig av. Det är kompakt och kan vara en snygg lösning i vissa fall. Men det är även relativt svårläst och risken är att det blir svårt att förstå vad som sker.&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivtet ==&lt;br /&gt;
[[Att jobba med sanningsvärden]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Att_jobba_med_sanningsv%C3%A4rden&amp;diff=5101</id>
		<title>Att jobba med sanningsvärden</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Att_jobba_med_sanningsv%C3%A4rden&amp;diff=5101"/>
		<updated>2026-08-11T22:31:21Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man brukar tala om sanningsvärden när man jobbar med villkor. Ett sanningsvärde är antingen &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, dvs sant eller falskt. När ett villkor är sant säger man att villkoret är uppfyllt. Ibland kan man även säga uttryck istället för villkor.&lt;br /&gt;
&lt;br /&gt;
== Exempel på sanningsvärden ==&lt;br /&gt;
Några exempel på sanningsvärden:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! JavaScript-villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| 1 == 1&lt;br /&gt;
|True&lt;br /&gt;
|-&lt;br /&gt;
| 1 == 2&lt;br /&gt;
|False&lt;br /&gt;
|-&lt;br /&gt;
| “alfa” == “alfa”&lt;br /&gt;
|  True&lt;br /&gt;
|-&lt;br /&gt;
| “alfa” == “beta”&lt;br /&gt;
| False&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Jämförelse med &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Lägg märke till att när man utför en jämförelse i JavaScript så använder man sig av ”&amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;”, dvs två likamed-tecken.&lt;br /&gt;
&lt;br /&gt;
Ett likamed-tecken ger tilldelning, medan två ger jämförelse. Tilldelning ändrar innehållet i variabeln, medan jämförelse returnerar &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; utan att ändra något innehåll.&lt;br /&gt;
&lt;br /&gt;
JavaScript har några egenheter. Eftersom JavaScript automatiskt omvandlar datatyper så kan man jämföra på följande vis:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! JavaScript-villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| 1 == &amp;quot;1&amp;quot;&lt;br /&gt;
|True&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Jämförelse med &amp;lt;code&amp;gt;===&amp;lt;/code&amp;gt;==&lt;br /&gt;
Faktum är att man i JavaScript ofta använder sig av &amp;quot;&amp;lt;code&amp;gt;===&amp;lt;/code&amp;gt;&amp;quot;, dvs trippla likamed-tecken. Denna typ av jämförelse kollar både att innehållet är av samma datatyp samt att innehållet är lika.&lt;br /&gt;
&lt;br /&gt;
Vid vanlig jämförelse, &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; försöker JavaScript att omvandla variablernas innehåll så att de blir av samma datatyp. Vilket i många fall kan vara bra. Men det kan uppstå situationer där man jämför äpplen med päron och får resultat som är helt tokiga.&lt;br /&gt;
&lt;br /&gt;
Här är ett exempel på skillnaden mellan de båda jämförelseoperatorerna.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! JavaScript-villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;1&amp;quot; == 1&lt;br /&gt;
|True&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;1&amp;quot; === 1&lt;br /&gt;
|False&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Skillnaden på de två jämförelserna i ovanstående exempel är att &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; är en sträng som innehåller teckenkoden för &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, snarare än det det matematiska värdet &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Med &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;, kommer JavaScript att omvandla höger- och vänsterled till samma datatyp innan jämförelsen. Den översätter alltså tecknet till ett tal och jämför det med talet och då blir ju bägge sidor lika.&lt;br /&gt;
&lt;br /&gt;
Däremot kommer &amp;lt;code&amp;gt;===&amp;lt;/code&amp;gt; &#039;&#039;inte&#039;&#039; att göra någon typomvandlig. Det gör att JavaScript direkt kan se att sakerna inte är lika. Strängen &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; tillhör inte samma datatyp som siffran 1 och därmed kan inte innehållet heller vara lika.&lt;br /&gt;
&lt;br /&gt;
(I den här sektionen kommer vi bara att använda &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser i exemplen. Men alla sanningsvärden skulle fungera lika bra (eller dåligt) i t.ex. &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;-loopar.)&lt;br /&gt;
&lt;br /&gt;
==Enbart &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;==&lt;br /&gt;
Om man vill kan man göra &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser som alltid utförs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( true )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs alltid&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Det är iofs rätt meningslöst att göra så (vi kommer dock att se att det finns tillfällen då liknande konstruktioner är användbara, men det blir först när vi kommer till &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Ännu meningslösare, men likväl möjligt, är att göra en &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-sats som aldrig körs (genom att använda sig av sanningsvärdet &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Jämförelseoperationer ==&lt;br /&gt;
I villkor använder man sig ofta av matematiska jämförelseoperatorer. Några vanliga villkor/jämförelseoperatorer:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! JavaScript-villkor&lt;br /&gt;
! Typ av jämförelse&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a == b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; lika?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a != b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; inte lika?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a &amp;lt; b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; mindre än &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a &amp;gt; b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; större än &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a &amp;lt;= b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; mindre än eller lika med &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a &amp;gt;= b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; strörre än eller lika med &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
I JavaScript betyder ”&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;” icke, eller ”not”, så man utläser alltså ”&amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt;” som icke lika med.&lt;br /&gt;
&lt;br /&gt;
== Kombinera sanningsvärden ==&lt;br /&gt;
Man kan sätta samman mer komplexa villkor med hjälp av; ”&amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt;” som betyder ”och” samt ”&amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt;” som betyder ”eller” (tecknet finns oftast längst ner till vänster på tangenbordet).&lt;br /&gt;
&lt;br /&gt;
Genom att använda dessa instruktioner kan man sammanfoga flera sanningsuttryck till ett. Man kan jämföra med hur man använder sig av + och – när man räknar med vanliga tal i matematiken. Skillnaden är att vi nu ”räknar” med sanningsvärden. (Det finns till och med en speciell gren av matematik som specialiserar sig på räkning med sanningsvärden-/uttryck, det kallas Boolesk algebra.)&lt;br /&gt;
&lt;br /&gt;
=== Och-villkor; &amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
När man använder sig av &amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt; måste bägge villkoren vara uppfyllda för att hela och-villkoret ska bli sant.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( villkor1 &amp;amp;&amp;amp; villkor2 )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs endast om både villkor1 och villkor2 är sanna&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Det innebär att följande gäller för och-villkoret:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;false &amp;amp;&amp;amp; false&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;true &amp;amp;&amp;amp; false&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;false &amp;amp;&amp;amp; true&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;true &amp;amp;&amp;amp; true&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Eller-villkor; &amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt; ===&lt;br /&gt;
När man använder eller-varianten, &amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt;, räcker det med att ett av villkoren är uppfyllt (bägge villkoren kan vara sanna, men det räcker med att ett är det).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( villkor1 || villkor2 )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs endast om något, eller båda, av villkor1 och villkor2 är sant&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Det innebär att följande gäller för eller-villkoret:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;false &amp;amp;&amp;amp; false&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;true &amp;amp;&amp;amp; false&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;false &amp;amp;&amp;amp; true&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;true &amp;amp;&amp;amp; true&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Icke-villkor; &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Icke-operatorn förändrar ett sanningsvärde till dess motsats. Dvs, &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; blir &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; och vice versa.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;!false&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;!true&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
I vissa fall kan det vara snyggare och enklare att skriva ett uttryck på ett visst sätt och sedan lägga ett ”&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;” framför allt för att på så vis omvandla det till sin motsats.&lt;br /&gt;
&lt;br /&gt;
== Sanningsvärden och funktioner ==&lt;br /&gt;
Vissa programfunktioner returnerar &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; och kan därför direkt användas som sanningsvärden/villkor i &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser. Det är speciellt användbart för jämförelsefunktioner för strängvariabler och liknande. &lt;br /&gt;
&lt;br /&gt;
De variabler som innehåller sanningsvärden, dvs &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; kallas för bool eller booleska. Ibland kan det vara praktiskt att spara undan returvärdet från en funktion i en bool-variabel.&lt;br /&gt;
&lt;br /&gt;
T.ex. använder man ofta bool-variabler i &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;-satser.  Ett litet exempel;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
let running = true;&lt;br /&gt;
&lt;br /&gt;
while (running)&lt;br /&gt;
  &amp;lt;massa kod&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  if ( tangent == ”q”)&lt;br /&gt;
  {&lt;br /&gt;
    running = false;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemplet ovan kommer alltså att köras i en loop, ända tills användaren trycker på tangenten ”q”. Då blir &amp;lt;code&amp;gt;running&amp;lt;/code&amp;gt; satt till &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;-loopen avslutas.&lt;br /&gt;
&lt;br /&gt;
När man programmerar är det alltid viktigt att försöka bryta ned varje programuppgift i så små deluppgifter som möjligt. Därför är det ofta bra att skapa små jämförelsefunktioner som returnera &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. Till exempel om man vill kolla om ett tal är ett jämt tal, kan man skapa en liknande funktion;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function isEven ( tal )&lt;br /&gt;
{&lt;br /&gt;
  if( tal % 2 == 0 )&lt;br /&gt;
  {&lt;br /&gt;
    return true;&lt;br /&gt;
  } else {&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
}	&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inte det mest optimala sättet att skapa en dylik funktion, men det är relativt läsbart. Här skapar vi en ny funktion, som heter &amp;lt;code&amp;gt;isEven&amp;lt;/code&amp;gt;. I och med att vi definierat metoden kan vi använda den på andra ställen i vår kod, precis som om den vore en del av programmeringsspråket. På så vis kan vi alltså utvidga språket och specialanpassa det för det vi vill göra.&lt;br /&gt;
&lt;br /&gt;
Ett snyggare och koncisare sätt att skriva ovanstående funktion skulle vara det här:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function isEven ( tal )&lt;br /&gt;
{&lt;br /&gt;
  return tal % 2 == 0;&lt;br /&gt;
}	&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eftersom vi ska returnera ett sanningsvärde och bara gör en enda test, kan vi ju lika gärna returnera resultatvärdet ifrån testet. &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:arna i första varianten tillförde ju inget mer än att de antingen returnerade &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. Vilket ju är de värden vi får ut direkt ifrån vårt test och vi kan därför optimera bort &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:arna. Detta funkar inte i alla fall, men i vissa fall kan det ge en kortare och snyggare lösning.&lt;br /&gt;
&lt;br /&gt;
Nu när man definierat funktionen, finns den att tillgå och man kan använda sig av den i programmets &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( isEven( nånVariabel ) )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs endast om nånVariabel är ett jämt tal &amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man skulle även kunna skriva ”&amp;lt;code&amp;gt;isEven( a ) == true&amp;lt;/code&amp;gt;”, men det behövs inte eftersom ju funktionen alltid returnerar &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. Man undviker oftast att lägga till onödig kod, det skapar bara mer chanser att något blir fel eller att koden blir mer svårläst.&lt;br /&gt;
&lt;br /&gt;
Om man skulle vilja testa om något är udda, d.v.s. motsatsen till jämt, kan man göra så här;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( isEven( nånVariabel ) == false )&lt;br /&gt;
{&lt;br /&gt;
    &amp;lt;utförs endast om nånVariabel är ett udda tal&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ett annat, vanligare, sätt att kontrollera om något är falskt är;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( !isEven( nånVariabel ) )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs endast om nånVariabel är ett udda tal&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Som du kanske minns så betyder ”&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;”-tecknet ”inte” i JavaScript. Användandet av ”not” kommer ifrån Boolesk algebra. ”&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;”-tecknet gör om det efterföljande uttrycket till dess motsats. Det betyder att &amp;lt;code&amp;gt;!true&amp;lt;/code&amp;gt; blir &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;!false&amp;lt;/code&amp;gt; blir &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Självklart kan man använda ”&amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt;” och ”&amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt;” tillsammans med funktioner som returnerar sanningsvärden. Till exempel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( isEven(nånVariabel ) &amp;amp;&amp;amp; nånVariabel &amp;gt; 10 )&lt;br /&gt;
{&lt;br /&gt;
	&amp;lt;utförs endast om nånVariabel är ett jämt tal som är större än 10 &amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Styra prioritetsordning med &amp;quot;&amp;lt;code&amp;gt;()&amp;lt;/code&amp;gt;&amp;quot; ==&lt;br /&gt;
Om man har många ”&amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt;” och/eller ”&amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt;” i rad, kan det bli lite svårläst. Det kan även vara svårt att avgöra i vilken prioritetsordning uttrycken ska utföras. Det kan man oftast lösa genom att gruppera uttrycken inom parenteser (precis som i vanlig matematik när man vill styra vilka beräkningsdelar som ska ske före andra). T.ex.;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( ( isEven( a ) &amp;amp;&amp;amp; a &amp;gt; 10 ) || ( !isEven( a ) &amp;amp;&amp;amp; ( a &amp;lt; 9 &amp;amp;&amp;amp; a &amp;gt; 2 ) )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs när nåt av följande uppfylls;&lt;br /&gt;
   ”a är ett jämt tal som är större än 10”&lt;br /&gt;
   eller&lt;br /&gt;
   ”a är ett udda tal som är större än 2 och mindre än 9” &amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Loopar och slingor]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Att_jobba_med_sanningsv%C3%A4rden&amp;diff=5100</id>
		<title>Att jobba med sanningsvärden</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Att_jobba_med_sanningsv%C3%A4rden&amp;diff=5100"/>
		<updated>2026-08-10T23:14:37Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man brukar tala om sanningsvärden när man jobbar med villkor. Ett sanningsvärde är antingen &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, dvs sant eller falskt. När ett villkor är sant säger man att villkoret är uppfyllt. Ibland kan man även säga uttryck istället för villkor.&lt;br /&gt;
&lt;br /&gt;
== Exempel på sanningsvärden ==&lt;br /&gt;
Några exempel på sanningsvärden:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! JavaScript-villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| 1 == 1&lt;br /&gt;
|True&lt;br /&gt;
|-&lt;br /&gt;
| 1 == 2&lt;br /&gt;
|False&lt;br /&gt;
|-&lt;br /&gt;
| “alfa” == “alfa”&lt;br /&gt;
|  True&lt;br /&gt;
|-&lt;br /&gt;
| “alfa” == “beta”&lt;br /&gt;
| False&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Jämförelse med &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Lägg märke till att när man utför en jämförelse i JavaScript så använder man sig av ”&amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;”, dvs två likamed-tecken.&lt;br /&gt;
&lt;br /&gt;
Ett likamed-tecken ger tilldelning, medan två ger jämförelse. Tilldelning ändrar innehållet i variabeln, medan jämförelse returnerar &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; utan att ändra något innehåll.&lt;br /&gt;
&lt;br /&gt;
JavaScript har några egenheter. Eftersom JavaScript automatiskt omvandlar datatyper så kan man jämföra på följande vis:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! JavaScript-villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| 1 == &amp;quot;1&amp;quot;&lt;br /&gt;
|True&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Jämförelse med &amp;lt;code&amp;gt;===&amp;lt;/code&amp;gt;==&lt;br /&gt;
Faktum är att man i JavaScript ofta använder sig av &amp;quot;&amp;lt;code&amp;gt;===&amp;lt;/code&amp;gt;&amp;quot;, dvs trippla likamed-tecken. Denna typ av jämförelse kollar både att innehållet är av samma datatyp samt att innehållet är lika.&lt;br /&gt;
&lt;br /&gt;
Vid vanlig jämförelse, &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; försöker JavaScript att omvandla variablernas innehåll så att de blir av samma datatyp. Vilket i många fall kan vara bra. Men det kan uppstå situationer där man jämför äpplen med päron och får resultat som är helt tokiga.&lt;br /&gt;
&lt;br /&gt;
Här är ett exempel på skillnaden mellan de båda jämförelseoperatorerna.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! JavaScript-villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;1&amp;quot; == 1&lt;br /&gt;
|True&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;1&amp;quot; === 1&lt;br /&gt;
|False&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Skillnaden på de två jämförelserna i ovanstående exempel är att &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; är en sträng som innehåller teckenkoden för &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, snarare än det det matematiska värdet &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Med &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;, kommer JavaScript att omvandla höger- och vänsterled till samma datatyp innan jämförelsen. Den översätter alltså tecknet till ett tal och jämför det med talet och då blir ju bägge sidor lika.&lt;br /&gt;
&lt;br /&gt;
Däremot kommer &amp;lt;code&amp;gt;===&amp;lt;/code&amp;gt; &#039;&#039;inte&#039;&#039; att göra någon typomvandlig. Det gör att JavaScript direkt kan se att sakerna inte är lika. Strängen &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; tillhör inte samma datatyp som siffran 1 och därmed kan inte innehållet heller vara lika.&lt;br /&gt;
&lt;br /&gt;
(I den här sektionen kommer vi bara att använda &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser i exemplen. Men alla sanningsvärden skulle fungera lika bra (eller dåligt) i t.ex. &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;-loopar.)&lt;br /&gt;
&lt;br /&gt;
==Enbart &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;==&lt;br /&gt;
Om man vill kan man göra &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser som alltid utförs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( true )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs alltid&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Det är iofs rätt meningslöst att göra så (vi kommer dock att se att det finns tillfällen då liknande konstruktioner är användbara, men det blir först när vi kommer till &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Ännu meningslösare, men likväl möjligt, är att göra en &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-sats som aldrig körs (genom att använda sig av sanningsvärdet &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Jämförelseoperationer ==&lt;br /&gt;
I villkor använder man sig ofta av matematiska jämförelseoperatorer. Några vanliga villkor/jämförelseoperatorer:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! JavaScript-villkor&lt;br /&gt;
! Typ av jämförelse&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a == b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; lika?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a != b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; inte lika?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a &amp;lt; b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; mindre än &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a &amp;gt; b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; större än &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a &amp;lt;= b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; mindre än eller lika med &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a &amp;gt;= b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; strörre än eller lika med &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
I JavaScript betyder ”&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;” icke, eller ”not”, så man utläser alltså ”&amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt;” som icke lika med.&lt;br /&gt;
&lt;br /&gt;
== Kombinera sanningsvärden ==&lt;br /&gt;
Man kan sätta samman mer komplexa villkor med hjälp av; ”&amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt;” som betyder ”och” samt ”&amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt;” som betyder ”eller”.&lt;br /&gt;
&lt;br /&gt;
Genom att använda dessa instruktioner kan man foga samman flera sanningsuttryck till ett. Man kan jämföra med hur man använder sig av + och – när man räknar med vanliga tal i matematiken, skillnaden är att vi nu ”räknar” med sanningsvärden. (Det finns till och med en speciell gren av matematik som specialiserar sig på räkning med sanningsvärden-/uttryck, det kallas Boolesk algebra.)&lt;br /&gt;
&lt;br /&gt;
=== Och-villkor; &amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
När man använder sig av &amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt; måste bägge villkoren vara uppfyllda för att hela och-villkoret ska bli sant.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( villkor1 &amp;amp;&amp;amp; villkor2 )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs endast om både villkor1 och villkor2 är sanna&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Det innebär att följande gäller för och-villkoret:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;false &amp;amp;&amp;amp; false&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;true &amp;amp;&amp;amp; false&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;false &amp;amp;&amp;amp; true&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;true &amp;amp;&amp;amp; true&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Eller-villkor; &amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt; ===&lt;br /&gt;
När man använder eller-varianten, &amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt;, räcker det med att ett av villkoren är uppfyllt (bägge villkoren kan vara sanna, men det räcker med att ett är det).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( villkor1 || villkor2 )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs endast om något, eller båda, av villkor1 och villkor2 är sant&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Det innebär att följande gäller för eller-villkoret:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;false &amp;amp;&amp;amp; false&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;true &amp;amp;&amp;amp; false&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;false &amp;amp;&amp;amp; true&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;true &amp;amp;&amp;amp; true&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Icke-villkor; &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Icke-operatorn förändrar ett sanningsvärde till dess motsats. Dvs, &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; blir &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; och vice versa.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;!false&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;!true&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
I vissa fall kan det vara snyggare och enklare att skriva ett uttryck på ett visst sätt och sedan lägga ett ”&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;” framför allt för att på så vis omvandla det till sin motsats.&lt;br /&gt;
&lt;br /&gt;
== Sanningsvärden och funktioner ==&lt;br /&gt;
Vissa programfunktioner returnerar &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; och kan därför direkt användas som sanningsvärden/villkor i &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser. Det är speciellt användbart för jämförelsefunktioner för strängvariabler och liknande. &lt;br /&gt;
&lt;br /&gt;
De variabler som innehåller sanningsvärden, dvs &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; kallas för bool eller booleska. Ibland kan det vara praktiskt att spara undan returvärdet från en funktion i en bool-variabel.&lt;br /&gt;
&lt;br /&gt;
T.ex. använder man ofta bool-variabler i &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;-satser.  Ett litet exempel;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
let running = true;&lt;br /&gt;
&lt;br /&gt;
while (running)&lt;br /&gt;
  &amp;lt;massa kod&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  if ( tangent == ”q”)&lt;br /&gt;
  {&lt;br /&gt;
    running = false;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemplet ovan kommer alltså att köras i en loop, ända tills användaren trycker på tangenten ”q”. Då blir &amp;lt;code&amp;gt;running&amp;lt;/code&amp;gt; satt till &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;-loopen avslutas.&lt;br /&gt;
&lt;br /&gt;
När man programmerar är det alltid viktigt att försöka bryta ned varje programuppgift i så små deluppgifter som möjligt. Därför är det ofta bra att skapa små jämförelsefunktioner som returnera &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. Till exempel om man vill kolla om ett tal är ett jämt tal, kan man skapa en liknande funktion;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function isEven ( tal )&lt;br /&gt;
{&lt;br /&gt;
  if( tal % 2 == 0 )&lt;br /&gt;
  {&lt;br /&gt;
    return true;&lt;br /&gt;
  } else {&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
}	&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inte det mest optimala sättet att skapa en dylik funktion, men det är relativt läsbart. Här skapar vi en ny funktion, som heter &amp;lt;code&amp;gt;isEven&amp;lt;/code&amp;gt;. I och med att vi definierat metoden kan vi använda den på andra ställen i vår kod, precis som om den vore en del av programmeringsspråket. På så vis kan vi alltså utvidga språket och specialanpassa det för det vi vill göra.&lt;br /&gt;
&lt;br /&gt;
Ett snyggare och koncisare sätt att skriva ovanstående funktion skulle vara det här:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function isEven ( tal )&lt;br /&gt;
{&lt;br /&gt;
  return tal % 2 == 0;&lt;br /&gt;
}	&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eftersom vi ska returnera ett sanningsvärde och bara gör en enda test, kan vi ju lika gärna returnera resultatvärdet ifrån testet. &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:arna i första varianten tillförde ju inget mer än att de antingen returnerade &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. Vilket ju är de värden vi får ut direkt ifrån vårt test och vi kan därför optimera bort &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:arna. Detta funkar inte i alla fall, men i vissa fall kan det ge en kortare och snyggare lösning.&lt;br /&gt;
&lt;br /&gt;
Nu när man definierat funktionen, finns den att tillgå och man kan använda sig av den i programmets &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( isEven( nånVariabel ) )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs endast om nånVariabel är ett jämt tal &amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man skulle även kunna skriva ”&amp;lt;code&amp;gt;isEven( a ) == true&amp;lt;/code&amp;gt;”, men det behövs inte eftersom ju funktionen alltid returnerar &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. Man undviker oftast att lägga till onödig kod, det skapar bara mer chanser att något blir fel eller att koden blir mer svårläst.&lt;br /&gt;
&lt;br /&gt;
Om man skulle vilja testa om något är udda, d.v.s. motsatsen till jämt, kan man göra så här;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( isEven( nånVariabel ) == false )&lt;br /&gt;
{&lt;br /&gt;
    &amp;lt;utförs endast om nånVariabel är ett udda tal&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ett annat, vanligare, sätt att kontrollera om något är falskt är;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( !isEven( nånVariabel ) )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs endast om nånVariabel är ett udda tal&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Som du kanske minns så betyder ”&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;”-tecknet ”inte” i JavaScript. Användandet av ”not” kommer ifrån Boolesk algebra. ”&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;”-tecknet gör om det efterföljande uttrycket till dess motsats. Det betyder att &amp;lt;code&amp;gt;!true&amp;lt;/code&amp;gt; blir &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;!false&amp;lt;/code&amp;gt; blir &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Självklart kan man använda ”&amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt;” och ”&amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt;” tillsammans med funktioner som returnerar sanningsvärden. Till exempel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( isEven(nånVariabel ) &amp;amp;&amp;amp; nånVariabel &amp;gt; 10 )&lt;br /&gt;
{&lt;br /&gt;
	&amp;lt;utförs endast om nånVariabel är ett jämt tal som är större än 10 &amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Styra prioritetsordning med &amp;quot;&amp;lt;code&amp;gt;()&amp;lt;/code&amp;gt;&amp;quot; ==&lt;br /&gt;
Om man har många ”&amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt;” och/eller ”&amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt;” i rad, kan det bli lite svårläst. Det kan även vara svårt att avgöra i vilken prioritetsordning uttrycken ska utföras. Det kan man oftast lösa genom att gruppera uttrycken inom parenteser (precis som i vanlig matematik när man vill styra vilka beräkningsdelar som ska ske före andra). T.ex.;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( ( isEven( a ) &amp;amp;&amp;amp; a &amp;gt; 10 ) || ( !isEven( a ) &amp;amp;&amp;amp; ( a &amp;lt; 9 &amp;amp;&amp;amp; a &amp;gt; 2 ) )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs när nåt av följande uppfylls;&lt;br /&gt;
   ”a är ett jämt tal som är större än 10”&lt;br /&gt;
   eller&lt;br /&gt;
   ”a är ett udda tal som är större än 2 och mindre än 9” &amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Loopar och slingor]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Att_jobba_med_sanningsv%C3%A4rden&amp;diff=5099</id>
		<title>Att jobba med sanningsvärden</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Att_jobba_med_sanningsv%C3%A4rden&amp;diff=5099"/>
		<updated>2026-08-10T14:39:51Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man brukar tala om sanningsvärden när man jobbar med villkor. Ett sanningsvärde är antingen &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, dvs sant eller falskt. När ett villkor är sant säger man att villkoret är uppfyllt. Ibland kan man även säga uttryck istället för villkor.&lt;br /&gt;
&lt;br /&gt;
== Exempel på sanningsvärden ==&lt;br /&gt;
Några exempel på sanningsvärden:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! JavaScript-villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| 1 == 1&lt;br /&gt;
|True&lt;br /&gt;
|-&lt;br /&gt;
| 1 == 2&lt;br /&gt;
|False&lt;br /&gt;
|-&lt;br /&gt;
| “alfa” == “alfa”&lt;br /&gt;
|  True&lt;br /&gt;
|-&lt;br /&gt;
| “alfa” == “beta”&lt;br /&gt;
| False&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Jämförelse med &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Lägg märke till att när man utför en jämförelse i JavaScript så använder man av ”&amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;”, dvs två likamed-tecken.&lt;br /&gt;
&lt;br /&gt;
Ett likamed-tecken ger tilldelning, medan två ger jämförelse. Tilldelning ändrar innehållet i variabeln, medan jämförelse returnerar &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; utan att ändra något innehåll.&lt;br /&gt;
&lt;br /&gt;
JavaScript har några egenheter. Eftersom JavaScript automatiskt omvandlar datatyper så kan man jämföra på följande vis:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! JavaScript-villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| 1 == &amp;quot;1&amp;quot;&lt;br /&gt;
|True&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Jämförelse med &amp;lt;code&amp;gt;===&amp;lt;/code&amp;gt;==&lt;br /&gt;
Faktum är att man i JavaScript ofta använder sig av &amp;quot;&amp;lt;code&amp;gt;===&amp;lt;/code&amp;gt;&amp;quot;, dvs trippla likamed-tecken. Denna typ av jämförelse kollar både att innehållet är av samma datatyp samt att innehållet är lika.&lt;br /&gt;
&lt;br /&gt;
Vid vanlig jämförelse, &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; försöker JavaScript att omvandla variablernas innehåll så att de blir av samma datatyp. Vilket i många fall kan vara bra. Men det kan uppstå situationer där man jämför äpplen med päron och får resultat som är helt tokiga.&lt;br /&gt;
&lt;br /&gt;
Här är ett exempel på skillnaden mellan de båda jämförelseoperatorerna.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! JavaScript-villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;1&amp;quot; == 1&lt;br /&gt;
|True&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;1&amp;quot; === 1&lt;br /&gt;
|False&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Skillnaden på de två jämförelserna i ovanstående exempel är att &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; är en sträng som innehåller teckenkoden för &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, snarare än det det matematiska värdet &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Med &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;, kommer JavaScript att omvandla höger- och vänsterled till samma datatyp innan jämförelsen. Den översätter alltså tecknet till ett tal och jämför det med talet och då blir ju bägge sidor lika.&lt;br /&gt;
&lt;br /&gt;
Däremot kommer &amp;lt;code&amp;gt;===&amp;lt;/code&amp;gt; &#039;&#039;inte&#039;&#039; att göra någon typomvandlig. Det gör att JavaScript direkt kan se att sakerna inte är lika. Strängen &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; tillhör inte samma datatyp som siffran 1 och därmed kan inte innehållet heller vara lika.&lt;br /&gt;
&lt;br /&gt;
(I den här sektionen kommer vi bara att använda &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser i exemplen. Men alla sanningsvärden skulle fungera lika bra (eller dåligt) i t.ex. &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;-loopar.)&lt;br /&gt;
&lt;br /&gt;
==Enbart &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;==&lt;br /&gt;
Om man vill kan man göra &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser som alltid utförs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( true )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs alltid&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Det är iofs rätt meningslöst att göra så (vi kommer dock att se att det finns tillfällen då liknande konstruktioner är användbara, men det blir först när vi kommer till &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Ännu meningslösare, men likväl möjligt, är att göra en &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-sats som aldrig körs (genom att använda sig av sanningsvärdet &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Jämförelseoperationer ==&lt;br /&gt;
I villkor använder man sig ofta av matematiska jämförelseoperatorer. Några vanliga villkor/jämförelseoperatorer:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! JavaScript-villkor&lt;br /&gt;
! Typ av jämförelse&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a == b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; lika?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a != b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; inte lika?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a &amp;lt; b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; mindre än &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a &amp;gt; b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; större än &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a &amp;lt;= b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; mindre än eller lika med &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a &amp;gt;= b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Är &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; strörre än eller lika med &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
I JavaScript betyder ”&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;” icke, eller ”not”, så man utläser alltså ”&amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt;” som icke lika med.&lt;br /&gt;
&lt;br /&gt;
== Kombinera sanningsvärden ==&lt;br /&gt;
Man kan sätta samman mer komplexa villkor med hjälp av; ”&amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt;” som betyder ”och” samt ”&amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt;” som betyder ”eller”.&lt;br /&gt;
&lt;br /&gt;
Genom att använda dessa instruktioner kan man foga samman flera sanningsuttryck till ett. Man kan jämföra med hur man använder sig av + och – när man räknar med vanliga tal i matematiken, skillnaden är att vi nu ”räknar” med sanningsvärden. (Det finns till och med en speciell gren av matematik som specialiserar sig på räkning med sanningsvärden-/uttryck, det kallas Boolesk algebra.)&lt;br /&gt;
&lt;br /&gt;
=== Och-villkor; &amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
När man använder sig av &amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt; måste bägge villkoren vara uppfyllda för att hela och-villkoret ska bli sant.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( villkor1 &amp;amp;&amp;amp; villkor2 )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs endast om både villkor1 och villkor2 är sanna&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Det innebär att följande gäller för och-villkoret:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;false &amp;amp;&amp;amp; false&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;true &amp;amp;&amp;amp; false&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;false &amp;amp;&amp;amp; true&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;true &amp;amp;&amp;amp; true&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Eller-villkor; &amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt; ===&lt;br /&gt;
När man använder eller-varianten, &amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt;, räcker det med att ett av villkoren är uppfyllt (bägge villkoren kan vara sanna, men det räcker med att ett är det).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( villkor1 || villkor2 )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs endast om något, eller båda, av villkor1 och villkor2 är sant&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Det innebär att följande gäller för eller-villkoret:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;false &amp;amp;&amp;amp; false&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;true &amp;amp;&amp;amp; false&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;false &amp;amp;&amp;amp; true&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;true &amp;amp;&amp;amp; true&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Icke-villkor; &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Icke-operatorn förändrar ett sanningsvärde till dess motsats. Dvs, &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; blir &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; och vice versa.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Villkor&lt;br /&gt;
! Resultat&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;!false&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;!true&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
I vissa fall kan det vara snyggare och enklare att skriva ett uttryck på ett visst sätt och sedan lägga ett ”&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;” framför allt för att på så vis omvandla det till sin motsats.&lt;br /&gt;
&lt;br /&gt;
== Sanningsvärden och funktioner ==&lt;br /&gt;
Vissa programfunktioner returnerar &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; och kan därför direkt användas som sanningsvärden/villkor i &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser. Det är speciellt användbart för jämförelsefunktioner för strängvariabler och liknande. &lt;br /&gt;
&lt;br /&gt;
De variabler som innehåller sanningsvärden, dvs &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; kallas för bool eller booleska. Ibland kan det vara praktiskt att spara undan returvärdet från en funktion i en bool-variabel.&lt;br /&gt;
&lt;br /&gt;
T.ex. använder man ofta bool-variabler i &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;-satser.  Ett litet exempel;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
let running = true;&lt;br /&gt;
&lt;br /&gt;
while (running)&lt;br /&gt;
  &amp;lt;massa kod&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  if ( tangent == ”q”)&lt;br /&gt;
  {&lt;br /&gt;
    running = false;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemplet ovan kommer alltså att köras i en loop, ända tills användaren trycker på tangenten ”q”. Då blir &amp;lt;code&amp;gt;running&amp;lt;/code&amp;gt; satt till &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;-loopen avslutas.&lt;br /&gt;
&lt;br /&gt;
När man programmerar är det alltid viktigt att försöka bryta ned varje programuppgift i så små deluppgifter som möjligt. Därför är det ofta bra att skapa små jämförelsefunktioner som returnera &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. Till exempel om man vill kolla om ett tal är ett jämt tal, kan man skapa en liknande funktion;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function isEven ( tal )&lt;br /&gt;
{&lt;br /&gt;
  if( tal % 2 == 0 )&lt;br /&gt;
  {&lt;br /&gt;
    return true;&lt;br /&gt;
  } else {&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
}	&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inte det mest optimala sättet att skapa en dylik funktion, men det är relativt läsbart. Här skapar vi en ny funktion, som heter &amp;lt;code&amp;gt;isEven&amp;lt;/code&amp;gt;. I och med att vi definierat metoden kan vi använda den på andra ställen i vår kod, precis som om den vore en del av programmeringsspråket. På så vis kan vi alltså utvidga språket och specialanpassa det för det vi vill göra.&lt;br /&gt;
&lt;br /&gt;
Ett snyggare och koncisare sätt att skriva ovanstående funktion skulle vara det här:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function isEven ( tal )&lt;br /&gt;
{&lt;br /&gt;
  return tal % 2 == 0;&lt;br /&gt;
}	&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eftersom vi ska returnera ett sanningsvärde och bara gör en enda test, kan vi ju lika gärna returnera resultatvärdet ifrån testet. &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:arna i första varianten tillförde ju inget mer än att de antingen returnerade &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. Vilket ju är de värden vi får ut direkt ifrån vårt test och vi kan därför optimera bort &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:arna. Detta funkar inte i alla fall, men i vissa fall kan det ge en kortare och snyggare lösning.&lt;br /&gt;
&lt;br /&gt;
Nu när man definierat funktionen, finns den att tillgå och man kan använda sig av den i programmets &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( isEven( nånVariabel ) )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs endast om nånVariabel är ett jämt tal &amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man skulle även kunna skriva ”&amp;lt;code&amp;gt;isEven( a ) == true&amp;lt;/code&amp;gt;”, men det behövs inte eftersom ju funktionen alltid returnerar &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. Man undviker oftast att lägga till onödig kod, det skapar bara mer chanser att något blir fel eller att koden blir mer svårläst.&lt;br /&gt;
&lt;br /&gt;
Om man skulle vilja testa om något är udda, d.v.s. motsatsen till jämt, kan man göra så här;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( isEven( nånVariabel ) == false )&lt;br /&gt;
{&lt;br /&gt;
    &amp;lt;utförs endast om nånVariabel är ett udda tal&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ett annat, vanligare, sätt att kontrollera om något är falskt är;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( !isEven( nånVariabel ) )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs endast om nånVariabel är ett udda tal&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Som du kanske minns så betyder ”&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;”-tecknet ”inte” i JavaScript. Användandet av ”not” kommer ifrån Boolesk algebra. ”&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;”-tecknet gör om det efterföljande uttrycket till dess motsats. Det betyder att &amp;lt;code&amp;gt;!true&amp;lt;/code&amp;gt; blir &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;!false&amp;lt;/code&amp;gt; blir &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Självklart kan man använda ”&amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt;” och ”&amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt;” tillsammans med funktioner som returnerar sanningsvärden. Till exempel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( isEven(nånVariabel ) &amp;amp;&amp;amp; nånVariabel &amp;gt; 10 )&lt;br /&gt;
{&lt;br /&gt;
	&amp;lt;utförs endast om nånVariabel är ett jämt tal som är större än 10 &amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Styra prioritetsordning med &amp;quot;&amp;lt;code&amp;gt;()&amp;lt;/code&amp;gt;&amp;quot; ==&lt;br /&gt;
Om man har många ”&amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt;” och/eller ”&amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt;” i rad, kan det bli lite svårläst. Det kan även vara svårt att avgöra i vilken prioritetsordning uttrycken ska utföras. Det kan man oftast lösa genom att gruppera uttrycken inom parenteser (precis som i vanlig matematik när man vill styra vilka beräkningsdelar som ska ske före andra). T.ex.;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( ( isEven( a ) &amp;amp;&amp;amp; a &amp;gt; 10 ) || ( !isEven( a ) &amp;amp;&amp;amp; ( a &amp;lt; 9 &amp;amp;&amp;amp; a &amp;gt; 2 ) )&lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;utförs när nåt av följande uppfylls;&lt;br /&gt;
   ”a är ett jämt tal som är större än 10”&lt;br /&gt;
   eller&lt;br /&gt;
   ”a är ett udda tal som är större än 2 och mindre än 9” &amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Loopar och slingor]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Villkorssatser&amp;diff=5098</id>
		<title>Villkorssatser</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Villkorssatser&amp;diff=5098"/>
		<updated>2026-08-10T14:31:14Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;När man programmerar använder man sig ofta av villkorssatser för att styra programflödet. &lt;br /&gt;
Med hjälp av en villkorssats kan man styra hur programmet ska uppföra sig då ett visst villkor är uppfyllt.&lt;br /&gt;
== &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser ==&lt;br /&gt;
&lt;br /&gt;
Den vanligaste villkorssatsen är &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satsen. Man har då en sektion med kod som enbart utförs när villkoret är sant, till exempel;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if (villkor) &lt;br /&gt;
{&lt;br /&gt;
  &amp;lt;kodblocket utförs endast om villkor är sant&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;Här fortsätter koden oavsett om if-kodblocket kördes eller ej&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eller för att skriva det på vanlig svenska; om &amp;lt;code&amp;gt;villkor&amp;lt;/code&amp;gt; är sant gör det här…&lt;br /&gt;
&lt;br /&gt;
Om &amp;lt;code&amp;gt;villkor&amp;lt;/code&amp;gt; inte är sant, fortsätter programmet att köra koden som finns efter ”&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;”-tecknet.&lt;br /&gt;
&lt;br /&gt;
=== Vad är &amp;lt;code&amp;gt;villkor&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;code&amp;gt;villkor&amp;lt;/code&amp;gt; är någonting som i slutändan kommer att bli &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. Man brukar kalla denna typ av &amp;lt;code&amp;gt;villkor&amp;lt;/code&amp;gt; för ett booleskt värde eller för ett sanningsvärde.&lt;br /&gt;
&lt;br /&gt;
Boolesk algebra är en typ av matematik som behandlar hanteringen av utsagor som enbart kan vara sanna eller falska. Vi återkommer till detta.&lt;br /&gt;
&lt;br /&gt;
Vad är det då som kan bli &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;? Ett vanligt exempel på detta är jämförelse, t.ex. om vi vill kontrollera om en variabel innehåller ett visst värde.  Det kan se ut så här:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  if( värde == 1)&lt;br /&gt;
  {&lt;br /&gt;
    // Utförs om värde är satt till 1, om inte så hoppas detta block över&lt;br /&gt;
  }&lt;br /&gt;
  // Här fortsätter koden&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Här användes jämförelse-operatorn; &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; för att kontrollera om &amp;lt;code&amp;gt;värde&amp;lt;/code&amp;gt; är satt till &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.  Lägg märke till att det är två &amp;quot;&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;&amp;quot;-tecken.&lt;br /&gt;
&lt;br /&gt;
För jämförelser använder vi &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; och för tilldelning använder vi &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;.  Det är ett rätt så vanligt fel att råka skriva enbart ett &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;, när vi egentligen ville ha två. Så var uppmärksam på det!&lt;br /&gt;
&lt;br /&gt;
Vi återkommer till &amp;lt;code&amp;gt;villkor&amp;lt;/code&amp;gt; och sanningsvärden i nästa sektion.&lt;br /&gt;
=== &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Man kan även begära att något annat ska utföras i de fall som villkoret &#039;&#039;inte&#039;&#039; är sant. Då gör man så här;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( villkor ) &lt;br /&gt;
{&lt;br /&gt;
  // &amp;lt;utförs endast om villkor är sant&amp;gt;&lt;br /&gt;
} else {&lt;br /&gt;
  // &amp;lt;utförs endast om villkor är falskt&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
// Här fortsätter körningen oavsett vilket av ovan kodblock som kördes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Med den programkoden säger man; om &amp;lt;code&amp;gt;villkor&amp;lt;/code&amp;gt; är sant gör det som står i första blocket, i annat fall gör det som står i &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;-blocket.&lt;br /&gt;
&lt;br /&gt;
Man kör alltså antingen det ena eller det andra blocket. Det finns inget fall då bägge blocken kan bli att köras!&lt;br /&gt;
&lt;br /&gt;
=== Nästlade &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser ===&lt;br /&gt;
Om man vill kan man lägga &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser inuti andra &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser. Det kallas nästlade eller inkapslade &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:ar.&lt;br /&gt;
&lt;br /&gt;
Sådana kan man använda om man vill att programmet ska kolla om flera saker är sanna. Men som ni kommer att se i nästa sektion, går det ofta att lösa dylika situationer på ett mer effektivt sätt. &lt;br /&gt;
&lt;br /&gt;
Ett exempel på nästlade &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-satser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
if ( villkor1) &lt;br /&gt;
{&lt;br /&gt;
  if ( villkor2) &lt;br /&gt;
  {&lt;br /&gt;
    // &amp;lt;utförs endast om både villkor1 och villkor2 är sanna&amp;gt;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
För att koden längst in ska utföras måste alltså såväl den första &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:en och den andra ha &amp;lt;code&amp;gt;villkor&amp;lt;/code&amp;gt; som är sanna.&lt;br /&gt;
&lt;br /&gt;
I princip kan man nästla hur många &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:ar som helst. Men, som sagt, man kan lösa detta på ett effektivare sätt. För att kunna göra det behöver vi kunna utföra operationer som fungerar med sanningsvärden. Vilket vi återkommer till nästa sektion.&lt;br /&gt;
&lt;br /&gt;
== Överkurs ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Följande är lite överkurs, men det kan vara bra att känna till.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; ==&lt;br /&gt;
När man vill testa något som kan ha många olika värden kan det lätt bli många &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:ar. För att lösa såna situation på ett snyggare sätt så kan man använda sig av &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
switch( testuttryck ) &lt;br /&gt;
{&lt;br /&gt;
  case testvärde1:&lt;br /&gt;
    break;&lt;br /&gt;
  case testvärde2:&lt;br /&gt;
    break;&lt;br /&gt;
  case testvärde3:&lt;br /&gt;
    break;&lt;br /&gt;
 default:&lt;br /&gt;
   break; // Egentligen inte nödvändig, då switchen tar slut efter detta&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Med detta kommando kan man alltså testa ett och samma uttryck mot flera möjliga värden.&lt;br /&gt;
&lt;br /&gt;
Lägg märke till att varje &amp;lt;code&amp;gt;case&amp;lt;/code&amp;gt; avslutas med en &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;. Detta görs för att koden inte ska fortsätta in i efterkommande &amp;lt;code&amp;gt;case&amp;lt;/code&amp;gt;. När ett &amp;lt;code&amp;gt;case&amp;lt;/code&amp;gt; blivit uppfyllt så kommer alla efterföljande &amp;lt;code&amp;gt;case&amp;lt;/code&amp;gt; också att anses som uppfyllda.  Om vi inte satte en &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; skulle körningen alltså fortsätta in i alla efterföljande &amp;lt;code&amp;gt;case&amp;lt;/code&amp;gt;. I vissa fall vill vi att det ska vara så. Låt säga att något ska ske om ett värde är; &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. Då kanske vi skulle skriva så här:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
switch( testuttryck ) &lt;br /&gt;
{&lt;br /&gt;
  case 0:&lt;br /&gt;
  case 1:&lt;br /&gt;
  case 2:&lt;br /&gt;
    // Utförs om testuttryck är 0, 1 eller 2&lt;br /&gt;
    break;&lt;br /&gt;
   case 3:&lt;br /&gt;
     // Utförs enbart om uttryck är 3&lt;br /&gt;
     break;&lt;br /&gt;
 default:&lt;br /&gt;
     // Utförs bara om ingen av ovanstående körts&lt;br /&gt;
   break; // Egentligen inte nödvändig, då switchen tar slut efter detta&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Så &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; används oftast då man har många olika alternativ att välja mellan och det skulle ha blivit jobbigt/fult att köra massa &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:ar på raken.&lt;br /&gt;
&lt;br /&gt;
Kanske man har en meny, där användaren kan välja mellan olika alternativ. Låt säga att alternativen anges med den siffra och det finns tre möjliga val. Då skulle vår &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; kunna se ut så här:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
switch( alternativ ) &lt;br /&gt;
{&lt;br /&gt;
  case 1:&lt;br /&gt;
    // Användaren valde alternativ ett&lt;br /&gt;
    break;&lt;br /&gt;
  case 2:&lt;br /&gt;
    // Användaren valde alternativ två&lt;br /&gt;
    break;&lt;br /&gt;
  case 3:&lt;br /&gt;
    // Användaren valde alternativ tre&lt;br /&gt;
    break;&lt;br /&gt;
 default:&lt;br /&gt;
    // Användaren valde inget av ovanstående!&lt;br /&gt;
   break&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Kommandot &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; används alltså för att ange vad som ska ske om inget av de övriga alternativen uppfylldes. Ofta kan detta vara en plats där man vill ange ett felmeddelande. Låt säga att användaren ska kunna ange en siffra mellan 1 och 3, då vill vi kanske skriva ut ett felmeddelande när något annat anges. Kanske ett felmeddelande som säger nåt i stil med; &amp;quot;Du får bara ange 1, 2 eller 3&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;Ternary-operatorn&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Ett kompakt sätt att göra en villkorlig tilldelning är att använda sig av ternary-operatorn (kallas även trinary-operatorn). Den heter så på grund av att den består av tre delar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
let a = testvillkor ? sant : falskt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vi tilldelar alltså ett värde till variabeln &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Vad som tilldelas beror på ett villkor. Detta villkor skrivs direkt efter &amp;quot;&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;&amp;quot;-tecknet, dvs &amp;lt;code&amp;gt;testvillkor&amp;lt;/code&amp;gt; i detta fall.&lt;br /&gt;
&lt;br /&gt;
Därefter följer ett frågetecken, vilket är det som anger att vi vill köra en ternary-operation. Om villkoret var sant tilldelas det första värdet till variablen. Om villkoret var falskt så tilldelas det sista värdet. Det vill säga det värde som följer efter &amp;quot;&amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&amp;quot;-tecknet.&lt;br /&gt;
&lt;br /&gt;
Det här är inte så jättevanligt att man använder sig av. Det är kompakt och kan vara en snygg lösning i vissa fall. Men det är även relativt svårläst och risken är att det blir svårt att förstå vad som sker.&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivtet ==&lt;br /&gt;
[[Att jobba med sanningsvärden]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Variabler&amp;diff=5097</id>
		<title>Variabler</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Variabler&amp;diff=5097"/>
		<updated>2026-08-10T14:23:02Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Programmering består till stor del för beräkningar och bearbetning av data. För att klara av denna datahantering måste man kunna lagra och mellanlagra sina resultat någonstans. Det gör man med hjälp av variabler.&lt;br /&gt;
&lt;br /&gt;
== Lagring ==&lt;br /&gt;
Variabler kan ses som behållare, där man lagrar undan ett visst innehåll under en tid. Som man förstår av namnet kan variablers innehåll variera, d.v.s. den data som de innehåller kan förändras.&lt;br /&gt;
&lt;br /&gt;
När man ger en variabel ett värde säger man att man &#039;&#039;tilldelar&#039;&#039; den ett värde. När man tilldelar en variabel ett nytt värde, skrivs det gamla värdet över med det nya innehållet. Om man skulle vilja spara undan det gamla värdet, måste man lägga över det i en annan variabel innan man tilldelar det nya värdet. Därför behöver man ofta använda sig av diverse temporärvariabler när man skriver program.&lt;br /&gt;
&lt;br /&gt;
== Tilldelning ==&lt;br /&gt;
Användningen av variabler i programmering påminner delvis om hur man använder variabler i matematikens ekvationer, men med några viktiga skillnader.&lt;br /&gt;
&lt;br /&gt;
Det som främst skiljer sig är att ”&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;”-tecknet inte fungerar som i ekvationer! Det betyder tilldelning, dvs. vi sätter variabeln till ett specifikt värde snarare än att vi anger att höger- och vänsterled är lika.&lt;br /&gt;
&lt;br /&gt;
Likaså kan man enbart tilldela ifrån högerled till vänsterled. Med andra ord, variabeln som man vill tilldela ett värde måste alltid stå på vänster sida om ”&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;”-tecknet och det man vill tilldela variabeln ska stå på höger sida.&lt;br /&gt;
&lt;br /&gt;
Datorn kommer alltid att beräkna klart hela högerledet och sedan flytta in resultatet i den variabel som anges i vänsterled.&lt;br /&gt;
&lt;br /&gt;
Följande exempel tilldelar värdet två till en variabel som heter &amp;lt;code&amp;gt;tal&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  tal = 2;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovanstående är alltså en sats som utför en tilldelning. Det har ingenting att göra med varken likhet eller jämförelse. &lt;br /&gt;
&lt;br /&gt;
Alla programrader körs var för sig i sekvens, vilket innebär att denna tilldelning sker först när programmet når raden i fråga. Innan vi når exempelraden kan alltså &amp;lt;code&amp;gt;tal&amp;lt;/code&amp;gt; innehålla vad som helst.&lt;br /&gt;
&lt;br /&gt;
Eftersom högerledet alltid beräknas helt och hållet, skulle alltså &amp;lt;code&amp;gt;tal&amp;lt;/code&amp;gt; innehålla &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; efter det att följande rad körts:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  tal = 2 * 2;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En sak till som skiljer sig från matematiken är att vi kan skriva saker som:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  tal = tal + 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Ovanstående exempel skulle förstås vara helt ogiltigt i matematiken, eftersom vi skulle få att &amp;lt;code&amp;gt;0 = 1&amp;lt;/code&amp;gt;. Vilket ju sällan är sant.&lt;br /&gt;
&lt;br /&gt;
Men i programmering funkar det fint. Vid tilldelning beräknas hela högerledet först. Det gör att programmet läser ut värdet som just nu är lagrat i &amp;lt;code&amp;gt;tal&amp;lt;/code&amp;gt; lägger till &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Då är högerledet färdigt och resultatet tilldelas till &amp;lt;code&amp;gt;tal&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Det spelar alltså ingen roll att samma variabel är med i både höger- och vänsterled. För programmet är högerledet enbart något som ska beräknas och vänsterledet är bara en plats där resultatet av beräkningen ska lagras.&lt;br /&gt;
&lt;br /&gt;
== Deklaration och användning ==&lt;br /&gt;
JavaScript är ett svagt typat språk, det innebär att man inte behöver tala om vilken datatyp en variabel har. Däremot måste man deklarera variabeln, det vill säga man måste skapa variabeln. Gör man inte detta så existerar inte variabeln enligt JavaScript. När man deklarerar talar man om för interpretatorn, som ska tolka programmet, vad variabeln heter. Namnet kommer sedan att vara konstant, medan den data som variabeln innehåller kan förändras.&lt;br /&gt;
&lt;br /&gt;
I JavaScript deklarerar man variabler med &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;, en deklarationssats kan bli att se ut så här:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  let spelare;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
När man deklarerat variabeln &amp;lt;code&amp;gt;spelare&amp;lt;/code&amp;gt; på det viset, har den fortfarande inte tilldelats något värde. Om du skulle använda den till något annat än tilldelning, kan du få en varning om att dess innehåll är odefinierat.&lt;br /&gt;
&lt;br /&gt;
Det är en bra vana att tilldela ett grundvärde till variabler i anslutning till att man deklarerar dem. T.ex. kan man göra så här för att skapa en variabel som har värdet &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; ifrån början:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  let spelare = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
För att senare tilldela ett nytt värde till en variabel, använder man sig av ett vanligt ”&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;”-tecken, t.ex.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  spelare = 2;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Efter tilldelningen har variabeln värdet &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; och eventuellt tidigare innehållet skrivs över och &amp;quot;försvinner&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
När variabeln senare används kommer programmet att titta i ”behållaren” som heter &amp;lt;code&amp;gt;spelare&amp;lt;/code&amp;gt; och se att där finns &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; (det vill säga, ända tills du tilldelar variabeln ett nytt värde).&lt;br /&gt;
&lt;br /&gt;
För programmet är det ingen direkt skillnad om du skriver &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;spelare&amp;lt;/code&amp;gt;, bägge kommer att tolkas som värdet &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; (i alla fall tills du tilldelar &amp;lt;code&amp;gt;spelare&amp;lt;/code&amp;gt; ett annat värde än &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;). Följande kod är alltså likvärdig;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  spelare = 2;&lt;br /&gt;
  FlyttaRacket( spelare );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skulle ge samma resultat som;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  FlyttaRacket( 2 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Förutom att i första exemplet har vi ju kvar värdet &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, lagrat i variabeln &amp;lt;code&amp;gt;spelare&amp;lt;/code&amp;gt;. Vilket kan vara praktiskt om man vill använda värdet igen. Det är ju även mycket enklare att förstå vad &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; har för betydelse om värdet ligger i något som heter &amp;lt;code&amp;gt;spelare&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
== Variabelegenskaper ==&lt;br /&gt;
Man kan säga att variabler har tre grundegenskaper;&lt;br /&gt;
# Namn&lt;br /&gt;
# Datatyp (vilken inte är så viktig i JavaScript, då detta kan förändras beroende på vad variabeln används till)&lt;br /&gt;
# ”Räckvidd”/synlighet&lt;br /&gt;
&lt;br /&gt;
Vi går igenom dessa egenskaper var för sig…&lt;br /&gt;
=== 1. Namn och namngivningskonventioner ===&lt;br /&gt;
Varje variabel behöver ett eget namn eller identifierare, så att den går att urskilja från övriga variabler. Namnet bör helst vara beskrivande, så att man enkelt kan förstå vad variabeln används till. Om du t.ex. vill lagra ett personnummer, kanske just &amp;lt;code&amp;gt;personnummer&amp;lt;/code&amp;gt; är ett bra variabelnamn.&lt;br /&gt;
&lt;br /&gt;
Det svåraste med programmering är att skriva läsbar och förståelig kod som går att underhålla och förändra senare. Det gäller inte bara att förstå koden just när man skriver den, man måste kunna förstå den om ett år, fem år, tio år… Koden ska även vara så lättläslig och lättförståelig att andra ska kunna förstå och arbeta med koden.&lt;br /&gt;
&lt;br /&gt;
Det är därför extra viktigt att välja bra namn för variabler, konstanter, funktioner, osv. Självklart ska man även kommentera koden och förklara mer utförligt vad de olika variablerna är till för.&lt;br /&gt;
&lt;br /&gt;
Om du kommer att jobba som programmerare kommer du säkert att hamna på ett ställe där man har en förutbestämd mall, en så kallad stilguide, som fastställer hur all kod ska se ut. Det kan gälla alltifrån hur många tabbar eller mellanslag varje rad ska indenteras med, till bestämmelser för hur variabler och liknande ska namnges. När alla följer en sådan mall får man mer enhetlig kod som är lättare att underhålla och förstå för alla på arbetsplatsen.&lt;br /&gt;
&lt;br /&gt;
==== Namngivningsregler ====&lt;br /&gt;
I JavaScript har man följande namngivningsregler (dessa regler gäller alla saker som kan namnges, t.ex.; variabler, funktioner, osv...):&lt;br /&gt;
&lt;br /&gt;
Man kan inte använda vilka tecken som helst när man namnger saker. Variabelnamn måste börja med en bokstav eller ett ”&amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt;”-tecken. Du kan alltså inte påbörja ett variabelnamn med en siffra.&lt;br /&gt;
&lt;br /&gt;
Man kan inte ha mellanslag eller liknande blankstegstecken i ett variabelnamn, då använder man oftast ”&amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt;”-tecknet istället.&lt;br /&gt;
&lt;br /&gt;
Vissa tecken fungerar inte i variabelnamn. Ett exempel på detta är &amp;quot;&amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&amp;quot;-tecken, för då fattar inte JavaScript om du vill subtrahera eller om det är en del av ett namn. Det är alltså bäst att hålla sig till de vanliga tecknen i vårt grundalfabete. Samma sak gäller för alla räknesätten; &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Man kan inte heller använda samma namn som används av de inbyggda kommandon, t.ex. kan du inte ha en variabel som heter ”&amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;” eller ”&amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;”. &lt;br /&gt;
&lt;br /&gt;
I JavaScript är variabelnamn känsliga för versaler/gemena, dvs stora och små bokstäver. Det betyder att följande satser hänvisar till helt olika variabler;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
let Variabeln;&lt;br /&gt;
let variabeln;&lt;br /&gt;
let VaRiAbElN;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I JavaScript inleder man oftast ett variabelnamn med en liten bokstav (gemen). Det spelar ingen roll för datorn, men vi programmerare är vana att det ska se ut så. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
==== Camel-case ====&lt;br /&gt;
Som vi tidigare konstaterade så kan man inte använda mellanslag i variabelnamn. För att lösa det brukar man använda sig av så kallat camel-case (ibland kallat kamelnotation, men ingen säger så). Det innebär att istället för att skriva ut mellanslag så skriver man samman allt och för varje nytt ord så sätter man en stor bokstav (versal).&lt;br /&gt;
&lt;br /&gt;
Ett par exempel:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
let kamelerÄrDjur;&lt;br /&gt;
let ingaMellsanslagIVariabler;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Datatyp ===&lt;br /&gt;
&lt;br /&gt;
Datatyp handlar om vilken sorts data/information en variabel innehåller. Olika exempel på datatyper kan vara tal, sträng (vanlig text), osv.&lt;br /&gt;
&lt;br /&gt;
JavaScript är dock ett svagt typat språk och man anger inte vilken datatyp en variabel har. Istället tolkar JavaScript variabelns innehåll utifrån hur den används. Behövs en textsträng, tolkas innehållet som en textsträng och behövs ett tal, tolkas innehållet som ett tal. &lt;br /&gt;
&lt;br /&gt;
Ibland kan detta dock bli lite &amp;quot;fel&amp;quot;, JavaScript kanske tolkar ditt tal som en textsträng. I sådana fall finns det metoder som gör att man kan &amp;quot;övertala&amp;quot; JavaScript att tolka på ett korrekt vis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
let enSträng = &amp;quot;Vanlig text&amp;quot;;&lt;br /&gt;
let ettHeltal = 1;&lt;br /&gt;
let ettDecimaltal = 1.5;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Observera även att JavaScript, liksom de flesta programmeringsspråk är på engelska och att man därför använder ”&amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;” istället för ”&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;” i decimaltal. Kommatecknet används istället som avgränsning när man skriver in innehåll i olika typer av listor.&lt;br /&gt;
&lt;br /&gt;
Datatypen avgör inte bara vad som kan lagras i en variabel utan det avgör även vilka operationer man kan utföra på variabeln. Att dividera en sträng (text) med en annan sträng kommer inte att fungera. Däremot fungerar det, förstås, utmärkt med tal-variabler.&lt;br /&gt;
&lt;br /&gt;
=== 3. Räckvidd och synlighet ===&lt;br /&gt;
Variabler kan antingen gälla inom ett specfikt &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt;-block eller globalt (dvs i hela programmet). Variabelns räckvidd och synlighet kallas för ”scope” på engelska.&lt;br /&gt;
&lt;br /&gt;
Var man kan använda en variabel beror på var den deklareras. Rent generellt kan man säga att en variabel enbart är tillgänglig i det block där den deklareras. Utanför blocket existerar inte variabeln.&lt;br /&gt;
&lt;br /&gt;
Detta betyder alltså att du i många fall kan ha variabler med samma namn i olika delar av ditt program, utan att de på något sätt påverkar varandra. Det är på grund av deras scope gör att de ses som helt olika variabler, trots att de heter lika.&lt;br /&gt;
&lt;br /&gt;
Variabler skapas och tas bort dynamiskt allteftersom programmet körs. En variabel som deklarerats inuti ett block försvinner när den avslutande &amp;quot;&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&amp;quot; nås (förutom i några specialfall, så kallade closures, vilket är mer avancerat och vi kan inte gå in på det än).&lt;br /&gt;
&lt;br /&gt;
Om ditt program kommer tillbaka till samma block, t.ex. om du kallar på den två gånger i rad, så återskapas variablerna på nytt och försvinner återigen när blocket tar slut. Inget variabel-innehåll sparas mellan körningarna, så om du behöver ha kvar ett värde måste du på något sätt spara undan det. Kanske du skriver ner det på disk i en fil eller kanske du har en variabel som ligger ”högre” upp i hierarkin och sparar ditt värde där.&lt;br /&gt;
&lt;br /&gt;
==== Skillnader på &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Tidigare deklarerade man variabler med &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt;. Det kan man iofs fortfarande göra. Men &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt; har en hel del fördelar och man bör enbart använda sig av den varianten. Det finns dock en hel del gammal kod som använder sig av &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt;. Vi går igenom hur &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt; fungerar, så att du vet vad det handlar om i fall du ser den i gammal kod.&lt;br /&gt;
&lt;br /&gt;
JavaScripts variabelhantering har några egenheter som inte de flesta andra språk har. Det gäller speciellt om man använder sig av &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt;. Den använder sig av något som kallas &amp;quot;hoisting&amp;quot;, det vill säga engelskans uttryck för att lyfta upp något.&lt;br /&gt;
&lt;br /&gt;
När man använder &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt; och deklarerar en variabel i en funktion, oavsett var i funktionen det sker, så &amp;quot;flyttar&amp;quot; JavaScript upp deklarationen till början av funktionen. Det vill säga variabeln blir att existera redan i början av funktionen, även om den är deklarerad i slutet.&lt;br /&gt;
&lt;br /&gt;
Det innebär alltså att följande två exempel är likvärdiga:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function test(parameter)&lt;br /&gt;
{&lt;br /&gt;
  var värde;&lt;br /&gt;
&lt;br /&gt;
  if(parameter == 1) &lt;br /&gt;
  {&lt;br /&gt;
    värde = 1;&lt;br /&gt;
    // Gör nånting&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
och&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function test(parameter)&lt;br /&gt;
{&lt;br /&gt;
  if(parameter == 1) &lt;br /&gt;
  {&lt;br /&gt;
    värde = 1;&lt;br /&gt;
    // Gör nånting&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  var värde;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I bägge exemplen kommer variabeln &amp;lt;code&amp;gt;värde&amp;lt;/code&amp;gt; att vara tillgänglig i hela funktionen. Detta gäller alltså även innan den deklarerats, såsom i det andra exemplet.&lt;br /&gt;
&lt;br /&gt;
Dock är det &#039;&#039;enbart&#039;&#039; deklarationen som lyfts upp. Eventuell tilldelning som utförs tillsammans med deklarationen lyfts &#039;&#039;inte&#039;&#039; upp! Så om vi har följande kod:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function test(parameter)&lt;br /&gt;
{&lt;br /&gt;
  if(parameter == 1) &lt;br /&gt;
  {&lt;br /&gt;
    console.log(värde);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  var värde  = 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Så kommer &amp;lt;code&amp;gt;console.log&amp;lt;/code&amp;gt; att rapportera att &amp;lt;code&amp;gt;värde&amp;lt;/code&amp;gt; är &amp;lt;code&amp;gt;undefined&amp;lt;/code&amp;gt; eftersom den inte tilldelats något värde ännu. När körningen når raden som har &amp;lt;code&amp;gt;var värde = 1;&amp;lt;/code&amp;gt;, då kommer variabeln att tilldelas värdet &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Detta beteende är rätt så unikt för JavaScript och kan verka märkligt om man är van med andra programmeringsspråk...&lt;br /&gt;
&lt;br /&gt;
I de flesta andra språk är variabler unika för det block de befinner sig inuti, där ett block är kod som står inom &amp;quot;&amp;lt;code&amp;gt;{&amp;lt;/code&amp;gt;&amp;quot; och &amp;quot;&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&amp;quot;. Vilket gör att man kan ha &amp;quot;lokala&amp;quot; variabler i olika block som befinner sig i en och samma funktion. I andra språk uppstår variabler först när programmet når den rad där variabeln skapas och kan inte användas före detta.&lt;br /&gt;
&lt;br /&gt;
Eftersom många har efterfrågat det &amp;quot;normala&amp;quot; beteendet för att skapa variabler, så införde &#039;&#039;JavaScript2015&#039;&#039; ett nytt sätt att deklarera variabler. Man kan nu även använda sig av &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Variabler som deklareras med &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt; uppför sig så som man är van med ifrån andra språk. De skapas och kan användas först efter den rad där de deklarerats. Deras synlighet, eller scope, är enbart det block där de skapats.&lt;br /&gt;
&lt;br /&gt;
Ett exempel på hur &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt; inte lyfts upp:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function test(parameter)&lt;br /&gt;
{&lt;br /&gt;
  if(parameter == 1) &lt;br /&gt;
  {&lt;br /&gt;
    // Här existerar inte variablen värde&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  let värde  = 1; // Först efter detta finns variabeln&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ett exempel på hur &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt; kan användas för att få &amp;quot;lokala&amp;quot; variabler:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function test(parameter)&lt;br /&gt;
{&lt;br /&gt;
  if(parameter == 1) &lt;br /&gt;
  {&lt;br /&gt;
     let värde = 1; // Den här variabeln existerar bara i detta block&lt;br /&gt;
  } // Här upphörde värde att existera&lt;br /&gt;
&lt;br /&gt;
  if(parameter == 2) &lt;br /&gt;
  {&lt;br /&gt;
     // Här skapas en ny variabel, som inte har något att göra med&lt;br /&gt;
     //  den som fanns i föregående if-sats.&lt;br /&gt;
     let värde = 2; // Den här variabeln existerar bara i detta block&lt;br /&gt;
  } // Här upphörde värde att existera&lt;br /&gt;
  &lt;br /&gt;
   // Detta blir en helt ny variabel, som inte har något med&lt;br /&gt;
  // ovanstående att göra&lt;br /&gt;
  let värde  = 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Att använda samma variabelnamn stup i kvarten inom en och samma funktion är rätt så dåligt. Det blir svårläst och förvirrande. Men ovanstående var ju bara ett exempel...&lt;br /&gt;
&lt;br /&gt;
Om du bara orkar lära dig en variant av variabeldeklaration, satsa på &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;. Den fungerar i alla tillfällen och är mer &amp;quot;normal&amp;quot; än &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt;. Du behöver dock känna till bägge varianterna, då det finns mycket gammal kod som använder sig av &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt; och det finns många programmerare som hellre använder sig av den varianten.&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Villkorssatser]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Olika_typer_av_fel_som_kan_uppst%C3%A5&amp;diff=5096</id>
		<title>Olika typer av fel som kan uppstå</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Olika_typer_av_fel_som_kan_uppst%C3%A5&amp;diff=5096"/>
		<updated>2026-08-10T13:32:49Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Det finns några olika typer av fel som kan uppstå när man programmerar. Rent generellt kan man säga att det är tre huvudtyper som kan uppstå:&lt;br /&gt;
&lt;br /&gt;
* Kompileringsfel&lt;br /&gt;
* Exekveringsfel&lt;br /&gt;
* Logiska fel&lt;br /&gt;
&lt;br /&gt;
== Kompileringsfel ==&lt;br /&gt;
Kompileringsfel inträffar redan när du skriver koden. Kanske du glömmer ett semikolon eller stavar fel på ett variabelnamn. Då kommer JavaScript att gnälla och du får inte köra ditt program. Om man tittar i konsolen står det vilken typ av fel det handlar om. &lt;br /&gt;
&lt;br /&gt;
=== Varningar ===&lt;br /&gt;
Det kan även uppstå varningar. Det är meddelanden ifrån JavaScript som vill göra dig uppmärksam på att något eventuellt inte är korrekt. Kanske du har skapat en variabel som aldrig används och som därför är onödig och kanske kan tas bort.&lt;br /&gt;
&lt;br /&gt;
=== Bra verktyg hjälper ===&lt;br /&gt;
Om du använder en bra editor eller ett [[IDE]], så får du ofta hjälpsamma varningar och felmeddelanden medan du skriver koden. Detta sker redan innan du provkör programmet.&lt;br /&gt;
&lt;br /&gt;
Det är viktigt att använda bra verktyg som stödjer en i ens arbete. Exempel på ett bra, gratis verktyg är t.ex. [https://code.visualstudio.com/ Visual Studio Code].&lt;br /&gt;
Det finns även många plugins till denna som gör det ännu lättare att jobba med programmering och webbutveckling.&lt;br /&gt;
=== Följdfel ===&lt;br /&gt;
Kompileringsfel kan ofta ge en massa följdfel. Fixar du det första felet, kanske en mängd efterföljande problem löser sig (speciellt vanligt då man glömt ett semikolon). Det är därför en god strategi att börja uppifrån i fellistan och beta av felen ett efter ett. Gör man så kommer säkert många följdfel att lösas och försvinna.&lt;br /&gt;
&lt;br /&gt;
== Exekveringsfel ==&lt;br /&gt;
Exekveringsfel är fel som får programmet att krascha. Det kan vara för att du råkat skicka in fel värde i en funktion eller använder någon funktion på ett felaktigt vis. Ett vanligt fel kan vara att du råkar dividera med &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Vilket resulterar i att programmet bryter samman.&lt;br /&gt;
&lt;br /&gt;
Hur felet visas kan vara lite olika, JavaScript har en tendens att bryta samman relativt &amp;quot;tyst&amp;quot;. Det kanske bara märks att saker går fel genom att titta i konsolen.&lt;br /&gt;
&lt;br /&gt;
== Logiska fel ==&lt;br /&gt;
Logiska fel är de svåraste att hitta. Dessa fel är rena tankefel. Den lösning du konstruerat fungerar helt enkelt inte som den ska. I värsta fall kanske inte misstaget syns direkt, utan det inträffar bara då och då.&lt;br /&gt;
&lt;br /&gt;
Det är därför viktigt att provköra ditt program så mycket som möjligt. Prova att göra ”dumma saker” under körningen och se om ditt program bryter samman eller ej. Det är en bra idé att låta andra testköra ditt program, de vet ju inte hur det ska fungera och kan därför göra något som du inte tänkt på.&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Variabler]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Att_skriva_l%C3%A4sbar_kod&amp;diff=5095</id>
		<title>Att skriva läsbar kod</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Att_skriva_l%C3%A4sbar_kod&amp;diff=5095"/>
		<updated>2026-08-10T13:27:03Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Det är viktigt att skriva läsbar kod som är lätt att underhålla, debugga och förändra. Inte minst är det viktigt för dig själv, men det är även av stor vikt om du jobbar i ett projekt där många ska bidra med kod. I såna fall måste alla skriva kod som ser mer eller mindre likadan ut, så att alla lätt kan läsa koden och förstå hur saker fungerar. I dessa fall använder man sig ofta av en så kallad stilguide, som talar om hur kod ska formateras, hur variabler och metoder ska namnges, osv.&lt;br /&gt;
&lt;br /&gt;
== Kommentarer ==&lt;br /&gt;
Om din kod ska bli läslig och förståelig är det viktigt att kommentera koden. Detta gäller inte minst om andra ska läsa din programkod. Det som är helt självklart för dig, kanske inte alls är lika självklart för en annan programmerare. Likaså är kommentarer nyttiga att läsa när du återvänder till kod som du skrev för länge sen. Även om det är du själv som skrivit koden, kanske du kommer att glömma hur den fungerar när det gått en längre tid. Att sitta och dechiffrera vad man menade med gammal kod, kan i vissa fall ta lika lång tid som att skriva om den från scratch!&lt;br /&gt;
&lt;br /&gt;
Kommentarerna har ingen betydelse för funktionen av programmet, utan är bara till för oss människor. Du bör kommentera allting som kan tänkas vara svårbegripligt. Tänk på att du kanske ska in och ändra i koden om flera år, då kanske inte det du idag tycker är självklart är lika självklart längre. Likaså kanske en annan programmerare kommer att missförstå din kod och när denne ska ändra i koden så kanske något följdfel smyger sig in.&lt;br /&gt;
&lt;br /&gt;
Det är alltså god vana att alltid kommentera sin kod. När man går igenom exempel under lektioner och skriver kod ”tillsammans” på projektorn kanske det inte finns tid till att kommentera. Men låt inte det hindra dig ifrån att redan från början lägga dig till med den goda vanan att kommentera!&lt;br /&gt;
&lt;br /&gt;
Kommentera dock inte _allt_. Om det är helt självklart vad som händer utifrån själva koden, behöver du inte skriva nån kommentar. Utgå ifrån att den som läser koden kan koda och förstår grunderna i språket.&lt;br /&gt;
&lt;br /&gt;
I JavaScript kan man kommentera på två olika vis. Dels har man en kommentartyp som gäller för resten av den rad kommentaren står på och dels en typ där man kan kommentera ett helt block som sträcker sig över flera rader.&lt;br /&gt;
&lt;br /&gt;
* Radkommentarer inleds med ”&amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;”, resterande text på den raden är en kommentar. Så fort en ny rad inleds tolkas allt som kod igen. &lt;br /&gt;
&lt;br /&gt;
* Flerraderskommentarer inleds med ”&amp;lt;code&amp;gt;/*&amp;lt;/code&amp;gt;” och avslutas med ”&amp;lt;code&amp;gt;*/&amp;lt;/code&amp;gt;”. All text inom dessa tecken, kommer att ignoreras av interpretatorn (den som tolkar och kördin kod).&lt;br /&gt;
&lt;br /&gt;
Här följer ett par exempel på olika sätt på vilka man kan kommentera sin kod.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  // Allt efter dubbelstrecket är en kommentar, fram till raden är slut.&lt;br /&gt;
&lt;br /&gt;
 let tal = 2; // Koden före dubbelstrecket körs, men resten av raden ignoreras&lt;br /&gt;
	&lt;br /&gt;
  /* Kommentarer av denna typ inleds med streck och stjärna och avslutas med; */ &lt;br /&gt;
&lt;br /&gt;
  /* Den här typen av kommentarer kan&lt;br /&gt;
     sträcka sig över&lt;br /&gt;
     många rader&lt;br /&gt;
     och slutar inte tills */&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Observera att man inte kan nästla flera flerraderskommentarer inuti varandra. Den första ”&amp;lt;code&amp;gt;*/&amp;lt;/code&amp;gt;” som JavaScript påträffar kommer att få interpretatorn att gå ur kommentarsläget och börja tolka texten som kod igen. Följande kommer alltså inte att fungera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-warning&amp;quot;&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
	/* Man kan inte nästla flerraderskommentarer&lt;br /&gt;
	/* Efter slutet på dessa tecken förväntar C# att det kommer kod igen →*/&lt;br /&gt;
	    Här är det fel, för här ska egentligen kod börja */ &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lägg även märke till att eventuell kod som står på samma rad direkt efter ”&amp;lt;code&amp;gt;*/&amp;lt;/code&amp;gt;” kommer att köras. I följande exempel kommer alltså &amp;lt;code&amp;gt;let a=1&amp;lt;/code&amp;gt; att köras.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 /* En&lt;br /&gt;
    kommentar */ let a=1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Blankrader, tabbar och mellanslag ==&lt;br /&gt;
Hur man formaterar koden har egentligen ingen större betydelse för JavaScript. Däremot är det ett viktigt verktyg för att skapa läsbar kod. Precis som i fallet med kommentarer kan vettig formatering hjälpa dig själv och andra att lättare läsa och förstå din kod. De flesta moderna utvecklingsverktyg hjälper dig med att formatera din kod på ett vettigt vis.&lt;br /&gt;
&lt;br /&gt;
Det viktigaste man ska göra är att indentera sin kod. Indentera är svengelska för att göra indrag i marginalen, d.v.s. att börja skriva en bit in på raden. Man formaterar sin kod med hjälp av mellanslag eller tabbar. Detta hjälper till så att det går att se strukturen på programmet. Främst gäller detta när man skapar kodblock med hjälp av &amp;quot;&amp;lt;code&amp;gt;{&amp;lt;/code&amp;gt;&amp;quot; och&amp;quot;&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&amp;quot;. Ett exempel på det kan vi se i följande kodsnutt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function Spawner ()&lt;br /&gt;
{&lt;br /&gt;
   for (let i=0; i &amp;lt;= Score.score / 10; i++) {&lt;br /&gt;
      Instantiate( monster );&lt;br /&gt;
   }&lt;br /&gt;
		&lt;br /&gt;
   if (Life.life &amp;gt; 0) {&lt;br /&gt;
      time = 10;&lt;br /&gt;
   } else {&lt;br /&gt;
      time = 0;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Även om vi kanske inte förstår vad koden gör, kan vi lätt se hur olika satser hör samman i kodblocken tack vare att de är indragna/indenterade. Detta gör att koden blir mer lättöverskådlig och att man snabbt kan se strukturen och förstå hur de olika delarna hänger samman.&lt;br /&gt;
&lt;br /&gt;
Lägg även märke till att kodexemplet använder sig av blankrader för att ytterligare visa kodstrukturen. De kodbitar som har med varandra att göra ligger bredvid varandra, medan de satser som gör olika saker åtskiljs med en tomrad. Man kan jämföra med hur man i vanlig text använder sig av styckesindelning. Varje stycke handlar om en specifik sak och när man ska tala om något annat gör man ett nytt stycke. Precis så fungerar blankraderna när man formaterar sin kod. Återigen så har detta ingen betydelse för programmets funktionalitet, det är bara ett sätt att göra din kod mer lättläslig.&lt;br /&gt;
&lt;br /&gt;
Man skulle lika gärna kunna skrivit ovanstående som en enda lång rad, så som du ser här under. Vilket tycker du är mest lättläst och lättförståeligt?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function Spawner(){for(let i=0;i&amp;lt;=Score.score/10;i++){Instantiate(monster);}if(Life.life&amp;gt;0){time=10;}else{time=0;}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Helst ska man undvika att ha flera satser på samma rad. Om man gör det ändå så måste man använda sig av &amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt; för att tala om var varje sats slutar!&lt;br /&gt;
== Nästa aktivtet ==&lt;br /&gt;
[[Olika typer av fel som kan uppstå]]&lt;br /&gt;
&lt;br /&gt;
[[Category:JavaScript]]&lt;br /&gt;
__FORCETOC__&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Grunderna_i_JavaScript-programmering&amp;diff=5094</id>
		<title>Grunderna i JavaScript-programmering</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Grunderna_i_JavaScript-programmering&amp;diff=5094"/>
		<updated>2026-08-10T13:14:45Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Här kommer vi att gå igenom programmering från scratch, så om du har lite kunskaper inom området behöver du antagligen bara behöva att snabbskumma igenom de första aktiviteterna i denna sektion...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Om du kan något annat programmeringsspråk i C-familjen (t.ex. C, C++, C# eller Java) kan du redan mycket av grunderna i JavaScript. Dessa språks grunder påminner mycket om varandra. Dock finns det en del skillnader, såsom hur man deklarerar variabler och dylikt. Det bör dock inte vara alltför svårt att sätta sig in i skillnaderna. Däremot finns det en hel del skillnader man måste lära sig om man vill skriva riktigt optimal kod.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vad är programmering? ==&lt;br /&gt;
Programmering är en typ av problemlösning där man tar fram en ”steg för steg”-beskrivning för hur datorn ska lösa ett problem eller en klass av problem. Datorerna är egentligen rätt dumma och kan enbart utföra väldigt grundläggande uppgifter, typ den enklaste matematiken. Däremot är datorer extremt snabba (och relativt tillförlitliga). På grund av denna snabbhet kan man skapa problemlösningar som i grund och botten är uppbyggda av tonvis av små, enkla funktioner, som stegvis utför allt mer komplexa uppgifter. Oavsett i vilket programmeringsspråk vi programmerar, så kommer vår kod att översättas till något som datorn kan fatta och utföra. I slutändan är det alltid [[maskinkod]], dvs processorns egna språk, som utför arbetet. Varje kodrad som återfinns i ett program kan resultera i en mängd operationer som måste genomföras för att uträtta det som kodraden beskriver. Till och med när man kör de enklaste programmen, så utför datorn myriader av operationer.&lt;br /&gt;
 &lt;br /&gt;
Datorn har ett väldigt litet antal kommandon som den klarar av att utföra. Varje programmeringsspråk har en uppsättning ord och regler som avgör vad språket &amp;quot;fattar&amp;quot; och kan utföra. Det är sällan mer än ca 100 grundfunktioner som finns i ett programmeringsspråk. När vi ska lösa våra problem måste vi formulera lösningar som enbart använder sig av dessa ord. 100 ord är inte så mycket, det är färre ord än en hund eller en tvååring kan förstå. Liksom när man försöker kommunicera med en hund eller en tvååring så kan det vara svårt att formulera lösningen till ett komplext problem enbart genom att använda sig av det starkt begränsat vokabulär man har att tillgå. Datorn har dock en fördel i jämförelse med hundar och små barn, den utför exakt vad du beordrar den att göra. Den gör vare sig mer eller mindre än det du säger åt den att göra (hur dumma eller felaktiga dina order än må vara).&lt;br /&gt;
&lt;br /&gt;
I skrivandets stund har faktiskt JavaScript endast 46 &amp;quot;grundord&amp;quot;. Dock har de flesta språk även så kallade standardbibliotek som innehåller extra funktionalitet. Denna extra funktionalitet består oftast i sånt som bara används för vissa typer av programmering. Det kan vara t.ex. filhantering för att skriva och läsa data. Det kanske inte alla program kräver och därför ligger det i ett bibliotek som vi kan inkludera. Allt eftersom vi programmerar utökar vi även vilka &amp;quot;ord&amp;quot; som finns att tillgå i vår kod.&lt;br /&gt;
&lt;br /&gt;
När man programmerar går man igenom flera faser. Man börjar med att analysera det problem man vill lösa. Man försöker, om möjligt, att reducera problemet till flera, enklare delproblem. Därefter hittar man på lösningsförslag till varje delproblem och försöker sedan att kombinera dellösningarna till en komplett lösning som genomför allt man förväntade sig.&lt;br /&gt;
&lt;br /&gt;
Programmering påminner lite om hur man löser vissa problem i matematiken, t.ex. såna där problem där &amp;quot;Lisa har tre äpplen, Per har två skohorn...&amp;quot;.  Man vet vad man har för startvillkor och man vet var man vill hamna – det svåra är att hitta vägen ifrån A till B. Ibland måste man ta en liten avkrok på vägen och klara av några delproblem, som förhoppningsvis kan ge ledning till hur man ska komma fram till slutlösningen. Även det som låter väldigt enkelt, kan bli krångligt och komplext när man ska uttrycka det som kod. Gillar du att lösa problem är programmering den ultimata utmaningen!&lt;br /&gt;
&lt;br /&gt;
I tidiga faserna av programmering jobbar man ofta på papper. Man kanske ritar upp problemet, t.ex. med [http://sv.wikipedia.org/wiki/Fl%C3%B6desschema flödesdiagram]. Ett annat sätt för att beskriva lösningsförslag är att använda sig av så kallad [https://www.wikiwand.com/en/Pseudocode pseudokod]. Pseudokod är ett mer formaliserat sätt att sätta ord på programmeringslösningar. Det är en blandning av vanligt, mänskligt språk och programmeringsspråk. Det finns ingen standard för hur pseudokod ska se ut. Man skriver mer eller mindre i klartext hur lösningen ska fungera, steg för steg. &lt;br /&gt;
&lt;br /&gt;
=== Algoritm ===&lt;br /&gt;
Problemlösningar av typen steg-för-steg, kallas för algoritm. Algoritmer känner du säkert igen ifrån matematiken. Den vanliga metoden för att lösa en andragradsekvation, PQ-formeln, är ett exempel på en algoritm. När man använder den formeln jobbar man steg för steg för att på ett generellt sätt lösa en andragradsekvation. Andra vardagsexempel på algoritmer kan vara matrecept, bygginstruktioner (typ sådana man får med IKEA-möbler) eller liknande. &lt;br /&gt;
&lt;br /&gt;
I en algoritm är viktigt att man utför de olika stegen i rätt ordning, annars kommer resultatet inte att bli korrekt. Vanligtvis utför man stegen i en algoritm ett efter ett. Man börjar i toppen och går framåt rad för rad. Detta kallas att arbeta sekventiellt eller synkront. De flesta enkla datorprogram fungerar på detta sätt. &lt;br /&gt;
&lt;br /&gt;
Ibland kan man ha en instruktion som säger att man ska hoppa över några rader om något speciellt villkor är uppfyllt. Detta kallar man ibland för selektion, dvs man väljer ut vilka rader som ska köras.&lt;br /&gt;
&lt;br /&gt;
Det är också vanligt förekommande att man vill upprepa en, eller flera, rader i en algoritm, kanske upprepar man tills något villkor är uppfyllt. Detta kallas för iteration, eller upprepning.&lt;br /&gt;
&lt;br /&gt;
Detta där är grundstenarna i programmering, men vi behöver en sak till. För att kunna beräkna saker måste vi även ha lagring. Vi måste på något vis kunna spara undan våra beräkningar.&lt;br /&gt;
&lt;br /&gt;
Alla dessa begrepp sammantagna är grunden till programmering; lagring, sekvens, selektion och iteration. Har vi tillgång till dessa saker kan vi beräkna allt! (I alla fall allt som går att beräkna...) Detta är något som bevisats av [https://en.wikipedia.org/wiki/Alan_Turing Alan Turing] och [https://en.wikipedia.org/wiki/Alonzo_Church Alonzo Church]. Vi brukar kalla språk som har alla dessa finesser för [https://sv.wikipedia.org/wiki/Turingkomplett turingkompletta].&lt;br /&gt;
&lt;br /&gt;
Programmering är oftast en iterativ process, där man jobbar med stegvis förfining. Vilket är ett halvkrångligt sätt att säga att man gör saker om och om igen, men man försöker förbättra resultatet varje gång. Ett exempel på det kan vara att man i första skedet skapar en algoritm som gör det den ska, utan att bry sig om hur snabbt algoritmen utför sitt arbete. I nästa iteration, eller upprepning, försöker man förbättra algoritmen så att den går snabbare. På så vis förbättrar man sitt program stegvis.&lt;br /&gt;
&lt;br /&gt;
=== Exempel: Är ett heltal ett primtal? ===&lt;br /&gt;
Låt säga att vi ska kontrollera om ett heltal är ett primtal. När man ska lösa det problemet, kanske man går igenom en process som påminner om följande:&lt;br /&gt;
&lt;br /&gt;
* Först måste vi ta reda på vad ett primtal är. På Wikipedia finns den här [https://www.wikiwand.com/sv/Primtal definitionen]:&lt;br /&gt;
&amp;lt;cite&amp;gt;&amp;quot;Ett primtal är ett heltal p, som är större än 1 och som bara är jämt delbart med ±1 och ±p&amp;quot;&amp;lt;/cite&amp;gt;.&lt;br /&gt;
* Om man funderar lite kommer man fram till att man ”bara” behöver prova om talet är jämt delbart med något mellan 2 och (talet - 1). Ettan ska vi skippa eftersom allt är jämt delbart med 1. Vi kan stoppa när vi är ett steg under talet vi ska testa. För ett tal är ju alltid jämt delbart med sig själv.&lt;br /&gt;
* Vi uttrycker det med lite pseudokod:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 Sätt nämnare = 2&lt;br /&gt;
 Medan nämnare är mindre än tal&lt;br /&gt;
    Om tal / nämnare är jämt&lt;br /&gt;
        Tal är ej primtal&lt;br /&gt;
    Annars&lt;br /&gt;
        Öka nämnare med 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Vi kanske skapar ett flödesdiagram&lt;br /&gt;
[[Fil:PrimtalFlowchart.png]]&lt;br /&gt;
* Nu kan vi omvandla pseudokoden till JavaScript-kod&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function primtal(tal) {&lt;br /&gt;
  let nämnare = 2;&lt;br /&gt;
&lt;br /&gt;
  while( nämnare &amp;lt; tal ) {&lt;br /&gt;
    if( tal % nämnare == 0 ) {&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En relativt ineffektiv lösning (och lite buggig)…&lt;br /&gt;
&lt;br /&gt;
Även om vi inte kan programmering så bra ännu, så går det faktiskt att läsa vad som händer i koden ovan. Om vi bortser från sådant vi kanske inte fattar just nu, som t.ex. &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;%&amp;lt;/code&amp;gt; (den senare ger oss resten efter en heltalsdivision), ser vi att koden är rätt så lik vår pseudokod, med den stora skillnaden att sakerna står på halvengelska.&lt;br /&gt;
&lt;br /&gt;
== Funktioner, metoder, osv ==&lt;br /&gt;
Vad vi skapade i föregående sektion är en funktion. Dessa fungerar ungefär som i matematiken när man skapar funktioner av typen &#039;&#039;f(x)&#039;&#039;. Funktioner är ett sätt på vilket man kan skapa små dellösningar. Man skriver kodsnuttar som man sedan kan kombinera till större lösningar. Man skulle kunna säga att man utvidgar programmeringsspråket med just de specifika finesser som man själv behöver. Vi nämnde tidigare hur datorspråkens grundvokabulär oftast bara består av mindre än 100 ord. Varje gång man skapar en ny funktion (eller liknande) så utökar man detta vokabulär. Desto fler funktioner vi skapar, desto enklare blir det att beskriva den lösning man är ute efter. Allteftersom vi kodar skapar vi alltså ett språk som är mer anpassat till det vi vill lösa för tillfället.&lt;br /&gt;
&lt;br /&gt;
I många fall går funktionerna även att återanvända när man skriver andra program. Som programmerare jobbar man ständigt på att utvidga sin verktygslåda med lösningar, algoritmer och funktioner. Det är alltså bra att försöka hålla sina funktioner så generella som möjligt, så att de går att återanvända. Varje gång du skapar en funktion som är återanvändbar, finns chansen att du besparar dig själv en massa onödigt arbete i framtiden! När du kommer ut i arbetslivet kommer säkerligen din arbetsplats att ha en uppsättning med bibliotek som används inom företaget. Självklart finns det även många bibliotek som du kan ladda ned från nätet för att få extra funktionalitet till dina program.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Kärt barn har många namn; det är också vanligt att kalla funktioner för metoder, rutiner eller subrutiner, osv. Även om det skiljer lite mellan den korrekta definitionen på hur man ska använda de olika namnen, så kan man säga att alla är godtagbara. Oavsett vilket namn du använder bör programmeringskunniga fatta vad du menar. Inom programmering är det rätt vanligt att samma saker har lite olika namn. Inom datorvärlden har vi även en tendens att använda svengelska termer för saker och ting. Detta gäller definitivt för oss programmerare!&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Satser ==&lt;br /&gt;
Uttrycket sats kommer ifrån matematikens och logikens värld. En sats är en utsaga som kan prövas. Vissa satser kan man använda för att beräkna saker - kanske du stött på binomialsatsen. Inom programmering är en sats en komplett utsaga som kan utföras. Lite förenklat kan man säga att varje rad i ett JavaScript-program är en sats (ibland delar man upp en sats på flera rader).  Ett exempel på en sats i vår primtals-funktion är;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
let nämnare = 2;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I den satsen skapar vi en variabel och vi ger den namnet &amp;lt;code&amp;gt;nämnare&amp;lt;/code&amp;gt; samt att vi tilldelar den värdet &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. Varje sats genomför oftast någon &amp;quot;enkel&amp;quot; deluppgift/delsteg i vår algoritm. Man kan självklart kalla detta för mycket annat än sats, t.ex. kodrad, programrad, uttryck, osv.&lt;br /&gt;
&lt;br /&gt;
För att indikera var en sats avslutas skriver man oftast ett &amp;quot;&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&amp;quot;-tecken. Så gott som alla programrader ska avslutas på detta vis. I modern JavaScript är inte &amp;quot;&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&amp;quot;-tecknet helt nödvändigt. Istället kommer JavaScript att se en avslutad rad som en komplett sats. I de flesta fall är det dock enklare att se var satsen avslutas genom att skriva ett &amp;quot;&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&amp;quot;-tecken.&lt;br /&gt;
&lt;br /&gt;
== Kodblock; { och } ==&lt;br /&gt;
Kodexemplet med primtal innehöll antagligen några tecken som du inte är helt van vid att använda. Det gäller nog främst &amp;quot;&amp;lt;code&amp;gt;{&amp;lt;/code&amp;gt;&amp;quot; och &amp;quot;&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&amp;quot;. Dessa är vanligt förekommande i de många programmeringsspråk. De kallas för klammerparenteser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Klammerparenteser kan också heta klammer, måsvingar, braces, curly braces, osv. De senare är de engelska namnen på tecknen. Vi programmerare kör ofta med engelska eller snarare svengelska uttryck, vilket är rätt naturligt då de flesta programmeringsspråk är baserade på engelska. Engelskan är förstås programmeringens &amp;quot;modersmål&amp;quot;, då de flesta språk baseras på engelska ord och så gott som all dokumentation först och främst (och kanske enbart) är skrivna på engelska.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vad man än kallar klamrarna, så har de en mycket speciell betydelse i JavaScript (och många andra programmeringsspråk). De används för att definiera ett kodblock. Det vill säga man har ett antal sats-rader som ska hänga samman som en enda stor sats och som ska utföras tillsammans (de körs dock inte samtidigt, utan de utförs fortfarande sekventiellt). Det kan vara kod som enbart ska köras när något speciellt villkor är sant (en så kallad &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-sats) eller kod som ska upprepas flera gånger (en så kallad slinga eller loop). Lägg märke till att block inte avslutas med ett &amp;quot;&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&amp;quot;-tecken.&lt;br /&gt;
&lt;br /&gt;
== Mer om primtalsexemplet ==&lt;br /&gt;
I vår kodsnutt hade vi även exempel på något av det mest grundläggande som behövs för programmering, nämligen variabler. Dessa används för att lagra värden. Speciellt viktigt är att vi kan lagra undan resultat och delresultat i våra beräkningar. Vi återkommer till variabler alldeles strax. &lt;br /&gt;
&lt;br /&gt;
I koden hade vi även exempel på några av de mest centrala begreppen i programmering; upprepning och val. Eller för att använda fackspråk; iteration och selektion. Upprepning gör att vi kan köra en bit av vår programkod flera gånger. Medan val möjliggör att vi kan styra programflödet och köra olika kodbitar beroende på diverse villkor.&lt;br /&gt;
&lt;br /&gt;
De flesta programmeringsproblemen går att reducera till lagring, upprepning och val. Som vi konstaterade tidigare så bevisade Alan Turing att just dessa grundkoncept är vad som krävs för att kunna beräkna allt som är beräkningsbart.&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivtet ==&lt;br /&gt;
[[Att skriva läsbar kod]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Grunderna_i_JavaScript-programmering&amp;diff=5093</id>
		<title>Grunderna i JavaScript-programmering</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Grunderna_i_JavaScript-programmering&amp;diff=5093"/>
		<updated>2026-08-10T13:09:19Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Här kommer vi att gå igenom programmering från scratch, så om du har lite kunskaper inom området behöver du antagligen bara behöva att snabbskumma igenom de första aktiviteterna i denna sektion...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Om du kan något annat programmeringsspråk i C-familjen (t.ex. C, C++, C# eller Java) kan du redan mycket av grunderna i JavaScript. Dessa språks grunder påminner mycket om varandra. Dock finns det en del skillnader, såsom hur man deklarerar variabler och dylikt. Det bör dock inte vara alltför svårt att sätta sig in i skillnaderna. Däremot finns det en hel del skillnader man måste lära sig om man vill skriva riktigt optimal kod.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vad är programmering? ==&lt;br /&gt;
Programmering är en typ av problemlösning där man tar fram en ”steg för steg”-beskrivning för hur datorn ska lösa ett problem eller en klass av problem. Datorerna är egentligen rätt dumma och kan enbart utföra väldigt grundläggande uppgifter, typ den enklaste matematiken. Däremot är datorer extremt snabba (och relativt tillförlitliga). På grund av denna snabbhet kan man skapa problemlösningar som i grund och botten är uppbyggda av tonvis av små, enkla funktioner, som stegvis utför allt mer komplexa uppgifter. Oavsett i vilket programmeringsspråk vi programmerar, så kommer vår kod att översättas till något som datorn kan fatta och utföra. I slutändan är det alltid [[maskinkod]], dvs processorns egna språk, som utför arbetet. Varje kodrad som återfinns i ett program kan resultera i en mängd operationer som måste genomföras för att uträtta det som kodraden beskriver. Till och med när man kör de enklaste programmen, så utför datorn myriader av operationer.&lt;br /&gt;
 &lt;br /&gt;
Datorn har ett väldigt litet antal kommandon som den klarar av att utföra. Varje programmeringsspråk har en uppsättning ord och regler som avgör vad språket &amp;quot;fattar&amp;quot; och kan utföra. Det är sällan mer än ca 100 grundfunktioner som finns i ett programmeringsspråk. När vi ska lösa våra problem måste vi formulera lösningar som enbart använder sig av dessa ord. 100 ord är inte så mycket, det är färre ord än en hund eller en tvååring kan förstå. Liksom när man försöker kommunicera med en hund eller en tvååring så kan det vara svårt att formulera lösningen till ett komplext problem enbart genom att använda sig av det starkt begränsat vokabulär man har att tillgå. Datorn har dock en fördel i jämförelse med hundar och små barn, den utför exakt vad du beordrar den att göra. Den gör vare sig mer eller mindre än det du säger åt den att göra (hur dumma eller felaktiga dina order än må vara).&lt;br /&gt;
&lt;br /&gt;
I skrivandets stund har faktiskt JavaScript endast 46 &amp;quot;grundord&amp;quot;. Dock har de flesta språk även så kallade standardbibliotek som innehåller extra funktionalitet. Denna extra funktionalitet består oftast i sånt som bara används för vissa typer av programmering. Det kan vara t.ex. filhantering för att skriva och läsa data. Det kanske inte alla program kräver och därför ligger det i ett bibliotek som vi kan inkludera. Allt eftersom vi programmerar utökar vi även vilka &amp;quot;ord&amp;quot; som finns att tillgå i vår kod.&lt;br /&gt;
&lt;br /&gt;
När man programmerar går man igenom flera faser. Man börjar med att analysera det problem man vill lösa. Man försöker, om möjligt, att reducera problemet till flera, enklare delproblem. Därefter hittar man på lösningsförslag till varje delproblem och försöker sedan att kombinera dellösningarna till en komplett lösning som genomför allt man förväntade sig.&lt;br /&gt;
&lt;br /&gt;
Programmering påminner lite om hur man löser vissa problem i matematiken, t.ex. såna där problem där &amp;quot;Lisa har tre äpplen, Per har två skohorn...&amp;quot;.  Man vet vad man har för startvillkor och man vet var man vill hamna – det svåra är att hitta vägen ifrån A till B. Ibland måste man ta en liten avkrok på vägen och klara av några delproblem, som förhoppningsvis kan ge ledning till hur man ska komma fram till slutlösningen. Även det som låter väldigt enkelt, kan bli krångligt och komplext när man ska uttrycka det som kod. Gillar du att lösa problem är programmering den ultimata utmaningen!&lt;br /&gt;
&lt;br /&gt;
I tidiga faserna av programmering jobbar man ofta på papper. Man kanske ritar upp problemet, t.ex. med [http://sv.wikipedia.org/wiki/Fl%C3%B6desschema flödesdiagram]. Ett annat sätt för att beskriva lösningsförslag är att använda sig av så kallad [https://www.wikiwand.com/en/Pseudocode pseudokod]. Pseudokod är ett mer formaliserat sätt att sätta ord på programmeringslösningar. Det är en blandning av vanligt, mänskligt språk och programmeringsspråk. Det finns ingen standard för hur pseudokod ska se ut. Man skriver mer eller mindre i klartext hur lösningen ska fungera, steg för steg. &lt;br /&gt;
&lt;br /&gt;
=== Algoritm ===&lt;br /&gt;
Problemlösningar av typen steg-för-steg, kallas för algoritm. Algoritmer känner du säkert igen ifrån matematiken. Den vanliga metoden för att lösa en andragradsekvation, PQ-formeln, är ett exempel på en algoritm. När man använder den formeln jobbar man steg för steg för att på ett generellt sätt lösa en andragradsekvation. Andra vardagsexempel på algoritmer kan vara matrecept, bygginstruktioner (typ sådana man får med IKEA-möbler) eller liknande. &lt;br /&gt;
&lt;br /&gt;
I en algoritm är viktigt att man utför de olika stegen i rätt ordning, annars kommer resultatet inte att bli korrekt. Vanligtvis utför man stegen i en algoritm ett efter ett. Man börjar i toppen och går framåt rad för rad. Detta kallas att arbeta sekventiellt eller synkront. De flesta enkla datorprogram fungerar på detta sätt. &lt;br /&gt;
&lt;br /&gt;
Ibland kan man ha en instruktion som säger att man ska hoppa över några rader om något speciellt villkor är uppfyllt. Detta kallar man ibland för selektion, dvs man väljer ut vilka rader som ska köras.&lt;br /&gt;
&lt;br /&gt;
Det är också vanligt förekommande att man vill upprepa en, eller flera, rader i en algoritm, kanske upprepar man tills något villkor är uppfyllt. Detta kallas för iteration, eller upprepning.&lt;br /&gt;
&lt;br /&gt;
Detta där är grundstenarna i programmering, men vi behöver en sak till. För att kunna beräkna saker måste vi även ha lagring. Vi måste på något vis kunna spara undan våra beräkningar.&lt;br /&gt;
&lt;br /&gt;
Alla dessa begrepp sammantagna är grunden till programmering; lagring, sekvens, selektion och iteration. Har vi tillgång till dessa saker kan vi beräkna allt! (I alla fall allt som går att beräkna...) Detta är något som bevisats av [https://en.wikipedia.org/wiki/Alan_Turing Alan Turing] och [https://en.wikipedia.org/wiki/Alonzo_Church Alonzo Church]. Vi brukar kalla språk som har alla dessa finesser för [https://sv.wikipedia.org/wiki/Turingkomplett turingkompletta].&lt;br /&gt;
&lt;br /&gt;
Programmering är oftast en iterativ process, där man jobbar med stegvis förfining. Vilket är ett halvkrångligt sätt att säga att man gör saker om och om igen, men man försöker förbättra resultatet varje gång. Ett exempel på det kan vara att man i första skedet skapar en algoritm som gör det den ska, utan att bry sig om hur snabbt algoritmen utför sitt arbete. I nästa iteration, eller upprepning, försöker man förbättra algoritmen så att den går snabbare. På så vis förbättrar man sitt program stegvis.&lt;br /&gt;
&lt;br /&gt;
=== Exempel: Är ett heltal ett primtal? ===&lt;br /&gt;
Låt säga att vi ska kontrollera om ett heltal är ett primtal. När man ska lösa det problemet, kanske man går igenom en process som påminner om följande:&lt;br /&gt;
&lt;br /&gt;
* Först måste vi ta reda på vad ett primtal är. På Wikipedia finns den här [https://www.wikiwand.com/sv/Primtal definitionen]:&lt;br /&gt;
&amp;lt;cite&amp;gt;&amp;quot;Ett primtal är ett heltal p, som är större än 1 och som bara är jämt delbart med ±1 och ±p&amp;quot;&amp;lt;/cite&amp;gt;.&lt;br /&gt;
* Om man funderar lite kommer man fram till att man ”bara” behöver prova om talet är jämt delbart med något mellan 2 och (talet - 1). Ettan ska vi skippa eftersom allt är jämt delbart med 1. Vi kan stoppa när vi är ett steg under talet vi ska testa. För ett tal är ju alltid jämt delbart med sig själv.&lt;br /&gt;
* Vi uttrycker det med lite pseudokod:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 Sätt nämnare = 2&lt;br /&gt;
 Medan nämnare är mindre än tal&lt;br /&gt;
    Om tal / nämnare är jämt&lt;br /&gt;
        Tal är ej primtal&lt;br /&gt;
    Annars&lt;br /&gt;
        Öka nämnare med 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Vi kanske skapar ett flödesdiagram&lt;br /&gt;
[[Fil:PrimtalFlowchart.png]]&lt;br /&gt;
* Nu kan vi omvandla pseudokoden till JavaScript-kod&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function primtal(tal) {&lt;br /&gt;
  let nämnare = 2;&lt;br /&gt;
&lt;br /&gt;
  while( nämnare &amp;lt; tal ) {&lt;br /&gt;
    if( tal % nämnare == 0 ) {&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En relativt ineffektiv lösning (och lite buggig)…&lt;br /&gt;
&lt;br /&gt;
Även om vi inte kan programmering så bra ännu, så går det faktiskt att läsa vad som händer i koden ovan. Om vi bortser från sådant vi kanske inte fattar just nu, som t.ex. &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;%&amp;lt;/code&amp;gt; (den senare ger oss resten efter en heltalsdivision), ser vi att koden är rätt så lik vår pseudokod, med den stora skillnaden att sakerna står på halvengelska.&lt;br /&gt;
&lt;br /&gt;
== Funktioner, metoder, osv ==&lt;br /&gt;
Vad vi skapade i föregående sektion är en funktion. Dessa fungerar ungefär som i matematiken när man skapar funktioner av typen &#039;&#039;f(x)&#039;&#039;. Funktioner är ett sätt på vilket man kan skapa små dellösningar. Man skriver kodsnuttar som man sedan kan kombinera till större lösningar. Man skulle kunna säga att man utvidgar programmeringsspråket med just de specifika finesser som man själv behöver. Vi nämnde tidigare hur datorspråkens grundvokabulär oftast bara består av mindre än 100 ord. Varje gång man skapar en ny funktion (eller liknande) så utökar man detta vokabulär. Desto fler funktioner vi skapar, desto enklare blir det att beskriva den lösning man är ute efter. Allteftersom vi kodar skapar vi alltså ett språk som är mer anpassat till det vi vill lösa för tillfället.&lt;br /&gt;
&lt;br /&gt;
I många fall går funktionerna även att återanvända när man skriver andra program. Som programmerare jobbar man ständigt på att utvidga sin verktygslåda med lösningar, algoritmer och funktioner. Det är alltså bra att försöka hålla sina funktioner så generella som möjligt, så att de går att återanvända. Varje gång du skapar en funktion som är återanvändbar, finns chansen att du besparar dig själv en massa onödigt arbete i framtiden! När du kommer ut i arbetslivet kommer säkerligen din arbetsplats att ha en uppsättning med bibliotek som används inom företaget. Självklart finns det även många bibliotek som du kan ladda ned från nätet för att få extra funktionalitet till dina program.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Kärt barn har många namn; det är också vanligt att kalla funktioner för metoder, rutiner eller subrutiner, osv. Även om det skiljer lite mellan den korrekta definitionen på hur man ska använda de olika namnen, så kan man säga att alla är godtagbara. Oavsett vilket namn du använder bör programmeringskunniga fatta vad du menar. Inom programmering är det rätt vanligt att samma saker har lite olika namn. Inom datorvärlden har vi även en tendens att använda svengelska termer för saker och ting. Detta gäller definitivt för oss programmerare!&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Satser ==&lt;br /&gt;
Uttrycket sats kommer ifrån matematikens och logikens värld. En sats är en utsaga som kan prövas. Vissa satser kan man använda för att beräkna saker - kanske du stött på binomialsatsen. Inom programmering är en sats en komplett utsaga som kan utföras. Lite förenklat kan man säga att varje rad i ett JavaScript-program är en sats (ibland delar man upp en sats på flera rader).  Ett exempel på en sats i vår primtals-funktion är;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
let nämnare = 2;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I den satsen skapar vi en variabel och vi ger den namnet &amp;lt;code&amp;gt;nämnare&amp;lt;/code&amp;gt; samt att vi tilldelar den värdet &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. Varje sats genomför oftast någon &amp;quot;enkel&amp;quot; deluppgift/delsteg i vår algoritm. Man kan självklart kalla detta för mycket annat än sats, t.ex. kodrad, programrad, uttryck, osv.&lt;br /&gt;
&lt;br /&gt;
För att indikera var en sats avslutas skriver man oftast ett &amp;quot;&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&amp;quot;-tecken. Så gott som alla programrader ska avslutas på detta vis. I modern JavaScript är inte &amp;quot;&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&amp;quot;-tecknet helt nödvändigt. Istället kommer JavaScript att se en avslutad rad som en komplett sats. I de flesta fall är det dock enklare att se var satsen avslutas genom att skriva ett &amp;quot;&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&amp;quot;-tecken.&lt;br /&gt;
&lt;br /&gt;
== Kodblock; { och } ==&lt;br /&gt;
Kodexemplet med primtal innehöll antagligen några tecken som du inte är helt van vid att använda. Det gäller nog främst &amp;quot;&amp;lt;code&amp;gt;{&amp;lt;/code&amp;gt;&amp;quot; och &amp;quot;&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&amp;quot;. Dessa är vanligt förekommande i de många programmeringsspråk. De kallas för klammerparenteser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Klammerparenteser kan också heta klammer, måsvingar, braces, curly braces, osv. De senare är de engelska namnen på tecknen. Vi programmerare kör ofta med engelska eller snarare svengelska uttryck, vilket är rätt naturligt då de flesta programmeringsspråk är baserade på engelska. Engelskan är förstås programmeringens &amp;quot;modersmål&amp;quot;, då de flesta språk baseras på engelska ord och så gott som all dokumentation först och främst (och kanske enbart) är skrivna på engelska.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vad man än kallar klamrarna, så har de en mycket speciell betydelse i JavaScript (och många andra programmeringsspråk). De används för att definiera ett kodblock. Det vill säga man har ett antal sats-rader som ska hänga samman som en enda stor sats och som ska utföras tillsammans (de körs dock inte samtidigt, utan de utförs fortfarande sekventiellt). Det kan vara kod som enbart ska köras när något speciellt villkor är sant (en så kallad &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-sats) eller kod som ska upprepas flera gånger (en så kallad slinga eller loop). Lägg märke till att block inte avslutas med ett &amp;quot;&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&amp;quot;-tecken.&lt;br /&gt;
&lt;br /&gt;
== Mer om primtalsexemplet ==&lt;br /&gt;
I vår kodsnutt hade vi även exempel på något av det mest grundläggande som behövs för programmering, nämligen variabler. Dessa används för att lagra värden. Speciellt viktigt är att vi kan lagra undan resultat och delresultat ifrån våra beräkningar. Vi återkommer till variabler alldeles strax. &lt;br /&gt;
&lt;br /&gt;
I koden hade vi även exempel på några av de mest centrala begreppen i programmering; upprepning och val. Eller för att använda fackspråk; iteration och selektion. Upprepning gör att vi kan köra en bit av vår programkod flera gånger. Medan val möjliggör att vi kan styra programflödet och köra olika kodbitar beroende på diverse villkor. De flesta programmeringsproblem går att reducera till lagring, upprepning och val. Faktum är att matematikern Alan Turing bevisade att just dessa grundkoncept är vad som krävs för att kunna beräkna allt som är beräkningsbart.&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivtet ==&lt;br /&gt;
[[Att skriva läsbar kod]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Grunderna_i_JavaScript-programmering&amp;diff=5092</id>
		<title>Grunderna i JavaScript-programmering</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Grunderna_i_JavaScript-programmering&amp;diff=5092"/>
		<updated>2026-08-10T12:48:08Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Här kommer vi att gå igenom programmering från scratch, så om du har lite kunskaper inom området behöver du antagligen bara behöva att snabbskumma igenom de första aktiviteterna i denna sektion...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Om du kan något annat programmeringsspråk i C-familjen (t.ex. C, C++, C# eller Java) kan du redan mycket av grunderna i JavaScript. Dessa språks grunder påminner mycket om varandra. Dock finns det en del skillnader, såsom hur man deklarerar variabler och dylikt. Det bör dock inte vara alltför svårt att sätta sig in i skillnaderna. Däremot finns det en hel del skillnader man måste lära sig om man vill skriva riktigt optimal kod.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vad är programmering? ==&lt;br /&gt;
Programmering är en typ av problemlösning där man tar fram en ”steg för steg”-beskrivning för hur datorn ska lösa ett problem eller en klass av problem. Datorerna är egentligen rätt dumma och kan enbart utföra väldigt grundläggande uppgifter, typ den enklaste matematiken. Däremot är datorer extremt snabba (och relativt tillförlitliga). På grund av denna snabbhet kan man skapa problemlösningar som i grund och botten är uppbyggda av tonvis av små, enkla funktioner, som stegvis utför allt mer komplexa uppgifter. Oavsett i vilket programmeringsspråk vi programmerar, så kommer vår kod att översättas till något som datorn kan fatta och utföra. I slutändan är det alltid [[maskinkod]], dvs processorns egna språk, som utför arbetet. Varje kodrad som återfinns i ett program kan resultera i en mängd operationer som måste genomföras för att uträtta det som kodraden beskriver. Till och med när man kör de enklaste programmen, så utför datorn myriader av operationer.&lt;br /&gt;
 &lt;br /&gt;
Datorn har ett väldigt litet antal kommandon som den klarar av att utföra. Varje programmeringsspråk har en uppsättning ord och regler som avgör vad språket &amp;quot;fattar&amp;quot; och kan utföra. Det är sällan mer än ca 100 grundfunktioner som finns i ett programmeringsspråk. När vi ska lösa våra problem måste vi formulera lösningar som enbart använder sig av dessa ord. 100 ord är inte så mycket, det är färre ord än en hund eller en tvååring kan förstå. Liksom när man försöker kommunicera med en hund eller en tvååring så kan det vara svårt att formulera lösningen till ett komplext problem enbart genom att använda sig av det starkt begränsat vokabulär man har att tillgå. Datorn har dock en fördel i jämförelse med hundar och små barn, den utför exakt vad du beordrar den att göra. Den gör vare sig mer eller mindre än det du säger åt den att göra (hur dumma eller felaktiga dina order än må vara).&lt;br /&gt;
&lt;br /&gt;
När man programmerar går man igenom flera faser. Man börjar med att analysera det problem man vill lösa. Man försöker, om möjligt, att reducera problemet till flera, enklare delproblem. Därefter hittar man på lösningsförslag till varje delproblem och försöker sedan att kombinera dellösningarna till en komplett lösning som genomför allt man förväntade sig.&lt;br /&gt;
&lt;br /&gt;
Programmering påminner lite om hur man löser vissa problem i matematiken, t.ex. såna där problem där &amp;quot;Lisa har tre äpplen, Per har två skohorn...&amp;quot;.  Man vet vad man har för startvillkor och man vet var man vill hamna – det svåra är att hitta vägen ifrån A till B. Ibland måste man ta en liten avkrok på vägen och klara av några delproblem, som förhoppningsvis kan ge ledning till hur man ska komma fram till slutlösningen. Även det som låter väldigt enkelt, kan bli krångligt och komplext när man ska uttrycka det som kod. Gillar du att lösa problem är programmering den ultimata utmaningen!&lt;br /&gt;
&lt;br /&gt;
I tidiga faserna av programmering jobbar man ofta på papper. Man kanske ritar upp problemet, t.ex. med [http://sv.wikipedia.org/wiki/Fl%C3%B6desschema flödesdiagram]. Ett annat sätt för att beskriva lösningsförslag är att använda sig av så kallad [https://www.wikiwand.com/en/Pseudocode pseudokod]. Pseudokod är ett mer formaliserat sätt att sätta ord på programmeringslösningar. Det är en blandning av vanligt, mänskligt språk och programmeringsspråk. Det finns ingen standard för hur pseudokod ska se ut. Man skriver mer eller mindre i klartext hur lösningen ska fungera, steg för steg. &lt;br /&gt;
&lt;br /&gt;
=== Algoritm ===&lt;br /&gt;
Problemlösningar av typen steg-för-steg, kallas för algoritm. Algoritmer känner du säkert igen ifrån matematiken. Den vanliga metoden för att lösa en andragradsekvation, PQ-formeln, är ett exempel på en algoritm. När man använder den formeln jobbar man steg för steg för att på ett generellt sätt lösa en andragradsekvation. Andra vardagsexempel på algoritmer kan vara matrecept, bygginstruktioner (typ sådana man får med IKEA-möbler) eller liknande. &lt;br /&gt;
&lt;br /&gt;
I en algoritm är viktigt att man utför de olika stegen i rätt ordning, annars kommer resultatet inte att bli korrekt. Vanligtvis utför man stegen i en algoritm ett efter ett. Man börjar i toppen och går framåt rad för rad. Detta kallas att arbeta sekventiellt eller synkront. De flesta enkla datorprogram fungerar på detta sätt. &lt;br /&gt;
&lt;br /&gt;
Ibland kan man ha en instruktion som säger att man ska hoppa över några rader om något speciellt villkor är uppfyllt. Detta kallar man ibland för selektion, dvs man väljer ut vilka rader som ska köras.&lt;br /&gt;
&lt;br /&gt;
Det är också vanligt förekommande att man vill upprepa en, eller flera, rader i en algoritm, kanske upprepar man tills något villkor är uppfyllt. Detta kallas för iteration, eller upprepning.&lt;br /&gt;
&lt;br /&gt;
Detta där är grundstenarna i programmering, men vi behöver en sak till. För att kunna beräkna saker måste vi även ha lagring. Vi måste på något vis kunna spara undan våra beräkningar.&lt;br /&gt;
&lt;br /&gt;
Alla dessa begrepp sammantagna är grunden till programmering; lagring, sekvens, selektion och iteration. Har vi tillgång till dessa saker kan vi beräkna allt! (I alla fall allt som går att beräkna...) Detta är något som bevisats av [https://en.wikipedia.org/wiki/Alan_Turing Alan Turing] och [https://en.wikipedia.org/wiki/Alonzo_Church Alonzo Church]. Vi brukar kalla språk som har alla dessa finesser för [https://sv.wikipedia.org/wiki/Turingkomplett turingkompletta].&lt;br /&gt;
&lt;br /&gt;
Programmering är oftast en iterativ process, där man jobbar med stegvis förfining. Vilket är ett halvkrångligt sätt att säga att man gör saker om och om igen, men man försöker förbättra resultatet varje gång. Ett exempel på det kan vara att man i första skedet skapar en algoritm som gör det den ska, utan att bry sig om hur fort algoritmen utför sitt arbete. I nästa iteration, eller upprepning, försöker man förbättra algoritmen så att den går snabbare. På så vis förbättrar man sitt program stegvis.&lt;br /&gt;
&lt;br /&gt;
=== Exempel: Är ett heltal ett primtal? ===&lt;br /&gt;
Låt säga att vi ska kontrollera om ett heltal är ett primtal. När man ska lösa det problemet, så kanske man går igenom en process som påminner om följande:&lt;br /&gt;
&lt;br /&gt;
* Först måste vi ta reda på vad ett primtal är. På Wikipedia finns den här [https://www.wikiwand.com/sv/Primtal definitionen]: &amp;quot;Ett primtal är ett heltal p, som är större än 1 och som bara är jämt delbart med ±1 och ±p&amp;quot;.&lt;br /&gt;
* Om man funderar lite kommer man fram till att man ”bara” behöver prova om talet är jämt delbart med något mellan 2 och (talet - 1). Ettan ska vi skippa och vi kan stoppa när vi är ett steg under talet vi ska testa.&lt;br /&gt;
* Vi uttrycker det med lite pseudokod:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 Sätt nämnare = 2&lt;br /&gt;
 Medan nämnare är mindre än tal&lt;br /&gt;
    Om tal / nämnare = jämt&lt;br /&gt;
     Tal är ej primtal&lt;br /&gt;
   Annars&lt;br /&gt;
     Öka nämnare med 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Vi kanske skapar ett flödesdiagram&lt;br /&gt;
[[Fil:PrimtalFlowchart.png]]&lt;br /&gt;
* Nu kan vi omvandla pseudokoden till JavaScript-kod&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function primtal(tal) {&lt;br /&gt;
  let nämnare = 2;&lt;br /&gt;
&lt;br /&gt;
  while( nämnare &amp;lt; tal ) {&lt;br /&gt;
    if( tal % nämnare == 0 ) {&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En relativt ineffektiv lösning (och lite buggig)… Även om vi inte kan programmering så bra ännu, så går det faktiskt att läsa vad som händer i koden ovan. Om vi bortser ifrån sådant vi inte fattar, som t.ex. &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;%&amp;lt;/code&amp;gt; (den senare ger oss resten efter en heltalsdivision), ser vi att koden är rätt så lik vår pseudokod, med den stora skillnaden att sakerna står på halvengelska.&lt;br /&gt;
&lt;br /&gt;
== Funktioner, metoder, osv ==&lt;br /&gt;
Vad vi skapade i föregående sektion är en funktion. Dessa fungerar ungefär som man gör i matematiken när man skapar funktioner av typen &#039;&#039;f(x)&#039;&#039;. Funktioner är ett sätt på vilket man kan skapa små dellösningar. Man skriver kodsnuttar som man sedan kan kombinera till större lösningar. Man skulle kunna säga att man utvidgar programmeringsspråket med just de specifika finesser som man själv behöver. Vi nämnde tidigare hur datorspråkens grundvokabulär oftast bara består av runt 100 ord. Varje gång man skapar en ny funktion (eller liknande) så utökar man detta vokabulär. Desto fler funktioner vi skapar, desto enklare blir det att beskriva den lösning man är ute efter.&lt;br /&gt;
&lt;br /&gt;
I många fall går funktionerna även att återanvända när man skriver andra program. Som programmerare jobbar man ständigt på att utvidga sin verktygslåda av lösningar, algoritmer och funktioner. Det är alltså bra att försöka hålla sina funktioner så generella som möjligt, så att de går att återanvända. Varje gång du skapar en funktion som är återanvändbar, finns chansen att du besparar dig själv en massa onödigt arbete i framtiden!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Kärt barn har många namn; det är också vanligt att kalla funktioner för metoder, rutiner eller subrutiner, osv. Även om det skiljer lite mellan den korrekta definitionen på hur man ska använda de olika namnen, så kan man säga att alla är godtagbara. Oavsett vilket namn du använder bör programmeringskunniga fatta vad du menar. Vi kommer att se så är det rätt vanligt inom programmering att saker har flera olika namn. Vi i datorvärlden har en tendens att använda svengelska termer för saker och ting. Detta gäller extra mycket för oss programmerare!&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Satser ==&lt;br /&gt;
Uttrycket sats kommer ifrån matematikens och logikens värld. En sats är där en utsaga som kan prövas. Vissa satser kan man använda för att beräkna saker - kanske du stött på binomialsatsen. Inom programmering är en sats en komplett utsaga som kan utföras. Lite förenklat kan man säga att varje rad i ett JavaScript-program är en sats (ibland delar man upp en sats på flera rader).  Ett exempel på en sats i vår primtals-funktion är;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
let nämnare = 2;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I den satsen skapar vi en variabel och vi ger den namnet &amp;lt;code&amp;gt;nämnare&amp;lt;/code&amp;gt; samt att vi tilldelar den värdet &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. Varje sats genomför oftast någon &amp;quot;enkel&amp;quot; deluppgift/delsteg i vår algoritm. Man kan självklart kalla detta för mycket annat än sats, t.ex. kodrad, programrad, uttryck, osv.&lt;br /&gt;
&lt;br /&gt;
För att indikera var en sats avslutas skriver man ett &amp;quot;&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&amp;quot;-tecken. Så gott som alla programrader ska avslutas på detta vis. Det finns ett fåtal undantag där man inte ska avsluta en programrad med ”&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;”. Vi återkommer till dessa längre fram... &lt;br /&gt;
&lt;br /&gt;
Det är ett vanligt fel att man glömmer ett &amp;quot;&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&amp;quot;-tecknet och då kommer kanske programmet inte att kunna köras korrekt. Vanligtvis är avsaknaden av &amp;quot;&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&amp;quot; en av de första saker du ska kontrollera då ditt program inte vill köra. Här är dock JavaScript mindre känsligt än andra språk i C-familjen. Faktum är att man i många fall kan utelämna &amp;quot;&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&amp;quot;-tecknet. Det är dock inte att rekommendera, det skapar bara dåliga ovanor att göra detta.&lt;br /&gt;
&lt;br /&gt;
== Kodblock; { och } ==&lt;br /&gt;
Kodexemplet där vi kontrollerade om något är ett primtal innehöll antagligen några tecken som du inte är helt van vid att använda. Jag tänker främst på &amp;quot;&amp;lt;code&amp;gt;{&amp;lt;/code&amp;gt;&amp;quot; och &amp;quot;&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&amp;quot;. Dessa är vanligt förekommande i de många programmeringsspråk. De kallas för klammerparenteser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Klammerparenteser kan också heta klammer, måsvingar, braces, curly braces, osv. De senare är de engelska namnen på tecknen. Vi programmerare kör ofta med engelska eller snarare svengelska uttryck, vilket är rätt naturligt då de flesta programmeringsspråk är baserade på engelska. Engelskan är förstås programmeringens &amp;quot;modersmål&amp;quot;, då språken baseras på engelska ord och så gott som all dokumentation först och främst (och kanske enbart) är skrivna på engelska.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vad man än kallar klamrarna, så har de en mycket speciell betydelse i JavaScript (och många andra programmeringsspråk). De används för att definiera ett kodblock. Det vill säga man har ett antal sats-rader som ska hänga samman som en enda stor sats och som ska utföras tillsammans (de körs dock inte samtidigt, utan de utförs fortfarande sekventiellt). Det kan vara kod som enbart ska köras när något speciellt villkor är sant (en så kallad &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-sats) eller kod som ska upprepas flera gånger (en så kallad slinga eller loop). Lägg märke till att block inte avslutas med ett &amp;quot;&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&amp;quot;-tecken.&lt;br /&gt;
&lt;br /&gt;
== Mer om primtalsexemplet ==&lt;br /&gt;
I vår kodsnutt hade vi även exempel på något av det mest grundläggande som behövs för programmering, nämligen variabler. Dessa används för att lagra värden. Speciellt viktigt är att vi kan lagra undan resultat och delresultat ifrån våra beräkningar. Vi återkommer till variabler alldeles strax. &lt;br /&gt;
&lt;br /&gt;
I koden hade vi även exempel på några av de mest centrala begreppen i programmering; upprepning och val. Eller för att använda fackspråk; iteration och selektion. Upprepning gör att vi kan köra en bit av vår programkod flera gånger. Medan val möjliggör att vi kan styra programflödet och köra olika kodbitar beroende på diverse villkor. De flesta programmeringsproblem går att reducera till lagring, upprepning och val. Faktum är att matematikern Alan Turing bevisade att just dessa grundkoncept är vad som krävs för att kunna beräkna allt som är beräkningsbart.&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivtet ==&lt;br /&gt;
[[Att skriva läsbar kod]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Introduktion_till_JavaScript&amp;diff=5091</id>
		<title>Introduktion till JavaScript</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Introduktion_till_JavaScript&amp;diff=5091"/>
		<updated>2026-08-10T12:31:02Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;När vi håller på med webbutveckling så finns det flera olika komponenter vi använder oss av. För dokumentstrukturen använder vi oss av [[HTML]], för utseende använder vi oss av [[CSS]] och när vi vill skapa interaktivitet så använder vi oss av [[JavaScript]].&lt;br /&gt;
&lt;br /&gt;
[[JavaScript]] är ett [[scriptspråk]] som körs direkt i webbläsaren. Det ger oss tillgång till alla komponenter som bygger upp vår webbsida. Vi får så gott som fullkomlig kontroll över allt som har med sidan att göra. Det finns några inskränkningar på vad vi kan göra, främst utifrån ett säkerhetsperspektiv.&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-danger&amp;quot;&amp;gt;&lt;br /&gt;
Namnet till trots så har [[JavaScript]] ingenting att göra med [[Java]]. Det är ett helt annat språk!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
== Historik ==&lt;br /&gt;
[[JavaScript]] är ett programmeringsspråk som introducerades 1995. Det skapades av [http://en.wikipedia.org/wiki/Brendan_Eich Brendan Eich] när denne jobbade på Netscape (vilket var ett företag som gjorde en mycket populär webbläsare; Netscape Navigator, vilken är föregångaren till dagens Firefox). Språket skapades väldigt snabbt och har fått utstå mycket kritik för att det inte var väldesignat från grunden. Trots detta blev det snabbt accepterat som standardspråket för att köra kod i webbsidor.&lt;br /&gt;
&lt;br /&gt;
1997 standardiserades språket under namnet ECMAScript. ECMA är en standardiseringsorganisation som har hand om många olika datorstandarder. ECMAScript och JavaScript är mer eller mindre synonymt. Det vanligaste är dock att kalla det för just JavaScript, speciellt då man kör det i en webbläsare. Standarden har uppdaterats många gånger och det tillkommer ständigt nya finesser i språket. Från och med 2015 har standarden uppdaterats årligen. Dock tar det tid innan alla nya finesser letar sig in i webbläsarna.&lt;br /&gt;
&lt;br /&gt;
Språket blev långt mer användbart när man skapade [[AJAX]], vilket är en metod som möjliggör att webbsidor kan interagera och kommunicera med servrar, t.ex. för att hämta information och visa upp den dynamiskt. De flesta större webbapplikationer använder sig av [[AJAX]], eller modernare metoder som [[Fetch]], t.ex. Facebook, GMail osv...&lt;br /&gt;
&lt;br /&gt;
JavaScript är vanligt förekommande och kan numera köras i mer än webbsidor. Man kan skriva alla typer av applikationer med hjälp av JavaScript, mycket tack vare [[node.js]]. Det senare är en fristående JavaScript-&amp;quot;motor&amp;quot; som gör att man kan köra program utanför webbläsaren. På så vis kan man använda samma språk för att koda både för webbläsaren och server.&lt;br /&gt;
&lt;br /&gt;
JavaScript var länge ett språk som hade dåligt rykte (vilket till viss del stämmer även idag). Dock ändrades detta något när Douglas Crockford publicerade sin bok &amp;quot;JavaScript - the Good Parts&amp;quot;. Vilket i mångt och mycket ledde till en renässans för språket. En del av det dåliga ryktet beror på ålderstigna delar av språket. Till viss del har dessa delar förbättras i modernt JavaScript, men vissa konstigheter går inte att komma undan.&lt;br /&gt;
&lt;br /&gt;
Kritiken till trots, om man använder JavaScript på ett korrekt vis är det ett mycket kapabelt språk.&lt;br /&gt;
&lt;br /&gt;
== Kort om språket ==&lt;br /&gt;
(Här förekommer en del jargong som du kanske inte förstår om du inte programmerat förut, men förhoppningsvis kommer allt att klarna när du gått igenom allt sajtmaterial om JavaScript).&lt;br /&gt;
&lt;br /&gt;
JavaScript är. som hörs på namnet, ett [[scriptspråk]]. Scriptspråk är oftast interpreterande, vilket även JavaScript är. Detta betyder att koden körs &amp;quot;direkt&amp;quot; utan att översättas till maskinkod. Man behöver alltså inte något program som översätter koden till datorns egna &amp;quot;språk&amp;quot;, dvs maskinkod ([[compiler]]). Istället tolkas koden direkt från källkoden (I verkligheten är det inte riktigt så enkelt, JavaScript använder sig av [[JIT]] för att göra koden snabbare). Att koden körs direkt gör att det går mycket snabbt att testa sig fram, man kan ändra en rad, ladda om sidan och vips så körs koden på nytt.&lt;br /&gt;
&lt;br /&gt;
JavaScript är ett svagt typat språk. Det betyder att man inte behöver ange datatyper när man skapar variabler. Istället försöker JavaScript &amp;quot;fatta&amp;quot; vad variabeln är till för och använda den på det mest troliga viset. I ena sekunden kan en variabel ses som att den innehåller ett numeriskt värde och i nästa kan den användas som en textsträng. Oftast går det snabbare att utveckla på grund av detta, men det kan även göra vissa typer av buggar mer svårupptäckta. &lt;br /&gt;
&lt;br /&gt;
JavaScript är objektorienterat. Men om du är van med objektorientering från något annat språk, kommer du antagligen inte att känna igen dig. Man använder inte klasser för arv, utan istället använder man något som heter prototyper. Det fungerar dock lika bra som klasser, men man får tänka om lite (från och med ECMAScript 6 har språket även mer eller mindre &amp;quot;normala&amp;quot; klasser, men det är mer vanligt att man använder sig av protyper).&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Grunderna i JavaScript-programmering]]&lt;br /&gt;
&lt;br /&gt;
[[Category:JavaScript]]&lt;br /&gt;
__FORCETOC__&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Introduktion_till_JavaScript&amp;diff=5090</id>
		<title>Introduktion till JavaScript</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Introduktion_till_JavaScript&amp;diff=5090"/>
		<updated>2026-08-10T12:22:37Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;När vi håller på med webbutveckling så finns det flera olika komponenter vi använder oss av. För dokumentstrukturen använder vi oss av [[HTML]], för utseende använder vi oss av [[CSS]] och när vi vill skapa interaktivitet så använder vi oss av [[JavaScript]].&lt;br /&gt;
&lt;br /&gt;
[[JavaScript]] är ett [[scriptspråk]] som körs direkt i webbläsaren. Det ger oss tillgång till alla komponenter som bygger upp vår webbsida. Vi får så gott som fullkomlig kontroll över allt som har med sidan att göra. Det finns några inskränkningar på vad vi kan göra, främst utifrån ett säkerhetsperspektiv.&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-danger&amp;quot;&amp;gt;&lt;br /&gt;
Namnet till trots så har [[JavaScript]] ingenting att göra med [[Java]]. Det är ett helt annat språk!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
== Historik ==&lt;br /&gt;
[[JavaScript]] är ett programmeringsspråk som introducerades 1995. Det skapades av [http://en.wikipedia.org/wiki/Brendan_Eich Brendan Eich] när denne jobbade på Netscape (vilket var ett företag som gjorde en mycket populär webbläsare; Netscape Navigator, vilken är föregångaren till dagens Firefox). Språket skapades väldigt snabbt och har fått utstå mycket kritik för att det inte var väldesignat från grunden. Trots detta blev det snabbt accepterat som standardspråket för att köra kod i webbsidor.&lt;br /&gt;
&lt;br /&gt;
1997 standardiserades språket under namnet ECMAScript. ECMA är en standardiseringsorganisation som har hand om många olika datorstandarder. ECMAScript och JavaScript är mer eller mindre synonymt. Det vanligaste är dock att kalla det för just JavaScript, speciellt då man kör det i en webbläsare. Standarden har uppdaterats många gånger och det tillkommer ständigt nya finesser i språket. Från och med 2015 har standarden uppdaterats årligen. Dock tar det tid innan alla nya finesser letar sig in i webbläsarna.&lt;br /&gt;
&lt;br /&gt;
Språket blev långt mer användbart när man skapade [[AJAX]], vilket är en metod som möjliggör att webbsidor kan interagera och kommunicera med servrar, t.ex. för att hämta information och visa upp den dynamiskt. De flesta större webbapplikationer använder sig av [[AJAX]], eller modernare metoder som [[Fetch]], t.ex. Facebook, GMail osv...&lt;br /&gt;
&lt;br /&gt;
JavaScript är vanligt förekommande och kan numera köras i mer än webbsidor. Man kan skriva alla typer av applikationer med hjälp av JavaScript, mycket tack vare [[node.js]]. Det senare är en fristående JavaScript-&amp;quot;motor&amp;quot; som gör att man kan köra program utanför webbläsaren. Vilket gör att man kan använda samma språk för att koda både i webbläsaren och på serversidan.&lt;br /&gt;
&lt;br /&gt;
JavaScript var länge ett språk som hade dåligt rykte (vilket till viss del stämmer även idag). Dock ändrades detta något när Douglas Crockford publicerade sin bok &amp;quot;JavaScript - the Good Parts&amp;quot;. Vilket i mångt och mycket ledde till en renässans för språket. &lt;br /&gt;
&lt;br /&gt;
Kritiken till trots, om man använder JavaScript på ett korrekt vis är det ett mycket kapabelt språk.&lt;br /&gt;
&lt;br /&gt;
== Kort om språket ==&lt;br /&gt;
(Här förekommer en del jargong som du kanske inte förstår om du inte programmerat förut, men förhoppningsvis kommer allt att klarna när du gått igenom allt sajtmaterial om JavaScript).&lt;br /&gt;
&lt;br /&gt;
JavaScript är. som hörs på namnet, ett [[scriptspråk]]. Scriptspråk är oftast interpreterande, vilket även JavaScript är. Detta betyder att koden körs &amp;quot;direkt&amp;quot; utan att översättas till maskinkod. Man behöver alltså inte något program som översätter koden till datorns egna maskinkod ([[compiler]]),  utan istället tolkas koden direkt ifrån källkoden (I verkligheten är det inte riktigt så enkelt, JavaScript använder sig av [[JIT]] för att göra koden snabbare). Att koden körs direkt gör att det går mycket snabbt att testa sig fram, man kan ändra en rad, klicka på reload och vips så körs koden.&lt;br /&gt;
&lt;br /&gt;
JavaScript är ett svagt typat språk. Det betyder att man inte behöver ange datatyper när man skapar variabler. Istället försöker JavaScript &amp;quot;fatta&amp;quot; vad variabeln är till för och använda den på det mest troliga viset. I ena sekunden kan en variabel ses som den innehåller ett numeriskt tal och i nästa kan den användas som en textsträng. Oftast går det snabbare att utveckla på grund av detta, men det kan även göra vissa typer av buggar mer svårupptäckta. &lt;br /&gt;
&lt;br /&gt;
JavaScript är objektorienterat. Men om du är van med objektorientering ifrån något annat språk, kommer du antagligen inte att känna igen dig. Man använder inte klasser för arv, utan istället använder man något som heter prototyper. Det fungerar dock lika bra som klasser, men man får tänka om lite (från och med ECMAScript 6 har språket även mer eller mindre &amp;quot;normala&amp;quot; klasser, men det är mer vanligt att man använder sig av protyper).&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Grunderna i JavaScript-programmering]]&lt;br /&gt;
&lt;br /&gt;
[[Category:JavaScript]]&lt;br /&gt;
__FORCETOC__&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Scriptspr%C3%A5k&amp;diff=5089</id>
		<title>Scriptspråk</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Scriptspr%C3%A5k&amp;diff=5089"/>
		<updated>2026-08-10T12:14:14Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Scriptspråk, eller skriptspråk, är en typ av programmeringsspråk som inte kompileras, utan som i stället är direktexekverande (interpreterande). Det vill säga man kör inte ett program (kompilator) som omvandlar källkoden till maskinkod, istället tolkas och körs källkoden direkt.&lt;br /&gt;
&lt;br /&gt;
Oftast går det snabbare att utveckla med skriptspråk, då det går fort att provköra och testa sig fram. Dock körs blir resultatet sällan lika snabbt som det blir med kompilerande språk.&lt;br /&gt;
[[Category:Termer]]&lt;br /&gt;
__FORCETOC__&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Introduktion_till_JavaScript&amp;diff=5088</id>
		<title>Introduktion till JavaScript</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Introduktion_till_JavaScript&amp;diff=5088"/>
		<updated>2026-08-10T12:10:50Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;När vi håller på med webbutveckling så finns det flera olika komponenter vi använder oss av. För dokumentstrukturen använder vi oss av [[HTML]], för utseende använder vi oss av [[CSS]] och när vi vill skapa interaktivitet så använder vi oss av [[JavaScript]].&lt;br /&gt;
&lt;br /&gt;
[[JavaScript]] är ett [[scriptspråk]] som körs direkt i webbläsaren. Det ger oss tillgång till alla komponenter som bygger upp vår webbsida. Vi får så gott som fullkomlig kontroll över allt som har med sidan att göra. Det finns några inskränkningar på vad vi kan göra, främst utifrån ett säkerhetsperspektiv.&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-danger&amp;quot;&amp;gt;&lt;br /&gt;
Namnet till trots så har [[JavaScript]] ingenting att göra med [[Java]]. Det är ett helt annat språk!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
== Historik ==&lt;br /&gt;
[[JavaScript]] är ett programmeringsspråk som introducerades 1995. Det skapades av [http://en.wikipedia.org/wiki/Brendan_Eich Brendan Eich] när denne jobbade på Netscape (vilket var ett företag som gjorde en mycket populär webbläsare; Netscape Navigator, vilken är föregångaren till dagens Firefox). Språket skapades väldigt snabbt och har fått utstå mycket kritik för att det inte var väldesignat från grunden. Trots detta blev det snabbt accepterat som standardspråket för att köra kod i webbsidor.&lt;br /&gt;
&lt;br /&gt;
1997 standardiserades språket under namnet ECMAScript. ECMA är en standardiseringsorganisation som har hand om många olika datorstandarder. ECMAScript och JavaScript är mer eller mindre synonymt. Det vanligaste är dock att kalla det för just JavaScript, speciellt då man kör det i en webbläsare. Standarden har uppdaterats många gånger och det tillkommer ständigt nya finesser i språket. Från och med 2015 har standarden uppdaterats årligen. Dock tar det tid innan alla nya finesser letar sig in i webbläsarna.&lt;br /&gt;
&lt;br /&gt;
Språket blev långt mer användbart när man skapade [[AJAX]], vilket är en metod som möjliggör att webbsidor kan interagera och kommunicera med servrar, t.ex. för att hämta information och visa upp den dynamiskt. De flesta större webbapplikationer använder sig av [[AJAX]], eller den modernare metoden [[Fetch]], t.ex. Facebook, GMail osv...&lt;br /&gt;
&lt;br /&gt;
JavaScript är vanligt förekommande och kan numera köras i mer än webbsidor. Man kan skriva alla typer av applikationer med hjälp av JavaScript, mycket tack vare [[node.js]]. Det senare är en fristående JavaScript-&amp;quot;motor&amp;quot; som gör att man kan köra program utanför webbläsaren. Vilket gör att man kan använda samma språk för att koda både i webbläsaren och på serversidan.&lt;br /&gt;
&lt;br /&gt;
JavaScript var länge ett språk som hade dåligt rykte (vilket till viss del stämmer även idag). Dock ändrades detta något när Douglas Crockford publicerade sin bok &amp;quot;JavaScript - the Good Parts&amp;quot;. Vilket i mångt och mycket ledde till en renässans för språket. &lt;br /&gt;
&lt;br /&gt;
Kritiken till trots, om man använder JavaScript på ett korrekt vis är det ett mycket kapabelt språk.&lt;br /&gt;
&lt;br /&gt;
== Kort om språket ==&lt;br /&gt;
(Här förekommer en del jargong som du kanske inte förstår om du inte programmerat förut, men förhoppningsvis kommer allt att klarna när du gått igenom allt sajtmaterial om JavaScript).&lt;br /&gt;
&lt;br /&gt;
JavaScript är. som hörs på namnet, ett [[scriptspråk]]. Scriptspråk är oftast interpreterande, vilket även JavaScript är. Detta betyder att koden körs &amp;quot;direkt&amp;quot; utan att översättas till maskinkod. Man behöver alltså inte något program som översätter koden till datorns egna maskinkod ([[compiler]]),  utan istället tolkas koden direkt ifrån källkoden (I verkligheten är det inte riktigt så enkelt, JavaScript använder sig av [[JIT]] för att göra koden snabbare). Att koden körs direkt gör att det går mycket snabbt att testa sig fram, man kan ändra en rad, klicka på reload och vips så körs koden.&lt;br /&gt;
&lt;br /&gt;
JavaScript är ett svagt typat språk. Det betyder att man inte behöver ange datatyper när man skapar variabler. Istället försöker JavaScript &amp;quot;fatta&amp;quot; vad variabeln är till för och använda den på det mest troliga viset. I ena sekunden kan en variabel ses som den innehåller ett numeriskt tal och i nästa kan den användas som en textsträng. Oftast går det snabbare att utveckla på grund av detta, men det kan även göra vissa typer av buggar mer svårupptäckta. &lt;br /&gt;
&lt;br /&gt;
JavaScript är objektorienterat. Men om du är van med objektorientering ifrån något annat språk, kommer du antagligen inte att känna igen dig. Man använder inte klasser för arv, utan istället använder man något som heter prototyper. Det fungerar dock lika bra som klasser, men man får tänka om lite (från och med ECMAScript 6 har språket även mer eller mindre &amp;quot;normala&amp;quot; klasser, men det är mer vanligt att man använder sig av protyper).&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Grunderna i JavaScript-programmering]]&lt;br /&gt;
&lt;br /&gt;
[[Category:JavaScript]]&lt;br /&gt;
__FORCETOC__&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Att_skapa_interaktivitet_med_Leaflet&amp;diff=5087</id>
		<title>Att skapa interaktivitet med Leaflet</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Att_skapa_interaktivitet_med_Leaflet&amp;diff=5087"/>
		<updated>2024-09-18T07:14:44Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vi får ju redan i grunden en del automatisk interaktivitet när vi använder oss av Leaflet. Användaren kan panorera och zooma runt i kartan. Vi ska nu titta på hur man kan lägga till mer saker som gör att användaren kan interagera med kartan.&lt;br /&gt;
&lt;br /&gt;
== Popups ==&lt;br /&gt;
Popups är ett bra sätt att visa upp extra information som gäller för intressepunkter på kartan. Det finns bra stöd i Leaflet för detta och det är mycket enkelt att koppla popups till objekt som lagts till på kartan. Popup triggas igång och visas när användaren klickar på det objekt till vilket popup:en är kopplad.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Man kan bara ha en popup framme samtidigt. Om en popup redan är öppen och användaren klickar på en ny popup, så kommer den första popup:en att stängas ned. Om vi klickar en gång till på samma objekt ifrån vilket det öppnades en popup, så kommer den kopplade popup:en att stängas ned. Likaså försvinner popup:er även om vi klickar utanför det kopplade objektet, oavsett om en ny popup triggas igång eller ej. Självklart kan användaren även klicka på det lilla krysset i popup:en för att stänga denna.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exempel ===&lt;br /&gt;
Vi utgår ifrån det sista exemplet i förra aktiviteten. Där ritade vi ut en polygon kring Soltorgsgymnasiet. Vi ska nu göra så att en popup med information dyker upp när vi klickar på polygonen. Det gör vi så här:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;pgedqJ&amp;quot; tab=&amp;quot;js,result&amp;quot; height=&amp;quot;650&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;bindPopup&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Vi behöver ha en instansvariabel som pekar på det kartobjekt som vi vill koppla vår popup till. I vårt exempel har vi  sparat undan vårt objekt i &amp;lt;code&amp;gt;polygon&amp;lt;/code&amp;gt;. I detta objekt finns en metod som heter &amp;lt;code&amp;gt;bindPopup&amp;lt;/code&amp;gt; med vilken vi kan koppla till popup-funktionalitet.&lt;br /&gt;
&lt;br /&gt;
I den enklaste varianten tar &amp;lt;code&amp;gt;bindPopup&amp;lt;/code&amp;gt; en sträng som input. Strängen innehåller det som ska visas när användaren klickar. Strängens innehåll kommer att tolkas som HTML-kod. Vi kan alltså använda så gott som alla HTML-taggar här och på så vis bygga upp en relativt snygg popup. Vi skulle även kunna skicka med ett redan existerande HTML-element som då skulle visas i popup:en.&lt;br /&gt;
&lt;br /&gt;
Vanligtvis utgår popup:ens position från den punkt där användaren klickade. Det går även att ange på vilken latitud och longitud som popup:en ska hamna. Dessa anges då som sista parametrar till metoden, t.ex.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
polygon.bindPopup(&amp;quot;Hej&amp;quot;, &amp;lt;latitud&amp;gt;, &amp;lt;longitud&amp;gt;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Denna variant kan vara bra att använda om du alltid vill att popup:en ska placeras på en likformig plats, oavsett vilken position som användaren klickar på. En orsak till att göra detta kan vara att man vill undvika att popup:en täcker viss information på kartan.&lt;br /&gt;
&lt;br /&gt;
== Händelser ==&lt;br /&gt;
Vi kan även koppla så att kod körs när olika händelser inträffar. I stort sett fungerar detta som händelser vanligtvis gör när vi kodar mot webbläsaren. Vi kopplar en händelsehanterare till vald Leaflet komponent och den triggas igång när en händelse inträffar. Det finns flera olika händelsetyper. Några av dessa är unika för vissa typer av kartobjekt, medan andra är universiella och gäller för alla typer av kartobjekt. Vi kan inte täcka alla varianter här, så kolla gärna på [http://leafletjs.com/reference.html Leflets dokumentation] för att i detalj se vilka händelser som är tillgängliga för de olika objekttyperna.&lt;br /&gt;
&lt;br /&gt;
==== Klickhändelser ====&lt;br /&gt;
Vi ska titta på hur man kan lägga till en händelse som triggas när användaren klickar på ett kartobjekt.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;gPmoYE&amp;quot; tab=&amp;quot;js,result&amp;quot; height=&amp;quot;875&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Den viktigaste kodraden är den där vi kopplar händelsen till vår händelsehanterarande funktion. Vi kan använda denna metod på de flesta typer av Leaflet-objekt. Precis som i fallet med [[jQuery]] tar metoden händelsetypen som första parameter. Den andra parametern är den funktion som vi vill ska triggas igång när händelsen inträffar. &lt;br /&gt;
&lt;br /&gt;
Vår funktion &amp;lt;code&amp;gt;klickade&amp;lt;/code&amp;gt; kommer alltså att köras när användaren klickar i vår polygon. I den kollar vi först vilken färg vår polygon har för tillfället. Vi kan komma åt alla utseende-inställningarna via &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt;. I vårt fall vill vi alltså ta fram färgen, vilken vi kommer åt med &amp;lt;code&amp;gt;options.color&amp;lt;/code&amp;gt;. Om denna är satt till gul, vilket den är från starten, ändrar vi den till röd. Metoden &amp;lt;code&amp;gt;setStyle&amp;lt;/code&amp;gt; möjliggör alltså att vi kan gå in och redigera ett objekts utseende efter det att det har skapats. Dess inparameter är ett objekt som innehåller alla de inställningar vi vill förändra.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Lägg märke till att om du klickar flera gånger och råkar klicka för &amp;quot;fort&amp;quot;, kommer dina klick inte att tas som en klickhändelse. Istället ses det som ett dubbelklick. Då körs förstås inte vår händelse-hanterare.&lt;br /&gt;
&lt;br /&gt;
Så som exemplet ser ut nu, tar Leaflet ett dubbelklick som en zoom-gest.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
I nästa aktivitet ska vi gå igenom ett litet fylligare Leaflet-exempel.&lt;br /&gt;
&lt;br /&gt;
[[En exempelapplikation i Leaflet]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Att_l%C3%A4gga_till_extra_data_med_Leaflet&amp;diff=5086</id>
		<title>Att lägga till extra data med Leaflet</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Att_l%C3%A4gga_till_extra_data_med_Leaflet&amp;diff=5086"/>
		<updated>2024-09-18T07:09:29Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vi ska nu titta på några olika metoder för att lägga till markörer och liknande i våra kartor. Dessa kan användas för att t.ex. visa upp intressepunkter eller för att åskådliggöra statistik på ett geografiskt plan. Leaflet har många olika metoder som kan användas för detta.&lt;br /&gt;
&lt;br /&gt;
== Att lägga till en markör ==&lt;br /&gt;
Som första exempel ska vi lägga till en markör i kartan. Denna markör kan användas för att markera var en intressepunkt finns. Ofta använder vi denna för att visa upp en specifik punkt som användaren sökt efter eller för att markera var något intressant finns.  När man skrollar runt eller zooma runt i kartan, kan man lätt tappa bort vilken punkt det var man sökte efter och markören kan då hjälpa en att hitta tillbaka.&lt;br /&gt;
&lt;br /&gt;
=== Exempel ===&lt;br /&gt;
Vi utgår från vårt tidigare exempel där vi visade upp var användaren befinner sig på en karta. Vi utökar det så att det läggs till en markör på den punkt där webbläsaren rapporterar att användaren finns. Kom ihåg att det finns en viss felmarginal som gör att den kanske inte placeras på den exakta positionen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;PZpOGa&amp;quot; tab=&amp;quot;js,result&amp;quot; height=&amp;quot;1400&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;marker&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Den intressantaste kodraden ligger en bit ner i vår &amp;lt;code&amp;gt;VisaPosition&amp;lt;/code&amp;gt;-funktion. Sist i denna har vi en ny rad som ser ut så här (den är utmärkt i exemplet med ett antal &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;-tecken):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
let marker = L.marker(koordinater).addTo(map);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vi kan alltså mycket enkelt lägga till en markör. Vi behöver bara kalla på &amp;lt;code&amp;gt;marker&amp;lt;/code&amp;gt; och skicka med koordinaterna till den punkt som vi vill markera. Koordinaterna  skickas i en array som innehåller latitud och longitud.&lt;br /&gt;
&lt;br /&gt;
För att markören ska visas i kartan gör vi en &amp;lt;code&amp;gt;addTo&amp;lt;/code&amp;gt; på slutet. Som inparameter tar den ett objekt som representerar den kartvy i vilken vi vill visa markören. Vi kan självklart ha olika kartvyer igång samtidigt.&lt;br /&gt;
&lt;br /&gt;
== Att lägga till en cirkel ==&lt;br /&gt;
När vi jobbar med kartor vill vi ofta markera en hel region. Här kan det vara bra att kunna lägga till cirklar. Dessa är mycket användbara för att indikera saker som utsträckning, felmarginal eller liknande. Även dessa är lätta att skapa i Leaflet&lt;br /&gt;
&lt;br /&gt;
=== Exempel ===&lt;br /&gt;
Som vi nämnde tidigare så får vi inte exakta positionsangivelser från webbläsaren. Vi kunde med hjälp av &amp;lt;code&amp;gt;accuracy&amp;lt;/code&amp;gt;-värdet läsa ut felmarginalen. Vi skulle kunna använda denna information för att utöka föregående exempel med en cirkel som visar felmarginallen som gäller för mätningen. Det kan vi göra så här:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;jWBGjQ&amp;quot; tab=&amp;quot;js,result&amp;quot; height=&amp;quot;1500&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;circle&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Vi skapar cirkeln med metoden &amp;lt;code&amp;gt;circle&amp;lt;/code&amp;gt;. Som inparameterar tar den först den koordinat som ska gälla som centrum för cirkeln. I vårt fall vill vi använda de koordinater som vi fick ut från webbläsarens positioneringsangivelse. Därefter föjer den radie som vi vill att cirkeln ska ha. Radien anges i meter. Vilket ju var samma enhet som &amp;lt;code&amp;gt;accuracy&amp;lt;/code&amp;gt; rapporterades i. Vi kan alltså använda den rakt av.&lt;br /&gt;
&lt;br /&gt;
==== Utritningsinställningar ====&lt;br /&gt;
Den sista parametern till &amp;lt;code&amp;gt;circle&amp;lt;/code&amp;gt;-metoden anger inställningar för hur cirkeln ska ritas ut. Man kan sätta många olika saker här. Läs mer på [http://leafletjs.com/reference.html#path-options Path Options] om du vill se allt som går att göra. I vårt fall anger vi fyra saker, nämligen:&lt;br /&gt;
;&amp;lt;code&amp;gt;color&amp;lt;/code&amp;gt;: Vilken färg ska cirkeln ha? Alla de färgangivelserna som är tillgängliga för CSS går att använda här. Se &amp;quot;[[Färg]]&amp;quot;-aktiviteten för mer information om CSS och färger. Defaultvärdet är &amp;lt;code&amp;gt;#03f&amp;lt;/code&amp;gt;.&lt;br /&gt;
;&amp;lt;code&amp;gt;opacity&amp;lt;/code&amp;gt;: Hur genomskinlig ska cirkelkanten vara? Anges som ett flyttal mellan &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, helt genomskinlig, och &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, helt ogenomskinlig. Det är alltså ett [[alfavärde]] och kan ses som en procentsats. Defaultvärdet är &amp;lt;code&amp;gt;0.5&amp;lt;/code&amp;gt;.&lt;br /&gt;
;&amp;lt;code&amp;gt;fillColor&amp;lt;/code&amp;gt;:  Här anges den färg som cirkeln ska fyllas med, även här fungerar alla CSS-färgangivelser. Defaultvärdet är samma färg som cirkelramen.  (Om man inte vill fylla cirkeln, kan man använda &amp;lt;code&amp;gt;fill: false&amp;lt;/code&amp;gt;).&lt;br /&gt;
;&amp;lt;code&amp;gt;fillOpacity&amp;lt;/code&amp;gt;:Hur genomskinlig ska fyllningen vara. Fungerar såsom &amp;lt;code&amp;gt;opacity&amp;lt;/code&amp;gt; ovan. Defaultvärdet är &amp;lt;code&amp;gt;0.2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Att lägga till en Polygon ==&lt;br /&gt;
En polygon är ju en månghörning. Med hjälp av polygoner kan vi markera regioner rätt så fritt. Vi kan ange så få eller så många hörnpunkter som vi vill. Den faktiska form som polygongen får styrs såväl av antalet hörnpunkter som av hörnpunkternas placering.&lt;br /&gt;
=== Exempel ===&lt;br /&gt;
Den här gången utgår vi från vårt tidigare exempel där vi visade upp Soltorgsgymnasiet i Borlänge. Nu ska vi rita en fyrhörning polygon runt skolan. Det kanske inte blir absolut rätt placering av hörnpunkterna, men det får duga som ett exempel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;MKpOpW&amp;quot; tab=&amp;quot;js,result&amp;quot; height=&amp;quot;600&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;polygon&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Som vi ser i exemplet så ritar vi ut polygoner med hjälp av metoden &amp;lt;code&amp;gt;polygon&amp;lt;/code&amp;gt;.&lt;br /&gt;
==== Hörnkoordinater ====&lt;br /&gt;
Den viktigaste parametern för denna metod är den första. Detta är en array som anger på vilka  koordinater som polygonens hörn ska placeras ut. Koordinaterna är &amp;quot;vanliga&amp;quot; longitud- och latitud-angivelser. Mellan varje angiven hörnpunkt kommer det att ritas en linje. Från den första till den sista hörnpunkten ritas automatiskt en linje som sluter polygonen. Den slutna figuren som bildas av polygonen kommer till sist att fyllas med angiven färg.&lt;br /&gt;
&lt;br /&gt;
==== Utritningsparametrar ====&lt;br /&gt;
Precis som i fallet med &amp;lt;code&amp;gt;circle&amp;lt;/code&amp;gt;, kan vi skicka med ett objekt som innehåller diverse inställningar som styr hur utritningen ska gå till. Som tidigare finns &amp;lt;code&amp;gt;color&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;opacity&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;fillOpacity&amp;lt;/code&amp;gt; med och dessa fungerar såsom beskrevs under &amp;lt;code&amp;gt;circle&amp;lt;/code&amp;gt;-exemplet. Soltorgsgymnasiet ska förstås markeras ut med rejält gula färger!&lt;br /&gt;
&lt;br /&gt;
Det vi lagt till extra här är &amp;lt;code&amp;gt;weight&amp;lt;/code&amp;gt; som anger hur tjock den utritade linjen ska vara. I exemplet har vi satt den något fetare än normalt, defaultvärdet är &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;. Vi har med andra ord angett att linjen ska vara ungefär dubbelt så fet som normala linjer.&lt;br /&gt;
&lt;br /&gt;
== Många fler möjligheter ==&lt;br /&gt;
Det finns långt många fler metoder i Leaflet än vi kan täcka här. Du kan läsa deras [http://leafletjs.com/reference.html API-referens] för att få mer information.&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
Vi ska gå vidare med Leaflet och titta på hur man kan ge användaren tillfälle att interagera med kartan på olika vis.&lt;br /&gt;
&lt;br /&gt;
[[Att skapa interaktivitet med Leaflet]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Att_l%C3%A4gga_till_extra_data_med_Leaflet&amp;diff=5085</id>
		<title>Att lägga till extra data med Leaflet</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Att_l%C3%A4gga_till_extra_data_med_Leaflet&amp;diff=5085"/>
		<updated>2024-09-18T06:51:26Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vi ska nu titta på några olika metoder för att lägga till markörer och liknande i våra kartor. Dessa kan användas för att t.ex. visa upp intressepunkter eller för att åskådliggöra statistik på ett geografiskt plan. Leaflet har många olika metoder som kan användas för detta.&lt;br /&gt;
&lt;br /&gt;
== Att lägga till en markör ==&lt;br /&gt;
Som första exempel ska vi lägga till en markör i kartan. Denna markör kan användas för att markera var en intressepunkt finns. Ofta använder vi denna för att visa upp en specifik punkt som användaren sökt efter eller för att markera var något intressant finns.  När man skrollar runt eller zooma runt i kartan, kan man lätt tappa bort vilken punkt det var man sökte efter och markören kan då hjälpa en att hitta tillbaka.&lt;br /&gt;
&lt;br /&gt;
=== Exempel ===&lt;br /&gt;
Vi utgår från vårt tidigare exempel där vi visade upp var användaren befinner sig på en karta. Vi utökar det så att det läggs till en markör på den punkt där webbläsaren rapporterar att användaren finns. Kom ihåg att det finns en viss felmarginal som gör att den kanske inte placeras på den exakta positionen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;PZpOGa&amp;quot; tab=&amp;quot;js,result&amp;quot; height=&amp;quot;1400&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;marker&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Den intressantaste kodraden ligger en bit ner i vår &amp;lt;code&amp;gt;VisaPosition&amp;lt;/code&amp;gt;-funktion. Sist i denna har vi en ny rad som ser ut så här (den är utmärkt i exemplet med ett antal &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;-tecken):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
let marker = L.marker(koordinater).addTo(map);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vi kan alltså mycket enkelt lägga till en markör. Vi behöver bara kalla på &amp;lt;code&amp;gt;marker&amp;lt;/code&amp;gt; och skicka med koordinaterna till den punkt som vi vill markera. Koordinaterna  skickas i en array som innehåller latitud och longitud.&lt;br /&gt;
&lt;br /&gt;
För att markören ska visas i kartan gör vi en &amp;lt;code&amp;gt;addTo&amp;lt;/code&amp;gt; på slutet. Som inparameter tar den ett objekt som representerar den kartvy i vilken vi vill visa markören. Vi kan självklart ha olika kartvyer igång samtidigt.&lt;br /&gt;
&lt;br /&gt;
== Att lägga till en cirkel ==&lt;br /&gt;
När vi jobbar med kartor vill vi ofta markera en hel region. Här kan det vara bra att kunna lägga till cirklar. Dessa är mycket användbara för att indikera saker som utsträckning, felmarginal eller liknande. Även dessa är lätta att skapa i Leaflet&lt;br /&gt;
&lt;br /&gt;
=== Exempel ===&lt;br /&gt;
Som vi nämnde tidigare så får vi inte exakta positionsangivelser från webbläsaren. Vi kunde med hjälp av &amp;lt;code&amp;gt;accuracy&amp;lt;/code&amp;gt;-värdet läsa ut felmarginalen. Vi skulle kunna använda denna information för att utöka föregående exempel med en cirkel som visar felmarginallen som gäller för mätningen. Det kan vi göra så här:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;jWBGjQ&amp;quot; tab=&amp;quot;js,result&amp;quot; height=&amp;quot;1500&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;circle&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Vi skapar cirkeln med metoden &amp;lt;code&amp;gt;circle&amp;lt;/code&amp;gt;. Som inparameterar tar den först den koordinat som ska gälla som centrum för cirkeln. I vårt fall vill vi använda de koordinater som vi fick ut från webbläsarens positioneringsangivelse. Därefter föjer den radie som vi vill att cirkeln ska ha. Radien anges i meter. Vilket ju var samma enhet som &amp;lt;code&amp;gt;accuracy&amp;lt;/code&amp;gt; rapporterades i. Vi kan alltså använda den rakt av.&lt;br /&gt;
&lt;br /&gt;
==== Utritningsinställningar ====&lt;br /&gt;
Den sista parametern till &amp;lt;code&amp;gt;circle&amp;lt;/code&amp;gt;-metoden anger inställningar för hur cirkeln ska ritas ut. Man kan sätta många olika saker här. Läs mer på [http://leafletjs.com/reference.html#path-options Path Options] om du vill se allt som går att göra. I vårt fall anger vi fyra saker, nämligen:&lt;br /&gt;
;&amp;lt;code&amp;gt;color&amp;lt;/code&amp;gt;: Vilken färg ska cirkeln ha? Alla de färgangivelserna som är tillgängliga för CSS går att använda här. Se &amp;quot;[[Färg]]&amp;quot;-aktiviteten för mer information om CSS och färger. Defaultvärdet är &amp;lt;code&amp;gt;#03f&amp;lt;/code&amp;gt;.&lt;br /&gt;
;&amp;lt;code&amp;gt;opacity&amp;lt;/code&amp;gt;: Hur genomskinlig ska cirkelkanten vara? Anges som ett flyttal mellan &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, helt genomskinlig, och &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, helt ogenomskinlig. Det är alltså ett [[alfavärde]] och kan ses som en procentsats. Defaultvärdet är &amp;lt;code&amp;gt;0.5&amp;lt;/code&amp;gt;.&lt;br /&gt;
;&amp;lt;code&amp;gt;fillColor&amp;lt;/code&amp;gt;:  Här anges den färg som cirkeln ska fyllas med, även här fungerar alla CSS-färgangivelser. Defaultvärdet är samma färg som cirkelramen.  (Om man inte vill fylla cirkeln, kan man använda &amp;lt;code&amp;gt;fill: false&amp;lt;/code&amp;gt;).&lt;br /&gt;
;&amp;lt;code&amp;gt;fillOpacity&amp;lt;/code&amp;gt;:Hur genomskinlig ska fyllningen vara. Fungerar såsom &amp;lt;code&amp;gt;opacity&amp;lt;/code&amp;gt; ovan. Defaultvärdet är &amp;lt;code&amp;gt;0.2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Att lägga till en Polygon ==&lt;br /&gt;
En polygon är ju en månghörning. Med hjälp av polygoner kan vi markera regioner rätt så fritt. Vi kan ange så få eller så många hörnpunkter som vi vill. Den faktiska form som polygongen får styrs såväl av antalet hörnpunkter som av hörnpunkternas placering.&lt;br /&gt;
=== Exempel ===&lt;br /&gt;
Den här gången utgår vi från vårt tidigare exempel där vi visade upp Soltorgsgymnasiet i Borlänge. Nu ska vi rita en fyrhörning polygon runt skolan. Det kanske inte blir absolut rätt placering av hörnpunkterna, men det får duga som ett exempel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;MKpOpW&amp;quot; tab=&amp;quot;js,result&amp;quot; height=&amp;quot;600&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;polygon&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Polygoner ritas med hjälp av metoden &amp;lt;code&amp;gt;polygon&amp;lt;/code&amp;gt;.&lt;br /&gt;
==== Hörnkoordinater ====&lt;br /&gt;
Den viktigaste parametern för denna metod är den första. Detta är en array som anger på vilka  koordinater som polygonens hörn ska placeras ut. Koordinaterna är &amp;quot;vanliga&amp;quot; longitud- och latitud-angivelser. Mellan varje angiven hörnpunkt kommer det att ritas en linje. Mellan den första och den sista hörnpunkten ritas en linje som sluter polygonen. Den slutna figuren som bildas av polygonen kommer till sist att fyllas med angiven färg.&lt;br /&gt;
&lt;br /&gt;
==== Utritningsparametrar ====&lt;br /&gt;
Precis som i fallet med &amp;lt;code&amp;gt;circle&amp;lt;/code&amp;gt;, kan vi skicka med ett objekt som innehåller diverse inställningar som styr hur utritningen ska gå till. Som tidigare finns &amp;lt;code&amp;gt;color&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;opacity&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;fillOpacity&amp;lt;/code&amp;gt; med och dessa fungerar såsom beskrevs under &amp;lt;code&amp;gt;circle&amp;lt;/code&amp;gt;-exemplet. Soltorgsgymnasiet ska förstås markeras ut med rejält gula färger!&lt;br /&gt;
&lt;br /&gt;
Det vi lagt till extra här är &amp;lt;code&amp;gt;weight&amp;lt;/code&amp;gt; som anger hur tjock den utritade linjen ska vara. Här har vi satt den något fetare än normalt, defaultvärdet är &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;. Vi har med andra ord angett att linjen ska vara ungefär dubbelt så fet som normala linjer.&lt;br /&gt;
&lt;br /&gt;
== Många fler möjligheter ==&lt;br /&gt;
Det finns långt många fler metoder i Leaflet än vi kan täcka här. Du kan läsa deras [http://leafletjs.com/reference.html API-referens] för att få mer information.&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
Vi ska gå vidare med Leaflet och titta på hur man kan ge användaren tillfälle att interagera med kartan på olika vis.&lt;br /&gt;
&lt;br /&gt;
[[Att skapa interaktivitet med Leaflet]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Att_komma_ig%C3%A5ng_med_Leaflet&amp;diff=5084</id>
		<title>Att komma igång med Leaflet</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Att_komma_ig%C3%A5ng_med_Leaflet&amp;diff=5084"/>
		<updated>2024-09-18T06:48:47Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Leaflet är öppen källkod och utvecklas med hjälp av ett community. Det fungerar bra tillsammans med alla vanligt förekommande webbläsare, såväl på skrivbordet som på mobila enheter. Det finns många olika plugins till biblioteket som kan användas för att lägga till ytterligare funktionalitet. På det hela taget är det enkelt att jobba med Leaflet.&lt;br /&gt;
&lt;br /&gt;
== Att lägga till Leaflet ==&lt;br /&gt;
För att lägga till Leaflet behöver vi inkludera två filer - dels en CSS-fil, dels en JavaScript-fil. CSS-filen lägger vi till i vår sidas &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;. Följande kommer att ta ner nuvarande version av Leaflet. Kolla alltid deras webbsajt för att se om det kommit en nyare version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;https://unpkg.com/leaflet@1.9.4/dist/leaflet.css&amp;quot;&lt;br /&gt;
     integrity=&amp;quot;sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=&amp;quot;&lt;br /&gt;
     crossorigin=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detta är grundinställningar för den CSS som Leaflet behöver. Dessa CSS-regler kommer antagligen inte att störa den CSS som du själv lagt till sidan. Men du kan ju vara uppmärksam på om det händer något oväntat i din sida när du lägger till denna rad.&lt;br /&gt;
&lt;br /&gt;
Därefter lägger vi till själva JavaScript-biblioteket. Man lägger oftast till detta någonstans i slutet av sidan, t.ex. strax före &amp;lt;code&amp;gt;&amp;amp;lt;/body&amp;gt;&amp;lt;/code&amp;gt;. Var man än placerar den, så måste JavaScript-delen laddas in efter CSS-delen. Så det är bäst att lägga den i slutet av HTML-koden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://unpkg.com/leaflet@1.9.4/dist/leaflet.js&amp;quot;&lt;br /&gt;
     integrity=&amp;quot;sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=&amp;quot;&lt;br /&gt;
     crossorigin=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Med dessa två rader på plats kan vi skapa ett exempel.&lt;br /&gt;
&lt;br /&gt;
== Leaflet-exempel ==&lt;br /&gt;
Låt säga att vi skulle vilja se var Soltorgsgymnasiet i Borlänge ligger. Då kunde vi göra som i följande exempel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;adJmEj&amp;quot; tab=&amp;quot;js,result&amp;quot; height=&amp;quot;600&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Som vanligt, kom ihåg att även titta på &amp;quot;Result&amp;quot;-fliken.)&lt;br /&gt;
&lt;br /&gt;
Låt oss gå igenom exempelet och se vad de olika delarna gör för något.&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
I HTML-koden började vi med att lägga till CDN-hämtningarna som förser oss med Leaflet. Förutom detta så har vi skapat en tom &amp;lt;code&amp;gt;[[div]]&amp;lt;/code&amp;gt; som fått ID:n &amp;lt;code&amp;gt;karta&amp;lt;/code&amp;gt;. Här kommer vi att visa upp vår karta.&lt;br /&gt;
&lt;br /&gt;
=== CSS ===&lt;br /&gt;
I CSS:en har vi inte gjort så mycket mer än att ge en storlek till den &amp;lt;code&amp;gt;div&amp;lt;/code&amp;gt; som ska innehålla kartan. Viktigast är höjden, bredden kommer att sättas till 100 % om vi inte anger något annat. Anger vi ingen höjd kommer vår karta inte att synas. Detta är på grund av att &amp;lt;code&amp;gt;div&amp;lt;/code&amp;gt;:en är helt tom och därmed får sin höjd satt till &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== JavaScript ===&lt;br /&gt;
I JavaScript-delen har vi gjort lite mer. Vi tar och går igenom detta i mer detalj.&lt;br /&gt;
&lt;br /&gt;
==== Initiering av Leaflet ====&lt;br /&gt;
På den första raden skapar vi en karta och ställer vi in grunderna för den. Leaflet registreas som &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt; när vi lägger till det. De flesta metoder som vi vill kalla på ligger alltså samlade i &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt;-objektet. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;map&amp;lt;/code&amp;gt; skapar en ny kartregion Som inparameter tar den ID:t för den &amp;lt;code&amp;gt;div&amp;lt;/code&amp;gt; där kartan ska visas. Därefter talar vi om vilka koordinater som vi är intresserade av genom att anropa metoden &amp;lt;code&amp;gt;setView&amp;lt;/code&amp;gt;. Som inparameterar tar denna en array med koordinaterna, först latitud och sen longitud. Vår karta kommer att centreras kring den angivna koordinaten. Den sista parametern anger vilken zoomfaktor som kartan ska visas upp med, desto högre tal desto längre inzoomade är vi.&lt;br /&gt;
&lt;br /&gt;
==== Inställningar för datakälla ====&lt;br /&gt;
Vi måste nu ange varifrån all kartdata ska hämtas. Vi kommer att använda oss av Open Street Map.&lt;br /&gt;
&lt;br /&gt;
==== Kart-tiles ====&lt;br /&gt;
Med &amp;lt;code&amp;gt;tileLayer&amp;lt;/code&amp;gt; anger vi dels att kartan vi ska hämta består av karttiles. Där tiles mer eller mindre betyder mosaikbitar. Det vill säga, det är småbitar som bygger upp en större helhet och kartan kommer att laddas in som ett flertal mindre grafikfiler. Dessa kombineras och visas bredvid varandra och på så vis byggs den kompletta kartvyn upp. När vi skrollar runt i kartan så laddas enbart de nya tiles som behövs för att täcka den inskrollade arean. Dessa läggs intill redan befintliga tiles och gör vår kartvy komplett igen. Om vi skrollar tillbaka kommer de tiles som redan är nedladdade att användas. Zoomar vi in eller ut, måste förstås nya karttiles laddas in.&lt;br /&gt;
&lt;br /&gt;
Hanteringen av karttiles gör att vi minimerar hur mycket data som måste hämtas när användaren skrollar runt i kartan. Denna teknik för karthämtning på webben uppfanns av Google när de skapade sin karttjänst Google Maps. Så gott som alla webbaserade karttjänster använder sig av liknande metoder.&lt;br /&gt;
&lt;br /&gt;
Om vi redan laddat in en kartbit så kommer den att lagras i webbläsarens cache, vilket gör att den kommer att återanvändas nästa gång den kartbiten är aktuell. Det går med andra ord mycket snabbare att visa de kartbitar som redan är hämtade.&lt;br /&gt;
&lt;br /&gt;
==== Att ange datakälla ====&lt;br /&gt;
Som första inparameter tar &amp;lt;code&amp;gt;tileLayers&amp;lt;/code&amp;gt; en länk till den server som kommer att tillhandahålla vår kartdata. Därefter följer ett objekt som innehåller de inställningar som ska gälla för källan. I vårt exempel anger vi varifrån data hämtas.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-warning&amp;quot;&amp;gt;&lt;br /&gt;
Kom ihåg att ett av kraven som ställdes för att få utnyttja Open Street Map i en applikation var att man angav vilken källa data hämtades ifrån. Det är alltså viktigt att ha med denna information, speciellt i applikationer som vi ska &amp;quot;visa&amp;quot; upp för världen.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Koppla data till vy ====&lt;br /&gt;
När vi skapat ett objekt som kan tillhandahålla oss med kartdata måste vi även länka detta till vår kartvy. Detta gör vi med det chainade metodanropet &amp;lt;code&amp;gt;addTo&amp;lt;/code&amp;gt;. Som inparameter tar denna metod det objekt som vi fick tillbaka när vi körde &amp;lt;code&amp;gt;map&amp;lt;/code&amp;gt;-metoden. Det vill säga det objekt som innehåller information om vår kartvy.&lt;br /&gt;
&lt;br /&gt;
== Vår första karta ==&lt;br /&gt;
Om du klickar på &amp;quot;Resultat&amp;quot; bör du nu se vår första karta! Förutom att kartan visas upp, så har man automatiskt fått med en del finesser. Man kan panorera genom att dra runt kartan. Man kan zooma, antingen med &amp;quot;+/-&amp;quot;-knapparna eller via musens skrollhjul. I det nedre hörnet finns information om vad som används för att skapa/visa kartan - dvs Open Street Map och Leaflet. Länken till Open Street Map är nödvändig för att uppfylla användningsvillkoren för Open Street Maps. Så kom alltid ihåg att ha något liknande med!&lt;br /&gt;
&lt;br /&gt;
== Kombination av våra geografiska exempel ==&lt;br /&gt;
Man skulle förstås kunna kombinera vårt nuvarande exempel med det som vi gjorde tidigare i &amp;quot;[[Att ta reda på var någon befinner sig]]&amp;quot;-aktiviteten. Ett sådant exempel skulle kunna tänkas se ut så här:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;pgeWKx&amp;quot; tab=&amp;quot;js,result&amp;quot; height=&amp;quot;1300&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Det finns väl inte så mycket att tillägga angående vad koden gör. I stort sett är allt det samma som i våra tidigare exempel, förutom att istället för att använda fasta koordinatvärden så visar vi istället upp en karta som centreras kring den punkt där webbläsaren anger att vi befinner oss. &lt;br /&gt;
&lt;br /&gt;
Här kan det bli mer uppenbart om positionen är ett närmevärde. Prova gärna att köra exemplet både på din dator och på en mobil enhet som har GPS. Det borde märkas en väsentlig skillnad i precision på positionsangivelsen.&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
I nästa aktivitet ska vi titta på hur man kan lägga ut diverse typer av extrainformation i kartor, vilket kan behövas om vi ska skapa appar som är baserade kring kartor och geografisk data.&lt;br /&gt;
&lt;br /&gt;
[[Att lägga till extra data med Leaflet]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=%C3%84nnu_en_SPA_med_Leaflet&amp;diff=5083</id>
		<title>Ännu en SPA med Leaflet</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=%C3%84nnu_en_SPA_med_Leaflet&amp;diff=5083"/>
		<updated>2024-08-12T08:59:59Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vi ska gå igenom hur man kan göra en variant på föregående SPA. Sveriges Radio har flera öppna API:er där man kan få tillgång till diverse data. Vi ska ta och titta närmare på deras API för trafikmeddelanden. Här kan man läsa ut information om de trafiksituationer som uppstår runt om i landet. Vi kan bland annat läsa ut är koordinater, titel och beskrivning. Sveriges Radios API:er kräver ingen [[API-nyckel]]. De supportar även [[CORS]] så vi kan hämta data direkt ifrån vår webbapplikation. Detta är alltså en utmärkt källa till exempeldata.&lt;br /&gt;
&lt;br /&gt;
För denna app ska vi ha ett något annorlunda upplägg. Kartan visar var det finns trafikmeddelanden och när användaren för musen över dessa så visar vi information om datapunkten i ett informationsfönster.&lt;br /&gt;
&lt;br /&gt;
== Vår applikation ==&lt;br /&gt;
Väldigt mycket av koden kommer att påminna om den som vi skrev för vår föregående [[SPA]], så vi kommer bara att gå igenom skillnaderna.&lt;br /&gt;
&lt;br /&gt;
== HTML ==&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;bErYzM&amp;quot; tab=&amp;quot;html&amp;quot; height=&amp;quot;500&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den största skillnaden är att vi lägger till en extra &amp;lt;code&amp;gt;div&amp;lt;/code&amp;gt; där vi ska visa information om vald trafiksituation. Vi delar upp ytan för trafikinformationen i två delar; en för kartan och en för textinformationen. Dessa ska vi sedan snygga till med lite CSS.&lt;br /&gt;
&lt;br /&gt;
== CSS ==&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;bErYzM&amp;quot; tab=&amp;quot;css&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vi sätter &amp;lt;code&amp;gt;info&amp;lt;/code&amp;gt;-&amp;lt;code&amp;gt;div&amp;lt;/code&amp;gt;:en till en flexbox, så att informationen som finns inuti den kommer att radas upp på samma rad. Vi väljer att de ska placeras ut likformigt med &amp;lt;code&amp;gt;jusitfy-content: space-around;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Vi sätter &amp;lt;code&amp;gt;#karta&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;#info&amp;lt;/code&amp;gt; till samma storlek, så det blir att se proportionellt ut. &lt;br /&gt;
&lt;br /&gt;
== JavaScript ==&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;bErYzM&amp;quot; tab=&amp;quot;js,result&amp;quot; height=&amp;quot;1200&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I JavaScriptet har vi gjort en hel del ändringar...&lt;br /&gt;
&lt;br /&gt;
=== Zoomnivå ===&lt;br /&gt;
Första zoomar ut kartan och centrerar den så vi ser det mesta av Sverige (i alla fall om det finns plats i vår webbläsare).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;hämtaTrafikmeddelande&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Vi döper om vår funktion avsedd för att hämta data till &amp;lt;code&amp;gt;hämtaTrafikmeddelande&amp;lt;/code&amp;gt;. Även Sveriges Radios API är ett [[REST]]-API, så vi kan kalla på det med en &amp;quot;vanlig&amp;quot; URL. Den enda inparameter vi bryr oss om att skicka med är &amp;lt;code&amp;gt;format&amp;lt;/code&amp;gt;, då vi vill ha data i JSON-format.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;AjaxKlar&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;code&amp;gt;AjaxKlar&amp;lt;/code&amp;gt; är i det närmaste helt omskriven. Den data vi får ifrån Sveriges Radio är inte i GeoJSON. Vi får därför göra en egen loop som går igenom datan och behandlar varje post. För omväxlingens skull använder vi en anonym funktion denna gång. &lt;br /&gt;
&lt;br /&gt;
Vi lägger först till en markör på den position som anges för trafikmeddelandet. Vi kopplar en popup till varje markör - när användaren klickar på markören kommer namnet på platsen att visas. Därefter binder vi några händelsehanterare till markören. Först en som kommer att triggas när användaren sätter muspekaren ovanför markören och sedan en som triggas när muspekaren avlägsnas från markören.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;MouseOver&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Till &amp;lt;code&amp;gt;MouseOver&amp;lt;/code&amp;gt; skickar vi även med nuvarande trafikmeddelande. När funktionen triggas kommer &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; att vara satt till respektive trafikmeddelande. Vi kan nu läsa ut informationen om trafikmeddelandet och sätta respektive informationsfält till den data som vi vill visa upp.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;MouseOut&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;code&amp;gt;MouseOut&amp;lt;/code&amp;gt; gör inte speciellt mycket mer än att den rensar informationsfälten.&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
Vi är klara med sektionen som handlar om applikationer som körs i webbläsaren. Nu ska vi gå vidare och lära oss om hur man skapar serverapplikationer....&lt;br /&gt;
&lt;br /&gt;
[[Node - En introduktion]]&lt;br /&gt;
&lt;br /&gt;
[[Category: jQuery]]&lt;br /&gt;
[[Category: JavaScript]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=%C3%84nnu_en_SPA_med_Leaflet&amp;diff=5082</id>
		<title>Ännu en SPA med Leaflet</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=%C3%84nnu_en_SPA_med_Leaflet&amp;diff=5082"/>
		<updated>2024-08-12T08:59:23Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vi ska gå igenom hur man kan göra en variant på föregående SPA. Sveriges Radio har flera öppna API:er där man kan få tillgång till diverse data. Vi ska ta och titta närmare på deras API för trafikmeddelanden. Här kan man läsa ut information om de trafiksituationer som uppstår runt om i landet. Vi kan bland annat läsa ut är koordinater, titel och beskrivning. Sveriges Radios API:er kräver ingen [[API-nyckel]]. De supportar även [[CORS]] så vi kan hämta data direkt ifrån vår webbapplikation. Detta är alltså en utmärkt källa till exempeldata.&lt;br /&gt;
&lt;br /&gt;
För denna app ska vi ha ett något annorlunda upplägg. Kartan visar var det finns trafikmeddelanden och när användaren för musen över dessa så visar vi information om datapunkten i ett informationsfönster.&lt;br /&gt;
&lt;br /&gt;
== Vår applikation ==&lt;br /&gt;
Väldigt mycket kommer att påminna om vår föregående [[SPA]], så vi kommer bara att gå igenom skillnaderna.&lt;br /&gt;
&lt;br /&gt;
== HTML ==&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;bErYzM&amp;quot; tab=&amp;quot;html&amp;quot; height=&amp;quot;500&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den största skillnaden är att vi lägger till en extra &amp;lt;code&amp;gt;div&amp;lt;/code&amp;gt; där vi ska visa information om vald trafiksituation. Vi delar upp ytan för trafikinformationen i två delar; en för kartan och en för textinformationen. Dessa ska vi sedan snygga till med lite CSS.&lt;br /&gt;
&lt;br /&gt;
== CSS ==&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;bErYzM&amp;quot; tab=&amp;quot;css&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vi sätter &amp;lt;code&amp;gt;info&amp;lt;/code&amp;gt;-&amp;lt;code&amp;gt;div&amp;lt;/code&amp;gt;:en till en flexbox, så att informationen som finns inuti den kommer att radas upp på samma rad. Vi väljer att de ska placeras ut likformigt med &amp;lt;code&amp;gt;jusitfy-content: space-around;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Vi sätter &amp;lt;code&amp;gt;#karta&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;#info&amp;lt;/code&amp;gt; till samma storlek, så det blir att se proportionellt ut. &lt;br /&gt;
&lt;br /&gt;
== JavaScript ==&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;bErYzM&amp;quot; tab=&amp;quot;js,result&amp;quot; height=&amp;quot;1200&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I JavaScriptet har vi gjort en hel del ändringar...&lt;br /&gt;
&lt;br /&gt;
=== Zoomnivå ===&lt;br /&gt;
Första zoomar ut kartan och centrerar den så vi ser det mesta av Sverige (i alla fall om det finns plats i vår webbläsare).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;hämtaTrafikmeddelande&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Vi döper om vår funktion avsedd för att hämta data till &amp;lt;code&amp;gt;hämtaTrafikmeddelande&amp;lt;/code&amp;gt;. Även Sveriges Radios API är ett [[REST]]-API, så vi kan kalla på det med en &amp;quot;vanlig&amp;quot; URL. Den enda inparameter vi bryr oss om att skicka med är &amp;lt;code&amp;gt;format&amp;lt;/code&amp;gt;, då vi vill ha data i JSON-format.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;AjaxKlar&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;code&amp;gt;AjaxKlar&amp;lt;/code&amp;gt; är i det närmaste helt omskriven. Den data vi får ifrån Sveriges Radio är inte i GeoJSON. Vi får därför göra en egen loop som går igenom datan och behandlar varje post. För omväxlingens skull använder vi en anonym funktion denna gång. &lt;br /&gt;
&lt;br /&gt;
Vi lägger först till en markör på den position som anges för trafikmeddelandet. Vi kopplar en popup till varje markör - när användaren klickar på markören kommer namnet på platsen att visas. Därefter binder vi några händelsehanterare till markören. Först en som kommer att triggas när användaren sätter muspekaren ovanför markören och sedan en som triggas när muspekaren avlägsnas från markören.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;MouseOver&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Till &amp;lt;code&amp;gt;MouseOver&amp;lt;/code&amp;gt; skickar vi även med nuvarande trafikmeddelande. När funktionen triggas kommer &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; att vara satt till respektive trafikmeddelande. Vi kan nu läsa ut informationen om trafikmeddelandet och sätta respektive informationsfält till den data som vi vill visa upp.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;MouseOut&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;code&amp;gt;MouseOut&amp;lt;/code&amp;gt; gör inte speciellt mycket mer än att den rensar informationsfälten.&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
Vi är klara med sektionen som handlar om applikationer som körs i webbläsaren. Nu ska vi gå vidare och lära oss om hur man skapar serverapplikationer....&lt;br /&gt;
&lt;br /&gt;
[[Node - En introduktion]]&lt;br /&gt;
&lt;br /&gt;
[[Category: jQuery]]&lt;br /&gt;
[[Category: JavaScript]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=HTML5-taggar&amp;diff=5081</id>
		<title>HTML5-taggar</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=HTML5-taggar&amp;diff=5081"/>
		<updated>2024-08-12T08:57:18Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Här är en lista över alla [[tagg]]ar/[[HTML-element]] som är tillgängliga i [[HTML5]]. Om du är van med &amp;quot;uråldrig&amp;quot; [[HTML]], dvs före HTML5, finns det ett antal [[tagg]]ar som nu har annorlunda definition än tidigare.&lt;br /&gt;
&lt;br /&gt;
När du ska använda en [[tagg]] måste den sitta inom &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;&amp;quot; och &amp;quot;&amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;quot;. Så &amp;lt;code&amp;gt;[[a]]&amp;lt;/code&amp;gt;-[[tagg]]en skrivs &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;[[a]]&amp;gt;&amp;lt;/code&amp;gt;&amp;quot;. För att avsluta behöver du oftast en [[sluttagg]]. Denna skrivs enligt samma mall som starttaggen, fast med ett &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; före taggnamnet. Så sluttaggen för vår exempeltagg skulle bli &amp;lt;code&amp;gt;&amp;amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;. Se [[TLDR_Taggar|taggar-diagrammet]] för mer ingående information.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-warning&amp;quot;&amp;gt;&lt;br /&gt;
Observera att [[HTML]] är en levande [[standard]], som utvecklas kontinuerligt. Det gör att det kan komma till [[tagg]]ar, det kan försvinna [[tagg]]ar och deras betydelse kan förändras med tiden. Följande taggar är dock tillgängliga i dagens HTML5.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[a]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att definiera länkar.&lt;br /&gt;
=== &amp;lt;code&amp;gt;[[abbr]]&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Definierar en förkortning och eventuellt en förklaring.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[address]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Kontaktinformation relaterad till den sektion som innehåller taggen.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[area]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används i &amp;lt;code&amp;gt;[[map]]&amp;lt;/code&amp;gt;-element för att definiera vilka regioner som är klickbara. Kan även koppla länkar till regionerna.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[article]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Markerar innehåll på sidan som är ett eget, självständig stycke.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[aside]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Markerar innehåll som är marginellt kopplat till huvudinnehållet.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[audio]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att inkludera ljudinnehåll i en webbsida.&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[b]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Text som på något vis skiljer sig ifrån övrig text, t.ex. produktnamn eller något som ska stå ut ifrån annan text.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[base]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Definerar vilken grund-[[URL]] som ska användas för relativa länkar.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[bdi]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att indikera text som kan skrivas i omvänd ordning, t.ex. Arabiska.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[bdo]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att indikera text som ska skrivas i annan ordning, t.ex. för att växla mellan latinska språk och Arabiska och vice versa.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[blockquote]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Ett längre, blockcitat.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[body]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
I denna finns själva innehållet på sidan.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[br]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Infogar en radbrytning.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[button]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
En knapp i ett formulär.&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[canvas]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Definierar upp en region som skriptspråk kan använda för att rita figurer.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[caption]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att ge en figurtext till en tabell.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[cite]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att lägga till källhänvisning till ett citat.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[code]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Ett block med programkod.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[col]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
En tabellkolumn.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[colgroup]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att grupper ett antal kolumner i en tabell.&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[data]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Kopplar data till innehållet, som sedan kan användas av skript eller liknande.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[datalist]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Definierar en lista med alternativ för en [[input|&amp;lt;input&amp;gt;]]-kontroll.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[dd]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
En förklaring till en term.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[del]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Markerar att text tagits bort ifrån ett dokument, t.ex. för att indikera att det redigerats. Ofta visas detta genom överstruken text.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[details]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Visar antingen mer information om någonting eller anger var man kan hitta mer information.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[dfn]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Definierar en term.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[div]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att gruppera samman innehåll. Har ingen semantisk betydelse.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[dl]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
En lista med termer och dess definition.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[dt]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
En term som ska definieras.&lt;br /&gt;
&lt;br /&gt;
== E ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[em]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Innehållet innanför taggen ska betonas med emfas.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[embed]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att infoga något slags extern komponent i webbsidan, t.ex. en plug-in.&lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[fieldset]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Grupperar samman ett antal formulärkontroller.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[figcaption]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
En förklarande text till en illustration/figur, ofta en bildtext.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[figure]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
En egen sektion som på något vis illustrerar något i huvudsektionen, ofta en bild eller illustration.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[footer]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Material som ska vara med i sidfoten.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[form]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Påbörjar ett formulär.&lt;br /&gt;
&lt;br /&gt;
== H ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[hx|h1]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Översta rubriknivån. Denna ska enbart användas en gång per sektionselement.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[hx|h2]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Andra rubriknivån.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[hx|h3]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Tredje rubriknivån.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[hx|h4]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Fjärde rubriknivån.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[hx|h5]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Femte rubriknivån.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[hx|h6]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Sjätte rubriknivån.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[head]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Metadata om sidan, t.ex. sidonamn.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[header]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Material som ska vara med i sidhuvudet.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[hr]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Indikerar en brytning mellan två paragrafer.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[html-tagg|html]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Roten till HTML-dokumentet. Alla HTML-taggar måste ligga inuti denna.&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[i]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Text som på något vis skiljer sig ifrån övrig text, t.ex. tankar eller utländska ord.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[iframe]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att infoga en webbsida i en annan webbsida.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[img]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att lägga till en bild i en webbsida.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[input]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för olika typer av användarinmatning i formulär.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[ins]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Markerar att text lagts till i ett dokument, t.ex. för att indikera att det redigerats.&lt;br /&gt;
&lt;br /&gt;
== K ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[kbd]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Exempel på indata som en användare kan skriva in.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[keygen]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att skicka med en publik nyckel för ett certifikat.&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[label]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger en rubrik för formulärkontroller.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[legend]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Anger en rubrik för formulärkontroller.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[li]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
En post i en lista.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[link]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Definerar förhållanden mellan detta dokument och externa resurser. Används bl.a. för att länka till CSS-filer.&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[main]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Markerar vad som är sidans huvudinnehåll.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[map]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Definierar klickbara regioner i en grafisk bild.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[mark]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Markerar text på något vis, t.ex. för att markera upp sökta ord i en text.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[math]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Indikerar en region av mathml.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[menu]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Visar en lista över kommandon som kan genomföras.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[menuitem]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Ett kommando i en [[menu|&amp;lt;menu&amp;gt;]]-lista.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[meta]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Olika typer av metadata som inte det finns specifika taggar för.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[meter]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
En mätare som visar och kan sätta ett valt värde mellan ett minimun och maximum.&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[nav]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Markerar innehåll som används för navigation.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[noscript]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Innehållet visas enbart om webbläsaren inte kan köra JavaScript.&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[object]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Indikerar en extern resurs som hanteras av en plug-in.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[ol]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
En ordnad lista.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[optgroup]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Grupperar [[option]]-element i ett [[select]]-element.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[option]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Valbara element i ett [[select]]-element.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[output]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att markera var i formuläret resultatet ifrån något slags beräkning/körning ska hamna.&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[p]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Ett textstycke.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[param]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Definierar parametrar till [[object]]-taggen.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[pre]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Förformaterad text, som inte ska formateras om av webbläsaren.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[progress]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Indikerar på något vis hur mycket som är genomfört.&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[q]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Ett kortare citat i löpande text.&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[rp]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att definiera hur ett tecken ska visas om det inte finns i teckensnittet, t.ex. för asiatiska språk. Används inuti [[rt]]-taggar.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[rt]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att definiera det korrekta uttalet på asiatiska tecken, t.ex. kanji.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[ruby]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att definiera det korrekta uttalet på asiatiska tecken, t.ex. kanji. Används inuti [[rt]]-taggar.&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[s]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Överstruken text, indikerar att innehållet inte längre är relevant.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[samp]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Exempel på utdata ifrån ett datorprogram.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[script-tagg|script]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att lägga in eller ladda in ett [[skript]].&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[section]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Grupperar samman en del av dokumentet.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[select]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Påbörjar en meny i ett formulär.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[small]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Finstilt innehåll, t.ex. copyright-information.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[source]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används inuti [[video]]- och [[audio]]-taggar för att ange vilket material som ska spelas upp.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[span]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Markerar ett löptext som på något vis hör samman. Har ingen semantisk betydelse.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[strong]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Innehållet i taggen har stark betydelse.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[style]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att inkludera [[CSS]]-kod i HTML-dokument.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[sub]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Nedsänkt text.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[summary]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Visar en kort beskrivning om datan i en [[details]]-tagg.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[sup]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Upphöjd text.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[svg]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att infoga vektorgrafik av typen svg.&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[table]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att skapa en tabell.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[tbody]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att definiera huvudinnehållet i en tabell.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[td]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Markerar en tabellcell.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[textarea]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Ett redigerbart textfält.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[tfoot]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att definiera tabellfoten i en tabell.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[th]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
En tabellcell som är en rubrik.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[thead]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att definiera tabellhuvudet i en tabell.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[time]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
En tidsangivelse, tid eller datum.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[title]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Titeln på webbsidan.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[tr]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Markerar en tabellrad.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[track]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används av [[video]] och [[audio]] för att lägga till olika typer av extra data, t.ex. för textning av en film.&lt;br /&gt;
&lt;br /&gt;
== U ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[u]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Text som på något vis kommenterar annan text, t.ex. för att indikera att något är felstavat.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[ul]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
En oordnad lista.&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[var]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Ett variabelnamn, t.ex. för matematik eller programmering.&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[video]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Används för att inkludera videoinnehåll i en webbsida.&lt;br /&gt;
&lt;br /&gt;
== W ==&lt;br /&gt;
=== &amp;lt;code&amp;gt; [[wbr]] &amp;lt;/code&amp;gt; ===&lt;br /&gt;
Markerar en plats i en text där det är ett bra tillfälle att göra en radbrytning om en sådan behövs.&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Huvudsida&amp;diff=5080</id>
		<title>Huvudsida</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Huvudsida&amp;diff=5080"/>
		<updated>2024-08-09T16:31:04Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;well well-cocktail&amp;quot;&amp;gt;&lt;br /&gt;
== Välkommen till Webbling ==&lt;br /&gt;
&lt;br /&gt;
Webbling är en öppen lärresurs som är avsedd för dig som vill lära dig mer om   [[Introduktion till webbteknik|webbteknik]], [[webbutveckling]] och [[Lär dig mer om JavaScript | programmering]]. Här kan du lära dig alltifrån hur man skapar enkla webbsidor till avancerade webbapplikationer och webbtjänster. Materialet är främst tänk för dig som går på gymnasiet och läser någon av kurserna inom webbteknik, programmering eller gränssnitt. Förhoppningen är dock att denna resurs kan vara till hjälp för alla som vill veta mer om hur man går tillväga med [[webbutveckling]] och [[Lär dig mer om JavaScript | programmering]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;card bg-light p-3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-title&amp;gt;&lt;br /&gt;
==Innehåll ==&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-text mb-0&amp;quot;&amp;gt;&lt;br /&gt;
Här finner du [[referensmaterial]], t.ex. [[HTML5-taggar]] och [[CSS-egenskapslista|CSS-egenskaper]] samt mycket [[studiematerial]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
== Nyheter ==&lt;br /&gt;
Alla exempel som använde jQuery är nu omskrivna till plainJS.&lt;br /&gt;
&lt;br /&gt;
jQuery-sektionen är märkt som föråldrad och kommer inte att uppdateras mer.&lt;br /&gt;
&lt;br /&gt;
SPA-exemplen är uppdaterade så de fungerar som de ska.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-mango&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sponsorer ==&lt;br /&gt;
[[Webbutveckling]]sdelen och [[Referensmaterial | referensmaterialet]] angående webbtekniker sponsrades av [http://www.internetfonden.se/ Internetfonden].&lt;br /&gt;
&lt;br /&gt;
Delarna om [[JavaScript]]-programmering, jQuery, Node.js och [[öppen data]] sponsrades av [http://vinnova.se/ Vinnova].&lt;br /&gt;
&lt;br /&gt;
Webbling har delvis tagits fram för att användas som studiematerial vid [http://soltorgsgymnasiet.se Soltorgsgymnasiet] i Borlänge.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-concrete-light&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rättigheter ==&lt;br /&gt;
Allt material på Webbling kan delas i enlighet med följande; &lt;br /&gt;
&lt;br /&gt;
[http://creativecommons.org/licenses/by-sa/4.0/ https://i.creativecommons.org/l/by-sa/4.0/88x31.png]&amp;lt;br&amp;gt;&lt;br /&gt;
Webbling av [mailto:pgj@gnulix.org Patrik Grip-Jansson] och [http://soltorgsgymnasiet.se Soltorgsgymnasiet] är licenserad under en [http://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Erkännande-DelaLika 4.0 Internationell licens]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Huvudsida&amp;diff=5079</id>
		<title>Huvudsida</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Huvudsida&amp;diff=5079"/>
		<updated>2024-08-09T16:24:47Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;well well-cocktail&amp;quot;&amp;gt;&lt;br /&gt;
== Välkommen till Webbling ==&lt;br /&gt;
&lt;br /&gt;
Webbling är en öppen lärresurs som är avsedd för dig som vill lära dig mer om   [[Introduktion till webbteknik|webbteknik]], [[webbutveckling]] och [[Lär dig mer om JavaScript | programmering]]. Här kan du lära dig alltifrån hur man skapar enkla webbsidor till avancerade webbapplikationer och webbtjänster. Materialet är främst tänk för dig som går på gymnasiet och läser någon av kurserna inom webbteknik, programmering eller gränssnitt. Förhoppningen är dock att denna resurs kan vara till hjälp för alla som vill veta mer om hur man går tillväga med [[webbutveckling]] och [[Lär dig mer om JavaScript | programmering]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;card well-hearts&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Innehåll ==&lt;br /&gt;
Här finner du [[referensmaterial]], t.ex. [[HTML5-taggar]] och [[CSS-egenskapslista|CSS-egenskaper]] samt mycket [[studiematerial]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
== Nyheter ==&lt;br /&gt;
Alla exempel som använde jQuery är nu omskrivna till plainJS.&lt;br /&gt;
&lt;br /&gt;
jQuery-sektionen är märkt som föråldrad och kommer inte att uppdateras mer.&lt;br /&gt;
&lt;br /&gt;
SPA-exemplen är uppdaterade så de fungerar som de ska.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-mango&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sponsorer ==&lt;br /&gt;
[[Webbutveckling]]sdelen och [[Referensmaterial | referensmaterialet]] angående webbtekniker sponsrades av [http://www.internetfonden.se/ Internetfonden].&lt;br /&gt;
&lt;br /&gt;
Delarna om [[JavaScript]]-programmering, jQuery, Node.js och [[öppen data]] sponsrades av [http://vinnova.se/ Vinnova].&lt;br /&gt;
&lt;br /&gt;
Webbling har delvis tagits fram för att användas som studiematerial vid [http://soltorgsgymnasiet.se Soltorgsgymnasiet] i Borlänge.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-concrete-light&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rättigheter ==&lt;br /&gt;
Allt material på Webbling kan delas i enlighet med följande; &lt;br /&gt;
&lt;br /&gt;
[http://creativecommons.org/licenses/by-sa/4.0/ https://i.creativecommons.org/l/by-sa/4.0/88x31.png]&amp;lt;br&amp;gt;&lt;br /&gt;
Webbling av [mailto:pgj@gnulix.org Patrik Grip-Jansson] och [http://soltorgsgymnasiet.se Soltorgsgymnasiet] är licenserad under en [http://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Erkännande-DelaLika 4.0 Internationell licens]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=En_webbsidas_anatomi&amp;diff=5078</id>
		<title>En webbsidas anatomi</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=En_webbsidas_anatomi&amp;diff=5078"/>
		<updated>2024-08-06T14:34:42Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nu har vi gått igenom grundkoncepten bakom [[HTML]]. Men innan vi kan skapa vår första [[HTML]]-dokument, måste vi lära oss ett antal grundtaggar som ingår i alla [[HTML]]-dokument.&lt;br /&gt;
&lt;br /&gt;
== Ett första webbdokument ==&lt;br /&gt;
Exemplet nedan är grunden för en minimal webbsida. Vi kommer att gå igenom vad varje kodrad i exemplet betyder. Var lugn, det är inte så krångligt som det kan se ut vid första anblicken...&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;OVQPRz&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;html,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kan en sida bli tråkigare? Förhoppningsvis inte!&lt;br /&gt;
&lt;br /&gt;
Nu tar vi och går igenom koden och undersöker vad de olika taggarna gör.&lt;br /&gt;
&lt;br /&gt;
== [[doctype|&amp;amp;lt;!doctype html&amp;gt;]] ==&lt;br /&gt;
Det här är den första grej som man måste ange i början av varje webbdokument. Det är den så kallade ”&amp;lt;code&amp;gt;[[doctype]]&amp;lt;/code&amp;gt;”, vilket är en förkortning för engelskans ”Document Type” eller dokumenttyp. Denna tjänar som en indikation på vilken typ av dokument det handlar om, samt vilken [[HTML]]-[[standard]] som används i dokumentet. Detta gör att webbläsaren kan hantera alla [[tagg]]ar i ditt webbdokument på ett korrekt vis. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[[doctype]]&amp;lt;/code&amp;gt; ska anges allra först i ditt dokument, innan du använder dig av någon [[tagg]]. Den har lite speciellt utseende som skiljer sig från [[HTML]]-[[tagg]]arna och det finns heller ingen [[sluttagg]] för den. För [[HTML5]] är det väldigt enkelt att ange &amp;lt;code&amp;gt;[[doctype]]&amp;lt;/code&amp;gt;, man skriver nämligen så här:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Svårare än så är det inte. (Äldre versioner av HTML hade långa, krångliga varianter av &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt;, men man beslöt sig att förenkla detta rejält i HTML5.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Anledningen att &amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt; ser lite annorlunda ut är att det faktiskt inte är en egentlig HTML-tagg. Den är ett arv ifrån språket SGML. Vilket kan ses som en förfader till HTML. Dock är inte HTML kompatibelt med SGML längre. Den enda kvarlevan är &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt;. &lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-danger&amp;quot;&amp;gt;&lt;br /&gt;
Du bör inte utelämna &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt;, för då kommer inte alla webbläsare att fatta att ditt dokument är ett [[HTML5]]-dokument. Istället finns chansen att webbläsaren kommer att försöka tolka det enligt någon gammal standard eller gå in i så kallad ”[[quirks mode]]” – vilket antagligen kommer att göra att din sida visas på något konstigt sätt och den kanske inte alls får den funktionalitet som du förväntade dig.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;&amp;amp;lt;[[html-tagg|html]]&amp;gt;&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Den första, riktiga [[tagg]]en vi måste ha med är &amp;lt;code&amp;gt;&amp;amp;lt;[[html-tagg|html]]&amp;gt;&amp;lt;/code&amp;gt;. Detta är en inledande [[tagg]] som talar om för webbläsaren var [[HTML]]-innehållet börjar. [[Tagg]]en ska sitta före alla andra [[tagg]]ar, förutom &amp;lt;code&amp;gt;[[doctype]]&amp;lt;/code&amp;gt;. Sluttaggen &amp;lt;code&amp;gt;&amp;amp;lt;/[[html-tagg|html]]&amp;gt;&amp;lt;/code&amp;gt; ska ska vara den sista [[sluttagg]]en i dokumentet, eftersom den &amp;quot;talar om&amp;quot; att det är slut på [[HTML]]-koden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-danger&amp;quot;&amp;gt;&lt;br /&gt;
Det får endast förekomma ett &amp;lt;code&amp;gt;[[HTML]]&amp;lt;/code&amp;gt;-element i varje webbdokument. Det enda möjliga undantaget där man har flera &amp;lt;code&amp;gt;[[HTML]]&amp;lt;/code&amp;gt;-element i en webbsida är när man inkluderar en annan sida via &amp;lt;code&amp;gt;[[iframe]]&amp;lt;/code&amp;gt;. Detta är dock ett specialfall där webbläsaren ser den inkluderade sidan som ett helt separat HTML-dokument (vilket det också är).&lt;br /&gt;
&lt;br /&gt;
Det finns några fler taggar som bara får förekomma en gång i varje webbdokument. De flesta taggar får dock användas flera gånger i samma sida.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
=== &amp;lt;code&amp;gt;&amp;amp;lt;[[HTML]]&amp;gt;&amp;lt;/code&amp;gt; är roten till hela sidan ===&lt;br /&gt;
När webbläsaren ska tolka ditt webbsida, kommer den att bygga upp en datatyp som kallas för ett träd. Detta träd representerar ditt webbdokuments struktur. De olika [[element]]en kommer att bli grenar på trädet. Roten på trädet är &amp;lt;code&amp;gt;[[HTML-tagg|HTML]]&amp;lt;/code&amp;gt;-elementet, utifrån detta sprids underliggande [[element]] som grenar. Därför kallas ibland &amp;lt;code&amp;gt;[[html]]&amp;lt;/code&amp;gt;-elementet även för rot-elementet.&lt;br /&gt;
&lt;br /&gt;
Vi återkommer till träd-konceptet när vi tittar närmare på [[DOM]] – eller ”[[Document Object Model]]”.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;&amp;amp;lt;[[head]]&amp;gt;&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Inom [[tagg]]en &amp;lt;code&amp;gt;&amp;amp;lt;[[head]]&amp;gt;&amp;lt;/code&amp;gt; placerar man så kallad [[metadata]] om dokumentet. Det är den data som beskriver dokumentet och dess innehåll. Det här är information som är till för webbläsaren/sökmotorer och liknande, snarare än att det är till för slutanvändaren. Sånt som man kan hitta här är t.ex.; vilken [[teckenkodning]] som används på sidan, länkar till andra dokument som krävs för att visa sidan korrekt (såsom [[CSS]]-filer), namnet på den som skapat sidan, sökord, osv. &lt;br /&gt;
&lt;br /&gt;
Det finns några [[tagg]]ar som enbart får förekomma inom &amp;lt;code&amp;gt;[[head]]&amp;lt;/code&amp;gt;-elementet. Så gott som alla undertaggar i &amp;lt;code&amp;gt;[[head]]&amp;lt;/code&amp;gt;-element är icke-visuella, dvs de innehåller ingenting som kommer att visas för slutanvändaren när sidan skapas.&lt;br /&gt;
&lt;br /&gt;
Så här i början behöver vi inte bry oss i de flesta av de möjliga undertaggarna som kan förekomma i &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-danger&amp;quot;&amp;gt;&lt;br /&gt;
Det får bara finnas ett [[head]]-element i varje dokument.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;&amp;amp;lt;[[title]]&amp;gt;&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&amp;lt;code&amp;gt;[[head]]&amp;lt;/code&amp;gt;-elementet har en undertagg som är visuell, dvs den kommer att visas för slutanvändaren. Det är taggen ”&amp;lt;code&amp;gt;&amp;amp;lt;[[title]]&amp;gt;&amp;lt;/code&amp;gt;”. Vilket alltså är sidans namn/titel. Titeln på sidan kommer att visas antingen som namnet på ett webbläsarfönster eller som namnet på en flik i webbläsaren. En bra titel gör det lättare för användaren att navigera bland flikarna i dennes webbläsare.&lt;br /&gt;
&lt;br /&gt;
Titeln visas inte bara i webbläsaren, den är även grunden för det namn väljas när användaren skapar ett bokmärke till sidan. Återigen är det en god vana att ange en bra titel som ger ett vettigt grundnamn för bokmärket. På så vis får användaren ett bokmärke som är lätt att identifiera, utan att behöva redigera bokmärkesnamnet.&lt;br /&gt;
&lt;br /&gt;
Det är alltså viktigt att välja sidnamn på ett bra sätt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
=== Att välja sidtitel ===&lt;br /&gt;
När man ska välja ett sidnamn bör man försöka få med de absolut viktigaste orden redan i början av namnet. Det finns flera anledningar till detta, bland annat:&lt;br /&gt;
&lt;br /&gt;
* När sidnamnet visas på en flik så kommer det ofta att klippas av mitt i. Desto fler flikar man har, desto mindre blir flikytan där namnet ska visas. Vill man att det ska vara lätt hitta rätt flik, gäller det alltså att ha ett kort och kärnfullt namn.&lt;br /&gt;
&lt;br /&gt;
* När användaren skapar ett bokmärke, utgår webbläsaren oftast ifrån sidans titel som namn för bokmärket. Om titeln är för lång, kan det hända att bokmärkesnamnet kapas av mitt i. Står det då inte någonting med mycket informationsinnehåll, är chansen liten att användaren kommer att komma ihåg vad sidan handlade om.&lt;br /&gt;
&lt;br /&gt;
Ett vanligt fel är att döpa sin sida till något i stil med, ”Välkommen till min fin, fina sida”. Eftersom det är så vanligt med frasen ”Välkommen”, är chansen stor att användaren får en drös av flikar där det bara syns ”Välkommen” eller, ännu värre, en massa bokmärken där det bara står ”Välkommen”.&lt;br /&gt;
&lt;br /&gt;
I många fall kan det även vara dumt att skriva saker som ens firmanamn som första delen i titeln. Återigen kan det bli massa flikar/bokmärken där bara ”Murres webbshop” eller liknande syns. Försök därför att inleda titeln med ett eller två ord som verkligen beskriver sidans innehåll. Det är iofs inget fel att ha sitt firmanamn som sidtitel, men se i så fall till att det är den ”första” sidan på din sajt som har den titeln och att du har specialiserade namn på undersidorna.&lt;br /&gt;
&lt;br /&gt;
Ovanstående problem var tidigare mycket vanligt förekommande på tidningarnas webbsidor. Men det har alltmer förändrats. Nu för tiden är t.ex. Aftonbladet förstasida benämnd ”Aftonbladet: Sveriges nyhetskälla och mötesplats”, medan de olika undersidornas titlar är uppbyggda efter mallen ”Nyhetsnamn | Kategori | Aftonbladet”. Det vill säga, man bygger upp titeln genom att sätta det mest specifika först och därefter blir titeln allt mer generell. Detta är ett mycket bra sätt att namnge sina sidor på.&lt;br /&gt;
&lt;br /&gt;
Titeln kan även vara viktig för så kallad [[SEO]] – eller [[Search Engine Optimization]]. Detta innebär att man försöker optimera sidan så att sidan hamnar så tidigt som möjligt bland sökresultaten på söksidor, såsom Google. Att hamna bland de första sökresultaten innebär att det är mycket större chans att folk kommer att besöka sidan. De flesta vill ju ha så många besökare som möjligt på sin sida – inte minst om man har finansiell vinning av besökare, kanske genom att visa reklam på sidan eller för att man försöker sälja en produkt av något slag.&lt;br /&gt;
&lt;br /&gt;
Så, redan här, där vi har den första [[tagg]]en där du kan sätta något eget innehåll, ser man att man måste tänka sig för innan man skapar sin webbplats. Det är inte bara att sätta igång och börja tok-koda, utan man måste planera och tänka sig för redan i förväg. Mycket förarbete och planering, innan själva kodandet, är en bra metodik som man tjänar på i längden!&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;&amp;amp;lt;[[meta]]&amp;gt;&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&amp;lt;code&amp;gt;[[Meta]]&amp;lt;/code&amp;gt;-element används inuti &amp;lt;code&amp;gt;[[head]]&amp;lt;/code&amp;gt;-elementet. Dessa är till för att beskriva dokumentets innehåll. Det finns en mängd olika saker som kan anges i &amp;lt;code&amp;gt;[[meta]]&amp;lt;/code&amp;gt;-elementen, vi ska dock enbart titta på ett just nu. &lt;br /&gt;
&lt;br /&gt;
Man bör alltid ange vilken [[teckenkodning]] som används i ett dokument. Om man inte gör det kan webbläsaren få problem med att tolka innehållet i dokumentet på ett korrekt vis. [[Teckenkodning]] är ett komplext område och det förtjänar sin egen sektion. För tillfället väljer vi att ange att vårt dokument är kodat med [[UTF-8]]. Detta är den idag vanligaste [[teckenkodning]]sstandarden och det används i de flesta webbverktygen (skulle t.ex. dina svenska ”åäö” bli att se konstiga ut, beror det säkerligen på att någonting i utvecklingskedjan använder sig av ”fel” [[teckenkodning]]).&lt;br /&gt;
&lt;br /&gt;
För att ange [[UTF-8]] i vårt webbdokument, skriver vi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;meta charset=”utf-8”&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vi anger då att det är ett &amp;lt;code&amp;gt;[[meta]]&amp;lt;/code&amp;gt;-element och vi anger att vi vill sätt [[attribut]]et &amp;lt;code&amp;gt;charset&amp;lt;/code&amp;gt;. Det senare är en förkortning av engelskans ”character set”, eller teckenuppsättning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-warning&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[[Meta]]&amp;lt;/code&amp;gt;-elementen brukar man &#039;&#039;inte&#039;&#039; stänga med en avslutande sluttagg. En del använder sig av [[självstängande-tagg]]ar i detta fall. Men det är varken nödvändigt eller rekommenderat för HTML5.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;&amp;amp;lt;[[body]]&amp;gt;&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Nu har vi lämnat &amp;lt;code&amp;gt;[[head]]&amp;lt;/code&amp;gt;-elementet och det är dag för nästa viktiga [[tagg]], vilken är &amp;lt;code&amp;gt;&amp;amp;lt;[[body]]&amp;gt;&amp;lt;/code&amp;gt;. Allt i detta [[element]] är själva sid-kroppen. Här samlas allt det innehåll som ska visas på sidan. Så gott som alla [[element]] som definieras innanför &amp;lt;code&amp;gt;&amp;amp;lt;[[body]]&amp;gt;&amp;lt;/code&amp;gt; styr på något vis dokumentets struktur och följaktligen även hur det ska återges. Man skulle kunna säga att &amp;lt;code&amp;gt;[[body]]&amp;lt;/code&amp;gt;-elementets innehåll är själva sidan, i alla fall den visuella delen. Så gott som alla [[HTML]]-[[tagg]]ar går att använda inuti &amp;lt;code&amp;gt;[[body]]&amp;lt;/code&amp;gt;, förutom ett litet fåtal som enbart ska användas i &amp;lt;code&amp;gt;[[head]]&amp;lt;/code&amp;gt;-elementet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-danger&amp;quot;&amp;gt;&lt;br /&gt;
Det får enbart förekomma ett &amp;lt;code&amp;gt;[[body]]&amp;lt;/code&amp;gt;-element i varje dokument. Om du vill dela upp dokumentet i underdokument, får du antingen göra olika webbsidor eller använda dig av någon av de olika [[tagg]]ar som finns för att sektionera upp innehållet på en sida.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h1]]&amp;gt;&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Även om vi angivit en titel i vårat &amp;lt;code&amp;gt;[[head]]&amp;lt;/code&amp;gt;-element, så vill vi oftast ha en titel som syns även i själva sidan (och inte enbart på fliken eller fönstret). För överskrifter eller huvudrubriker använder vi oss av &amp;lt;code&amp;gt;[[hx|h1]]&amp;lt;/code&amp;gt;-taggen. ”H” står i detta fall för engelskans ”header”, eller rubrik på svenska. Siffran som följer efter talar om vilken rubriknivå det handlar om. Det finns sex möjliga rubriknivåer att tillgå, dvs; &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h1]]&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h2]]&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h3]]&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h4]]&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h5]]&amp;gt;&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h6]]&amp;gt;&amp;lt;/code&amp;gt;. Har du jobbat med något ordbehandlingsprogram och använt deras stilmallar är rubriknivåer säkert inget nytt koncept för dig.&lt;br /&gt;
&lt;br /&gt;
Rubrikerna ska användas i stigande ordning och de ska förekomma i en konsekvent serie. Vi ska t.ex. aldrig ange en &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h2]]&amp;gt;&amp;lt;/code&amp;gt; utan att ha en &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h1]]&amp;gt;&amp;lt;/code&amp;gt;. Inte heller ska vi hoppa över någon rubriknivå, t.ex. att gå ifrån &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h2]]&amp;gt;&amp;lt;/code&amp;gt; direkt till &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h4]]&amp;gt;&amp;lt;/code&amp;gt;. Rubriknivåerna bygger upp en logisk struktur för vårat dokument och vi kan lätt se vilka underrubriker som tillhör respektive huvudrubriker, precis såsom du bygger upp en logisk struktur då du skriver en uppsats.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[[hx|H1]]&amp;lt;/code&amp;gt;-elementet är lite speciellt. Tidigare fick det enbart förekomma en gång per [[HTML]]-dokument. Numera, i och med [[HTML5]], får det dock användas mer flitigt. Allt material som är helt avskilt ifrån övrigt material kan ha en egen &amp;lt;code&amp;gt;[[hx|h1]]&amp;lt;/code&amp;gt;-rubrik. Den kan till exempel användas i sidhuvud, sidfot, underartiklar eller i en egen sektion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-danger&amp;quot;&amp;gt;&lt;br /&gt;
Det är väldigt viktigt att komma ihåg att man inte ska använda sig av &amp;lt;code&amp;gt;[[hx]]&amp;lt;/code&amp;gt;-elementen (eller något annat [[element]]) enbart för att ge ett specifik utseende till något. [[Tagg]]arna är till för strukturen och inte för utseendet. Om du vill ha stor text ska du inte använda en &amp;lt;code&amp;gt;[[hx]]&amp;lt;/code&amp;gt;-tagg, utan istället använder du dig av t.ex. &amp;lt;code&amp;gt;&amp;amp;lt;[[span]]&amp;gt;&amp;lt;/code&amp;gt; och skapar en [[CSS]]-regel som anger att innehållet i &amp;lt;code&amp;gt;[[span]]&amp;lt;/code&amp;gt;-elementet ska ha större text. Om du ska jobba inom webbranschen bör du veta att det anses som en dödssynd att använda [[tagg]]ar för utseendets skull!&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sammanfattning ==&lt;br /&gt;
[[Fil:tldr1.png]]&lt;br /&gt;
&lt;br /&gt;
== Övningar ==&lt;br /&gt;
[[En webbsidas anatomi övningar]]&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Våra första webbsidor]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=En_webbsidas_anatomi&amp;diff=5077</id>
		<title>En webbsidas anatomi</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=En_webbsidas_anatomi&amp;diff=5077"/>
		<updated>2024-08-06T14:28:21Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nu har vi gått igenom grundkoncepten bakom [[HTML]]. Men innan vi kan skapa vår första [[HTML]]-dokument, måste vi lära oss ett antal grundtaggar som ingår i alla [[HTML]]-dokument.&lt;br /&gt;
&lt;br /&gt;
== Ett första webbdokument ==&lt;br /&gt;
Exemplet nedan är grunden för en minimal webbsida. Vi kommer att gå igenom vad varje kodrad i exemplet betyder. Var lugn, det är inte så krångligt som det kan se ut vid första anblicken...&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;OVQPRz&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;html,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kan en sida bli tråkigare? Förhoppningsvis inte!&lt;br /&gt;
&lt;br /&gt;
Nu tar vi och går igenom koden och undersöker vad de olika taggarna gör.&lt;br /&gt;
&lt;br /&gt;
== [[doctype|&amp;amp;lt;!doctype html&amp;gt;]] ==&lt;br /&gt;
Det här är den första grej som man måste ange i början av varje webbdokument. Det är den så kallade ”&amp;lt;code&amp;gt;[[doctype]]&amp;lt;/code&amp;gt;”, vilket är en förkortning för engelskans ”Document Type” eller dokumenttyp. Denna tjänar som en indikation på vilken typ av dokument det handlar om, samt vilken [[HTML]]-[[standard]] som används i dokumentet. Detta gör att webbläsaren kan hantera alla [[tagg]]ar i ditt webbdokument på ett korrekt vis. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[[doctype]]&amp;lt;/code&amp;gt; ska anges allra först i ditt dokument, innan du använder dig av någon [[tagg]]. Den har lite speciellt utseende som skiljer sig ifrån [[HTML]]-[[tagg]]arna och det finns heller ingen [[sluttagg]] för den. För [[HTML5]] är det väldigt enkelt att ange &amp;lt;code&amp;gt;[[doctype]]&amp;lt;/code&amp;gt;, man skriver nämligen så här:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Svårare än så är det inte. (Äldre versioner av HTML hade långa, krångliga varianter av &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt;, men man beslöt sig att förenkla detta rejält inför HTML5.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Anledningen att &amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt; ser lite annorlunda ut är att det faktiskt inte är en egentlig HTML-tagg. Den är ett arv ifrån språket SGML. Vilket kan ses som rötterna till HTML. Dock är inte HTML kompatibelt med SGML längre. Den enda kvarlevan är &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt;. &lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-danger&amp;quot;&amp;gt;&lt;br /&gt;
Du bör inte utelämna &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt;, för då kommer inte alla webbläsare att fatta att ditt dokument är ett [[HTML5]]-dokument. Istället finns chansen att webbläsaren kommer att försöka tolka det enligt någon gammal standard eller gå in i så kallad ”[[quirks mode]]” – vilket antagligen kommer att göra att din sida visas på något konstigt sätt och den kanske inte alls får den funktionalitet som du förväntade dig.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;&amp;amp;lt;[[html-tagg|html]]&amp;gt;&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Den första, riktiga [[tagg]]en vi måste lära oss är &amp;lt;code&amp;gt;&amp;amp;lt;[[html-tagg|html]]&amp;gt;&amp;lt;/code&amp;gt;. Detta är en inledande [[tagg]] som talar om för webbläsaren var [[HTML]]-innehållet börjar. [[Tagg]]en ska sitta före alla andra [[tagg]]ar, förutom &amp;lt;code&amp;gt;[[doctype]]&amp;lt;/code&amp;gt;, och dess motsvarande [[sluttagg]] ska ska sitta som den sista [[sluttagg]]en i dokumentet. &lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-danger&amp;quot;&amp;gt;&lt;br /&gt;
Det får endast förekomma ett &amp;lt;code&amp;gt;[[HTML]]&amp;lt;/code&amp;gt;-element i varje webbdokument. Det enda möjliga undantaget där man har flera &amp;lt;code&amp;gt;[[HTML]]&amp;lt;/code&amp;gt;-element i en webbsida är när man inkluderar en annan sida via &amp;lt;code&amp;gt;[[iframe]]&amp;lt;/code&amp;gt;. Detta är dock ett specialfall där webbläsaren ser den inkluderade sidan som ett helt separat HTML-dokument (vilket det också är).&lt;br /&gt;
&lt;br /&gt;
Det finns några fler taggar som bara får förekomma en gång i varje webbdokument. De flesta taggar får dock användas flera gånger i samma sida.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
=== &amp;lt;code&amp;gt;&amp;amp;lt;[[HTML]]&amp;gt;&amp;lt;/code&amp;gt; är roten till hela sidan ===&lt;br /&gt;
När webbläsaren ska tolka ditt webbsida, kommer den att bygga upp en datatyp som kallas för ett träd. Detta träd representerar ditt webbdokuments struktur. De olika [[element]]en kommer att bli grenar på trädet. Roten på trädet är &amp;lt;code&amp;gt;[[HTML-tagg|HTML]]&amp;lt;/code&amp;gt;-elementet, utifrån detta sprids underliggande [[element]] som grenar. Därför kallas ibland &amp;lt;code&amp;gt;[[html]]&amp;lt;/code&amp;gt;-elementet även för rot-elementet.&lt;br /&gt;
&lt;br /&gt;
Vi återkommer till träd-konceptet när vi tittar närmare på [[DOM]] – eller ”[[Document Object Model]]”.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;&amp;amp;lt;[[head]]&amp;gt;&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Inom [[tagg]]en &amp;lt;code&amp;gt;&amp;amp;lt;[[head]]&amp;gt;&amp;lt;/code&amp;gt; placerar man så kallad [[metadata]] om dokumentet. Det är den data som beskriver dokumentet och dess innehåll. Det här är information som är till för webbläsaren/sökmotorer och liknande, snarare än att det är till för slutanvändaren. Sånt som man kan hitta här är t.ex.; vilken [[teckenkodning]] som används på sidan, länkar till andra dokument som krävs för att visa sidan korrekt (såsom [[CSS]]-filer), namnet på den som skapat sidan, sökord, osv. &lt;br /&gt;
&lt;br /&gt;
Det finns några [[tagg]]ar som enbart får förekomma inom &amp;lt;code&amp;gt;[[head]]&amp;lt;/code&amp;gt;-elementet. Så gott som alla undertaggar i &amp;lt;code&amp;gt;[[head]]&amp;lt;/code&amp;gt;-element är icke-visuella, dvs de innehåller ingenting som kommer att visas för slutanvändaren när sidan skapas.&lt;br /&gt;
&lt;br /&gt;
Så här i början behöver vi inte bry oss i de flesta av de möjliga undertaggarna som kan förekomma i &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-danger&amp;quot;&amp;gt;&lt;br /&gt;
Det får bara finnas ett [[head]]-element i varje dokument.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;&amp;amp;lt;[[title]]&amp;gt;&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&amp;lt;code&amp;gt;[[head]]&amp;lt;/code&amp;gt;-elementet har en undertagg som är visuell, dvs den kommer att visas för slutanvändaren. Det är taggen ”&amp;lt;code&amp;gt;&amp;amp;lt;[[title]]&amp;gt;&amp;lt;/code&amp;gt;”. Vilket alltså är sidans namn/titel. Titeln på sidan kommer att visas antingen som namnet på ett webbläsarfönster eller som namnet på en flik i webbläsaren. En bra titel gör det lättare för användaren att navigera bland flikarna i dennes webbläsare.&lt;br /&gt;
&lt;br /&gt;
Titeln visas inte bara i webbläsaren, den är även grunden för det namn väljas när användaren skapar ett bokmärke till sidan. Återigen är det en god vana att ange en bra titel som ger ett vettigt grundnamn för bokmärket. På så vis får användaren ett bokmärke som är lätt att identifiera, utan att behöva redigera bokmärkesnamnet.&lt;br /&gt;
&lt;br /&gt;
Det är alltså viktigt att välja sidnamn på ett bra sätt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
=== Att välja sidtitel ===&lt;br /&gt;
När man ska välja ett sidnamn bör man försöka få med de absolut viktigaste orden redan i början av namnet. Det finns flera anledningar till detta, bland annat:&lt;br /&gt;
&lt;br /&gt;
* När sidnamnet visas på en flik så kommer det ofta att klippas av mitt i. Desto fler flikar man har, desto mindre blir flikytan där namnet ska visas. Vill man att det ska vara lätt hitta rätt flik, gäller det alltså att ha ett kort och kärnfullt namn.&lt;br /&gt;
&lt;br /&gt;
* När användaren skapar ett bokmärke, utgår webbläsaren oftast ifrån sidans titel som namn för bokmärket. Om titeln är för lång, kan det hända att bokmärkesnamnet kapas av mitt i. Står det då inte någonting med mycket informationsinnehåll, är chansen liten att användaren kommer att komma ihåg vad sidan handlade om.&lt;br /&gt;
&lt;br /&gt;
Ett vanligt fel är att döpa sin sida till något i stil med, ”Välkommen till min fin, fina sida”. Eftersom det är så vanligt med frasen ”Välkommen”, är chansen stor att användaren får en drös av flikar där det bara syns ”Välkommen” eller, ännu värre, en massa bokmärken där det bara står ”Välkommen”.&lt;br /&gt;
&lt;br /&gt;
I många fall kan det även vara dumt att skriva saker som ens firmanamn som första delen i titeln. Återigen kan det bli massa flikar/bokmärken där bara ”Murres webbshop” eller liknande syns. Försök därför att inleda titeln med ett eller två ord som verkligen beskriver sidans innehåll. Det är iofs inget fel att ha sitt firmanamn som sidtitel, men se i så fall till att det är den ”första” sidan på din sajt som har den titeln och att du har specialiserade namn på undersidorna.&lt;br /&gt;
&lt;br /&gt;
Ovanstående problem var tidigare mycket vanligt förekommande på tidningarnas webbsidor. Men det har alltmer förändrats. Nu för tiden är t.ex. Aftonbladet förstasida benämnd ”Aftonbladet: Sveriges nyhetskälla och mötesplats”, medan de olika undersidornas titlar är uppbyggda efter mallen ”Nyhetsnamn | Kategori | Aftonbladet”. Det vill säga, man bygger upp titeln genom att sätta det mest specifika först och därefter blir titeln allt mer generell. Detta är ett mycket bra sätt att namnge sina sidor på.&lt;br /&gt;
&lt;br /&gt;
Titeln kan även vara viktig för så kallad [[SEO]] – eller [[Search Engine Optimization]]. Detta innebär att man försöker optimera sidan så att sidan hamnar så tidigt som möjligt bland sökresultaten på söksidor, såsom Google. Att hamna bland de första sökresultaten innebär att det är mycket större chans att folk kommer att besöka sidan. De flesta vill ju ha så många besökare som möjligt på sin sida – inte minst om man har finansiell vinning av besökare, kanske genom att visa reklam på sidan eller för att man försöker sälja en produkt av något slag.&lt;br /&gt;
&lt;br /&gt;
Så, redan här, där vi har den första [[tagg]]en där du kan sätta något eget innehåll, ser man att man måste tänka sig för innan man skapar sin webbplats. Det är inte bara att sätta igång och börja tok-koda, utan man måste planera och tänka sig för redan i förväg. Mycket förarbete och planering, innan själva kodandet, är en bra metodik som man tjänar på i längden!&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;&amp;amp;lt;[[meta]]&amp;gt;&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&amp;lt;code&amp;gt;[[Meta]]&amp;lt;/code&amp;gt;-element används inuti &amp;lt;code&amp;gt;[[head]]&amp;lt;/code&amp;gt;-elementet. Dessa är till för att beskriva dokumentets innehåll. Det finns en mängd olika saker som kan anges i &amp;lt;code&amp;gt;[[meta]]&amp;lt;/code&amp;gt;-elementen, vi ska dock enbart titta på ett just nu. &lt;br /&gt;
&lt;br /&gt;
Man bör alltid ange vilken [[teckenkodning]] som används i ett dokument. Om man inte gör det kan webbläsaren få problem med att tolka innehållet i dokumentet på ett korrekt vis. [[Teckenkodning]] är ett komplext område och det förtjänar sin egen sektion. För tillfället väljer vi att ange att vårt dokument är kodat med [[UTF-8]]. Detta är den idag vanligaste [[teckenkodning]]sstandarden och det används i de flesta webbverktygen (skulle t.ex. dina svenska ”åäö” bli att se konstiga ut, beror det säkerligen på att någonting i utvecklingskedjan använder sig av ”fel” [[teckenkodning]]).&lt;br /&gt;
&lt;br /&gt;
För att ange [[UTF-8]] i vårt webbdokument, skriver vi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;meta charset=”utf-8”&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vi anger då att det är ett &amp;lt;code&amp;gt;[[meta]]&amp;lt;/code&amp;gt;-element och vi anger att vi vill sätt [[attribut]]et &amp;lt;code&amp;gt;charset&amp;lt;/code&amp;gt;. Det senare är en förkortning av engelskans ”character set”, eller teckenuppsättning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-warning&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[[Meta]]&amp;lt;/code&amp;gt;-elementen brukar man &#039;&#039;inte&#039;&#039; stänga med en avslutande sluttagg. En del använder sig av [[självstängande-tagg]]ar i detta fall. Men det är varken nödvändigt eller rekommenderat för HTML5.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;&amp;amp;lt;[[body]]&amp;gt;&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Nu har vi lämnat &amp;lt;code&amp;gt;[[head]]&amp;lt;/code&amp;gt;-elementet och det är dag för nästa viktiga [[tagg]], vilken är &amp;lt;code&amp;gt;&amp;amp;lt;[[body]]&amp;gt;&amp;lt;/code&amp;gt;. Allt i detta [[element]] är själva sid-kroppen. Här samlas allt det innehåll som ska visas på sidan. Så gott som alla [[element]] som definieras innanför &amp;lt;code&amp;gt;&amp;amp;lt;[[body]]&amp;gt;&amp;lt;/code&amp;gt; styr på något vis dokumentets struktur och följaktligen även hur det ska återges. Man skulle kunna säga att &amp;lt;code&amp;gt;[[body]]&amp;lt;/code&amp;gt;-elementets innehåll är själva sidan, i alla fall den visuella delen. Så gott som alla [[HTML]]-[[tagg]]ar går att använda inuti &amp;lt;code&amp;gt;[[body]]&amp;lt;/code&amp;gt;, förutom ett litet fåtal som enbart ska användas i &amp;lt;code&amp;gt;[[head]]&amp;lt;/code&amp;gt;-elementet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-danger&amp;quot;&amp;gt;&lt;br /&gt;
Det får enbart förekomma ett &amp;lt;code&amp;gt;[[body]]&amp;lt;/code&amp;gt;-element i varje dokument. Om du vill dela upp dokumentet i underdokument, får du antingen göra olika webbsidor eller använda dig av någon av de olika [[tagg]]ar som finns för att sektionera upp innehållet på en sida.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h1]]&amp;gt;&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Även om vi angivit en titel i vårat &amp;lt;code&amp;gt;[[head]]&amp;lt;/code&amp;gt;-element, så vill vi oftast ha en titel som syns även i själva sidan (och inte enbart på fliken eller fönstret). För överskrifter eller huvudrubriker använder vi oss av &amp;lt;code&amp;gt;[[hx|h1]]&amp;lt;/code&amp;gt;-taggen. ”H” står i detta fall för engelskans ”header”, eller rubrik på svenska. Siffran som följer efter talar om vilken rubriknivå det handlar om. Det finns sex möjliga rubriknivåer att tillgå, dvs; &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h1]]&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h2]]&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h3]]&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h4]]&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h5]]&amp;gt;&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h6]]&amp;gt;&amp;lt;/code&amp;gt;. Har du jobbat med något ordbehandlingsprogram och använt deras stilmallar är rubriknivåer säkert inget nytt koncept för dig.&lt;br /&gt;
&lt;br /&gt;
Rubrikerna ska användas i stigande ordning och de ska förekomma i en konsekvent serie. Vi ska t.ex. aldrig ange en &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h2]]&amp;gt;&amp;lt;/code&amp;gt; utan att ha en &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h1]]&amp;gt;&amp;lt;/code&amp;gt;. Inte heller ska vi hoppa över någon rubriknivå, t.ex. att gå ifrån &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h2]]&amp;gt;&amp;lt;/code&amp;gt; direkt till &amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h4]]&amp;gt;&amp;lt;/code&amp;gt;. Rubriknivåerna bygger upp en logisk struktur för vårat dokument och vi kan lätt se vilka underrubriker som tillhör respektive huvudrubriker, precis såsom du bygger upp en logisk struktur då du skriver en uppsats.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[[hx|H1]]&amp;lt;/code&amp;gt;-elementet är lite speciellt. Tidigare fick det enbart förekomma en gång per [[HTML]]-dokument. Numera, i och med [[HTML5]], får det dock användas mer flitigt. Allt material som är helt avskilt ifrån övrigt material kan ha en egen &amp;lt;code&amp;gt;[[hx|h1]]&amp;lt;/code&amp;gt;-rubrik. Den kan till exempel användas i sidhuvud, sidfot, underartiklar eller i en egen sektion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-danger&amp;quot;&amp;gt;&lt;br /&gt;
Det är väldigt viktigt att komma ihåg att man inte ska använda sig av &amp;lt;code&amp;gt;[[hx]]&amp;lt;/code&amp;gt;-elementen (eller något annat [[element]]) enbart för att ge ett specifik utseende till något. [[Tagg]]arna är till för strukturen och inte för utseendet. Om du vill ha stor text ska du inte använda en &amp;lt;code&amp;gt;[[hx]]&amp;lt;/code&amp;gt;-tagg, utan istället använder du dig av t.ex. &amp;lt;code&amp;gt;&amp;amp;lt;[[span]]&amp;gt;&amp;lt;/code&amp;gt; och skapar en [[CSS]]-regel som anger att innehållet i &amp;lt;code&amp;gt;[[span]]&amp;lt;/code&amp;gt;-elementet ska ha större text. Om du ska jobba inom webbranschen bör du veta att det anses som en dödssynd att använda [[tagg]]ar för utseendets skull!&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sammanfattning ==&lt;br /&gt;
[[Fil:tldr1.png]]&lt;br /&gt;
&lt;br /&gt;
== Övningar ==&lt;br /&gt;
[[En webbsidas anatomi övningar]]&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Våra första webbsidor]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Element-grunder&amp;diff=5076</id>
		<title>Element-grunder</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Element-grunder&amp;diff=5076"/>
		<updated>2024-08-06T14:27:13Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ett taggpar plus dess innehåll skapar tillsammans vad vi kallar för ett [[element]].&lt;br /&gt;
&lt;br /&gt;
== Element ==&lt;br /&gt;
Ett exempel på ett komplett [[element]] kan vara:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;YwGeNr&amp;quot; tab=&amp;quot;html,result&amp;quot; height=&amp;quot;180&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Detta är ett &amp;lt;code&amp;gt;[[hx|h1]]&amp;lt;/code&amp;gt;-element vars innehåll är texten ”Detta är en huvudrubrik”. På detta vis talar vi om för webbläsaren att texten har ett speciellt syfte. I det här fallet anges att detta är sektionens huvudrubrik. Vi talar dock inte om hur texten ska visas, utan enbart dess syfte. Alla webbläsare har ett grundutseende för hur olika [[element]] ska återges. I vårt fall kommer innehållet antagligen att visas med lite större och fetare text. Så länge vi jobbar med [[HTML]], fokuserar vi dock inte på utseende.&lt;br /&gt;
&lt;br /&gt;
Det exakta utseendet som elementen ger upphov till skiljer sig mellan olika webbläsare. Det kan till och med vara som så att slutanvändaren som använder vår webbsida är blind (eller har något annat handikapp) och därför får sidan uppläst. När vi jobbar med ren [[HTML]], kan vi aldrig vara säkra på hur slutresultatet kommer att återges. Med hjälp av [[CSS]] får vi mer kontroll över hur sidan återges, men inte ens då kan vi inte vara 100&amp;amp;nbsp;% säkra på att slutanvändaren kommer att uppleva sidan exakt så som vi tänkt oss. Vi återkommer till utseende i senare aktiviteter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
De flesta exempel på Webbling använder sig av webbtjänsten [http://codepen.io CodePen.io]. I exemplen finns flera flikar som du kan välja mellan. Lite beroende på vilken typ av exempel det handlar om så kan där finnas HTML-, CSS-, JavaScript och Result-flikar.&lt;br /&gt;
&lt;br /&gt;
I de exempel som inte behöver bestå av en fullständig sida, kommer vi att utelämna de &amp;quot;onödiga&amp;quot; kodbitarna. CodePen skapar nämligen en grundsida åt oss, så vi behöver inte ha med all HTML för att exemplen ska fungera.&lt;br /&gt;
&lt;br /&gt;
Det går även att klicka på &amp;quot;Edit on CodePen&amp;quot; i exemplen för att gå till dem på [http://codepen.io CodePens sajt]. Om du gör det så kan du förändra och redigera koden, så att du kan se vad som händer om man väljer att göra saker på olika sätt. Detta är ett bra sätt att lära sig mer om hur webbteknikerna fungerar, så passa på att experimentera med exemplen!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Underelement och nästling ==&lt;br /&gt;
[[Element]] kan i sin tur innehålla andra [[element]]. Ett exempel på det skulle kunna vara:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;yNEbow&amp;quot; tab=&amp;quot;html,result&amp;quot; height=&amp;quot;180&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Detta är en &amp;lt;em&amp;gt;huvudrubrik&amp;lt;/em&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Här har vi alltså ett &amp;lt;code&amp;gt;[[em]]&amp;lt;/code&amp;gt;-element som är nästlat inuti ett &amp;lt;code&amp;gt;[[hx|h1]]&amp;lt;/code&amp;gt;-element. Det gör att &amp;lt;code&amp;gt;[[em]]&amp;lt;/code&amp;gt;-elementet är en del av &amp;lt;code&amp;gt;[[hx|h1]]&amp;lt;/code&amp;gt;-elementet. Man behöver ofta nästla olika element inuti varandra för att få till den struktur man vill ha. Oftast krävs det nästling när man ska skapa en snygg layout. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[[Em]]&amp;lt;/code&amp;gt;-[[tagg]]en används för att markera att något har mer emfas än omkringliggande material – det vill säga att det ska betonas på något vis. I de flesta fall kommer webbläsaren att visa sådan text som fet eller kursiv.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Följande (konstlade och dumma) kod är ett mer avancerat exempel på nästling:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;JdZNrX&amp;quot; height=&amp;quot;240&amp;quot; tab=&amp;quot;html,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Det mest intressanta med ovanstående exempel är att vi har ett &amp;lt;code&amp;gt;[[div]]&amp;lt;/code&amp;gt;-element nästlat inuti i ett annat &amp;lt;code&amp;gt;[[div]]&amp;lt;/code&amp;gt;-element. Webbläsaren kan alltså förstå och hantera att man nästlar samma typ av element inuti varandra. Den kommer även att kunna hantera hur de olika start- och sluttaggarna hänger samman.&lt;br /&gt;
&lt;br /&gt;
När webbläsaren ska tolka ovanstående, så kommer den fatta att den första ”&amp;lt;code&amp;gt;&amp;amp;lt;/[[div]]&amp;amp;gt;&amp;lt;/code&amp;gt;”-[[tagg]]en är [[sluttagg]]en till den andra ”&amp;lt;code&amp;gt;&amp;amp;lt;[[div]]&amp;amp;gt;&amp;lt;/code&amp;gt;”-[[tagg]]en och att den sista [[sluttagg]]en hör samman med den första [[starttagg]]en. Webbläsaren är alltså rätt så ”smart” när den ska tolka hur [[tagg]]ar och [[sluttagg]]ar hör samman, dock gäller det att se till så att man får dit [[sluttagg]]ar som gäller för olika element i rätt ordning.&lt;br /&gt;
&lt;br /&gt;
I teorin kan du nästla saker inuti varandra i all oändlighet. Det är dock dumt att nästla saker och ting alltför djupt, det gör nämligen din kod mer svårläst och därmed svår att jobba med.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[[Div]]&amp;lt;/code&amp;gt;-[[tagg]]en används för att ange att något innehåll hänger samman som ett block, men att det inte har någon speciell semantisk betydelse. Detta används ofta för layout. Lite längre fram kommer vi att använda denna tagg för många olika ändamål.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vikten av snygg kod ==&lt;br /&gt;
När man skriver omfattande och komplex kod, kan det lätt bli en enda stor soppa av allting. Med lite tur är det en soppa som webbläsaren klarar av att tolka, medan du, som skrivit koden, kanske tappar bort dig helt. I värsta fall är det en soppa som vare sig du eller webbläsaren klarar av att tolka. Det gäller alltså att strukturera sin kod på ett vettigt vis.&lt;br /&gt;
&lt;br /&gt;
Det finns en del tricks, eller goda vanor, som gör att det blir enklare att hålla ordning på koden. I exemplet ovan har vi använt oss av så kallad [[indentering]]. Det vill säga vi har skjutit in texten med några extra mellanslag (tabbar går också bra) på vänster sida. Det gör att vi kan följa strukturen i koden och att vi lätt ser vilka start- och sluttaggar som hör samman. Vi återkommer till goda kodvanor i en senare aktivitet.&lt;br /&gt;
&lt;br /&gt;
== Verktyg hjälper dig ==&lt;br /&gt;
Moderna webbutvecklingsverktyg har bra stöd som hjälper dig med att skriva korrekt, snygg och vettig kod. Detta gör de på flera olika sätt.&lt;br /&gt;
&lt;br /&gt;
När du börjar skriva, så ger de flesta verktyg förslag på vad det kan vara som du håller på att skriva. Det gör att du snabbt kan skriva en bokstav eller två och vips så kan din editor fylla i och komplettera vad du vill skriva. Detta gör att man skriver snabbare och att det blir färre fel. I många fall föreslår din editor kompletteringar utifrån sammanhanget runt om det du skriver. Om du ska ange ett färgattribut, så fattar editorn antagligen att det är en färg som du håller på att ange och ger förslag på olika färgkombinationer.&lt;br /&gt;
&lt;br /&gt;
De flesta verktyg hjälper dig att sätta [[sluttagg]]arna där de hör hemma. Detta gör editorn genom att fylla i korrekt sluttaggsnamn direkt du skriver ”&amp;lt;code&amp;gt;&amp;amp;lt;/&amp;lt;/code&amp;gt;”. &lt;br /&gt;
&lt;br /&gt;
Editorer brukar även vara duktiga på att se till att din kod blir snyggt och korrekt indenterad. Vilket gör att saker hamnar på &amp;quot;rätt&amp;quot; plats i förhållande till kringliggande kod. Detta gör det &#039;&#039;mycket&#039;&#039; lättare att läsa din kod.&lt;br /&gt;
&lt;br /&gt;
Lär dig att använda ditt verktyg. Det kommer att göra ditt liv enklare. Du kommer att behöva skriva mycket mindre och det är stor chans att saker blir korrekta redan från början. Men kom ihåg att man inte kan förlita sig helt på att verktygen gör allting rätt...&lt;br /&gt;
&lt;br /&gt;
== Felaktigt angivna sluttaggar ==&lt;br /&gt;
När vi skapar nästlade [[element]] gäller det att hålla tungan rätt i munnen och se till att [[tagg]]arna hamnar i rätt ordning. Det här skulle till exempel bli rejält fel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Detta är en &amp;lt;i&amp;gt;huvudrubrik&amp;lt;/h1&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Här har vi satt [[sluttagg]]arna i fel ordning, vilket kommer att ge webbläsaren en hel del huvudbry. De flesta webbläsare är godvilliga och sväljer flertalet fel utan några direkta klagomål. I vissa fall kommer slutresultatet att bli felaktigt, men förvånansvärt ofta lyckas webbläsaren få till en korrekt tolkning av dokumentet trots att man gjort fel. Dock kan det vara som så att den typ av fel som en webbläsare klarar av, kanske en annan webbläsare inte alls klarar.&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Det är viktigt att använda sig av testverktyg som kollar igenom ens [[HTML]]-kod och påpekar fel och brister. Dessa testverktyg sväljer inte vad som helst, utan de är riktigt, riktigt petiga och ska ha allt absolut rätt innan de godkänner koden. Användningen av dylika testverktyg ger mer robust kod, som är lättare att felsöka och underhålla. Så gör det till en god vana att testa din kod ofta – det vinner du på i längden. Ett bra ställe att hitta webbverktyg som gör dessa kontroller är:&lt;br /&gt;
&lt;br /&gt;
http://www.w3.org/developers/tools&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Element, sammanfattning ==&lt;br /&gt;
[[Fil:tldr3a.png|center|Elementens uppbyggnad]]&lt;br /&gt;
&lt;br /&gt;
== Övningar ==&lt;br /&gt;
[[Elementens-grunder övningar]]&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[En webbsidas anatomi]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Element-grunder&amp;diff=5075</id>
		<title>Element-grunder</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Element-grunder&amp;diff=5075"/>
		<updated>2024-08-06T14:25:23Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ett taggpar plus dess innehåll skapar tillsammans vad vi kallar för ett [[element]].&lt;br /&gt;
&lt;br /&gt;
== Element ==&lt;br /&gt;
Ett exempel på ett komplett [[element]] kan vara:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;YwGeNr&amp;quot; tab=&amp;quot;html,result&amp;quot; height=&amp;quot;180&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Detta är ett &amp;lt;code&amp;gt;[[hx|h1]]&amp;lt;/code&amp;gt;-element vars innehåll är texten ”Detta är en huvudrubrik”. På detta vis talar vi om för webbläsaren att texten har ett speciellt syfte. I det här fallet anges att detta är sektionens huvudrubrik. Vi talar dock inte om hur texten ska visas, utan enbart dess syfte. Alla webbläsare har ett grundutseende för hur olika [[element]] ska återges. I vårt fall kommer innehållet antagligen att visas med lite större och fetare text. Så länge vi jobbar med [[HTML]], fokuserar vi dock inte på utseende.&lt;br /&gt;
&lt;br /&gt;
Det exakta utseendet som elementen ger upphov till skiljer sig mellan olika webbläsare. Det kan till och med vara som så att slutanvändaren som använder vår webbsida är blind (eller har något annat handikapp) och därför får sidan uppläst. När vi jobbar med ren [[HTML]], kan vi aldrig vara säkra på hur slutresultatet kommer att återges. Med hjälp av [[CSS]] får vi mer kontroll över hur sidan återges, men inte ens då kan vi inte vara 100&amp;amp;nbsp;% säkra på att slutanvändaren kommer att uppleva sidan exakt så som vi tänkt oss. Vi återkommer till utseende i senare aktiviteter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
De flesta exempel på Webbling använder sig av webbtjänsten [http://codepen.io CodePen.io]. I exemplen finns flera flikar som du kan välja mellan. Lite beroende på vilken typ av exempel det handlar om så kan där finnas HTML-, CSS-, JavaScript och Result-flikar.&lt;br /&gt;
&lt;br /&gt;
I de exempel som inte behöver bestå av en fullständig sida, kommer vi att utelämna de &amp;quot;onödiga&amp;quot; kodbitarna. CodePen skapar nämligen en grundsida åt oss, så vi behöver inte ha med all HTML för att exemplen ska fungera.&lt;br /&gt;
&lt;br /&gt;
Det går även att klicka på &amp;quot;Edit on CodePen&amp;quot; i exemplen för att gå till dem på [http://codepen.io CodePens sajt]. Om du gör det så kan du förändra och redigera koden, så att du kan se vad som händer om man väljer att göra saker på olika sätt. Detta är ett bra sätt att lära sig mer om hur webbteknikerna fungerar, så passa på att experimentera med exemplen!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Underelement och nästling ==&lt;br /&gt;
[[Element]] kan i sin tur innehålla andra [[element]]. Ett exempel på det skulle kunna vara:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;yNEbow&amp;quot; tab=&amp;quot;html,result&amp;quot; height=&amp;quot;180&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Detta är en &amp;lt;em&amp;gt;huvudrubrik&amp;lt;/em&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Här har vi alltså ett &amp;lt;code&amp;gt;[[em]]&amp;lt;/code&amp;gt;-element som är nästlat inuti ett &amp;lt;code&amp;gt;[[hx|h1]]&amp;lt;/code&amp;gt;-element. Det gör att &amp;lt;code&amp;gt;[[em]]&amp;lt;/code&amp;gt;-elementet är en del av &amp;lt;code&amp;gt;[[hx|h1]]&amp;lt;/code&amp;gt;-elementet. Man behöver ofta nästla olika element inuti varandra för att få till den struktur man vill ha. Oftast krävs det nästling när man ska skapa en snygg layout. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[[Em]]&amp;lt;/code&amp;gt;-[[tagg]]en används för att markera att något har mer emfas än omkringliggande material – det vill säga att det ska betonas på något vis. I de flesta fall kommer webbläsaren att visa sådan text som fet eller kursiv.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Följande (konstlade och dumma) kod är ett mer avancerat exempel på nästling:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;JdZNrX&amp;quot; height=&amp;quot;240&amp;quot; tab=&amp;quot;html,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Det mest intressanta med ovanstående exempel är att vi har ett &amp;lt;code&amp;gt;[[div]]&amp;lt;/code&amp;gt;-element nästlat inuti i ett annat &amp;lt;code&amp;gt;[[div]]&amp;lt;/code&amp;gt;-element. Webbläsaren kan alltså förstå och hantera att man nästlar samma typ av element inuti varandra. Den kommer även att kunna hantera hur de olika start- och sluttaggarna hänger samman.&lt;br /&gt;
&lt;br /&gt;
När webbläsaren ska tolka ovanstående, så kommer den fatta att den första ”&amp;lt;code&amp;gt;&amp;amp;lt;/[[div]]&amp;amp;gt;&amp;lt;/code&amp;gt;”-[[tagg]]en är [[sluttagg]]en till den andra ”&amp;lt;code&amp;gt;&amp;amp;lt;[[div]]&amp;amp;gt;&amp;lt;/code&amp;gt;”-[[tagg]]en och att den sista [[sluttagg]]en hör samman med den första [[starttagg]]en. Webbläsaren är alltså rätt så ”smart” när den ska tolka hur [[tagg]]ar och [[sluttagg]]ar hör samman, dock gäller det att se till så att man får dit [[sluttagg]]ar som gäller för olika element i rätt ordning.&lt;br /&gt;
&lt;br /&gt;
I teorin kan du nästla saker inuti varandra i all oändlighet. Det är dock dumt att nästla saker och ting alltför djupt, det gör nämligen din kod mer svårläst och därmed svår att jobba med.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[[Div]]&amp;lt;/code&amp;gt;-[[tagg]]en används för att ange att något innehåll hänger samman som ett block, men att det inte har någon speciell semantisk betydelse. Detta används ofta för layout. Lite längre fram kommer vi att använda denna tagg för många olika ändamål.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vikten av snygg kod ==&lt;br /&gt;
När man skriver omfattande och komplex kod, kan det lätt bli en enda stor soppa av allting. Med lite tur är det en soppa som webbläsaren klarar av att tolka, medan du, som skrivit koden, kanske tappar bort dig helt. I värsta fall är det en soppa som vare sig du eller webbläsaren klarar av att tolka. Det gäller alltså att strukturera sin kod på ett vettigt vis.&lt;br /&gt;
&lt;br /&gt;
Det finns en del tricks, eller goda vanor, som gör att det blir enklare att hålla ordning på koden. I exemplet ovan har vi använt oss av så kallad [[indentering]]. Det vill säga vi har skjutit in texten med några extra mellanslag (tabbar går också bra) på vänster sida. Det gör att vi kan följa strukturen i koden och att vi lätt ser vilka start- och sluttaggar som hör samman. Vi återkommer till goda kodvanor i en senare aktivitet.&lt;br /&gt;
&lt;br /&gt;
== Verktyg hjälper dig ==&lt;br /&gt;
Moderna webbutvecklingsverktyg har bra stöd som hjälper dig med att skriva korrekt, snygg och vettig kod. Detta gör de på flera olika sätt.&lt;br /&gt;
&lt;br /&gt;
När du börjar skriva, så ger de flesta verktyg förslag på vad det kan vara som du håller på att skriva. Det gör att du snabbt kan skriva en bokstav eller två och vips så kan din editor fylla i och komplettera vad du vill skriva. Detta gör att man skriver snabbare och att det blir färre fel. I många fall föreslår din editor kompletteringar utifrån sammanhanget runt om det du skriver. Om du ska ange ett färgattribut, så fattar editorn antagligen att det är en färg som du håller på att ange och ger förslag på olika färgkombinationer.&lt;br /&gt;
&lt;br /&gt;
De flesta verktyg hjälper dig att sätta [[sluttagg]]arna där de hör hemma. Detta gör editorn genom att fylla i korrekt sluttaggsnamn direkt du skriver ”&amp;lt;code&amp;gt;&amp;amp;lt;/&amp;lt;/code&amp;gt;”. &lt;br /&gt;
&lt;br /&gt;
Editorer brukar även vara duktiga på att se till att din kod blir snyggt och korrekt indenterad. Vilket gör att saker hamnar på &amp;quot;rätt&amp;quot; plats i förhållande till kringliggande kod. Detta gör det &#039;&#039;mycket&#039;&#039; lättare att läsa din kod.&lt;br /&gt;
&lt;br /&gt;
Lär dig att använda ditt verktyg. Det kommer att göra ditt liv enklare. Du kommer att behöva skriva mycket mindre och det är stor chans att saker blir korrekta redan från början. Men kom ihåg att man inte kan förlita sig helt på att verktygen gör allting rätt...&lt;br /&gt;
&lt;br /&gt;
== Felaktigt angivna sluttaggar ==&lt;br /&gt;
När vi skapar nästlade [[element]] gäller det att hålla tungan rätt i munnen och se till att [[tagg]]arna hamnar i rätt ordning. Det här skulle till exempel bli rejält fel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Detta är en &amp;lt;i&amp;gt;huvudrubrik&amp;lt;/h1&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Här har vi satt [[sluttagg]]arna i fel ordning, vilket kommer att ge webbläsaren en hel del huvudbry. De flesta webbläsare är godvilliga och sväljer flertalet fel utan några direkta klagomål. I vissa fall kommer slutresultatet att bli felaktigt, men förvånansvärt ofta lyckas webbläsaren få till en korrekt tolkning av dokumentet trots att man gjort fel. Dock kan det vara som så att det fel som en typ av webbläsare klarar av, kanske en annan webbläsare inte alls klarar.&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Det är viktigt att använda sig av testverktyg som kollar igenom ens [[HTML]]-kod och påpekar fel och brister. Dessa testverktyg sväljer inte vad som helst, utan de är riktigt, riktigt petiga och ska ha allt absolut rätt innan de godkänner koden. Användningen av dylika testverktyg ger mer robust kod, som är lättare att felsöka och underhålla. Så gör det till en god vana att testa din kod ofta – det vinner du på i längden. Ett bra ställe att hitta webbverktyg som gör dessa kontroller är:&lt;br /&gt;
&lt;br /&gt;
http://www.w3.org/developers/tools&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Element, sammanfattning ==&lt;br /&gt;
[[Fil:tldr3a.png|center|Elementens uppbyggnad]]&lt;br /&gt;
&lt;br /&gt;
== Övningar ==&lt;br /&gt;
[[Elementens-grunder övningar]]&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[En webbsidas anatomi]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Element-grunder&amp;diff=5074</id>
		<title>Element-grunder</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Element-grunder&amp;diff=5074"/>
		<updated>2024-08-06T14:18:04Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ett taggpar plus dess innehåll skapar tillsammans vad vi kallar för ett [[element]].&lt;br /&gt;
&lt;br /&gt;
== Element ==&lt;br /&gt;
Ett exempel på ett komplett [[element]] kan vara:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;YwGeNr&amp;quot; tab=&amp;quot;html,result&amp;quot; height=&amp;quot;180&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Detta är ett &amp;lt;code&amp;gt;[[hx|h1]]&amp;lt;/code&amp;gt;-element vars innehåll är texten ”Detta är en huvudrubrik”. På detta vis talar vi om för webbläsaren att texten har ett speciellt syfte. I det här fallet anges att detta är sektionens huvudrubrik. Vi talar dock inte om hur texten ska visas, utan enbart dess syfte. Alla webbläsare har ett grundutseende för hur olika [[element]] ska återges. I vårt fall kommer innehållet antagligen att visas med lite större och fetare text. Så länge vi jobbar med [[HTML]], fokuserar vi dock inte på utseende.&lt;br /&gt;
&lt;br /&gt;
Det exakta utseendet som elementen ger upphov till skiljer sig mellan olika webbläsare. Det kan till och med vara som så att slutanvändaren som använder vår webbsida är blind (eller har något annat handikapp) och därför får sidan uppläst. När vi jobbar med ren [[HTML]], kan vi aldrig vara säkra på hur slutresultatet kommer att återges. Med hjälp av [[CSS]] får vi mer kontroll över hur sidan återges, men inte ens då kan vi inte vara 100&amp;amp;nbsp;% säkra på att slutanvändaren kommer att uppleva sidan exakt så som vi tänkt oss. Vi återkommer till utseende i senare aktiviteter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
De flesta exempel på Webbling använder sig av webbtjänsten [http://codepen.io CodePen.io]. I exemplen finns flera flikar som du kan välja mellan. Lite beroende på vilken typ av exempel det handlar om så kan där finnas HTML-, CSS-, JavaScript och Result-flikar.&lt;br /&gt;
&lt;br /&gt;
I de exempel som inte behöver bestå av en fullständig sida, kommer vi att utelämna de &amp;quot;onödiga&amp;quot; kodbitarna. CodePen skapar nämligen en grundsida åt oss, så vi behöver inte ha med all HTML för att exemplen ska fungera.&lt;br /&gt;
&lt;br /&gt;
Det går även att klicka på &amp;quot;Edit on CodePen&amp;quot; i exemplen för att gå till dem på [http://codepen.io CodePens sajt]. Om du gör det så kan du förändra och redigera koden, så att du kan se vad som händer om man väljer att göra saker på olika sätt. Detta är ett bra sätt att lära sig mer om hur webbteknikerna fungerar, så passa på att experimentera med exemplen!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Underelement och nästling ==&lt;br /&gt;
[[Element]] kan i sin tur innehålla andra [[element]]. Ett exempel på det skulle kunna vara:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;yNEbow&amp;quot; tab=&amp;quot;html,result&amp;quot; height=&amp;quot;180&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Detta är en &amp;lt;em&amp;gt;huvudrubrik&amp;lt;/em&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Här har vi alltså ett &amp;lt;code&amp;gt;[[em]]&amp;lt;/code&amp;gt;-element som är nästlat inuti ett &amp;lt;code&amp;gt;[[hx|h1]]&amp;lt;/code&amp;gt;-element. Det gör att &amp;lt;code&amp;gt;[[em]]&amp;lt;/code&amp;gt;-elementet är en del av &amp;lt;code&amp;gt;[[hx|h1]]&amp;lt;/code&amp;gt;-elementet. Man behöver ofta nästla olika element inuti varandra för att få till den struktur man vill ha. Oftast krävs det nästling när man ska skapa en snygg layout. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[[Em]]&amp;lt;/code&amp;gt;-[[tagg]]en används för att markera att något har mer emfas än omkringliggande material – det vill säga att det ska betonas på något vis. I de flesta fall kommer webbläsaren att visa sådan text som fet eller kursiv.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Följande (konstlade och dumma) kod är ett mer avancerat exempel på nästling:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;JdZNrX&amp;quot; height=&amp;quot;240&amp;quot; tab=&amp;quot;html,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Det mest intressanta med ovanstående exempel är att vi har ett &amp;lt;code&amp;gt;[[div]]&amp;lt;/code&amp;gt;-element nästlat inuti i ett annat &amp;lt;code&amp;gt;[[div]]&amp;lt;/code&amp;gt;-element. När webbläsaren ska tolka ovanstående, så kommer den fatta att den första ”&amp;lt;code&amp;gt;&amp;amp;lt;/[[div]]&amp;amp;gt;&amp;lt;/code&amp;gt;”-[[tagg]]en är [[sluttagg]]en till den andra ”&amp;lt;code&amp;gt;&amp;amp;lt;[[div]]&amp;amp;gt;&amp;lt;/code&amp;gt;”-[[tagg]]en och att den sista [[sluttagg]]en hör samman med den första [[starttagg]]en. Webbläsaren är alltså rätt så ”smart” när den ska tolka hur [[tagg]]ar och [[sluttagg]]ar hör samman, dock gäller det att se till så att man får dit [[sluttagg]]ar som gäller för olika element i rätt ordning.&lt;br /&gt;
&lt;br /&gt;
I teorin kan du nästla saker inuti varandra i all oändlighet. Det är dock dumt att nästla saker och ting alltför djupt, det gör nämligen din kod mer svårläst och därmed mer svårarbetad.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[[Div]]&amp;lt;/code&amp;gt;-[[tagg]]en används för att ange att något innehåll hänger samman som ett block, men att det inte har någon speciell semantisk betydelse. Detta används ofta för layout. Lite längre fram kommer vi att använda denna tagg till många olika saker.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vikten av snygg kod ==&lt;br /&gt;
När man skriver omfattande och komplex kod, kan det lätt bli en enda stor soppa av allting. Med lite tur är det en soppa som webbläsaren klarar av att tolka, medan du, som skrivit koden, kanske tappar bort dig helt. I värsta fall är det en soppa som vare sig du eller webbläsaren klarar av att tolka. Det gäller alltså att strukturera sin kod på ett vettigt vis.&lt;br /&gt;
&lt;br /&gt;
Det finns en del tricks, eller goda vanor, som gör att det blir enklare att hålla ordning på koden. I exemplet ovan har vi använt oss av så kallad [[indentering]]. Det vill säga vi har skjutit in texten med några extra mellanslag (tabbar går också bra) på vänster sida. Det gör att vi kan se strukturen i koden och att vi lätt ser vilka start- och sluttaggar som hör samman. Vi återkommer till goda kodvanor i en senare aktivitet.&lt;br /&gt;
&lt;br /&gt;
== Verktyg hjälper dig ==&lt;br /&gt;
Moderna webbutvecklingsverktyg har bra stöd som hjälper dig med att skriva korrekt, snygg och vettig kod. Detta gör de på flera olika sätt.&lt;br /&gt;
&lt;br /&gt;
När du börjar skriva, så ger de flesta verktyg förslag på vad det kan vara som du håller på att skriva. Det gör att du snabbt kan skriva en bokstav eller två och vips så kan din editor fylla i och komplettera vad du vill skriva. Detta gör att man skriver snabbare och att det blir färre fel. I många fall föreslår din editor kompletteringar utifrån sammanhanget runt omkring det du skriver. Om du ska ange ett färgattribut, så fattar editorn antagligen att det är en färg som du håller på att ange och ger förslag på olika färgkombinationer.&lt;br /&gt;
&lt;br /&gt;
De flesta verktyg hjälper dig att få dit [[sluttagg]]arna där de hör hemma. Detta gör editorn genom att fylla i korrekt sluttaggsnamn direkt du skriver ”&amp;lt;code&amp;gt;&amp;amp;lt;/&amp;lt;/code&amp;gt;”. &lt;br /&gt;
&lt;br /&gt;
Editorer brukar även vara duktiga på att se till att din kod blir snyggt och korrekt indenterad. Vilket gör att saker hamnar på korrekt plats i förhållande till kringliggande kod. Detta gör det &#039;&#039;mycket&#039;&#039; lättare att läsa din kod.&lt;br /&gt;
&lt;br /&gt;
Lär dig att använda ditt verktyg. Det kommer att göra ditt liv enklare. Du kommer att behöva skriva mycket mindre och det är stor chans att saker blir korrekta redan från början. Men kom ihåg att man inte kan förlita sig helt på att verktygen gör allting rätt...&lt;br /&gt;
&lt;br /&gt;
== Felaktigt angivna sluttaggar ==&lt;br /&gt;
När vi skapar nästlade [[element]] gäller det att hålla tungan rätt i munnen och se till att [[tagg]]arna hamnar i rätt ordning. Det här skulle till exempel bli rejält fel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Detta är en &amp;lt;i&amp;gt;huvudrubrik&amp;lt;/h1&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Här har vi satt [[sluttagg]]arna i fel ordning, vilket kommer att ge webbläsaren en hel del huvudbry. De flesta webbläsare är godvilliga och sväljer flertalet fel utan några direkta klagomål. I vissa fall kommer slutresultatet att bli felaktigt, men förvånansvärt ofta lyckas webbläsaren få till en korrekt tolkning av dokumentet trots att man gjort fel. Dock kan det vara som så att det fel som en typ av webbläsare klarar av, kanske en annan webbläsare inte alls klarar.&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Det är viktigt att använda sig av testverktyg som kollar igenom ens [[HTML]]-kod och påpekar fel och brister. Dessa testverktyg sväljer inte vad som helst, utan de är riktigt, riktigt petiga och ska ha allt absolut rätt innan de godkänner koden. Användningen av dylika testverktyg ger mer robust kod, som är lättare att felsöka och underhålla. Så gör det till en god vana att testa din kod ofta – det vinner du på i längden. Ett bra ställe att hitta webbverktyg som gör dessa kontroller är:&lt;br /&gt;
&lt;br /&gt;
http://www.w3.org/developers/tools&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Element, sammanfattning ==&lt;br /&gt;
[[Fil:tldr3a.png|center|Elementens uppbyggnad]]&lt;br /&gt;
&lt;br /&gt;
== Övningar ==&lt;br /&gt;
[[Elementens-grunder övningar]]&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[En webbsidas anatomi]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Element-grunder&amp;diff=5073</id>
		<title>Element-grunder</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Element-grunder&amp;diff=5073"/>
		<updated>2024-08-06T14:17:08Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ett taggpar plus dess innehåll skapar tillsammans vad vi kallar för ett [[element]].&lt;br /&gt;
&lt;br /&gt;
== Element ==&lt;br /&gt;
Ett exempel på ett komplett [[element]] kan vara:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;YwGeNr&amp;quot; tab=&amp;quot;html,result&amp;quot; height=&amp;quot;180&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Detta är ett &amp;lt;code&amp;gt;[[hx|h1]]&amp;lt;/code&amp;gt;-element vars innehåll är texten ”Detta är en huvudrubrik”. På detta vis talar vi om för webbläsaren att texten har ett speciellt syfte. I det här fallet anges att detta är sektionens huvudrubrik. Vi talar dock inte om hur texten ska visas, utan enbart dess syfte. Alla webbläsare har ett grundutseende för hur olika [[element]] ska återges. I vårt fall kommer innehållet antagligen att visas med lite större och fetare text. Så länge vi jobbar med [[HTML]], fokuserar vi dock inte på utseende.&lt;br /&gt;
&lt;br /&gt;
Det exakta utseendet som elementen ger upphov till skiljer sig mellan olika webbläsare. Det kan till och med vara som så att slutanvändaren som använder vår webbsida är blind (eller har något annat handikapp) och därför får sidan uppläst. När vi jobbar med ren [[HTML]], kan vi aldrig vara säkra på hur slutresultatet kommer att återges. Med hjälp av [[CSS]] får vi mer kontroll över hur sidan återges, men inte ens då kan vi inte vara 100&amp;amp;nbsp;% säkra på att slutanvändaren kommer att uppleva sidan exakt så som vi tänkt oss. Vi återkommer till utseende i senare aktiviteter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
De flesta exempel på Webbling använder sig av webbtjänsten [http://codepen.io CodePen.io]. I exemplen finns flera flikar som du kan välja mellan. Lite beroende på vilken typ av exempel det handlar om så kan där finnas HTML-, CSS-, JavaScript och Result-flikar.&lt;br /&gt;
&lt;br /&gt;
I de exempel som inte behöver bestå av en fullständig sida, kommer vi att utelämna de &amp;quot;onödiga&amp;quot; kodbitarna. CodePen skapar nämligen en grundsida åt oss, så vi behöver inte ha med all HTML för att exemplen ska fungera.&lt;br /&gt;
&lt;br /&gt;
Det går även att klicka på &amp;quot;Edit on CodePen&amp;quot; i exemplen för att gå till dem på [http://codepen.io CodePens sajt]. Om du gör det så kan du förändra och redigera koden, så att du kan se vad som händer om man väljer att göra saker på olika sätt. Detta är ett bra sätt att lära sig mer om hur webbteknikerna fungerar, så passa på att experimentera med exemplen!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Underelement och nästling ==&lt;br /&gt;
[[Element]] kan i sin tur innehålla andra [[element]]. Ett exempel på det skulle kunna vara:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;yNEbow&amp;quot; tab=&amp;quot;html,result&amp;quot; height=&amp;quot;180&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Detta är en &amp;lt;em&amp;gt;huvudrubrik&amp;lt;/em&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Här har vi alltså ett &amp;lt;code&amp;gt;[[em]]&amp;lt;/code&amp;gt;-element som är nästlat inuti ett &amp;lt;code&amp;gt;[[hx|h1]]&amp;lt;/code&amp;gt;-element. Det gör att &amp;lt;code&amp;gt;[[em]]&amp;lt;/code&amp;gt;-elementet är en del av &amp;lt;code&amp;gt;[[hx|h1]]&amp;lt;/code&amp;gt;-elementet. Man behöver ofta nästla olika element inuti varandra för att få till den struktur man vill ha. Oftast krävs det nästling när man ska skapa en snygg layout. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[[Em]]&amp;lt;/code&amp;gt;-[[tagg]]en används för att markera att något har mer emfas än omkringliggande material – det vill säga att det ska betonas på något vis. I de flesta fall kommer webbläsaren att visa sådan text som fet eller kursiv.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Följande (konstlade och dumma) kod är ett mer avancerat exempel på nästling:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;JdZNrX&amp;quot; height=&amp;quot;240&amp;quot; tab=&amp;quot;html,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Det mest intressanta med ovanstående exempel är att vi har ett &amp;lt;code&amp;gt;[[div]]&amp;lt;/code&amp;gt;-element nästlat inuti i ett annat &amp;lt;code&amp;gt;[[div]]&amp;lt;/code&amp;gt;-element. När webbläsaren ska tolka ovanstående, så kommer den att fatta att den första ”&amp;lt;code&amp;gt;&amp;amp;lt;/[[div]]&amp;amp;gt;&amp;lt;/code&amp;gt;”-[[tagg]]en är [[sluttagg]]en till den andra ”&amp;lt;code&amp;gt;&amp;amp;lt;[[div]]&amp;amp;gt;&amp;lt;/code&amp;gt;”-[[tagg]]en och att den sista [[sluttagg]]en hör samman med den första [[starttagg]]en. Webbläsaren är alltså rätt så ”smart” när den ska tolka hur [[tagg]]ar och [[sluttagg]]ar hör samman, dock gäller det att se till så att man får dit [[sluttagg]]ar som gäller för olika element i rätt ordning.&lt;br /&gt;
&lt;br /&gt;
I teorin kan du nästla saker inuti varandra i all oändlighet. Det är dock dumt att nästla saker och ting alltför djupt, det gör nämligen din kod mer svårläst och därmed mer svårarbetad.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[[Div]]&amp;lt;/code&amp;gt;-[[tagg]]en används för att ange att något innehåll hänger samman som ett block, men att det inte har någon speciell semantisk betydelse. Detta används ofta för layout. Lite längre fram kommer vi att använda denna tagg till många olika saker.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vikten av snygg kod ==&lt;br /&gt;
När man skriver omfattande och komplex kod, kan det lätt bli en enda stor soppa av allting. Med lite tur är det en soppa som webbläsaren klarar av att tolka, medan du, som skrivit koden, kanske tappar bort dig helt. I värsta fall är det en soppa som vare sig du eller webbläsaren klarar av att tolka. Det gäller alltså att strukturera sin kod på ett vettigt vis.&lt;br /&gt;
&lt;br /&gt;
Det finns en del tricks, eller goda vanor, som gör att det blir enklare att hålla ordning på koden. I exemplet ovan har vi använt oss av så kallad [[indentering]]. Det vill säga vi har skjutit in texten med några extra mellanslag (tabbar går också bra) på vänster sida. Det gör att vi kan se strukturen i koden och att vi lätt ser vilka start- och sluttaggar som hör samman. Vi återkommer till goda kodvanor i en senare aktivitet.&lt;br /&gt;
&lt;br /&gt;
== Verktyg hjälper dig ==&lt;br /&gt;
Moderna webbutvecklingsverktyg har bra stöd som hjälper dig med att skriva korrekt, snygg och vettig kod. Detta gör de på flera olika sätt.&lt;br /&gt;
&lt;br /&gt;
När du börjar skriva, så ger de flesta verktyg förslag på vad det kan vara som du håller på att skriva. Det gör att du snabbt kan skriva en bokstav eller två och vips så kan din editor fylla i och komplettera vad du vill skriva. Detta gör att man skriver snabbare och att det blir färre fel. I många fall föreslår din editor kompletteringar utifrån sammanhanget runt omkring det du skriver. Om du ska ange ett färgattribut, så fattar editorn antagligen att det är en färg som du håller på att ange och ger förslag på olika färgkombinationer.&lt;br /&gt;
&lt;br /&gt;
De flesta verktyg hjälper dig att få dit [[sluttagg]]arna där de hör hemma. Detta gör editorn genom att fylla i korrekt sluttaggsnamn direkt du skriver ”&amp;lt;code&amp;gt;&amp;amp;lt;/&amp;lt;/code&amp;gt;”. &lt;br /&gt;
&lt;br /&gt;
Editorer brukar även vara duktiga på att se till att din kod blir snyggt och korrekt indenterad. Vilket gör att saker hamnar på korrekt plats i förhållande till kringliggande kod. Detta gör det &#039;&#039;mycket&#039;&#039; lättare att läsa din kod.&lt;br /&gt;
&lt;br /&gt;
Lär dig att använda ditt verktyg. Det kommer att göra ditt liv enklare. Du kommer att behöva skriva mycket mindre och det är stor chans att saker blir korrekta redan från början. Men kom ihåg att man inte kan förlita sig helt på att verktygen gör allting rätt...&lt;br /&gt;
&lt;br /&gt;
== Felaktigt angivna sluttaggar ==&lt;br /&gt;
När vi skapar nästlade [[element]] gäller det att hålla tungan rätt i munnen och se till att [[tagg]]arna hamnar i rätt ordning. Det här skulle till exempel bli rejält fel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Detta är en &amp;lt;i&amp;gt;huvudrubrik&amp;lt;/h1&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Här har vi satt [[sluttagg]]arna i fel ordning, vilket kommer att ge webbläsaren en hel del huvudbry. De flesta webbläsare är godvilliga och sväljer flertalet fel utan några direkta klagomål. I vissa fall kommer slutresultatet att bli felaktigt, men förvånansvärt ofta lyckas webbläsaren få till en korrekt tolkning av dokumentet trots att man gjort fel. Dock kan det vara som så att det fel som en typ av webbläsare klarar av, kanske en annan webbläsare inte alls klarar.&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
Det är viktigt att använda sig av testverktyg som kollar igenom ens [[HTML]]-kod och påpekar fel och brister. Dessa testverktyg sväljer inte vad som helst, utan de är riktigt, riktigt petiga och ska ha allt absolut rätt innan de godkänner koden. Användningen av dylika testverktyg ger mer robust kod, som är lättare att felsöka och underhålla. Så gör det till en god vana att testa din kod ofta – det vinner du på i längden. Ett bra ställe att hitta webbverktyg som gör dessa kontroller är:&lt;br /&gt;
&lt;br /&gt;
http://www.w3.org/developers/tools&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Element, sammanfattning ==&lt;br /&gt;
[[Fil:tldr3a.png|center|Elementens uppbyggnad]]&lt;br /&gt;
&lt;br /&gt;
== Övningar ==&lt;br /&gt;
[[Elementens-grunder övningar]]&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[En webbsidas anatomi]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Tagg-grunder&amp;diff=5072</id>
		<title>Tagg-grunder</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Tagg-grunder&amp;diff=5072"/>
		<updated>2024-08-06T14:10:35Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Som vi konstaterade tidigare så bygger [[HTML]] på [[tagg]]ar och [[element]]. Taggarna är de byggklossar som bygger upp sidans grundutseende och struktur. För att kunna förstå [[HTML]], måste vi förstå hur dess [[tagg]]ar och [[element]] är uppbyggda.&lt;br /&gt;
&lt;br /&gt;
I de allra flesta fall består [[HTML]]-[[tagg]]arna av ett taggpar, man har en [[starttagg]] och en [[sluttagg]]. Innehållet som finns mellan [[tagg]]-delarna är den data som vi vill märka upp på något vis. När webbläsaren sedan tolkar dokumentet kommer den, med hjälp av [[tagg]]arna, att kunna behandla dokumentet på ett korrekt vis och skapa [[element]] utifrån [[tagg]]arna och deras innehåll.&lt;br /&gt;
&lt;br /&gt;
== Taggarnas uppbyggnad ==&lt;br /&gt;
Alla [[tagg]]ar, såväl start som slut, ligger inom tecknen ”&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;” och ”&amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;”. Så en [[tagg]] kan se ut så här ”&amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h1]]&amp;amp;gt;&amp;lt;/code&amp;gt;”. Detta är &amp;lt;code&amp;gt;h1&amp;lt;/code&amp;gt;-taggen, vilken används för att markera att något är en huvudrubrik. När webbläsaren tolkar ett dokument och träffar på ett ”&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;”-tecken kommer den att börja tolka allt från och med detta tecken som en tagg, ända tills den hittar ett motsvarande ”&amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;”-tecken.&lt;br /&gt;
&lt;br /&gt;
HTML:s hantering av ”&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;”, gör att man inte kan lägga in dessa tecken hur som helst i sina dokument. Så om man vill använda sig av ”&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;” som ett vanligt tecken och inte som start för en HTML-tagg, måste man ange en specialkod.  Vi återkommer till denna typ av specialkoder.&lt;br /&gt;
&lt;br /&gt;
== HTML5:s tagguppsättning ==&lt;br /&gt;
Man kan inte uppfinna nya [[tagg]]ar allteftersom man känner för det, utan det finns en förutbestämd uppsättning av [[tagg]]ar som definierats i [[HTML5]]-[[standard]]en och det är enbart dessa taggar som webbläsare fattar. Det finns en uppsjö av olika [[tagg]]ar. Dock är det inte helt nödvändigt att kunna dem alla utantill. Det är bra att komma ihåg vilka olika typer av [[tagg]]ar som finns, men de mer obskyra [[tagg]]arna kan man alltid slå upp när man väl behöver dem.&lt;br /&gt;
&lt;br /&gt;
I de flesta fall finns det en [[tagg]] som passar det syfte man är ute efter, men för de tillfällen då man inte hittar exakt vad man behöver så finns det några generella [[tagg]]ar som kan användas för att märka upp information som inte har någon speciell [[semantik|semantisk]] betydelse. En vanlig anledning till att vilja markera upp saker med dessa generella [[tagg]]ar är för att informationen ska ges ett speciellt utseende, med hjälp av [[CSS]], eller för att informationen ska behandlas av ett [[JavaScript]]-program.&lt;br /&gt;
&lt;br /&gt;
== Starttaggar ==&lt;br /&gt;
Man inleder alltså ett element i HTML-kod med en starttagg. Starttaggen anges på formen &amp;lt;code&amp;gt;&amp;amp;lt;&#039;&#039;taggnamn&#039;&#039;&amp;amp;gt;&amp;lt;/code&amp;gt;, där &amp;lt;code&amp;gt;&#039;&#039;taggnamn&#039;&#039;&amp;lt;/code&amp;gt; är en av alla de taggar som finns med i HTML5-standarden. Man kan även ange attribut och liknande i en tagg, men det återkommer vi snart till. Det är viktigt att se till att man stavar taggnamnet helt korrekt, annars kommer inte webbläsaren att fatta vad man menar. I HTML5 går det att blanda stora/små bokstäver i ett taggnamn, men det är bäst att skriva taggnamn med små bokstäver (gemena).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well&amp;quot;&amp;gt;&lt;br /&gt;
För att skriva vettig kod är det viktigt att du använder taggarna på rätt sätt. Varje tagg har ett specifikt syfte och ska enbart användas för detta syfte. Om du är osäker på hur en tagg ska användas, läs på innan du börjar använda den! En bra början är att titta på [[HTML5-taggar|listan över taggar]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sluttaggar ==&lt;br /&gt;
För så gott som alla [[tagg]]ar används även en [[sluttagg]]. Precis som [[starttagg]]en talar om var ett en tagg börjar gälla, talar [[sluttagg]]en om var taggen upphör att gälla. [[Sluttagg]]ar ser ut som och heter det samma som [[starttagg]]arna, med den skillnaden att man alltid lägger till ett ”&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;”-tecken före taggnamnet. Den [[tagg]] som vi hade som exempel tidigare; ”&amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h1]]&amp;amp;gt;&amp;lt;/code&amp;gt;”, har alltså en motsvarande [[sluttagg]] som ser ut så här; ”&amp;lt;code&amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&amp;lt;/code&amp;gt;”. Liksom med starttaggarna är det viktigt att stava rätt. Det är extra viktigt att inte utelämna &amp;quot;&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;&amp;quot;-tecknet. Gör du det kommer webbläsaren att tro att det är en ny starttagg, vilket kan leda till oförutsedda konsekvenser (knappast bra sådana).&lt;br /&gt;
&lt;br /&gt;
== Utelämna sluttaggar ==&lt;br /&gt;
I vissa fall kan man utelämna [[sluttagg]]en, men det är oftast en bra vana att lägga dit den även om den inte är nödvändig. Det gör det lättare att se var ett [[element]] börjar och var det slutar, samt att vissa utvecklingsverktyg fungerar bättre om båda [[tagg]]-delarna är med. I de fall man råkar utelämna sluttaggen och den är nödvändig, kan det bli rejäla fel när webbläsaren försöker tolka ditt dokument och slutresultatet kanske inte alls blir vad du tänkt dig.&lt;br /&gt;
&lt;br /&gt;
Dock finns det ett fåtal [[tagg]]ar till vilka man &#039;&#039;aldrig&#039;&#039; använder en [[sluttagg]]. Ett exempel på det är &amp;lt;code&amp;gt;&amp;amp;lt;img&amp;gt;&amp;lt;/code&amp;gt; som används för att lägga in bilder. Vi kommer att se några till exempel på denna typ av taggar längre fram.&lt;br /&gt;
&lt;br /&gt;
== Hur skriver man ett &amp;quot;&amp;amp;lt;&amp;quot;-tecken? ==&lt;br /&gt;
Som vi konstaterat så indikerar &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt; att en tagg ska starta. Om man vill ha ett ”mindre än”-tecken i sitt dokument, måste man skriva det med hjälp av en speciell kod – i detta fall är koden ”&amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;”. Då kommer webbläsaren att förstå att man vill visa det specifika tecknet och att det inte är en [[starttagg]]. Det finns många dylika [[teckenkod]]er, men för de flesta tecken behöver man inte använda sig av en kod.&lt;br /&gt;
&lt;br /&gt;
== Sammanfattning av taggar ==&lt;br /&gt;
[[Fil:tldr2.png|center|En taggs uppbyggnad]]&lt;br /&gt;
&lt;br /&gt;
== Övningar ==&lt;br /&gt;
[[Tagg-grunder övningar]]&lt;br /&gt;
&lt;br /&gt;
== Nästa sektion ==&lt;br /&gt;
[[Element-grunder]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Tagg-grunder&amp;diff=5071</id>
		<title>Tagg-grunder</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Tagg-grunder&amp;diff=5071"/>
		<updated>2024-08-06T14:08:49Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Som vi konstaterade tidigare så bygger [[HTML]] på [[tagg]]ar och [[element]]. Taggarna är de byggklossar som bygger upp sidans grundutseende och struktur. För att kunna förstå [[HTML]], måste vi förstå hur dess [[tagg]]ar och [[element]] är uppbyggda.&lt;br /&gt;
&lt;br /&gt;
I de allra flesta fall består [[HTML]]-[[tagg]]arna av ett taggpar, man har en [[starttagg]] och en [[sluttagg]]. Innehållet som finns mellan [[tagg]]-delarna är den data som vi vill märka upp på något vis. När webbläsaren sedan tolkar dokumentet kommer den, med hjälp av [[tagg]]arna, att kunna behandla dokumentet på ett korrekt vis och skapa [[element]] utifrån [[tagg]]arna och deras innehåll.&lt;br /&gt;
&lt;br /&gt;
== Taggarnas uppbyggnad ==&lt;br /&gt;
Alla [[tagg]]ar, såväl start som slut, ligger inom tecknen ”&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;” och ”&amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;”. Så en [[tagg]] kan se ut så här ”&amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h1]]&amp;amp;gt;&amp;lt;/code&amp;gt;”. Detta är &amp;lt;code&amp;gt;h1&amp;lt;/code&amp;gt;-taggen, vilken används för att markera att något är en huvudrubrik. När webbläsaren tolkar ett dokument och träffar på ett ”&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;”-tecken kommer den att börja tolka allt från och med detta tecken som en tagg, ända tills den hittar ett motsvarande ”&amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;”-tecken.&lt;br /&gt;
&lt;br /&gt;
HTML:s hantering av ”&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;”, gör att man inte kan lägga in dessa tecken hur som helst i sina dokument. Så om man vill använda sig av ”&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;” som ett vanligt tecken och inte som start för en HTML-tagg, måste man ange en specialkod.  Vi återkommer till denna typ av specialkoder.&lt;br /&gt;
&lt;br /&gt;
== HTML5:s tagguppsättning ==&lt;br /&gt;
Man kan inte uppfinna nya [[tagg]]ar allteftersom man känner för det, utan det finns en förutbestämd uppsättning av [[tagg]]ar som definierats i [[HTML5]]-[[standard]]en och det är enbart dessa taggar som webbläsare fattar. Det finns en uppsjö av olika [[tagg]]ar. Dock är det inte helt nödvändigt att kunna dem alla utantill. Det är bra att komma ihåg vilka olika typer av [[tagg]]ar som finns, men de mer obskyra [[tagg]]arna kan man alltid slå upp när man väl behöver dem.&lt;br /&gt;
&lt;br /&gt;
I de flesta fall finns det en [[tagg]] som passar det syfte man är ute efter, men för de tillfällen då man inte hittar exakt vad man behöver så finns det några generella [[tagg]]ar som kan användas för att märka upp information som inte har någon speciell [[semantik|semantisk]] betydelse. En vanlig anledning till att vilja markera upp saker med dessa generella [[tagg]]ar är för att informationen ska ges ett speciellt utseende, med hjälp av [[CSS]], eller för att informationen ska behandlas av ett [[JavaScript]]-program.&lt;br /&gt;
&lt;br /&gt;
== Starttaggar ==&lt;br /&gt;
Man inleder alltså ett element i HTML-kod med en starttagg. Starttaggen anges på formen &amp;lt;code&amp;gt;&amp;amp;lt;&#039;&#039;taggnamn&#039;&#039;&amp;amp;gt;&amp;lt;/code&amp;gt;, där &amp;lt;code&amp;gt;&#039;&#039;taggnamn&#039;&#039;&amp;lt;/code&amp;gt; är en av alla de taggar som finns med i HTML5-standarden. Man kan även ange attribut och liknande i en tagg, men det återkommer vi snart till. Det är viktigt att se till att man stavar taggnamnet helt korrekt, annars kommer inte webbläsaren att fatta vad man menar. I HTML5 går det att blanda stora/små bokstäver i ett taggnamn, men det är bäst att skriva taggnamn med små bokstäver (gemena).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-warning&amp;quot;&amp;gt;&lt;br /&gt;
För att skriva vettig kod är det viktigt att du använder taggarna på rätt sätt. Varje tagg har ett specifikt syfte och ska enbart användas för detta syfte. Om du är osäker på hur en tagg ska användas, läs på innan du börjar använda den! En bra början är att titta på [[html5-taggar|listan över taggar]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sluttaggar ==&lt;br /&gt;
För så gott som alla [[tagg]]ar används även en [[sluttagg]]. Precis som [[starttagg]]en talar om var ett en tagg börjar gälla, talar [[sluttagg]]en om var taggen upphör att gälla. [[Sluttagg]]ar ser ut som och heter det samma som [[starttagg]]arna, med den skillnaden att man alltid lägger till ett ”&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;”-tecken före taggnamnet. Den [[tagg]] som vi hade som exempel tidigare; ”&amp;lt;code&amp;gt;&amp;amp;lt;[[hx|h1]]&amp;amp;gt;&amp;lt;/code&amp;gt;”, har alltså en motsvarande [[sluttagg]] som ser ut så här; ”&amp;lt;code&amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&amp;lt;/code&amp;gt;”. Liksom med starttaggarna är det viktigt att stava rätt. Det är extra viktigt att inte utelämna &amp;quot;&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;&amp;quot;-tecknet. Gör du det kommer webbläsaren att tro att det är en ny starttagg, vilket kan leda till oförutsedda konsekvenser (knappast bra sådana).&lt;br /&gt;
&lt;br /&gt;
== Utelämna sluttaggar ==&lt;br /&gt;
I vissa fall kan man utelämna [[sluttagg]]en, men det är oftast en bra vana att lägga dit den även om den inte är nödvändig. Det gör det lättare att se var ett [[element]] börjar och var det slutar, samt att vissa utvecklingsverktyg fungerar bättre om båda [[tagg]]-delarna är med. I de fall man råkar utelämna sluttaggen och den är nödvändig, kan det bli rejäla fel när webbläsaren försöker tolka ditt dokument och slutresultatet kanske inte alls blir vad du tänkt dig.&lt;br /&gt;
&lt;br /&gt;
Dock finns det ett fåtal [[tagg]]ar till vilka man &#039;&#039;aldrig&#039;&#039; använder en [[sluttagg]]. Ett exempel på det är &amp;lt;code&amp;gt;&amp;amp;lt;img&amp;gt;&amp;lt;/code&amp;gt; som används för att lägga in bilder. Vi kommer att se några till exempel på denna typ av taggar längre fram.&lt;br /&gt;
&lt;br /&gt;
== Hur skriver man ett &amp;quot;&amp;amp;lt;&amp;quot;-tecken? ==&lt;br /&gt;
Som vi konstaterat så indikerar &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt; att en tagg ska starta. Om man vill ha ett ”mindre än”-tecken i sitt dokument, måste man skriva det med hjälp av en speciell kod – i detta fall är koden ”&amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;”. Då kommer webbläsaren att förstå att man vill visa det specifika tecknet och att det inte är en [[starttagg]]. Det finns många dylika [[teckenkod]]er, men för de flesta tecken behöver man inte använda sig av en kod.&lt;br /&gt;
&lt;br /&gt;
== Sammanfattning av taggar ==&lt;br /&gt;
[[Fil:tldr2.png|center|En taggs uppbyggnad]]&lt;br /&gt;
&lt;br /&gt;
== Övningar ==&lt;br /&gt;
[[Tagg-grunder övningar]]&lt;br /&gt;
&lt;br /&gt;
== Nästa sektion ==&lt;br /&gt;
[[Element-grunder]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=HTML-grunder&amp;diff=5070</id>
		<title>HTML-grunder</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=HTML-grunder&amp;diff=5070"/>
		<updated>2024-08-06T13:58:59Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[HTML]] är den grund på vilken all [[webbutveckling]] vilar. Alla andra [[webbteknik]]er går det att klara sig utan, men man kan inte bygga upp en webbsida utan [[HTML]].&lt;br /&gt;
&lt;br /&gt;
Det går visserligen att skapa webbsidor utan att lära sig [[HTML]]. Det kan man göra genom att använda sig av så kallade [[WYSIWYG]]-verktyg.  I dessa skapar man sidorna visuellt, snarare än genom att skriva koder – exempel på sådana verktyg är [http://www.adobe.com/se/products/dreamweaver.html Adobe Dreamweaver] och [http://www.aptana.com/ Aptana] (den senare är helt gratis). Även om du kan skapa riktigt avancerade sidor i dylika verktyg, kommer du inte att komma långt med [[webbutveckling]] om du inte lär dig grunderna inom [[HTML]]. Detta gäller inte minst om du ska skapa [[webbplats|webbplatser]] med dynamiskt innehåll. Turligt nog är inte [[HTML]] så jättesvårt att lära sig.&lt;br /&gt;
== Vad betyder HTML? ==&lt;br /&gt;
[[HTML]] är en förkortning av &amp;quot;HyperText Markup Language&amp;quot;. Vi jobbar oss igenom termerna baklänges för att förstå vad de handlar om.&lt;br /&gt;
&lt;br /&gt;
=== Language ===&lt;br /&gt;
”Language” gör att vi kan förstå att detta är ett slags språk. I grund och botten består HTML-språket av engelska ord, eller förkortningen av engelska ord. Liksom för det mesta när man jobbar med datorer har de olika orden en väldigt specifik mening och när vi lär oss [[HTML]] så lär vi oss hur webbklienter, oftast webbläsare, kommer att tolka dessa ord. Det är vi som måste anpassa oss till att använda språket på ett sätt som webbläsaren kan förstå. Vi kan inte använda vilka uttryck som helst, utan vi måste använda oss av de fåtal ord som webbläsaren förstår och vi måste använda dem på ett vis som klienten klarar av att begripa. Man talar ofta om [[syntax]] och [[semantik]] i dessa sammanhang, vi återkommer till vad dessa begrepp betyder lite senare.&lt;br /&gt;
&lt;br /&gt;
=== Markup ===&lt;br /&gt;
Vad betyder då resten av förkortningen? ”Markup” kommer från att vi markerar information i vårt dokument med hjälp av olika [[tagg]]ar. Dessa är ungefär samma sak som etiketter och de markerar vad innehållet innanför dem har för funktionalitet. På så vis beskriver vi strukturen i ett dokument, där vi noggrant talar om vad varje bit av dokumentet har för funktion. Markeringarna är instruktioner till de [[webbklient]]er som ska tolka och visa upp sidan. För att åstadkomma dessa markeringar använder vi oss av [[HTML]]-[[tagg]]ar.&lt;br /&gt;
&lt;br /&gt;
[[Tagg]]ar är alltså små, korta ”etiketter” som anger hur efterföljande data ska tolkas. De flesta taggar består av ett taggpar, en [[starttagg]] och en [[sluttagg]]. Allt som befinner sig innanför dessa taggpar bildar ett [[element]]. Sammantaget är det dessa [[element]] som bygger upp en komplett webbsida. När vi nu börjar att lära oss [[HTML]], är det just de olika [[tagg]]arna vi kommer att lära oss. Vi kommer att gå in på vad de heter, vad de gör och hur de ska användas.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well&amp;quot;&amp;gt;&lt;br /&gt;
  [[HTML5-taggar|Här]] hittar du en lista över de taggar som är tillgängliga i [[HTML5]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HyperText ===&lt;br /&gt;
Sen har vi då det sista, mer kryptiska ordet i förkortningen – nämligen, [[hypertext]]. Detta är en teknik som gör att man kan länka samman olika typer av information. Även om ”text” verkar ange att det enbart är text som kan länkas, så stämmer det inte längre. I stort sett kan vad som helst vara en länk som leder vidare till annan information. Det handlar alltså om webblänkar, såna som används i alla webbsidor. Informationen man länkar till kan i princip vara vad som helst, kanske en annan webbsida eller någon annan typ av media som ska visas upp.&lt;br /&gt;
&lt;br /&gt;
I [[HTML]]s grundkoncept ingår alltså tanken att man ska kunna länka samman olika typer av information. Länkarna kan ses som trådar som leder kors och tvärs mellan olika typer av information. Trådar som i sin tur bildar ett nät – vilket är det som gett namnet åt webben (”web” betyder ju nät eller spindelnät på engelska). Idén med hyperlänkat material är långt ifrån ny och du kan läsa mer om historiken i ett [[Webbhistorik|annat avsnitt]] .&lt;br /&gt;
&lt;br /&gt;
== Vad används [[HTML]] till? ==&lt;br /&gt;
[[HTML]] är alltså en teknik som används för att skapa dokument, ge dem en struktur samt att det ger möjligheten att länka dokumentets innehåll så att det leder till annat innehåll. Inom datavärlden brukar vi kalla detta för ett dokumentformat eller ett dataformat. [[HTML]] är relativt strikt, man kan inte skapa nya [[tagg]]ar eller använda taggar hipp som happ, utan man måste följa den angivna mallen – eller [[standard]]en.&lt;br /&gt;
&lt;br /&gt;
Den version av [[HTML]] som vi kommer att lära oss här på Webbling är [[HTML5]]. Vilket är, i skrivandes stund, den senaste [[HTML]]-versionen.&lt;br /&gt;
&lt;br /&gt;
== Övningar ==&lt;br /&gt;
[[HTML-grunder övningar]]&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivtet ==&lt;br /&gt;
[[Tagg-grunder]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Introduktion_till_webbteknik&amp;diff=5069</id>
		<title>Introduktion till webbteknik</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Introduktion_till_webbteknik&amp;diff=5069"/>
		<updated>2024-08-06T13:35:13Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Om du lyckats ta dig till den här sidan, vet du nog ganska bra hur man använder en webbläsare för att navigera på webben. Men du kanske inte känner till de tekniker som används för att skicka, tolka och visa en webbsida. Det händer en hel del ”bakom kulisserna”, från det du begär att du vill hämta en specifik sida, tills att den visas upp i din webbläsare. &lt;br /&gt;
== Webbutveckling ==&lt;br /&gt;
Webbutveckling är termen som man använder för arbetet kring att skapa webbsidor, webbplatser och webbapplikationer. Allt som har med webbens funktionalitet att göra kallas för webbteknik. Dessa begrepp kan dock innefatta en hel del olika saker, eftersom det är så breda fält. I webbutveckling kan det ingå allt möjligt; design av sidans utseende (kanske i Photoshop eller som en skiss på papper), framtagandet av prototyper, kodningen av själva sidan, testning av sidan, optimering av sidan, publicering av sidan och mycket, mycket mer. Webbteknik handlar mer om de rent tekniska aspekterna och inte så mycket om design och utseende.&lt;br /&gt;
&lt;br /&gt;
== Webbtekniker ==&lt;br /&gt;
Vi kommer att börja med att titta på en webbsidas anatomi. Hur är den uppbyggd? Vilka tekniker, protokoll och standarder är det som samarbetar för att visa en sida? Vad betyder alla koder som syns om man tittar på källkoden till en webbsida?&lt;br /&gt;
&lt;br /&gt;
Det finns några tekniker som är absolut nödvändiga för att skapa sidor. En del av dessa tekniker är nyare än andra. När webben skapades 1989, var den främst tänkt att användas till att distribuera vetenskapliga rapporter. Till att börja med kunde man inte ens lägga in grafik i en webbsida! Idag har vi dock webbsidor som kan innehålla det mest spektakulära multimediala innehållet.&lt;br /&gt;
&lt;br /&gt;
== Webbsidans grundstenar ==&lt;br /&gt;
En modern webbsida byggs upp med hjälp av flertalet olika webbtekniker. I grunden handlar det om följande komponenter:&lt;br /&gt;
&lt;br /&gt;
=== [[HTML]] ===&lt;br /&gt;
[[HTML]] beskriver sidans struktur och informationens logiska uppdelning. Även om en webbsida kan vara fylld av allt möjligt multimedialt innehåll, så är HTML-kod helt och hållet ren text. Detta gäller även för CSS och JavaScript.&lt;br /&gt;
&lt;br /&gt;
=== [[CSS]] ===&lt;br /&gt;
[[CSS]] används för att skapa utseende och layout för en webbsida. [[CSS]] kan även användas för att skapa diverse effekter, animationer och viss interaktivitet. &lt;br /&gt;
&lt;br /&gt;
=== [[JavaScript]] ===&lt;br /&gt;
[[JavaScript]] används för att skapa interaktivitet på sidan och för att programmera sådant som inte ovanstående grundtekniker klarar av. Detta är grunden för de flesta webbapplikationer, såsom t.ex. Facebook, Gmail, osv.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well-danger&amp;quot;&amp;gt;&lt;br /&gt;
(Obs: programmeringsspråken [[JavaScript]] och [[Java]] har inget med varandra att göra, det är två helt olika språk!)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Andra tekniker ===&lt;br /&gt;
Förutom de ovannämnda teknikerna, finns det olika typer av grafik-, ljud- och video-format samt allt möjligt annat som kan ingå i en modern webbsida.&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivtet ==&lt;br /&gt;
Vi kommer gå in på vardera teknik i mer detalj följande avsnitt, till att börja med ska vi koncentrera oss på [[HTML]].&lt;br /&gt;
&lt;br /&gt;
[[HTML-grunder]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Webbutveckling&amp;diff=5068</id>
		<title>Webbutveckling</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Webbutveckling&amp;diff=5068"/>
		<updated>2024-08-06T13:28:11Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Webben har kommit att bli den naturliga plattformen för så gott som allt som publiceras idag. Användningen av webben som informationskälla har vuxit lavinartat, samtidigt som webben även har blivit en stark plattform för att köra alla möjliga typer av applikationer.&lt;br /&gt;
&lt;br /&gt;
Webbutveckling är egentligen ett ganska brett område som täcker in många olika tekniker. Man brukar dock ofta dela in webbutveckling i två underområden:&lt;br /&gt;
==== Klientsidan ====&lt;br /&gt;
En klient är något hämtar en webbsida från en server. Oftast är klienten en webbläsare. Dock kan det även vara andra saker, t.ex. en sökmotor som läser in materialet på sidan.&lt;br /&gt;
&lt;br /&gt;
Om det är en webbläsare som hämtar och visar sidan, så har finns troligen en _användare_ som vill titta på sidan. Oftast så anpassar vi våra sidor så att användaren får en så bra upplevelse som möjligt.&lt;br /&gt;
&lt;br /&gt;
Utveckling för klientsidan, ofta kallat &amp;quot;front-end&amp;quot; eller &amp;quot;client-side&amp;quot; på engelska, omfattar allt som kommer att köras och synas på användaren sida. Det kan alltså vara design, informationsinnehåll, [[skript]], o.s.v. Huvudteknikerna som används är [[HTML]], [[CSS]] och [[JavaScript]].&lt;br /&gt;
&lt;br /&gt;
==== Serversidan ====&lt;br /&gt;
Utveckling för serversidan, ofta kallat &amp;quot;back-end&amp;quot; på engelska, handlar om allt som körs på webbservern. Detta omfattar olika typer av applikationer som skapar webbmaterial som kan hämtas hem av en webbklient.&lt;br /&gt;
&lt;br /&gt;
Applikationerna kan skapas på en mängd olika vis, ofta är de programmerade i [[PHP]] eller [[JavaScript]]. Det kan även handla om olika typer av tjänster som inte är avsedda för en användare, t.ex. sådana tjänster som tillhandahåller andra webbapplikationer med data eller funktionalitet.&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Typografi_-_diverse_egenskaper&amp;diff=5067</id>
		<title>Typografi - diverse egenskaper</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Typografi_-_diverse_egenskaper&amp;diff=5067"/>
		<updated>2022-09-08T07:12:47Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lite gott och blandat med olika CSS-egenskaper som påverkar text.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;[[line-height]]&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Denna egenskap anger hur långt avståndet ska vara mellan två textrader. Detta går att ange på en rad olika vis. Följande värden kan sättas:&lt;br /&gt;
:&amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;:  Sätter normal radhöjd. Detta är defaultvärdet.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;&#039;&#039;siffra&#039;&#039;&amp;lt;/code&amp;gt;: En siffra utan efterföljande enhet anger en multiplikationsfaktor. Webbläsaren kommer att sätta linjeavståndet till faktorn multiplicerad med fontstorleken.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;&#039;&#039;höjd&#039;&#039;&amp;lt;/code&amp;gt;: Höjdvärdet ska efterföljas av en CSS-enhet, t.ex. &amp;lt;code&amp;gt;px&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;&#039;&#039;procent&#039;&#039;&amp;lt;/code&amp;gt;: Anger linjehöjden som en procent av nuvarande fontstorlek.&lt;br /&gt;
&lt;br /&gt;
Exempel på hur man kan använda radhöjd:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;mPWmpj&amp;quot; height=&amp;quot;940&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Typografi - diverse egenskaper]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Flexbox_-_styra_layoutfl%C3%B6det_l%C3%A4ngs_korsaxeln&amp;diff=5066</id>
		<title>Flexbox - styra layoutflödet längs korsaxeln</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Flexbox_-_styra_layoutfl%C3%B6det_l%C3%A4ngs_korsaxeln&amp;diff=5066"/>
		<updated>2022-09-08T07:03:10Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En av de viktigaste sakerna vi vill kunna styra över, är hur flexelementen placeras i förhållande till korsaxeln. Detta styr vi med hjälp av &amp;lt;code&amp;gt;align-items&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;align-self&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;align-items&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Med denna egenskap kan man ange hur flexinnehållet ska placeras ut i flexboxen. Detta används för att styra hur boxarna placeras i förhållande till korsaxeln.  Detta är en mycket användbar egenskap, som gör att man t.ex. kan centrera saker enkelt samt att man lätt kan skapa flera kolumner som har samma höjd (vilket tidigare var svårt i CSS).&lt;br /&gt;
&lt;br /&gt;
Här är de möjliga värdena på denna egenskap (alla exempel utgår ifrån att man placeras innehållet på en rad, men det fungerar likvärdigt för kolumner):&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;flex-start&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsFlexStart.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial justeras mot starten på flexboxen. Det vill säga det som har &amp;lt;code&amp;gt;flex-direction: row;&amp;lt;/code&amp;gt; justeras mot &amp;quot;toppen&amp;quot; på flexboxen, medan det som har &amp;lt;code&amp;gt;flex-direction: column;&amp;lt;/code&amp;gt; justeras mot vänstermarginalen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;zGVNvq&amp;quot; height=&amp;quot;500&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;flex-end&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsFlexEnd.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial justeras mot slutet av flexboxen. Om man t.ex. har &amp;lt;code&amp;gt;flex-direction: row&amp;lt;/code&amp;gt; blir detta mot botten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;MwMJjY&amp;quot; height=&amp;quot;500&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;center&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsCenter.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial centerjusteras mot flexboxens mitt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;waLgzR&amp;quot; height=&amp;quot;500&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;stretch&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsStretch.png]]&lt;br /&gt;
&lt;br /&gt;
Detta är defaultvärdet. Flexinnehållet sträcks ut så att det fyller upp hela flexboxen ifrån topp till botten. Dock tar webbläsaren eventuella &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;max-height&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;max-width&amp;lt;/code&amp;gt;,  i beaktande och om dessa är angivna kommer flexinnehållet enbart att stretchas så de håller sig inom dessa gränser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;JdQEbN&amp;quot; height=&amp;quot;500&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;baseline&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsBaseline.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial centreras så att deras [[baseline|baslinje]] ligger på samma nivå. Speciellt användbart om man har olika textstorlek i flexmaterialet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;BNgpWv&amp;quot; height=&amp;quot;200&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;align-self&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Om man vill att en specifik flexelement ska ha en annan justering än övriga element i flexboxen, kan man sätta det med hjälp av &amp;lt;code&amp;gt;align-self&amp;lt;/code&amp;gt;. Parametrarna till egenskapen fungerar precis som med &amp;lt;code&amp;gt;align-items&amp;lt;/code&amp;gt;, förutom att det enbart sätts på de element som CSS-regeln väljer ut. I detta exempel är defaultjusteringen &amp;lt;code&amp;gt;center&amp;lt;/code&amp;gt;, medan låda tre har &amp;lt;code&amp;gt;align-self: flex-end&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;doBNWJ&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Övningar ==&lt;br /&gt;
Välj &amp;quot;Edit on CodePen&amp;quot; för att göra övningarna där.&lt;br /&gt;
&lt;br /&gt;
=== Övning 1 ===&lt;br /&gt;
Ändra så att alla flexelement hamnar sist på flexaxeln.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;NwKMNj&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Övning 2 ===&lt;br /&gt;
Ändra så att alla flexelement ligger centrerade, förutom det första som ska ligga i starten och det sista som ska ligga i slutet.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;MOgGOB&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Flexbox - styra layoutflödet längs flexaxeln]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Flexbox_-_styra_layoutfl%C3%B6det_l%C3%A4ngs_flexaxeln&amp;diff=5065</id>
		<title>Flexbox - styra layoutflödet längs flexaxeln</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Flexbox_-_styra_layoutfl%C3%B6det_l%C3%A4ngs_flexaxeln&amp;diff=5065"/>
		<updated>2022-09-08T07:02:42Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vi vill självklart kunna styra hur layouten sker i förhållande till flexaxeln också. Det görs med egenskapen &amp;lt;code&amp;gt;[[justify-content]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;justify-content&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Med denna egenskap kan man sätta hur de olika flexelementen ska justeras/fördelas längs med flexaxeln.&lt;br /&gt;
&lt;br /&gt;
Följande värden kan anges:&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;flex-start&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:FlexboxJustifyStart.png]]&lt;br /&gt;
&lt;br /&gt;
Defaultvärdet. Allt flexmaterial samlas mot starten av flexboxen. Om vi har &amp;quot;normal&amp;quot; &amp;lt;code&amp;gt;[[ltr]]&amp;lt;/code&amp;gt; och det är en radbaserad flexbehållare, kommer allt innehåll att samlas mot vänsterkanten.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;LVKxLz&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;flex-end&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
[[Fil:FlexboxJustifiedEnd.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial samlas i slutet av flexboxen. Om vi har &amp;quot;normal&amp;quot; &amp;lt;code&amp;gt;[[rtl]]&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;[[ltr]]&amp;lt;/code&amp;gt; och det är en radbaserad flexbehållare, kommer allt innehåll att samlas mot högerkanten.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;KpjavK&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;center&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:FlexboxJustifyCenter.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial centreras mot mitten av flexboxen. Kombinerar vi detta med &amp;lt;code&amp;gt;align-items: center;&amp;lt;/code&amp;gt; kan vi enkelt centerjustera innehåll såväl horisontellt, som vertikalt. Vilket vi gör i följande exempel.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;eNqVNr&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;space-between&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
[[Fil:FlexboxJustifySpaceBetween.png]]&lt;br /&gt;
&lt;br /&gt;
Flexelementen distribueras jämt, längs med flexboxen. Tomrummet i flexbehållaren fördelas lika mellan flexelement och sätts som marginaler mellan dessa. De yttersta elementen i flexaxelns båda ändar får inga marginaler mot ändarna, utan de kommer att placeras i kant med slutpunkterna.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;waLgqO&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;space-around&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:FlexboxJustifySpaceAround.png]]&lt;br /&gt;
&lt;br /&gt;
Flexelementen distribueras jämt, längs med flexboxen och med lika mycket mellanrum mellan varje element. Tomrummet i flexbehållaren fördelas lika mellan flexelement och sätts som marginaler mellan dessa. De yttersta elementen i flexaxelns båda ändar får halva marginalstorleken jämtemot ändarna. Det vill säga om man lägger samman ändmarginalerna, så blir de tillsammans lika breda som övriga mellanmarginaler i flexbehållaren.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;doBNZd&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Övningar ==&lt;br /&gt;
Välj &amp;quot;Edit on CodePen&amp;quot; för att göra övningarna där.&lt;br /&gt;
&lt;br /&gt;
=== Övning 1 ===&lt;br /&gt;
Flytta alla flexelement så de ligger jämt fördelade mot på raden. De ska börja ifrån kanten på flexlådan.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;dZbeeo&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Övning 2 ===&lt;br /&gt;
Alla boxar ska centreras horisontellt. Första boxen ska ligga längst upp, tvåan i mitten, trean längst ned och fyran i mitten.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;wPwjxr&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Flexbox - flexbehållare med flera rader]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Flexbox_-_styra_layoutfl%C3%B6det_l%C3%A4ngs_korsaxeln&amp;diff=5064</id>
		<title>Flexbox - styra layoutflödet längs korsaxeln</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Flexbox_-_styra_layoutfl%C3%B6det_l%C3%A4ngs_korsaxeln&amp;diff=5064"/>
		<updated>2022-09-08T07:01:58Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En av de viktigaste sakerna vi vill kunna styra över, är hur flexelementen placeras i förhållande till korsaxeln. Detta styr vi med hjälp av &amp;lt;code&amp;gt;align-items&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;align-self&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;align-items&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Med denna egenskap kan man ange hur flexinnehållet ska placeras ut i flexboxen. Detta används för att styra hur boxarna placeras i förhållande till korsaxeln.  Detta är en mycket användbar egenskap, som gör att man t.ex. kan centrera saker enkelt samt att man lätt kan skapa flera kolumner som har samma höjd (vilket tidigare var svårt i CSS).&lt;br /&gt;
&lt;br /&gt;
Här är de möjliga värdena på denna egenskap (alla exempel utgår ifrån att man placeras innehållet på en rad, men det fungerar likvärdigt för kolumner):&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;flex-start&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsFlexStart.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial justeras mot starten på flexboxen. Det vill säga det som har &amp;lt;code&amp;gt;flex-direction: row;&amp;lt;/code&amp;gt; justeras mot &amp;quot;toppen&amp;quot; på flexboxen, medan det som har &amp;lt;code&amp;gt;flex-direction: column;&amp;lt;/code&amp;gt; justeras mot vänstermarginalen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;zGVNvq&amp;quot; height=&amp;quot;500&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;flex-end&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsFlexEnd.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial justeras mot slutet av flexboxen. Om man t.ex. har &amp;lt;code&amp;gt;flex-direction: row&amp;lt;/code&amp;gt; blir detta mot botten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;MwMJjY&amp;quot; height=&amp;quot;500&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;center&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsCenter.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial centerjusteras mot flexboxens mitt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;waLgzR&amp;quot; height=&amp;quot;500&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;stretch&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsStretch.png]]&lt;br /&gt;
&lt;br /&gt;
Detta är defaultvärdet. Flexinnehållet sträcks ut så att det fyller upp hela flexboxen ifrån topp till botten. Dock tar webbläsaren eventuella &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;max-height&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;max-width&amp;lt;/code&amp;gt;,  i beaktande och om dessa är angivna kommer flexinnehållet enbart att stretchas så de håller sig inom dessa gränser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;JdQEbN&amp;quot; height=&amp;quot;500&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;baseline&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsBaseline.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial centreras så att deras [[baseline|baslinje]] ligger på samma nivå. Speciellt användbart om man har olika textstorlek i flexmaterialet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;BNgpWv&amp;quot; height=&amp;quot;200&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;align-self&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Om man vill att en specifik flexelement ska ha en annan justering än övriga element i flexboxen, kan man sätta det med hjälp av &amp;lt;code&amp;gt;align-self&amp;lt;/code&amp;gt;. Parametrarna till egenskapen fungerar precis som med &amp;lt;code&amp;gt;align-items&amp;lt;/code&amp;gt;, förutom att det enbart sätts på de element som CSS-regeln väljer ut. I detta exempel är defaultjusteringen &amp;lt;code&amp;gt;center&amp;lt;/code&amp;gt;, medan låda tre har &amp;lt;code&amp;gt;align-self: flex-end&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;doBNWJ&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Övningar ==&lt;br /&gt;
Välj &amp;quot;Edit on CodePen&amp;quot; för att göra övningarna där.&lt;br /&gt;
&lt;br /&gt;
=== Flexövning 1 ===&lt;br /&gt;
Ändra så att alla flexelement hamnar sist på flexaxeln.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;NwKMNj&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flexövning 2 ===&lt;br /&gt;
Ändra så att alla flexelement ligger centrerade, förutom det första som ska ligga i starten och det sista som ska ligga i slutet.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;MOgGOB&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Flexbox - styra layoutflödet längs flexaxeln]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Flexbox_-_styra_layoutfl%C3%B6det_l%C3%A4ngs_korsaxeln&amp;diff=5063</id>
		<title>Flexbox - styra layoutflödet längs korsaxeln</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Flexbox_-_styra_layoutfl%C3%B6det_l%C3%A4ngs_korsaxeln&amp;diff=5063"/>
		<updated>2022-09-08T06:59:14Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En av de viktigaste sakerna vi vill kunna styra över, är hur flexelementen placeras i förhållande till korsaxeln. Detta styr vi med hjälp av &amp;lt;code&amp;gt;align-items&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;align-self&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;align-items&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Med denna egenskap kan man ange hur flexinnehållet ska placeras ut i flexboxen. Detta används för att styra hur boxarna placeras i förhållande till korsaxeln.  Detta är en mycket användbar egenskap, som gör att man t.ex. kan centrera saker enkelt samt att man lätt kan skapa flera kolumner som har samma höjd (vilket tidigare var svårt i CSS).&lt;br /&gt;
&lt;br /&gt;
Här är de möjliga värdena på denna egenskap (alla exempel utgår ifrån att man placeras innehållet på en rad, men det fungerar likvärdigt för kolumner):&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;flex-start&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsFlexStart.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial justeras mot starten på flexboxen. Det vill säga det som har &amp;lt;code&amp;gt;flex-direction: row;&amp;lt;/code&amp;gt; justeras mot &amp;quot;toppen&amp;quot; på flexboxen, medan det som har &amp;lt;code&amp;gt;flex-direction: column;&amp;lt;/code&amp;gt; justeras mot vänstermarginalen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;zGVNvq&amp;quot; height=&amp;quot;500&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;flex-end&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsFlexEnd.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial justeras mot slutet av flexboxen. Om man t.ex. har &amp;lt;code&amp;gt;flex-direction: row&amp;lt;/code&amp;gt; blir detta mot botten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;MwMJjY&amp;quot; height=&amp;quot;500&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;center&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsCenter.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial centerjusteras mot flexboxens mitt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;waLgzR&amp;quot; height=&amp;quot;500&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;stretch&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsStretch.png]]&lt;br /&gt;
&lt;br /&gt;
Detta är defaultvärdet. Flexinnehållet sträcks ut så att det fyller upp hela flexboxen ifrån topp till botten. Dock tar webbläsaren eventuella &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;max-height&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;max-width&amp;lt;/code&amp;gt;,  i beaktande och om dessa är angivna kommer flexinnehållet enbart att stretchas så de håller sig inom dessa gränser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;JdQEbN&amp;quot; height=&amp;quot;500&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;baseline&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsBaseline.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial centreras så att deras [[baseline|baslinje]] ligger på samma nivå. Speciellt användbart om man har olika textstorlek i flexmaterialet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;BNgpWv&amp;quot; height=&amp;quot;200&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;align-self&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Om man vill att en specifik flexelement ska ha en annan justering än övriga element i flexboxen, kan man sätta det med hjälp av &amp;lt;code&amp;gt;align-self&amp;lt;/code&amp;gt;. Parametrarna till egenskapen fungerar precis som med &amp;lt;code&amp;gt;align-items&amp;lt;/code&amp;gt;, förutom att det enbart sätts på de element som CSS-regeln väljer ut. I detta exempel är defaultjusteringen &amp;lt;code&amp;gt;center&amp;lt;/code&amp;gt;, medan låda tre har &amp;lt;code&amp;gt;align-self: flex-end&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;doBNWJ&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Övningar ==&lt;br /&gt;
Välj &amp;quot;Edit on CodePen&amp;quot; för att göra övningarna där.&lt;br /&gt;
&lt;br /&gt;
* Ändra så att alla flexelement hamnar sist på flexaxeln.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;NwKMNj&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ändra så att alla flexelement ligger centrerade, förutom det första som ska ligga i starten och det sista som ska ligga i slutet.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;MOgGOB&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Flexbox - styra layoutflödet längs flexaxeln]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Flexbox_-_styra_layoutfl%C3%B6det_l%C3%A4ngs_korsaxeln&amp;diff=5062</id>
		<title>Flexbox - styra layoutflödet längs korsaxeln</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Flexbox_-_styra_layoutfl%C3%B6det_l%C3%A4ngs_korsaxeln&amp;diff=5062"/>
		<updated>2022-09-08T06:58:50Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En av de viktigaste sakerna vi vill kunna styra över, är hur flexelementen placeras i förhållande till korsaxeln. Detta styr vi med hjälp av &amp;lt;code&amp;gt;align-items&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;align-self&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;align-items&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Med denna egenskap kan man ange hur flexinnehållet ska placeras ut i flexboxen. Detta används för att styra hur boxarna placeras i förhållande till korsaxeln.  Detta är en mycket användbar egenskap, som gör att man t.ex. kan centrera saker enkelt samt att man lätt kan skapa flera kolumner som har samma höjd (vilket tidigare var svårt i CSS).&lt;br /&gt;
&lt;br /&gt;
Här är de möjliga värdena på denna egenskap (alla exempel utgår ifrån att man placeras innehållet på en rad, men det fungerar likvärdigt för kolumner):&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;flex-start&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsFlexStart.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial justeras mot starten på flexboxen. Det vill säga det som har &amp;lt;code&amp;gt;flex-direction: row;&amp;lt;/code&amp;gt; justeras mot &amp;quot;toppen&amp;quot; på flexboxen, medan det som har &amp;lt;code&amp;gt;flex-direction: column;&amp;lt;/code&amp;gt; justeras mot vänstermarginalen.&lt;br /&gt;
&lt;br /&gt;
[http://exempel.webbling.se/flexbox11.html Exempel].&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;zGVNvq&amp;quot; height=&amp;quot;500&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;flex-end&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsFlexEnd.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial justeras mot slutet av flexboxen. Om man t.ex. har &amp;lt;code&amp;gt;flex-direction: row&amp;lt;/code&amp;gt; blir detta mot botten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;MwMJjY&amp;quot; height=&amp;quot;500&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;center&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsCenter.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial centerjusteras mot flexboxens mitt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;waLgzR&amp;quot; height=&amp;quot;500&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;stretch&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsStretch.png]]&lt;br /&gt;
&lt;br /&gt;
Detta är defaultvärdet. Flexinnehållet sträcks ut så att det fyller upp hela flexboxen ifrån topp till botten. Dock tar webbläsaren eventuella &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;max-height&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;max-width&amp;lt;/code&amp;gt;,  i beaktande och om dessa är angivna kommer flexinnehållet enbart att stretchas så de håller sig inom dessa gränser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;JdQEbN&amp;quot; height=&amp;quot;500&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;baseline&amp;lt;/code&amp;gt; ===&lt;br /&gt;
[[Fil:AlignItemsBaseline.png]]&lt;br /&gt;
&lt;br /&gt;
Allt flexmaterial centreras så att deras [[baseline|baslinje]] ligger på samma nivå. Speciellt användbart om man har olika textstorlek i flexmaterialet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;BNgpWv&amp;quot; height=&amp;quot;200&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;align-self&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Om man vill att en specifik flexelement ska ha en annan justering än övriga element i flexboxen, kan man sätta det med hjälp av &amp;lt;code&amp;gt;align-self&amp;lt;/code&amp;gt;. Parametrarna till egenskapen fungerar precis som med &amp;lt;code&amp;gt;align-items&amp;lt;/code&amp;gt;, förutom att det enbart sätts på de element som CSS-regeln väljer ut. I detta exempel är defaultjusteringen &amp;lt;code&amp;gt;center&amp;lt;/code&amp;gt;, medan låda tre har &amp;lt;code&amp;gt;align-self: flex-end&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;doBNWJ&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Övningar ==&lt;br /&gt;
Välj &amp;quot;Edit on CodePen&amp;quot; för att göra övningarna där.&lt;br /&gt;
&lt;br /&gt;
* Ändra så att alla flexelement hamnar sist på flexaxeln.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;NwKMNj&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ändra så att alla flexelement ligger centrerade, förutom det första som ska ligga i starten och det sista som ska ligga i slutet.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;MOgGOB&amp;quot; height=&amp;quot;300&amp;quot; tab=&amp;quot;result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Flexbox - styra layoutflödet längs flexaxeln]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Flexbox_-_s%C3%A4tta_storlek&amp;diff=5061</id>
		<title>Flexbox - sätta storlek</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Flexbox_-_s%C3%A4tta_storlek&amp;diff=5061"/>
		<updated>2022-09-08T06:50:44Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Det finns ett antal CSS-egenskaper som kan användas för att styra flexboxars layout och flöde. Vi börjar att titta på hur flexbox hanterar flexelementens storlek. Det är rätt så komplext hur den slutgiltiga storleken beräknas, men man behöver inte förstå detta i in i minsta detalj.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-warning&amp;quot;&amp;gt;&lt;br /&gt;
Lägg märke till att de CSS-egenskaper vi diskuterar i detta avsnitt sätts på de individuella flexelementen, inte på flexbehållaren!&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-danger&amp;quot;&amp;gt;&lt;br /&gt;
Här nedan presenteras storleksegenskaperna för flexelement var för sig. Det bästa är dock att sätta dem med [[samlingsegenskap]]en &amp;lt;code&amp;gt;flex&amp;lt;/code&amp;gt;. Då får man vettigare defaultvärden som grund. Det är nämligen som så att de indviduella elementen har andra defaultvärden då de sätt individuellt än om man sätter dem med samlingsegenskapen. Vilket är rätt märkligt, men något som vi får leva med. Efter presentationen av de individuella egenskaperna, följer en presentation av samlingsegenskapen.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;[[flex-basis]]&amp;lt;/code&amp;gt; ==&lt;br /&gt;
För att sätta grundstorleken på ett flexelement används &amp;lt;code&amp;gt;flex-basis&amp;lt;/code&amp;gt;. Den slutliga storleken kan bli något helt annat då det finns andra egenskaper som tas med i beräkningen.&lt;br /&gt;
&lt;br /&gt;
I stort sett fungerar denna egenskap som vanliga &amp;lt;code&amp;gt;[[width]]&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;[[height]]&amp;lt;/code&amp;gt; (beroende på &amp;lt;code&amp;gt;[[flex-direction]]&amp;lt;/code&amp;gt;). Du anger samma typ av värden här som för de egenskaperna. Värdet kan anges med hjälp av alla [[Måttenheter_i_CSS|CSS-måttenheter]].&lt;br /&gt;
&lt;br /&gt;
I följande exempel sätter vi att varje flexelement tar upp 10 % av flexbehållarens bredd. Detta är deras grundstorlek och den kan påverkas av övriga egenskaper som styr flex-elements storlek.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;PPZYGa&amp;quot; tab=&amp;quot;css,result&amp;quot; height=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Det går även att ange ett av de två kodorden &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; som värde till &amp;lt;code&amp;gt;flex-basis&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Om man anger &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt; kommer webbläsaren att ta bredden ifrån eventuell &amp;lt;code&amp;gt;[[width]]&amp;lt;/code&amp;gt; (eller &amp;lt;code&amp;gt;[[height]]&amp;lt;/code&amp;gt;, beroende på &amp;lt;code&amp;gt;flex-direction&amp;lt;/code&amp;gt;). Om även denna är satt till &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;, kommer det bli samma resultat som om man angav &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Storleken på flexelementet kommer att sättas utifrån storleken på dess innehåll. Webbläsaren kommer att sätta ett grundvärde på &amp;lt;code&amp;gt;flex-basis&amp;lt;/code&amp;gt; så att allt i elementet får plats.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;[[flex-grow]]&amp;lt;/code&amp;gt; ==&lt;br /&gt;
[[Fil:Flexgrow.png]]&lt;br /&gt;
&lt;br /&gt;
Lite förenklat kan man säga att &amp;lt;code&amp;gt;flex-grow&amp;lt;/code&amp;gt; anger hur flexboxarna ska &amp;quot;växa till sig&amp;quot; och fylla upp tillgängligt, fritt utrymme. Som parameter tar denna egenskap ett enhetslöst tal som anger hur stor proportion av det fria utrymmet i flexbehållaren som flexelementet ska använda sig av. Det fria utrymmet är alltså det utrymme i flexbehållaren som inte fylls upp av flexelementens när man tar deras grundstorlek i beräkning .&lt;br /&gt;
&lt;br /&gt;
Vad räknas som fritt utrymme? Här är ett exmpel:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;EKWZjo&amp;quot; tab=&amp;quot;css,result&amp;quot; height=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
I exemplet ovan, har vi tre flexelement som alla har &amp;lt;code&amp;gt;flex-basis: 10%;&amp;lt;/code&amp;gt;. De fyller med andra ord upp 30 % av flexbehållaren. Detta gör att vi har 70 % fritt utrymme över. Om du tittar på &amp;quot;result&amp;quot;-fliken i exemplet ovan, så är den bit som visas som gul det fria utrymmet. Det är fördelningen av  detta fria utrymme som &amp;lt;code&amp;gt;flex-grow&amp;lt;/code&amp;gt; styr över.&lt;br /&gt;
&lt;br /&gt;
I det enklaste fallet kanske vi har flexelement som alla har detta värde satt till &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Då kommer eventuellt fritt utrymme att fördelas med lika stor del till varje element. Vi modifierar det tidigare exemplet, så att det använder sig av &amp;lt;code&amp;gt;flex-grow&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;YywKQY&amp;quot; tab=&amp;quot;css,result&amp;quot; height=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
Eftersom alla lådor har såväl samma &amp;lt;code&amp;gt;flex-basis&amp;lt;/code&amp;gt; som &amp;lt;code&amp;gt;flex-grow&amp;lt;/code&amp;gt; får vi alltså tre lådor som alla har samma bred. Men låt säga att låda a, skulle haft dubbelt så stor &amp;lt;code&amp;gt;flex-basis&amp;lt;/code&amp;gt;, dvs dubbelt så stor grundbredd, då hade det blivit att se ut så här:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;meVbwL&amp;quot; tab=&amp;quot;css,result&amp;quot; height=&amp;quot;450&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
Nu används 10 % + 10 % + 20 %, dvs 40 %, av flexbehållaren. Vi har 60 % fritt utrymme, detta fördelas på de tre lådorna, så att de får 20 % extra utrymme var. Låda a blir då något större än de övriga. Den får fortfarande lika stor del av det tillgängliga tomrummet, men den är något större i grunden.&lt;br /&gt;
&lt;br /&gt;
Vi fortsätter med en modifikation av grundexemplet. Vi har tre element med samma &amp;lt;code&amp;gt;flex-basis&amp;lt;/code&amp;gt;. Av dessa har två &amp;lt;code&amp;gt;flex-grow: 1;&amp;lt;/code&amp;gt;, medan de tredje har &amp;lt;code&amp;gt;flex-grow: 2;&amp;lt;/code&amp;gt;. Det senare kommer då att få dubbelt så stor del av det fria utrymmet som de som har &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. &lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;WQreOW&amp;quot; height=&amp;quot;450&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I vissa fall vill man att flexelementen ska sättas så att de tar upp allt tillgängligt utrymme och man bryr sig inte om några grundstorlekar. Det gör man genom att först sätta &amp;lt;code&amp;gt;flex-basis&amp;lt;/code&amp;gt; till &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; och därefter ange vettiga värden till &amp;lt;code&amp;gt;flex-grow&amp;lt;/code&amp;gt;. Då vet man att det &amp;quot;enda&amp;quot; som spelar in är proportionerna som anges i &amp;lt;code&amp;gt;flex-grow&amp;lt;/code&amp;gt; och innehållets storlek tas ej med i beaktande.&lt;br /&gt;
&lt;br /&gt;
Om man använder sig av samlingsegenskapen &amp;lt;code&amp;gt;flex&amp;lt;/code&amp;gt;, så sätts &amp;lt;code&amp;gt;flex-basis&amp;lt;/code&amp;gt;-värdet automatiskt till &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Vilket är ett bra defaultvärde.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;[[flex-shrink]]&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Det finns även en egenskap som anger hur elementet ska omformas om det finns för lite plats i flexbehållaren. I fallet med &amp;lt;code&amp;gt;[[flex-grow]]&amp;lt;/code&amp;gt; angavs hur webbläsaren skulle fördela eventuellt tomrum och använda detta till att göra flexinnehållet större. I fallet med &amp;lt;code&amp;gt;[[flex-shrink]]&amp;lt;/code&amp;gt; anges hur material som skulle hamnat utanför flexbehållaren ska hanteras.  I detta fall kommer flexelement att krympas så att det får plats i flexbehållaren.&lt;br /&gt;
&lt;br /&gt;
Låt säga att vi har en flexbehållare vars innehåll sammanlagt går utanför behållaren med 20 %, då anger &amp;lt;code&amp;gt;[[flex-shrink]]&amp;lt;/code&amp;gt; hur mycket de olika flexelement ska förminskas för att få plats med dessa 20 %. Egenskapens värde talar om hur stor andel av den överskjutande bredden, som ska dras ifrån varje element. Här följer ett exempel:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;QjyLme&amp;quot; height=&amp;quot;550&amp;quot; tab=&amp;quot;result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
I exemplet ovan har alla tre lådorna &amp;lt;code&amp;gt;flex-basis: 40%;&amp;lt;/code&amp;gt;. De två först lådorna har &amp;lt;code&amp;gt;flex-shrink: 0&amp;lt;/code&amp;gt; och påverkas alltså inte av eventuell krympning. Den sista lådan har &amp;lt;code&amp;gt;flex-shrink: 1;&amp;lt;/code&amp;gt; och följdaktligen kommer den att krympas lika mycket som innehållet flödar över. Vilket i det här fallet är 20 % av flexbehållarens bredd.&lt;br /&gt;
&lt;br /&gt;
Hade vi haft samma situation, med skillnaden att de två sista lådorna bägge två hade &amp;lt;code&amp;gt;flex-shrink: 1;&amp;lt;/code&amp;gt;, så skulle den överskjutande bredden fördelas på bägge lådorna. Det vill säga, de skulle bägge krympas med 10 % av bredden på flexbehållaren.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;ZbQzqW&amp;quot; height=&amp;quot;550&amp;quot; tab=&amp;quot;result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;[[flex]]&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-warning&amp;quot;&amp;gt;&lt;br /&gt;
Det rekommenderade sättet att ange värden för ovanstående egenskaper är att sätta dem med [[samlingsegenskap]]en &amp;lt;code&amp;gt;[[flex]]&amp;lt;/code&amp;gt;. Om något av de tre möjliga egenskaperna utelämnas, kommer de utelämnade egenskaperna att ges bättre defaultvärden än de &amp;quot;normala&amp;quot; defaultvärdena. Ett något konstigt beteende kan tyckas!&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end well --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Samlingsegenskap]]en &amp;lt;code&amp;gt;flex&amp;lt;/code&amp;gt; kan användas för att sätta en, två eller tre av ovanstående egenskaper samtidigt. Defaultvärdena för de olika egenskaperna nollställs till följande om inget annat anges:  &amp;lt;code&amp;gt;flex-grow: 1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;flex-shrink: 1&amp;lt;/code&amp;gt; och &amp;lt;code&amp;gt;flex-basis: 0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hur egenskaperna sätts, beror på hur många och vilka värden som anges. Dessa varianter finns &lt;br /&gt;
(obs, som måttenhet kan även värdena &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; anges):&lt;br /&gt;
=== Ett värde ===&lt;br /&gt;
; Måttenhet: Om värdet har en måttenhet, antas man ange &amp;lt;code&amp;gt;flex-basis&amp;lt;/code&amp;gt;. Det vill säga grundstorleken på flexelementet. De två övriga egenskaperna får sina defaultvärden.&lt;br /&gt;
&lt;br /&gt;
; Andel:Om ett enhetslöst tal anges, tas detta som en andel för &amp;lt;code&amp;gt;flex-grow&amp;lt;/code&amp;gt;. De två övriga egenskaperna får sina defaultvärden.&lt;br /&gt;
&lt;br /&gt;
=== Två värden ===&lt;br /&gt;
; En måttenhet och en andel : Måttenheten anger &amp;lt;code&amp;gt;flex-basis&amp;lt;/code&amp;gt;, medan andelen anger &amp;lt;code&amp;gt;flex-grow&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;flex-shrink&amp;lt;/code&amp;gt; får defaultvärdet.&lt;br /&gt;
&lt;br /&gt;
;Två andelar: Den första andelen kommer att tilldelas till &amp;lt;code&amp;gt;flex-grow&amp;lt;/code&amp;gt;, medan den andra andelen tilldelas till &amp;lt;code&amp;gt;flex-shrink&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Tre värden ===&lt;br /&gt;
Den första andel som påträffas tilldelas till &amp;lt;code&amp;gt;flex-grow&amp;lt;/code&amp;gt;, medan den andra andelen tilldelas till &amp;lt;code&amp;gt;flex-shrink&amp;lt;/code&amp;gt;.  Måttenheten anger &amp;lt;code&amp;gt;flex-basis&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Flexbox - styra layoutflödet längs korsaxeln]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Flexbox_-_grunder&amp;diff=5060</id>
		<title>Flexbox - grunder</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Flexbox_-_grunder&amp;diff=5060"/>
		<updated>2022-09-08T06:30:52Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flexbox är ett modernare sätt att skapa layout på webbsidor. Vi kommer även att titta på andra moderna sätt på vilket man kan skapa layout, men flexbox är den enklaste metoden som ger bra resultat.&lt;br /&gt;
&lt;br /&gt;
Flexbox löser många problem och förenklar mycket. Problem som flexbox löser på ett excellent sätt är bland annat: kolumner som ska ha samma höjd, centrering av element (såväl horisontellt som vertikalt) samt att flexbox ger oss layouter som är långt mer robusta och som inte &amp;quot;trillar&amp;quot; isär. Om du hållit på med traditionell webbutveckling, så vet du att detta är problem som kan kräva en hel del extra kod. Om du är nybörjare, så tro mig, du kommer att tjäna in mycket tid och bespara dig massvis med huvudbry om du använder flexbox redan ifrån början.&lt;br /&gt;
&lt;br /&gt;
== Flexbox ==&lt;br /&gt;
Som man hör på namnet är flexbox till för att på ett flexibelt sätt hantera boxar, såväl deras position som deras storlek - vilket ju är likvärdigt med layout. Det är mycket enklare att få till en bra layout med denna teknik än om man använder sig av &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; eller liknande äldre metoder.&lt;br /&gt;
&lt;br /&gt;
Flexboxar är dynamiska  och webbläsaren sköter automatiskt det mesta som har att göra med placering av underelement. När man kör på olika enheter eller när man förändrar storlek på webbläsarfönstret så kommer flexbox att förändra layouten så att den passar den aktuella skärmlayouten.&lt;br /&gt;
&lt;br /&gt;
== Terminologi ==&lt;br /&gt;
Vi behöver fastställa betydelsen för ett antal begrepp som används för att beskriva hur flexbox fungerar.&lt;br /&gt;
=== Flexbehållare ===&lt;br /&gt;
Allt som ska hanteras av flexbox, placeras i en flexbehållare. Denna kommer att vara föräldraelementet som alla flexelement placeras i.&lt;br /&gt;
&lt;br /&gt;
Flexbehållare skapas genom att sätta deras &amp;lt;code&amp;gt;display&amp;lt;/code&amp;gt;-typ enligt följande; &amp;lt;code&amp;gt;display: flex;&amp;lt;/code&amp;gt;. Detta kommer att skapa ett blockelement vars innehåll lyder under flexboxs formateringsregler. &lt;br /&gt;
&lt;br /&gt;
Det finns även en variant  för att ange att själva flexbehållaren inte ska vara ett normalt blockelement, utan att den ska placeras i flödet. Denna variant skapas genom  genom att sätta CSS-egenskapen så här; &amp;lt;code&amp;gt;display: inline-flex;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Flexelement ===&lt;br /&gt;
Flexelement/flexinnehåll är de underelement som placeras inuti flexbehållaren.&lt;br /&gt;
&lt;br /&gt;
Det är främst block-element som påverkas av att ligga inuti  en flexbehållare. I vissa fall omvandlas dock &amp;quot;vanliga&amp;quot; element automatiskt till att fungera som block-element när de hamnar inuti en flexbehållare. Detta gäller t.ex. om du lägger &amp;quot;ren&amp;quot; text inuti en flexbehållare, då kommer texten att automatiskt placeras i ett &amp;quot;osynligt&amp;quot; flexelement. Du behöver med andra ord inte skapa alla flexelement själv, en del skapas åt dig.&lt;br /&gt;
&lt;br /&gt;
=== Flexaxel ===&lt;br /&gt;
Flexaxeln bestämmer i vilken riktning flexelementen ska placeras ut. Det går att sätta denna så att den antingen är rad eller kolumn - det vill säga horisontell eller vertikal. Riktningen på flexaxeln anges med egenskapen &amp;lt;code&amp;gt;flex-direction&amp;lt;/code&amp;gt;. Ett exempel på hur den används; &amp;lt;code&amp;gt;flex-direction: column;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Om inget annat anges, placeras flexelementen ut efter varandra på en och samma rad. Det vill säga, defaultinställningen är en horisontell flexaxel. Vanligtvis placeras ju blockelement under föregående element, så att ha &amp;quot;motsatsen&amp;quot; som defaultbeteende för flexboxar är förstås vettigt.&lt;br /&gt;
&lt;br /&gt;
Man kan även ange att man vill ha en vertikal flexaxel. Då läggs elementen ut under varandra i en kolumn. Detta påminner om det normala beteendet för blockelement. Dock så har det fördelar att lägga elementen i en flexbehållare. Bland annat kan man styra formateringen av elementen långt bättre.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;direction&amp;lt;/code&amp;gt;s inverkan ====&lt;br /&gt;
Om man har en horisontell flexaxel så kan den antingen starta på höger eller vänster sida. Detta styrs av värdet på den &amp;lt;code&amp;gt;[[direction]]&amp;lt;/code&amp;gt;-egenskap  som gäller för flexbehållaren. Flexelementen kommer att placeras ut i samma ordning som angetts med &amp;lt;code&amp;gt;direction&amp;lt;/code&amp;gt;.  Är den &amp;lt;code&amp;gt;[[ltr]]&amp;lt;/code&amp;gt;, dvs vänster till höger, vilket är default-riktningen så kommer även flexaxeln att gå ifrån vänster till höger. Om däremot det är &amp;lt;code&amp;gt;[[rtl]]&amp;lt;/code&amp;gt; som gäller, dvs höger till vänster, placeras även flexelementen ut ifrån höger till vänster.&lt;br /&gt;
&lt;br /&gt;
För &amp;quot;vanliga&amp;quot; västerländska språk, som ju är &amp;lt;code&amp;gt;[[ltr]]&amp;lt;/code&amp;gt;, börjar elementen att placeras ut längst till vänster. Därefter placeras varje nytt element på föregående elements högra sida. Vi bygger alltså upp flexraden ifrån vänster till höger. Det påminner alltså om det beteende som gällde när man gjorde &amp;lt;code&amp;gt;float: left&amp;lt;/code&amp;gt; För språk som läses ifrån höger till vänster, &amp;lt;code&amp;gt;[[rtl]]&amp;lt;/code&amp;gt;, gäller omvända riktningarna.&lt;br /&gt;
&lt;br /&gt;
Om vi designar en sida,  kan alltså dess utseende förändras beroende på vilket språk som kommer att användas för den. En sida på arabiska kommer att ha &amp;lt;code&amp;gt;direction&amp;lt;/code&amp;gt; satt till &amp;lt;code&amp;gt;rtl&amp;lt;/code&amp;gt;, medan en sida på svenska kommer att ha &amp;lt;code&amp;gt;ltr&amp;lt;/code&amp;gt;. Troligen vill vi att sidans layout ska förändras utifrån textens riktning. Vi skapar ju oftast sidolayout som är beroende på textlayouten ser ut.  Om textutsättningen &amp;quot;spegelvänds&amp;quot; vill vi säkerligen att sidolayouten ska förändras för att återspegla detta.&lt;br /&gt;
&lt;br /&gt;
==== Omvända flexaxlar ====&lt;br /&gt;
Det går även ange  att flexaxeln ska vara omvänd. I normalfallet så växer flexaxeln ifrån vänster till höger, men ibland vill vi ange att den ska göra tvärtom, dvs att den startar på höger sida och växer mot vänster. Nu kanske man tror att &amp;lt;code&amp;gt;[[ltr]]&amp;lt;/code&amp;gt; skulle vara en bra lösning på detta. Problemet är dock att även andra layoutmekanismer påverkas av detta, såsom textlayouten. Lösningen är att använda en omvänd flexaxel, detta anges som vanligt, men med ett efterföljande &amp;lt;code&amp;gt;-reverse&amp;lt;/code&amp;gt;. Ett exempel på detta är; &amp;lt;code&amp;gt;flex-direction: row-reverse;&amp;lt;/code&amp;gt;. När man sätter &amp;lt;code&amp;gt;flex-direction&amp;lt;/code&amp;gt; på detta vis, kommer raden att byggas upp ifrån motsatt sida mot vad den normalt skulle göra.&lt;br /&gt;
&lt;br /&gt;
En vertikal flexaxel börjar normalt i toppen och varje nytt element läggs under föregående. Det vill säga som en kolumn. Dock kan man även här sätta att flexaxeln ska vara omvänd. Då börjar flexaxeln längst ner och varje nytt flexelement placeras ovanför föregående.&lt;br /&gt;
&lt;br /&gt;
=== Korsaxel ===&lt;br /&gt;
Det finns även något som kallas för korsaxel. Det är en axel som är förskjuten 90 grader mot flexaxeln. Det vill säga, om flexaxeln är horisontell, så är korsaxeln vertikal och vice versa. Många layoutegenskaper som har med  flexbox att göra anger hur saker ska placeras längsmed korsaxeln.&lt;br /&gt;
&lt;br /&gt;
=== Samband mellan axlarna ===&lt;br /&gt;
Axlarna är det som styr hur element placeras ut i en flexbox. I bilden ser du hur axlarna skulle se ut om man hade en flexbox vars innehåll placeras ut på en rad (och om &amp;lt;code&amp;gt;ltr&amp;lt;/code&amp;gt; gäller).&lt;br /&gt;
&lt;br /&gt;
[[Fil:Flextermer.png]]&lt;br /&gt;
&lt;br /&gt;
== Demokod ==&lt;br /&gt;
För att kunna visa hur flexbox fungerar, behöver vi lite demokod som vi kan använda för att prova oss fram. Följande kod-exempel är en bra utgångspunkt...&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;WvqbWZ&amp;quot; height=&amp;quot;250&amp;quot; tab=&amp;quot;html,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Att skapa en flexbehållare ==&lt;br /&gt;
För att visa att vi vill använda flexbox och skapa en flexbehållare sätter vi ett elements &amp;lt;code&amp;gt;display&amp;lt;/code&amp;gt;-egenskap till antingen &amp;lt;code&amp;gt;flex&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;inline-flex&amp;lt;/code&amp;gt;, t.ex. så här:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
.flexlåda {&lt;br /&gt;
  display: flex;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elementet som har &amp;lt;code&amp;gt;flexlåda&amp;lt;/code&amp;gt;-klassen kommer nu att bli en flexbehållare och alla dess underelement kommer att bli flex-element.&lt;br /&gt;
&lt;br /&gt;
Om vi lägger till ovanstående rad till vår exempelkod blir det att se ut så här:&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;OVePYW&amp;quot; height=&amp;quot;480&amp;quot; tab=&amp;quot;css,result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
Lägg märke till att lådorna nu samlas på en och samma rad. Vilket alltså är defaultbeteendet för flexboxar.&lt;br /&gt;
&lt;br /&gt;
== Övningar ==&lt;br /&gt;
Här finns [[grundövningar för flex]].&lt;br /&gt;
&lt;br /&gt;
Välj &amp;quot;Edit on CodePen&amp;quot;, för att kunna redigera och genomföra följande övning.&lt;br /&gt;
&amp;lt;codepen pen=&amp;quot;amvvWd&amp;quot; height=&amp;quot;400&amp;quot; tab=&amp;quot;result&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/codepen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nästa aktivitet ==&lt;br /&gt;
[[Flexbox - sätta riktning]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Webbutveckling]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=L%C3%A4r_dig_mer_om_JavaScript&amp;diff=5059</id>
		<title>Lär dig mer om JavaScript</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=L%C3%A4r_dig_mer_om_JavaScript&amp;diff=5059"/>
		<updated>2022-09-08T06:26:13Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Här följer ett antal aktiviteter som kommer att lära dig mer om hur man programmerar i JavaScript.&lt;br /&gt;
== Nybörjarmaterial ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;well&amp;quot;&amp;gt;&lt;br /&gt;
# [[Introduktion till JavaScript]]&lt;br /&gt;
# [[Grunderna i JavaScript-programmering]]&lt;br /&gt;
# [[Att skriva läsbar kod]]&lt;br /&gt;
# [[Olika typer av fel som kan uppstå]]&lt;br /&gt;
# [[Variabler]]&lt;br /&gt;
# [[Villkorssatser]]&lt;br /&gt;
# [[Att jobba med sanningsvärden]]&lt;br /&gt;
# [[Loopar och slingor]]&lt;br /&gt;
#[[Komplexa variabler]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Avancerat matererial ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;well&amp;quot;&amp;gt;&lt;br /&gt;
# [[Introduktion till asynkron programmering]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fortsättning ==&lt;br /&gt;
När du gått igenom ovanstående sektioner kan du fortsätta till dessa sektioner för att lära dig mer om hur man programmerar och skapar webbapplikationer med JavaScript.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well&amp;quot;&amp;gt;&lt;br /&gt;
[[Att_bygga_webbapplikationer_och_-tjänster|Att bygga webbapplikationer och -tjänster]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Föråldrade tekniker ==&lt;br /&gt;
&lt;br /&gt;
jQuery börjar bli lite föråldrat och används inte så mycket längre. Vi använde tidigare jQuery i exemplen på Webbling, men har gjort om alla exempel till [https://plainjs.com/ plainJS]. Vi har dock kvar en sektion som handlar om det. Den kommer inte att underhållas och uppdateras.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well&amp;quot;&amp;gt;&lt;br /&gt;
[[Lär_dig_mer_om_jQuery|Lär dig mer om jQuery]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=L%C3%A4r_dig_mer_om_JavaScript&amp;diff=5058</id>
		<title>Lär dig mer om JavaScript</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=L%C3%A4r_dig_mer_om_JavaScript&amp;diff=5058"/>
		<updated>2022-09-08T06:25:29Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Här följer ett antal aktiviteter som kommer att lära dig mer om hur man programmerar i JavaScript.&lt;br /&gt;
== Nybörjarmaterial ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;well&amp;quot;&amp;gt;&lt;br /&gt;
# [[Introduktion till JavaScript]]&lt;br /&gt;
# [[Grunderna i JavaScript-programmering]]&lt;br /&gt;
# [[Att skriva läsbar kod]]&lt;br /&gt;
# [[Olika typer av fel som kan uppstå]]&lt;br /&gt;
# [[Variabler]]&lt;br /&gt;
# [[Villkorssatser]]&lt;br /&gt;
# [[Att jobba med sanningsvärden]]&lt;br /&gt;
# [[Loopar och slingor]]&lt;br /&gt;
#[[Komplexa variabler]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Avancerat matererial ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;well&amp;quot;&amp;gt;&lt;br /&gt;
# [[Introduktion till asynkron programmering]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fortsättning ==&lt;br /&gt;
När du gått igenom ovanstående sektioner kan du fortsätta till dessa sektioner för att lära dig mer om hur man programmerar och skapar webbapplikationer med JavaScript.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well&amp;quot;&amp;gt;&lt;br /&gt;
[[Att_bygga_webbapplikationer_och_-tjänster|Att bygga webbapplikationer och -tjänster]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Föråldrade tekniker ==&lt;br /&gt;
&lt;br /&gt;
jQuery börjar bli lite föråldrat och används inte så mycket längre. Vi använde tidigare jQuery i exemplen på Webbling, men har gjort om alla exempel till [https://plainjs.com/ plainJS]. Vi har dock kvar en sektion som handlar om det. Den kommer inte att underhållas och uppdateras.&lt;br /&gt;
[[Lär_dig_mer_om_jQuery|Lär dig mer om jQuery]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Elementens-grunder_%C3%B6vningar&amp;diff=5057</id>
		<title>Elementens-grunder övningar</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Elementens-grunder_%C3%B6vningar&amp;diff=5057"/>
		<updated>2022-08-31T19:47:47Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;quiz display=&amp;quot;simple&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{Element skapas med &amp;lt;code&amp;gt;element&amp;lt;/code&amp;gt;-taggen.&lt;br /&gt;
|type=&amp;quot;()&amp;quot;}&lt;br /&gt;
- Ja&lt;br /&gt;
+ Nej&lt;br /&gt;
&lt;br /&gt;
{Man kan nästla taggar av samma typ inuti varandra.&lt;br /&gt;
|type=&amp;quot;()&amp;quot;}&lt;br /&gt;
+ Ja&lt;br /&gt;
- Nej&lt;br /&gt;
&lt;br /&gt;
{Elementens utseende kan skilja sig ifrån webbläsare till webbläsare.&lt;br /&gt;
|type=&amp;quot;()&amp;quot;}&lt;br /&gt;
+ Sant&lt;br /&gt;
- Felaktigt&lt;br /&gt;
&lt;br /&gt;
{Med CSS kan man styra utseendet till 100 %&lt;br /&gt;
|type=&amp;quot;()&amp;quot;}&lt;br /&gt;
- Sant&lt;br /&gt;
+ Felaktigt&lt;br /&gt;
&lt;br /&gt;
{Indentering betyder att man skriver allt med stora bokstäver, så det syns bättre.&lt;br /&gt;
|type=&amp;quot;()&amp;quot;}&lt;br /&gt;
- Sant&lt;br /&gt;
+ Felaktigt&lt;br /&gt;
&lt;br /&gt;
{&amp;lt;code&amp;gt;em&amp;lt;/code&amp;gt; används för att det är något speciellt med elementinnehållet.&lt;br /&gt;
|type=&amp;quot;()&amp;quot;}&lt;br /&gt;
+ Sant&lt;br /&gt;
- Felaktigt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/quiz&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tillbaka till [[Element-grunder]]&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Huvudsida&amp;diff=5056</id>
		<title>Huvudsida</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Huvudsida&amp;diff=5056"/>
		<updated>2021-10-23T12:02:13Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;well well-cocktail&amp;quot;&amp;gt;&lt;br /&gt;
== Välkommen till Webbling ==&lt;br /&gt;
&lt;br /&gt;
Webbling är en öppen lärresurs som är avsedd för dig som vill lära dig mer om   [[Introduktion till webbteknik|webbteknik]], [[webbutveckling]] och [[Lär dig mer om JavaScript | programmering]]. Här kan du lära dig alltifrån hur man skapar enkla webbsidor till avancerade webbapplikationer och webbtjänster. Materialet är främst tänk för dig som går på gymnasiet och läser någon av kurserna inom webbteknik, programmering eller gränssnitt. Förhoppningen är dock att denna resurs kan vara till hjälp för alla som vill veta mer om hur man går tillväga med [[webbutveckling]] och [[Lär dig mer om JavaScript | programmering]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-hearts&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Innehåll ==&lt;br /&gt;
Här finner du [[referensmaterial]], t.ex. [[HTML5-taggar]] och [[CSS-egenskapslista|CSS-egenskaper]] samt mycket [[studiematerial]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
== Nyheter ==&lt;br /&gt;
Alla exempel som använde jQuery är nu omskrivna till plainJS.&lt;br /&gt;
&lt;br /&gt;
jQuery-sektionen är märkt som föråldrad och kommer inte att uppdateras mer.&lt;br /&gt;
&lt;br /&gt;
SPA-exemplen är uppdaterade så de fungerar som de ska.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-mango&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sponsorer ==&lt;br /&gt;
[[Webbutveckling]]sdelen och [[Referensmaterial | referensmaterialet]] angående webbtekniker sponsrades av [http://www.internetfonden.se/ Internetfonden].&lt;br /&gt;
&lt;br /&gt;
Delarna om [[JavaScript]]-programmering, jQuery, Node.js och [[öppen data]] sponsrades av [http://vinnova.se/ Vinnova].&lt;br /&gt;
&lt;br /&gt;
Webbling har delvis tagits fram för att användas som studiematerial vid [http://soltorgsgymnasiet.se Soltorgsgymnasiet] i Borlänge.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-concrete-light&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rättigheter ==&lt;br /&gt;
Allt material på Webbling kan delas i enlighet med följande; &lt;br /&gt;
&lt;br /&gt;
[http://creativecommons.org/licenses/by-sa/4.0/ https://i.creativecommons.org/l/by-sa/4.0/88x31.png]&amp;lt;br&amp;gt;&lt;br /&gt;
Webbling av [mailto:pgj@gnulix.org Patrik Grip-Jansson] och [http://soltorgsgymnasiet.se Soltorgsgymnasiet] är licenserad under en [http://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Erkännande-DelaLika 4.0 Internationell licens]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
	<entry>
		<id>https://webbling.se/index.php?title=Huvudsida&amp;diff=5055</id>
		<title>Huvudsida</title>
		<link rel="alternate" type="text/html" href="https://webbling.se/index.php?title=Huvudsida&amp;diff=5055"/>
		<updated>2021-10-23T12:01:48Z</updated>

		<summary type="html">&lt;p&gt;PGJ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;well well-cocktail&amp;quot;&amp;gt;&lt;br /&gt;
== Välkommen till Webbling ==&lt;br /&gt;
&lt;br /&gt;
Webbling är en öppen lärresurs som är avsedd för dig som vill lära dig mer om   [[Introduktion till webbteknik|webbteknik]], [[webbutveckling]] och [[Lär dig mer om JavaScript | programmering]]. Här kan du lära dig alltifrån hur man skapar enkla webbsidor till avancerade webbapplikationer och webbtjänster. Materialet är främst tänk för dig som går på gymnasiet och läser någon av kurserna inom webbteknik, programmering eller gränssnitt. Förhoppningen är dock att denna resurs kan vara till hjälp för alla som vill veta mer om hur man går tillväga med [[webbutveckling]] och [[Lär dig mer om JavaScript | programmering]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-hearts&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Innehåll ==&lt;br /&gt;
Här finner du [[referensmaterial]], t.ex. [[HTML5-taggar]] och [[CSS-egenskapslista|CSS-egenskaper]] samt mycket [[studiematerial]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-meadow&amp;quot;&amp;gt;&lt;br /&gt;
== Nyheter ==&lt;br /&gt;
Alla exempel som använd jQuery är nu omskrivna till plainJS.&lt;br /&gt;
&lt;br /&gt;
jQuery-sektionen är märkt som föråldrad och kommer inte att uppdateras mer.&lt;br /&gt;
&lt;br /&gt;
SPA-exemplen är uppdaterade så de fungerar som de ska.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-mango&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sponsorer ==&lt;br /&gt;
[[Webbutveckling]]sdelen och [[Referensmaterial | referensmaterialet]] angående webbtekniker sponsrades av [http://www.internetfonden.se/ Internetfonden].&lt;br /&gt;
&lt;br /&gt;
Delarna om [[JavaScript]]-programmering, jQuery, Node.js och [[öppen data]] sponsrades av [http://vinnova.se/ Vinnova].&lt;br /&gt;
&lt;br /&gt;
Webbling har delvis tagits fram för att användas som studiematerial vid [http://soltorgsgymnasiet.se Soltorgsgymnasiet] i Borlänge.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;well well-concrete-light&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rättigheter ==&lt;br /&gt;
Allt material på Webbling kan delas i enlighet med följande; &lt;br /&gt;
&lt;br /&gt;
[http://creativecommons.org/licenses/by-sa/4.0/ https://i.creativecommons.org/l/by-sa/4.0/88x31.png]&amp;lt;br&amp;gt;&lt;br /&gt;
Webbling av [mailto:pgj@gnulix.org Patrik Grip-Jansson] och [http://soltorgsgymnasiet.se Soltorgsgymnasiet] är licenserad under en [http://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Erkännande-DelaLika 4.0 Internationell licens]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>PGJ</name></author>
	</entry>
</feed>