SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
Handledning

Vi skapar en webbsida!
                         - med CSS



    En enkel genomgång hur du kan
    skapa en enkel webbsidesdesign med
    hjälp av html och grundläggande css
Vi skapar en webbsida




      Grundläggande genomgång av hur du skulle kunna bygga
      en enkel webbsidesdesign med hjälp av html och grund-
      läggande css. Främst för webbläsare som följer W3C:s
      rekommendationer, det vill säga följer webbstandarden.



                                     Jonas Lidström, Isegrim




      2
Vi skapar en webbsida




Vi skapar en webbsida!
                                                      - med CSS



Målsättning



V        i ska i den här handledningen lära oss att steg för steg skapa en enkel webbsida. Vi
        kommer att utnyttja teknikens fördelar och begränsningar. Det du lär dig här utgör
        grunden för mer avancerad webbsidesdesign, men vi kommer inte att titta på några
speciallösningar. Sidan som du skapar med den här handledningen kan du sen utveckla på
egen hand, eller med efterföljande handledningar och övningar.




Förberedelse
Skapa ett nytt html-dokument för den här genomgången, vi kan kalla det för min-
css-sida.html. Vi kommer även att definiera egenskaper med css. Du väljer själv om du
jobbar med en extern css-mall eller med intern-css uppe i head-sektionen av html-doku-
mentet. I exemplen kommer jag utgå från att du jobbar med en extern css-mall, skillnaden
mellan extern och intern är inte så stor, så du kan lätta följa med i resonemangen ändå. Vill
du jobba med en extern mall, döp den då till min-css-sida.css och spara den i samma mapp
som min-css-sida.html.




                                                                                             3
Vi skapar en webbsida




      Det finns många wysiwyg-editorer som skapar webbsidor utan att du behöver se hur sidan
      skrivs (där du inte behöver se hur html eller css skrivs). Jag rekommenderar ändå att du
      bekantar dig med hur sidor skapas under ytan, det ger dig större kontroll över innehåll och
      utseende, det ger dig även djupare förståelse för vad som händer.

      Väljer du att jobba med en texteditor, kom ihåg att websidorna skall sparas med filändelsen
      [.htm] eller [.html] och stilmallarna sparas som [.css]. Glömmer du det, kommer webbläs-
      aren öppna filen som en textfil.




             Handledningen är uppdelad i tre steg.



             Steg 1 – HTML - Vi skapar en grundläggande sida

                        Vi lägger upp en grundsida i html och talar lite om struktur.

             Steg 2 – CSS - Vi formaterar dess utseende med css

                        Vi kopplar en css-mall till grundsidan och formaterar sidans utseende.
                        Vi tittar på ett sätt att låta sidan alltid vara centrerad i webbläsar-
                        fönstret. Vi talar lite om hur css skrivs och kopplas till ett html-
                        dokument.

             Steg 3 – MENY - Vi skapar en navigationsmeny

                        Vi formaterar en lista med länkar, skapar nytt utseende samt position-
                        erar länkar både vertikalt och horisontellt. Vi tittar lite närmare på
                        länkar och vi tar upp sidstrukturer igen.




      4
Vi skapar en webbsida



Bakgrund
När du skapar webbsidor med html styr webb-
läsarens inställningar hur sidan visas. Stil och
storlek på bokstäver, visas utifrån de ins-
tällningar besökaren valt eller de standard-
inställningar den aktuella webbläsaren har. Med
attribut som skrivs in i html-taggen, kan man
förändra webbsidans utseende. Men vill man
senare ändra sidans utseende, måste man gå in
på alla ställen där man skrivit in attribut, särskilt
besvärligt är detta om man vill uppdatera flera
webbsidors utseende.


Vad vill vi uppnå
Tanken nu är att vi skall använda oss av en
metod där vi skriver webbsidans utseende med
css. Det hjälper oss att separera sidinnehåll och
utseende. På så vi kan man lättare ändra på
sidans utseende, utan att behöva leta reda på
alla html-attribut. Det ger oss även nya möjlig-
heter, att placera, förändra, färglägga webb-
sidans olika delar. Skriver vi vår css i en separat
fil, kan den även länkas till flera webbsidor.


CSS?
Vad kan man göra med CSS-kod? Styra utseendet på ett element, alla element av en viss typ eller
hela webbsidor. Man kan bestämma placeringen av element och kontrollera elementens i lager
egenskaper. Man kan dölja och visa element och ändra på elementens beteende.

Behöver man lära sig CSS utantill? Nej egentligen inte, men det är bra att lära sig grundprinciperna
och några ofta förekommande attribut, samt hur boxmodellen fungerar.

Vilka ofta förekommande attribut bör man lära sig? Kan givetvis variera, men de grupper jag
rekommenderar är de kopplade till boxmodellen (höjd, vidd, positionering, marginaler och kant), de
kopplade till text (bokstavsstilar, färg, formatering av text), de kopplad till bakgrunder.

Syftet med CSS Om vi delar på innehållet och utseende, kan vi lättare anpassa samma innehåll för
olika plattformar, ska det anpassas för att visas på en skärm, en handdator, en mobiltelefon, via din
spelkonsol eller skrivas ut på papper. För olika situationer behöver man anpassa sidans utseende på
lite olika sätt och om vi ska göra det inne i html-koden, måste vi skapa ett html dokument för varje
anpassning. Tänk då att vi har en hel webbplats, med flera interna sidor. Med hjälp av CSS-mallar kan
vi istället skapa flera utseenden/anpassningar som formar innehållet istället för att skapa flera sidor
med samma innehåll.


                                                                                                     5
Vi skapar en webbsida




      CSS är en förkortning som står för Cascading Style Sheets, vilket vi skulle kunna översätta till skurar
      av stil eller stil som stänker. Förvisso en haltande översättning, men metaforen är inte så dum. För
      css är tänkt att användas som just ett dokument, var ur utseendet (stilen) flödar från malldoku-
      mentet in till webbsidorna och formar webbinnehållet.

      Hur du strukturerar din websida? Du bör alltid märka upp ditt innehåll korrekt, är det en lista
      använder du dig av list element (<ol>,<ul>,<dl>), rubriker märks upp med rubrik-taggar (<h1>, <h2>,
      <h3> … ), textstycken märks upp med paragraftaggen (<p>) osv. Undvik att använda dig av ”fel sorts
      html-tagg” även om slutresultatet blir detsamma. Ibland uppnår du inte önskat utseende, när du
      märkt upp sidan på ”rätt sätt”, men det kan du lätt ändra med css.

      Utöver uppmärkning av innehåll, kan du även gruppera ditt innehåll med grupperings-elementen
      <div> och <span> och på så vis ytterligare dela upp, sortera och placera ditt innehåll. Men se till att
      inte överanvända dig av dem, de behövs inte till allt, uppmärkningen i övrigt är ofta tillräcklig.
      Se det som en möjlighet att skapa större strukturer, som håller samman innehållet på webbsidan.

      Efter uppmärkning är nu allt innehåll antingen på block-nivå (block) eller text-nivå (inline)
      Blocknivå-element, bildar egna enheter, ofta med en radbrytning före och efter elementet. Textnivå-
      element, lägger sig på rad efter varandra, på samma nivå och utan radbrytningar. Även om du kan
      ändra detta beteende, är den generella uppmaningen att man inte bör göra så. Många gånger kan
      man lösa det på andra sätt, ibland kan detta däremot vara att föredra.

      Om boxar, namngivning och sånt. Allt innehåll på en webbsida, varje element (uppmärkt innehåll
      och all text) upptar en viss yta. Innehållet, de olika elementen, kan du nu se som rutor, eller boxar
      med innehåll som du kan bestämma utseendet och placeringen av. Det man ofta benämner som
      elementets box och det är detta som syftas till när man talar om boxmodellen. Boxar är alltså den yta
      som ett element du infogat på din webbsida upptar. Exempel på element: rubriker <h1>, indelningar
      <div>, paragrafer <p>, betoningar <em>, länkar <a> osv, även webbsidan i sig <body>.

      Har man märkt upp innehållet på sin sida (med html-taggar, id-namn, klasser) kan man kontrollera
      hur den ytan ser ut och placeras på webbsidan. Det här är något som oftast sker automatiskt i
      bakgrunden, men med css tar du kommandot över hur det visas.

      Boxar kan tilldelas fler egenskaper, som till exempel höjd och bredd, bakgrundsfärg eller bakgrunds-
      bild, kantlinje, dess bredd, stil och färg, marginal runt boxen och mellanrum mellan boxens kant och
      dess innehåll.

      Boxmodellen är en av CSS grundstenar. Lär man sig hur den fungerar har man kommit en bra bit på
      väg att förstå hur mycket av all CSS fungerar, och varför elementen beter sig som de gör på sidan.
      Men framför allt hur du själv kan ändra dess beteende.



                          CSS förekommer även som ett html-attribut och heter style!




      6
Vi skapar en webbsida



                                                  Vi skapar en webbsida.
                                                                Steg för steg

                                                                   HTML
                       Innan du sätter igång med denna handledning läser du texten om grundläggande html: [html grund] eller samma
                       information hos World Wide Web Consortium (W3C) http://www.w3.org/TR/html401/struct/global.html .

    html                1. Inledningsvis startar vi med ett tomt html-dokument
   &xhtml
Det finns flera
                            I handledningen, kommer bara aktuella förändringar skrivas ut (i några fall, anges även om-
versioner av upp-           givande element i svagare färg). Du placerar förändringarna flera mellan <body>-taggarna,
märkningsspråket
html och det                den del av html-dokumentet som visas i webbläsaren eller i css-mallen.
pågår en ständig
utveckling av det.          Vi kommer att jobba med en extern css-mall, där alla css-deklarationer skrivs in, vi kommer
Det finns dessut-
om en striktare             att växelvis ändra i de båda dokumenten. Det är bra om du ofta sparar och förhandsgranskar,
variant av html,            gärna i olika webbläsare för bästa resultat, under arbetets gång. Det är inte alltid som
som är en kombi-
nation av html              webbsidan ser lika ut i olika webbläsare och på olika plattformar, allt beroende på webb-
och xml – xhtml.
                            läsaren och på användarens personliga inställningar.
” Ett kännetecken
för XHTML är att            Radbrytningar i html-kod är främst till för att få god översikt, det spelar ingen roll om man
strukturens utse-
ende styrs av pre-          skriver html-taggarna på rad efter varandra. Webbläsaren tolkar innehåll och uppmärkning
sentationen; man            korrekt ändå, under förutsättning att man skrivit in den rätt.
använder således
alltid css till pre-
sentationen och             Du kan även ha för vana att lägga in anteckningar i ditt html-dokument och din css-mall, där
html till att bygga
strukturen. För att
                            du berättar vad de olika elementen är och var de börjar och slutar. Öppna en html-mall, eller
därutöver få en             skapa en ny sida från grunden, jobba med html-dokumentet i valfri editor.
websajt att kunna
impleenteras                  Glöm inte att ge sidan en lämplig titel <title>.
crossbrowser vali-
derar vi den ut-             Din sida bör se ut något liknande detta:
ifrån rätt doctype
för att få den att
följa en webb-              1.      <!DOCTYPE … >
standard.”

Ett    html-doku-           2.      <html … >
ment ska deklar-
eras som ett                3.        <head>
text/html , medan
ett xhtml doku-
ment skall deklar-
                            4.           <title>Din sidtitel </title>
eras som antin-
gen       applica-          5.        </head>
tion/xml     eller
application/xhtm
                            6.        <body>
l+xml.

Läs mer:                    7.           <!-- Sidans innehåll här -->
 HTML-grund
                            8.        </body>

                            9.      </html>


                                      Som du ser, har jag inte skrivit ut all information i exemplet ovan,      -
                                   läs den grundläggande texten [html grund] för att skriva in vad som saknas..


                                                                                                                            7
Vi skapar en webbsida




           2. Innehåll

              Vi behöver bestämma oss för vad som skall finnas med på vår sida och hur vi tänkt oss
              fördela innehållet över sidytan. Jag kommer att utgå från en enkel sidlayout, som är lätt att
              variera. Längst upp på sidan sätter vi en titel, man kan tänkas byta ut den mot en bild i ett
              senare skede. Längst ner på sidan placeras kontaktinformation i ett eget fält, som en sidfot.
              Där mellan gör vi plats för annat sidinnehåll, som till exempel texter, bilder, länkar och navi-
              geringsmeny. Även med detta upplägg, kan vi variera sidans layout på flera sätt.




              Utöver val av färg och storlek på de olika enheterna (sidhuvud, sidfot och sidinnehåll), kan
              placering av navigationsmeny påverka intrycket av sidan rätt mycket. Så mycket att vi bör se
              den som ytterligare en enhet och ta den i beräkning när vi lägger upp vårt arbete.

              Nästa steg blir att avgöra hur vi ska märka upp sidan, vilka html-taggar ska vi använda oss av.
              I detta steg, är det viktigare att veta delarnas funktion än hur de skall se ut och placeras.
              Sidhuvudet, sidfoten och sidinnehållet (satsytan) är separata enheter >>block<<, likaså menyn.
              Till de tre första kan vi använda oss av grupperings-taggen <div>, för att skapa avskilda
              enheter. Menyn kommer att bestå av en mängd länkar, vilket passar att placeras i en lista.

              Man kan även tänka sig att vi använder oss av rubrik-taggen <h1> som sidhuvud då den är
              tänkt att användas som sidans titel och man kan tänkas använda en paragraf-tagg <p> till
              sidfoten, då den enbart skall användas till enkel text (kontaktinformation). Ett annat alternativ
              skulle kunna vara att placera texten (kontaktinformationen) inom <address>-taggen, vilket än
              mer gör det till tydlig uppmärkning av innehållet. Resterande sidyta, placerar vi inom en
              <div>-tagg. Vi samlar alla dessa olika delar inom en yttre sammanhållande <div>-tagg, för att
              ordna och placera innehållet som en sammanhållen gemensam yta.



      8
Vi skapar en webbsida



3. Yttre sammanhållande block
  Infoga ett <div>-element på din sida ge div-taggen en unik identitet, förslagsvis något som
  beskriver div-taggens funktion. I det här fallet kommer vi att använda den här div-taggen som
  en yttre ram till allt annat sidinnehåll, jag ger den därför identiteten sidyta *id=”sidyta”+.

   10.      <div id=”sidyta”>

   11.      <!-- här mellan placeras alla andra enheter, som sidhuvud, sidfot, satsyta och meny -->

   12.      </div>


  Det kan vara bra om du tillfälligt placerar lite text innanför <div>-taggar, medan du arbetar
  med dem, då de annars riskeras att inte visas när du förhandsgranskar i en webbläsare. Den
  oformaterade div-taggen baserar sin höjd på innehållet. Saknar den innehåll, kollapsar div-
  taggen ner till en höjd av noll [0], vilket inte är synligt i en webbläsare.

4. Sidhuvud/Rubrik

  Vi behöver avdela en yta för sidhuvudet, du kan välja att göra det med en <div>-tagg men jag
  föreslår att du istället använder dig av ett annat block-element, rubriker. Infoga den största
  rubriktaggen <h1> och ge den en unik identitet, som beskriver dess funktion. Jag väljer att ge
  den beskrivande identiteten sidhuvud *id=”sidhuvud”+. Skriv även in en temporär titeltext.

    11.      <h1 id=”sidhuvud”> Min webbsida! </h1>



5. Sidinnehåll (satsyta)

  Nu lägger vi in en yta för diverse innehåll, som texter, bilder m.m. Eftersom innehållet kan
  variera använder vi oss av grupperingstaggen <div>, i ett senare skede kanske vi vill fylla den
  här ytan olika stycken, kolonner, citat och då vill vi hålla den ytan så öppen som möjligt. Vi
  ska även ge den här ytan en unik identitet. Jag kommer att låna det typografiska uttrycket
  satsyta, för att beskriva den här enheten. Satsyta är inom typografiska sammanhang den del
  av en sida som upptas av text och bild. Jag vill inte ge delen ett namn som är för likt någon
  annan indelning (sidyta-sida-sidinnehåll) och jag bör undvika specialtecken som å, ä och ö.

   12.         <div id=”satsyta”> Tillfällig text </div>

   13.         <!-- placer något mellan så att inte div-taggen kollapsar -->



6. Sidfot

  Infoga nu även en yta för sidfoten, jag väljer att även här använda mig av en <div>-tagg, då
  det inte är säkert att man enbart kommer infoga kontaktinformation här.

   11.         <div id=”sidfot”> Min sidfot! </div>



  Du ger givetvis dina indelningar valfria namn, men se till att det är lätt att förstå vilken det är.


                                                                                                      9
Vi skapar en webbsida



           7. Koppla samman html-dokumentet och extern css-mall

              Innan du fortsätter är det en sak till som vi bör lägga till på html-dokumentet, en länk till
              css-mallen. Glömmer vi länka mellan dokumenten, kan inte webbläsaren veta vilka egen-
              skaper som skall kopplas till element på sidan och lämnar dem därför oformaterade.
              Sammanlänkningstaggen <link> placeras mellan <head> och </head> i html-dokumentet.

               1.       <head>

               2.       …

               3.       <link href="stylel.css" rel="stylesheet" type="text/css" media="screen" >

               4.       </head>


              Man kan koppla flera olika stilmallar (css-mallar) till en och samma webbsida, som anpassas
              för olika [media]. Kommer stilmallar i konflikt med varandra, gäller den som läses in sist.



              Alternativ – intern css

              Du kan även placera din css i html-dokumentet. Skrivsättet är detsamma som för den externa
              mallen, med den skillnaden att det placeras uppe mellan <head>-taggarna. För att webb-
              läsare skall tolka innehållet rätt och inte skriva ut det som text, använder du dig av <style>-
              taggar.

              För äldre webbläsare, som inte kan tolka css eller <style> inte ska läsa och skriva ut koden
              som text, placeras även all css inom komentatorstaggar <! -- … -- >



               1.           <head>…


               2.           <style type="text/css" >

               3.            <!--

               4.                      Css { … }

               5.            -->

               6.           </style>

               7.           </head>




                                                                            Sådär nu är du (nästan) färdig!
                                                             Nu behöver du bara ge den ett nytt utseende…



      10
Vi skapar en webbsida



                                                 CSS
                                             Steg för steg



Öppna upp din css-mall i valfri editor. Det är bra om du under arbetets gång ofta sparar och att du ofta testar
din webbsida i olika webbläsare för bästa resultat; det är inte alltid som det ser lika ut mellan olika webbläsare.




Din sida ser just för tillfället inte så mycket ut för världen, inte ens om jag fyller på med mer text.
Om du lägger till en underrubrik (<h2>), ett kort textstycke (<p>), och ett citat (<blockquote>), inom
<div>-taggen [satsyta], skulle din sida kunna se ut någonting liknande detta:



   <div id=”sidyta”>

   <h1 id=”sidhuvud”>
   <div id=”satsyta” >
           <h2>

             <p>




        <blockquote>


    <div id=”sidfot”>



   Fortfarande inte så spännande, nu ska vi formatera innehållet, ge det nya egenskaper, nytt
   utseende. Så första steget blir att skriva in regelsatser som kopplar till de olika delar vi just
   skapat. En regelsats består av en selektor (ett taggnamn, en identifierare eller klass), följt av
   ett deklarationsblock. Deklarationsblocket skrivs in mellan klamrar [{] och [}].

   Deklarationsblocket samlar alla egenskaper som vi tilldelar ett element, flera egenskaper kan
   radas upp efter varandra om de separeras av semikolon [;]. CSS-regelsatsen får då en syntax
   som består av tre delar:

                                      Selektor, egenskap och värde
                            selektor {egenskap: värde;}
       Vill man ange samma egenskaper till flera selektorer, kan man separera dem med
              kommatecken: Selektor, selektor, selektor {egenskap: värde;}




                                                                                                            11
Vi skapar en webbsida




           1. Förarbete med Stilmallen

              Infoga tomma regelsatser för alla element som du vill påverka, vi kommer att tilldela dem
              egenskaper allt eftersom. Html-taggar skrivs in med enkel text utan hakparenteser,
              identifierare föregås av nummertecknet (#) och klasser föregås av punkt (.).

              Vilka element och id-namn är det då vi har i vårt dokument. Hela webbsidan ligger inom
              <body>, vi har även <h1>, <h2>, <p>, <blockquote> och <div>, div-taggarna och största
              rubriktaggen<h1> har även unika namn (id).

              Skriv bara in de element som du tänkt dig att ändra på och gruppera element som har
              egenskaper med samma värden. I vårt fall är det viktigare att skriva in regelsats för de unika
              namnen (id) än en regelsats för alla <div>-element. Däremot kan vi gruppera <h1> och <h2>,
              som får samma bokstavsstil (font) och sedan ge <h1> unika egenskaper utifrån sitt namn (id).

               1.        body {}

               2.        h1, h2 {}

               3.        #sidyta {}

               4.        #sidhuvud {}

               5.        #satsyta {}

               6.        #sidfot {}



           2. Bakgrund, textstil och färg på brödtext

              Infoga nu egenskaper för <body>, vi kommer att ge den bakgrundsfärg. Här kan man även
              definiera vilken stil och färg vi ska använda till text på webbsidan. Då element ärver (vissa
              men inte alla) egenskaper av sina föräldrar (element som omsluter dem, vilket body-taggen
              definitivt gör), så definierar vi nu utseendet på all text på hela webbsidan.

               1.        body {

               2.            background-color:#066;

               3.            color:#036;

               4.            font-family: "Times New Roman",     Times, serif

               5.        }



              Vill vi använda oss av andra färger eller stilar(font) i någon del av sidan, till exempelvis på
              rubriker, måste vi ange avvikelsen hos de elementen. Det som deklarerats senare, ersätter
              det föregående på de ställen (de element) det är angett.




      12
Vi skapar en webbsida



  Rubriker

  Nu lägger vi till gemensamma egenskaper för alla rubriker, du kan skriva in rubriknivå tre
  även om den inte förekommer i dokumentet, så är du beredd på eventuella framtida
  förändringar. På så vis behöver du bara märka upp webbsidan korrekt för att få en tydlig
  lättläst layout, med rubriker som avviker från brödtexten.

   6.        h1, h2, h3 {

   7.            color: #005; font-family: Arial, Helvetica, sans-serif;

   8.        }




3. Ge sidelementen bakgrundsfärg

  Under tiden du jobbar med sidlayout kan du med fördel ge de olika ytorna (boxarna) en unik
  bakgrundsfärg, så att du lättare ska kunna hålla reda på hur de placerar sig i förhållande till
  varandra. Det behöver inte vara ”rätt färger” så här i början, det spelar inte så stor roll vilka
  färger det är, så länge de inte är samma. Vi kommer sedan att ta bort bakgrundsfärgen eller
  byta ut den mot en som lämpar sig bättre för det intryck vi vill uppnå.

   9.        #sidyta {

   10.       background-color: #33f;

   11.       }

   12.       #sidhuvud {

   13.       background-color: #ff3;

   14.       }

   15.       #satsyta {

   16.       background-color: #f55;

   17.       }

   18.       #sidfot {

   19.       background-color: #3f3;

   20.       }



  Förhandsgranska sidan i en webbläsare, du kommer se de olika ytorna i den färg som du
  tilldelat dem. Saknar du någon yta, dubbelkolla om ytan saknar innehåll. Är den tom, skriv
  tillfälligt in något eller några ord.




                                                                                                13
Vi skapar en webbsida



           4. Sidhuvudet

              Vi börjar med att förändra sidhuvudet. Första steget blir att göra rubriken centrerad på sidan,
              det gör vi med text-attributet [text-align]som vi ger värdet [center]. Förhandsgranskar vi
              sidan kan vi nu se att texten är centrarad. Du kan passa på att byta textfärg [color] och
              bakgrundsfärg [background-color]på sidhuvudet om du vill.

              Vill du att texten inte skall ligga så nära överkanten av sidhuvudet, lägger du till lite marginal
              mellan innehåll och sidhuvudets yttre kant [padding]; pröva dig fram hur mycket du behöver.
              Det kan även vara läge att definiera en fast höjd [height] på sidhuvudet, kom ihåg att du
              måste skriva ut enheter (pixlar skrivs px) i css.

               7.        #sidhuvud {

               8.        background-color: #...;

               9.        color: #...;
                               /* ändra bara färgen här om den ska avvika från det du angett för rubriktaggar tidigare */

               10.        text-align:center;

               11.       height: 75px;

               12.       padding-top: 10px;

               13.       }


              Om man vill ersätta sidhuvudets bakgrund med en bild gör du det med bakgrundsattributet
              [background-image] enligt följande:

               7.        background-image:url(...här skriver du in sökväg och bildens namn);




           5. Sidfoten

              Definiera på samma sätt, ny bakgrundsfärg och textfärg som passar till den på sidfoten. Skriv
              även in sidfotens höjd och inre marginaler.

               8.        #sidfot {

               9.        background-color: #...;

               10.       color: #...;

               11.       height: 75px;

               12.       padding: 5px;

               13.       }


              Samma gäller som ovan, att om du vill ersätta bakgrundsfärgen med en bild, så använder du
              dig av bakgrundsattributet [background-image].



      14
Vi skapar en webbsida



6. Satsytan, ytan för sidinnehåll

   Den här ytan ska vi inte göra så mycket med, den kommer att vara behållare för alla delar
   som du stoppar in på din sida; som texter, bilder m.m. Så vi vill inte ge den en fixerad höjd, så
   att vi begränsas av hur mycket som ryms på höjden. Däremot vill vi inte heller att den ska
   vara för liten, när vi saknar innehåll. Därför ska vi definiera minsta önskade höjd med
   attributet [min-height] Min-height, gör så att om innehållet är större än ytan, expanderar
   den, men är den mindre stannar den vid den storlek vi valt.

   14.        min-height: 200px;



   Marginaler

   För att snygga upp ytan och lyfta fram dess innehåll, lägger vi till marginal mellan ytans yttre
   kanter och dess innehåll, så kallad inre marginal [padding]. Men vi vill kanske inte använda
   oss av samma marginaler hela vägen runt om, kanske man kan ha större på vänster och
   höger sida än uppe och nere. För detta kan vi använda oss av två metoder, den ena är att
   definiera inre marginal för var och en av dem (padding-top, padding-right, padding-bottom
   och padding-left) eller så skriver vi det i en förkortad form:

   15.        padding: 10px 50px 10px 50px;


   Marginalen, anges då i ordningen top,right, bottom, left - alltså medsols. Har dessutom top -
   bottom och right -left samma värden som ovan, kan man förkorta ner det ytterligare.


   15.        padding-top: 10px 50px;




   Bakgrund

   Välj även en passande bakgrundsfärg till ytan, tänk på vad du skall fylla sidan med, ofta
   fungerar en ljus yta bättre. Detsamma gäller att en enfärgad yta ofta passar bättre än en
   brokig (som till exempel en bild). Pröva dig fram till vad som passar just din designidé.

   15.        #satsyta {

   16.        background-color: #...;

   17.        color: #...;

   18.        min-height: 200px;

   19.        padding: 10px 50px;

   20.        }




                                                                                                 15
Vi skapar en webbsida




           7. Centrera hela sidan och definiera dess bredd

              Nästa steg blir att centrera allt innehåll på vår sida, till det ändamålet ska vi använda oss av
              den omslutande <div>-taggen [sidyta]. Vi kommer att använda oss av boxegenskapen för
              yttre marginal [margin], den som anger marginal mellan box och omgivande element. I det
              här fallet är det enbart <body> som omger div-taggen [sidyta], vilket kommer göra så att den
              alltid är centrerad i webbläsarfönstret.

              Men vi vill inte centrera både lodrätt och vågrätt, utan enbart vågrätt (åt sidorna), vi anger
              därför enbart marginalvärden för höger och vänster marginal. Höger [margin-right] och
              vänster [margin-left], vi ställer in värdet till [auto]. Värdet [auto] anger i det här fallet att
              marginalen skall bli så stor som möjligt och eftersom vi anger [auto] på både höger och
              vänster sida fördelas ytan mellan dem; och sidan centreras.

              För att det här ska fungera, måste vi också ange bredd på sidytan [sidyta]. Det förhands-
              inställda beteendet hos blockelement gör så att den upptar en hel radbredd, den breder ut
              sig på så stor bredd som finns tillgänglig. Vilket då gör så att det inte finns något utrymme
              kvar för marginalen (som när den är inställd på [auto] tar det utrymme som blir över).



               21.       #sidyta{

               22.       margin-left: auto;

               23.       margin-right: auto;

               24.       width: 680px

               25.       }




                                                                                 Sådär, nu är du färdig!
                                                               Nu behöver du bara en navigationsmeny…




      16
Vi skapar en webbsida



                                                     LÄNKAR
                                                En kort beskrivning



      Om du känner dig säker på hur man skriver och använder länkar, kan du hoppa över det här kapitlet och
      fortsätta direkt med nästa kapitel - meny. Du kan även läsa mer om länkar i den grundläggande texten:
      [övning: länkar] och på World Wide Web Consortium (W3C) http://www.w3.org/TR/html401/struct/links.html




<a>       Inledning

          Även om det är ett enkelt koncept, har länken varit en av de främsta drivkrafterna till
          framgång för webben. En länk <a> är en förbindelse från en webbsida till en annan punkt
          på internet. Man kan länka inom en och samma webbsida likväl som till en annan webbsida,
          som ligger på eller utanför den egna webbplatsen/servern.

          En länk har två ändar - kallade ankare - och en riktning. Länken startar vid ett "käll-ankare"
          (den klickbara ytan) och pekar mot ett "destinations-ankare", t.ex. en webbplats, en bild,
          ett videoklipp, ett ljud, ett program, ett HTML-dokument, ett element i ett HTML-dokument
          osv.

          När länk-taggens [href] attribut är satt, definierar elementet det en källa (ankare) för den
          länken, som kan aktiveras av användaren (genom att klicka) för att hämta en webbresurs.
          Den hämtade webbresursen kan hanteras av webbläsaren på flera sätt: Genom att öppna
          ett nytt fönster, genom att öppna i samma fönster som webbsidan med länken (och då
          ersätta innehållet med den nya sidan, eller innehållet), genom att starta ett program för att
          hantera källan (destinationsankaret: ett ljud, en film, ett dokument et.c.).

          Länk-attributet [target] kan berätta för webbläsaren om den skall öppna destinations-
          ankaret i ett nytt fönster *target=”_blank”+ eller i samma fönster [ target =”_self”+, men kan
          även länka till en namngiven yta (frame) *target=” … ”+ (där man då skriver in ytans defini-
          erade [name]). Anger man inte [target], utgår webbläsaren oftast från att destinations-
          ankaret ersätter källan (sidan med länken). Så man behöver inte skriva in attributet om det
          är det här beteendet man vill uppnå.

          När ett [name] eller [id] attribut finns angivet hos länk-taggen kan länken fungera som ett
          ankare, som kan användas av andra länkar att länka till, även inom en webbsida. På samma
          sätt, kan en länk-tagg länka till ett element på en webbsida, om den har en unik identitet.

          Man kan med fördel använda sig av [title] attributet i länk-taggen för att ge mervärde och
          information till användaren om länken. En [title] kan även läsas upp av talsyntes eller visas
          av webbläsaren.

          <a href=”… destination ” name=” … ” id=” … ” title=” Beskrivning av vad länken leder till” > Vad som syns </a> .




                                                                                                                       17
Vi skapar en webbsida



                       Hur länkar ser ut, och hur du vill att de ska se ut på din webbsida?

                       När en text formaterats till en länk, visas detta ofta genom att texten ges ett avvikande och
                       framträdande utseende. Webbläsaren brukar även visa länkens nuvarande tillstånd: att det
                       är en länk; att det är en besökt länk; att det är en aktiv länk. Muspekarens utseende ändras i
                       de flesta fall hos webbläsaren (från pil  till hand), när den ligger ovanför en länk.
     länkar
Tänk på att det fin-    Vanligast förekommande förändring av länktexter är textfärgen. Visa att det är en länk
ns en anledning till    genom att göra länktexten blå och göra den understruken, visa att en länk redan är
att länkar är utmär-
kta och avvikande,      använd genom att göra den lila och medan länken är aktiv/klickas på/används visa den
det är meningen att     som röd. Webbläsaren kan även visa att länken är markerad/vald/i focus genom att ge
man ska hitta dem
– förstå att de går     länken en ram av prickar, länkar kan få en ny färg när muspekaren ligger ovanför länken.
att klicka på!

                       Med CSS kan du förändra de förhandsinställda länkfärgerna, men även ge länkar nya
                       egenskaper. Du kan ge länkar de flesta block-, text- och font-egenskaper, även om länkar är
                       inline-element, vilket är väldigt användbart.

                       CSS exempel

                       Exempel på egenskaper du kan ge: kantlinje (border – widht, -color, -style), marginaler (padding,
                       margin) bakgrund (background -color, -image, -position), positionering (position, top, float …)m.m.

                         1.            a{        font-family: Tahoma, Geneva, sans-serif;

                         2.                      font-size: xx-large;

                         3.                      font-weight: bolder;

                         4.                      color: #F90;

                         5.                      text-decoration: none;

                         6.                      background-color: #0FC;

                         7.                      text-align: center;

                         8.                      margin: 5px;

                         9.                      padding: 5px;

                         10.                     border: thin double #00F;

                         11.       }

                         12.       /* … och så vidare … */



              Display kan växla ett element från att bete sig som ett inline till att bete sig som ett block-element och
                       vice versa. Man kan även välja display:none; för att dölja elementet helt och hållet .

                         13.                a { display: block; … }




             18
Vi skapar en webbsida



                          Text-decoration, color, background, font-size och text-align


    font-size
                               text-decoration:        har flera val (läs mer om det i css text och font-övningarna), men
  Användaren kan
  ändra inställnin-
                                                       vill du ta bort understrykningen hos länkar skriver du in[none], vill
  gen för bokstäv-                                     du få den att blinka skriver du [blink] och vill du återställa
  ernas storlek i sin
  egen webbläsare.                                     understrykningen skriver du [underline].

  Dessutom kan det             color:                  ger texten en ny färg, välj mellan webbfärgnamn eller skriv in det
  skilja mellan olika
  webbläsare     hur                                   med hexadecimaler [#RRGGBB] (läs mer om det i webbfärger).
  stor skillnad det
  blir.
                               background-color:       ger bakgrunden till länktexten en ny färg.
  Ett enkelt fix för
  detta är att tilldela        background-image:       ger dig möjlighet att använda en bild som bakgrund till länktexten,
  ett attribut till
  <html> med css                                       tänk på att ytan begränsas av radlängd och radhöjd (läs mer om
  och sätta textstor-                                  hur du kan påverka detta i css text och fontövningarna).
  leken till 100.01%

  Html {                       font-size:              ändrar storleken på bokstäverna (läs mer om hur du kan påverka
  font-size:100.01%
  }                                                    detta i css text och fontövningarna).
  För att sen sätta
  storleken på text i          text-align:             ändrar justeringen av texten, normalt är text vänsterjusterad
  t.ex <body>.
                                                       [left], men du kan även välja högerställd [right], centrerad [center]
                                                       och marginaljusterad (dvs rak kant både åt höger och vänster) [justify].

                          Pseudoklasser

                          Det finns några speciella selektorer som främst är kopplade till länkar och som inte kan
                          användas på egen hand, utan måste kopplas till en html-tagg, en id-selektor eller en klass-
                          selektor. De sätt direkt efter aktuell selektor avskild enbart av ett kolon ( : ). Dessa selektorer
                          kallas för pseudoklasser och kan inte användas separat

    LVHA(f)               De vi ska titta på här är kopplade till länkarnas olika tillstånd:
Ordning på pseudo-
klasserna är viktiga             :link            är en normal obesökt länk, länkens normaltillstånd.
just för hur webb-
läsare läser in dem.             :visited         är en besökt länk, visas när man kommer tillbaka till sidan.
Den senare regeln
ersätter föregående              :hover           är ett tillstånd när muspekaren placeras (svävar) ovanför länken.
om det uppstår en
konflikt dem emel-
lan.
                                 :active          är ett tillstånd när länken är vald, klickas eller används.

                                 :focus           är ett tillstånd när webbläsarens fokus ligger på länken.



                          När du skriver in pseudo-klasserna i ditt css-dokument, måste de skrivas in i den ordning som
                          du ser ovan (för att fungera fullt ut) men du behöver inte definiera dem allihop. Det finns
                          väldigt mycket man kan göra för att lyfta fram sina länkar på en webbsida, men ibland vill
                          man även att länkarna skall smälta in i en löptext. Pseudo-klasserna [:active]och [:focus]
                          brukar glömmas bort, men det är lika viktigt som de andra, dels för att underlätta
                          tillgängligheten och dels för att betona det aktiva tillståndet.


                                                                                                                            19
Vi skapar en webbsida



                        Du kan ge varje tillstånd egna egenskaper, på samma sätt som du kan ge länktaggen
                        egenskaper. Du kan även skriva en deklaration för <a>-taggen som gäller för sidans alla
                        länkar. Det skall då vara allmänna värden, som till exempel textens stil (font) eller annat
                        som inte skall ändras och som gäller för alla tillstånd på sidans länkar. Det vanligaste är att
                        ändra länktextens färger, ta bort understrykningen och ge länken olika bakgrund beroende
                        på i vilket tillstånd den befinner sig i.

                          14.         a { font-family: arial, sans-serif;}

                          15.         a:link { background-color: #fff; color: #000;}

                          16.         a:visited { background-color: #eee; color: #333;}

                          17.         a:hover { background-color: #000; color: #fff;}

                          18.         a:active, a:focus { background-color: #333; color: #eee;}




                             Du skriver enbart in de förändringar som skall göras (textfärg, bakgrundsfärg et.c.).




                        Du kanske noterar att i exemplet ovan både finns angett en regel för länkar i allmänhet [a]
                        och länkars normaltillstånd/oanvänd länk [a:link], vilket kan tyckas onödig dubbel-
                        skrivning. Men det står med där, för att skilja på vilka egenskaper alla länkar skall ha,
                        oavsett tillstånd och vad som hör till ett aktuellt tillstånd. Vi vill inte att webbläsaren skall
                        sluta använda vissa egenskaper bara för att länken används, är besökt, osv och vi vill slippa
  a och a:link          skriva samma egenskaper (med samma värde) flera gånger. Därför skriver du bara in det
Pseudoklassen [:link]   som skall förändras i de olika tillstånden.
letar efter närvaron
av - [href] - i det
element som regeln
                        Men du behöver även vara medveten om att när du deklarerar en regel för [a] omfattar
för pseudoklassen är    den även länkar som fungerar som ankare inom ett dokument (de som inte länkar till en
kopplad till. Saknas
denna, tolkar webb-     plats utan till en identitet eller ett namn). Vill man inte att regeln skall omfatta även kapitel
läsaren det inte som    och styckes referenser inom dokumentet, utan enbart länktaggar som används till externa
en länk (:link).
                        länkar, kopplar man regeln till [a:link] enbart.




          20
Vi skapar en webbsida



                                                               MENY
                                                             Steg för steg


               Öppna upp både din css-mall och ditt html-dokument i valfri editor. Vi kommer att lägga till länkar och bygga
               en meny av dem, menyn skapas delvis med hjälp av css. Du kan om du vill, jobba med menyn i ett separat
               projekt/dokument och kopiera in den när du är färdig. Det är bra om du under arbetets gång ofta sparar och
               att du ofta testar din webbsida i olika webbläsare, det är inte alltid som det ser lika ut mellan olika
               webbläsare. Känner du dig osäker, läser du föregående beskrivning av och korta genomgång om länkning.



                  1. Länk, lista, navigeringsmeny

            A      Infoga minst en länk i ditt html-dokument, har du inget att länka till kan du som länkmål
                    skriva in nummertecknet (#) eller en blanrad ( ).

                           19.              <a href=”#” title=” en länk”> Länk </a>

           A
           B       Du kan även placera din länk i en lista, särskilt om du har flera. Fördelen med att lägga länkar
                    inom en lista är att de blir tydligt uppdelade även om sidformateringen (css) går förlorad eller
                    stängs av. Man kan man även argumentera för att en samling länkar är just en >> lista << med
                    länkar, så då blir det även semantiskt rätt när man märker upp sidan.

                           1.     <ul>
    href=”#”
                           2.             <li> <a href=”un.html” title=” Una enlace muy interesante” > Un </a>
En del webbläsare
förstår inte använd-       3.             </li>
andet av tomma län-
kar eller länkar som       4.             <li> <a href=”dos.html” title=” Una enlace muy interesante” > Dos </a>
inte leder någon-
stans. Som vid använ-      5.             </li>
dandet av – [#] - som
länkmål. Stöter du på
                           6.             <li> <a href=”tres.html” title=” Una enlace muy interesante” > Tres </a>
problem, hitta på en
länk som ser rätt ut,
eller länka till något
                           7.             </li>
tillfälligt.
                           8.     </ul>

                         Nästa steg blir att förändra utseendet hos de här länkarna och listan, så att de ser ut som en
                         del av sidans grafiska utformning, så det mer är en navigeringsmeny än text. Men redan nu
                         bör du bestämma dig för hur menyn ska placeras och hur stor yta den får uppta.

                         Vi ska titta på tre enkla menyer, som skapas på lite olika sätt, den första skapas med enbart
                         formaterade länkar, de andra två utgår från länkar i en lista. Du kan läsa den första separat
                         och slutresultatet kommer att bli en färdig meny, eller så kan du hoppa över den och läsa
                         direkt om de två andra. Utseendet, det visuella slutresultatet kan bli detsamma med bägge
                         arbetssätten, det som skiljer dem åt är hur de visas när css saknas eller är avstängt.

                   Känner du dig osäker, kan du med fördel välja den första menyvarianten, då den är enklare
                         och innehåller färre moment. Vill du i ett senare skede byta till en lista är det följer du bara
                         stegen för en meny skapad av listor.



                                                                                                                         21
Vi skapar en webbsida



   A        1.1. Meny, av enbart länkar

               Du har nu minst en länk, förslagsvis flera, så att du kan se hur de kommer att se ut på din
               webbsida. Vi kommer nu att ge länkarna nytt utseende och göra så att de ändras när man
               interagerar med dem (använder länken). Du väljer givetvis färg och stil efter vad som passar
               just på din sida, jag kommer att göra mina länkar fetstilta, ändra bokstavsstilen(font), ta bort
               understrykningen, ändra bokstävernas färg till mörkblå och ge dem en gul bakgrundsfärg.

               Öppna upp din stilmall (css-dokument) och lägg till en regelsats för länktaggar <a>:

                  1.          a {

                  2.                font-weight: bold; /* fetstilt text */

                  3.                font-family: Arial, Helvetica, sans-serif; /* ny font */

                  4.                text-decoration: none; /* tar bort understrykning */

                  5.                color: #009; /* mörkblå textfärg */

                  6.                background-color: #ff0; /* gul bakgrundsfärg */

                  7.      }


               Spara både ditt html och css-dokument och förhandsgranska resultatet. Du kommer nu att se
               hur alla länkar på webbsidan fått det nya utseendet. Du märker även hur länkarna ligger tätt
               ihop, sida vid sida och att den gula bakgrunden ligger precis bakom länktexten.

                                               Vi ska därför lägga till utrymme, yta för bakgrunden att breda ut
                                               sig på. Det gör vi med inre margnal, [padding], pröva dig fram till
                                               hur mycket som behövs, här lägger vi till tio pixlars extra höjd
                                               och bredd (fem pixlar från innehållet och utåt).

                                                1.            {… padding: 5px; …}


               Nu ser det lite bättre ut, vi skulle kunna nöja oss med detta om vi ville, men vi kan även lätt
               lägga till fler egenskaper. Kanske vill vi ha en ram runt länken, det gör vi med egenskapen
               kantlinje [border]: (border-color, border-style, border-width). Kanske vill du öka avståndet
               mellan länkarna (utan att för den skull öka den färgade ytan), det gör du med yttre marginal
               [margin]: (margin-top, margin-right, margin-bottom, margin-left).

                                                     2.   {…

                                                     3.   border: #009 thin solid;

                                                     4.   margin-left: 10px;

                                                     5.   }


               Även om storleken på länkknapparna styrs av länktextens längd, har vi kommit en lång väg
               mot att skapa oss en webbsidesmeny, nästa steg blir att lägga till interaktivitet.



       22
Vi skapar en webbsida



         :link, :visited, :hover, :active, :focus.

         Lägg till pseudoklasser för länktaggen, kom ihåg ordningen och att enbart skriva in vad som
         skall ändras (t.ex. bakrundsfärg och passande textfärg). Har flera pseudoklasser samma
         värde, kan du med fördel bunta ihop dem, kom ihåg att separera dem med komma [ , ].

             6.            a:visited { color: #449; background-color: #880;}

             7.            a:hover{ color: #490; background-color: #940;}

             8.            a:active, a:focus{ color: #6f0; background-color: #f60;}




                                         Här, de tre olika tillstånd som vi angett ovan. Först en besökt
                                         länk (visited), sedan en med muspekaren över (hover) och
                                         sist en länk som är i fokus/är aktiv (active/focus). Vi kan
                                         även se länktiteln (title) när muspekaren ligger över länken.

         Man kan med fördel samla alla länkarna som skall utgöra länkmenyn inom en <div>-tagg,
         dels för att man då kan ge hela menyn en bakgrundsfärg, kantlinje och så vidare, men även
         för att avskilja dem från annat innehåll på sidan.

         Vill man använda sig av fler länkar, men inte att också dessa skall få samma formatering som
         en menylänk, gör vi det lättast på följande vis.

       Samla alla menylänkar inom en <div>-tagg och ge den en unik identitet [id], till exempel
         meny *id=”meny”+. Koppla sedan id-selektorn till länkar som ligger innanför div-taggen
         genom att skriva in id-namnet som en del av css-regeln för menytaggarna. Du åstadkommer
         detta genom att framför varje länkregel även skriver id-namnet följt av ett mellanslag.

         Regeln läses då av webbläsaren som: länk inom namngivet element; och inga andra länkar på
         sidan ände innanför div-taggen påverkas av css-reglerna.


html       1.        <div id=”meny>

           2.        <a href=”#” title=”Länk” > Länktext </a>

           3.        </div>


                  Du kan även passa på att ge div-taggen som omger länkarna egna egenskaper.

css        1.        #meny { … } /* egenskaper till den omslutande div-taggen */

           2.        #meny a { … } /* länkar innanför ett element med id=meny */

           3.        #meny a:visited { …} /* besökt länk*/

           4.        #meny a:hover{ …} /* lank när muspekaren “hänger” ovanför */

           5.        #meny a:active, #meny a:focus { … } /* flera med samma värden */




                                                                                                     23
Vi skapar en webbsida



  B1        1.2. Vertikal meny av lista med länkar

               Du har nu minst en länk [a], förslagsvis flera, placerade i en lista. Det spelar ingen roll om det
               är en numrerad (ordered list [ol]) eller onumrerad punktlista (unordered list [ul]), för vi
               kommer att ta bort listpunktmarkeringarna. Vi kommer även att ge länkar och lista nytt
               utseende, samt göra så att de ändras när man interagerar med dem (använder länken).

               Fördelen med att lägga länkar inom en lista är att de blir tydligt uppdelade även om
               sidformateringen (css) går förlorad eller stängs av. Man kan man även argumentera för att en
               samling länkar är just en >> lista << med länkar, så då blir det även semantiskt rätt när man
               märker upp sidan.


                                                     Länk i lista
                                                     Länk utan lista


                 När css formateringen går förlorad syns länkar i en lista tydligare, än länkar lagd efter var-
                 andra, därför underlättar du sidnavigeringen även för dem som inte kan se formateringen.


                 9.     <ul>

                 10.        <li> <a href=”un.html” title=” Una enlace muy interesante” > Un </a> </li>

                 11.        <li> <a href=”dos.html” title=” Una enlace muy interesante” > Dos </a> </li>

                 12.        <li> <a href=”tres.html” title=” Una enlace muy interesante” > Tres </a> </li>

                 13.    </ul>

               Nästa steg blir att förändra utseendet hos de här länkarna och listan, så att de ser ut som en
               del av sidans grafiska utformning, så det mer är en navigeringsmeny än text.

               Vi kommer att utnyttja att listor är blocknivå-element och forma listans utseende och storlek,
               på så vis behöver vi inte lägga till ytterligare behållare (sidavdelare, som t.ex en div-tagg).

               Ge list-elementet en unik identitet, förslagsvis något som beskriver dess funktion. I det här
               fallet kommer vi att använda den här list-taggen som en yttre ram till allt menyinnehåll, jag
               ger listytan därför identiteten meny *id=”meny”+.

                  9.      <ul id=”meny” > …

               När vi sedan formaterar listan (som nu har namnet [meny]), listposterna [li] och länkar [a]
               i listan, kopplar vi ihop dem på följande vis:

                  1.      #meny { … } /* egenskaper till den omslutande list-taggen */


                  2.      #meny li { … } /* egenskaper till list-posternas yta */


                  3.      #meny li a { …} /* egenskaper till länkar inom en listpost */




       24
Vi skapar en webbsida



       Formatera listan

       Det finns några få listspecifika egenskaper du kan ändra hos listor med CSS:


       1.      ul {

       2.      list-style-type: xxx; /* listposternas inledande numrering eller symbol */

       3.       list-style-position: xxx; /* placera symbolen/numret innanför eller utanför */

       4.      list-style-image: url( xxx ); /* byta ut listpostens inledande numrering/symbol mot en bild */

       5.      }



       Du kan ändra på listposternas inledande numrering eller symbol, placera symbolen/numret
       innanför eller utanför listan eller byta ut listpostens inledande numrering/symbol mot en
       bild. Utöver detta är det intressant att veta att både listan i sig själv (ol och ul) och
       listposterna (li) är block-element, så man kan påverka deras utseende på samma sätt som
       boxar i övrigt (höjd, bredd, bakgrund, kantlinje, marginaler, …).

       Vi att använda oss av en ospecifierad lista (ul) men ändra gärna tillfälligt till en numrerad
       lista (ol) för att pröva de olika numreringsalternativen.


<ul>   Ospecifierad lista: Pröva skriv list-style-type:
                       disc (för en lista med fyllda punkter)
                       circle (för en lista med cirklar)
                       square (för en lista med fyrkanter)
                       none (för en lista utan inledande symbol på listposten)

<ol>   Specifierad lista: Pröva skriv list-style-type:

                   1.   decimal eller decimal-leading-zero (för en vanlig numrerad lista)
                   2.   upper-latin, upper-alpha
                   3.   lower-latin eller lower-alpha (för en lista ordnad med bokstäver: a b c …)
                   4.   lower-roman eller upper-roman (för en lista romerskt numrerad I II III IV…)
                   5.   armenian, georgian eller lower-greek etc (för språk specifik numrering)
                   6.   none (för en lista utan inledande symbol på listposten)

       Ta bort inledande symbol genom att specificera värdet [none] till [list-style-type].

         1.             #meny {

         2.             list-style-type: none; /* listposternas inledande numrering eller symbol */

         3.             }




                                                                                                                 25
Vi skapar en webbsida



              Färg och form

              Vårt nästa steg blir att ge listytan (den yta listan utgör) bakgrund och form, vi börjar med
              bakgrundsfärg [background-color]. Du kan givetvis även använda dig av bakgrundsbilder,
              men här håller vi oss nu till att välja bakgrundsfärg.

                 1.         #meny {

                 2.         background-color: #f90; /* vi tilldelar listan boxegenskapen för bakgrund */

                 3.         }




              Block-element upptar hela sidbredden om man inte anger en begränsning, vi ska därför ange
              en fast bredd till listan [width]. Vi ska även lägga till lite inre marginal [padding], så att inte
              texten ligger så nära ytans ytterkanter.

                 1.         …

                 2.         width: 50px; /* vi tilldelar listan boxegenskapen för bredd */

                 3.         padding: 5px; /* vi anger inre marginal */

                 4.         …


                                               Vi har nu tre ytor som vi kan påverka utseendet på, ytan
                                               för hela listan, ytan för varje listpost/listrad och ytan för
                                               varje länk. Varje yta kan tilldelas egen bakgrund, egna
                                               kantlinjer, egna marginaler osv …

                 1.         #meny {background-color: #000; } /* bakgrund till menyn (listan) */

                 2.         #meny li {background-color: #000; } /* bakgrund till listpost/listrad */

                 3.         #meny li a {background-color: #000;} /* bakgrund till länktexten/länkyta */



              Det är med detta vi ska skapa vår navigationsmeny, men vägen dit kan variera, liksom
              slutresultatet. Det finns så mycket som du kan förändra, så kombinationsmöjligheterna är
              många, bara val av färg, kantlinje och bakgrund ger dig mer än nog. Tänk också på att du kan
              ge ytans olika sidor (top, right, bottom och left) egna värden, både vad gäller marginaler och
              kantlinjer. Vilket gör att du lätt kan skapa klassiska ”knappar”, som du ”kan trycka ner”, likväl
              som grafiskt enkla ”understrykta länkar”, som ändrar färg på linjen vid interaktion med
              länken och grafiskt utsmyckade länkar som ändrar färg och form.



              Formatera                                                                               länktexten



      26
Vi skapar en webbsida



Vi ska nu göra de nödvändiga förändringar som behövs för att förvandla länkarna från vanliga
länkar till menyknappar. Det vi börjar med är att definiera hur länkarna ska se ut i allmänhet.
Vi vill inte att våra länkar skall ha det typiska utseende och beteende som man förknippar
med länkar. Som att länkar är blå och understrukna, så därför tar vi bort understrykningen
med deklarationen [text-decoration: none;] och definierar en ny länkfärg med deklarationen
[color: #000;] (givetvis väljer du en färg som passar, här valde vi svart).

  1.          #meny li a {

  2.          text-decoration:none; /* tar bort understrykning */

  3.          color: #000;             /* definierar textens färg */

  …


Vi kan även definiera vilken stil (typsnitt, font) vi vill ha på länktexten med deklarationen
[font-family: Helvetica, Arial, sans-serif;] även om det inte direkt hör till länkars förinställda
beteende.

  4.          …

  5.          font-family: Helvetica, Arial, sans-serif; /* anger stil på bokstäver */


            Samt blockegenskaper som bakgrundsfärg, marginaler och kantlinjer.

  6.          … background-color: #fff; /* bakgrund till länktexten/länkyta */ …

                             /* m.fl. men dock inte höjd och bredd,
                     läs nedan [Formatera länkarnas elementegenskaper] */


  7.            }


Här placerar du även deklarationer för att centrera texten [text-align], om du betonar den på
något vis (t.ex fetstilt eller kursivt) [font-weight] och [font-style].



:link, :visited, :hover, :active, :focus.

Lägg till pseudoklasser för länktaggen, kom ihåg ordningen och att enbart skriva in vad som
skall ändras (t.ex. bakrundsfärg och passande textfärg). Har flera pseudoklasser samma
värde, kan du med fördel bunta ihop dem, kom ihåg att separera dem med komma [ , ].

  4.       #meny li a:visited { color: #449; background-color: #880;}

  5.       #meny li a:hover{ color: #490; background-color: #940;}

  6.       #meny li a:active, #meny li a:focus{ color: #6f0; background-color: #f60; }




Formatera listposterna/listraderna


                                                                                                     27
Vi skapar en webbsida



              Du kan sluta läsa det här och hoppa till nästa stycke om du vill, jag ska förklara varför!

              När du använder dig av länkar, så är länken klickbar, inget konstigt med det, men länken
              avgör även vilken yta som är klickbar. I de flesta fall är det samma yta som texten utgör, finns
              det inre marginal [padding], utökas den klickbara ytan. Detsamma gäller för kantlinjer
              [border], men inte för yttre marginal [margin]. Utökar du ytan av länkposten, med till
              exempel höjd och bredd, eller med inre marginal [padding], kommer det att finnas en stor
              yta runt länken som inte är klickbar (yta som tillhör listan, inte länken).




              Därför kan det vara på sin plats att ändra på länktaggens utseende och storlek istället för
              listpostens och låta listpostens yta bestämmas av dess innehåll (dvs länken). Listposter/rader
              är block-element, så de kommer att uppta hela listans bredd och får sin höjd av eventuellt
              innehåll. Anger man inget värde för bakgrund, är den genomskinligt och visar listytan.

              Men vill du formatera listposten/raden, kan du ge den alla boxegenskaper, som höjd, bredd,
              bakgrund, kantlinje och marginaler.

                 1.      #meny li {

                 2.             background-color: #fff; /* bakgrund till länktexten/länkyta */

                 3.             /* m.fl. */

                 4.        }




              Formatera länkarnas elementegenskaper

              Som vi redan nämnt tidigare, kan du ge länkar de flesta box-egenskaper som block-element
              kan ha, förutom att definiera höjd och bredd. Därför ska vi ändra länkarna från att vara
              inline-element, till att vara och bete sig som ett block-element.

                 1.             #meny li a {

                 2.             display: block;

                 3.             …}


              Formatera nu länken som du önskar, med alla box-egenskaper, även höjd och bredd, men läs
              även om element som gjorts flytande med [float] eller gjorts om till [inline-block] nedan.

                                           Så där! Nu var vi nästan färdiga, nu ska det bara placeras på sidan.

  B2        1.3. Horisontell meny av lista med länkar



       28
Vi skapar en webbsida



                          Bara ett kort ord om att göra en horisontell meny, har du gjort en meny av enbart länkar
                          lägger de sig på rad (eftersom länken är ett inline-element), men är länkarna placerade i en
                          lista lägger de sig på hög (under varandra, på ny rad) eftersom listposten/raden är ett block-
                          element. Detsamma gäller om du ändrat länkarna från att vara inline- till att vara block-
                          element med attributet [display] i css-dokumentet. Vi kommer därför att använda oss av
                          [display] även för att placera länkarna på rad bredvid varandra igen.

                          Men det första vi behöver göra är att se till så att bredden på list-elementet ([ol] eller [ul]) är
                          nog bred för att lägga dem på rad. Ändra [width] till lämplig bredd (bredden på länkarna+
                          marginaler+ eventuell bredd på listposterna/raderna och dess marginaler) eller ange värdet
                          [auto], anger du inget värde för bredd utgår webbläsare från att värdet [auto] ska användas.

                          Nästa steg är att placera länkarna så att de ligger på rad, och för att göra det behöver vi dels
                          veta hur vi lagt upp vårt tidigare arbete och dels ändra block-elementen så att de inte staplas
                          ovan och under varandra. Jag kommer att utgå från att du lagt länkarna i en lista och att du
                          sedan ändrat länkar till att bete sig som block-element. Utseendet på länkmenyn utgår nu
                          alltså från dina inställningar för länkytan (bredd, höjd, kantlinjer, färger, bakgrunder och
                          marginaler) och från eventuella inställningar för listytan ([ol] eller [ul] och [li]).

                          Inline

                          Nu tar vi bort blockegenskapen från listposterna ([li]) så att de inte längre staplas på varan-
                          dra. Du kommer att märka att länkarna inte lägger sig på rad, men det beror på att de
                          fortfarande är inställda att bete sig som block-element. Lägg till följande till ditt css-
                          dokument:

                            1.       #meny li { display: inline; }


                          Tar du bort display-deklarationen från länktaggen, eller ändrar den från värdet [block] till
                          [inline], läggs länkarna på rad, men då tappar du också den boxformatering du tidigare lagt
                          till. Vad vi behöver är en lösning där vi har kvar block-egenskaperna, samtidigt som vi kan
                          lägga dem i rad som inline-element.


                          Inline-block och float

  inline-block            Vad vi behöver är block element som behåller sina blockegenskaper, men placeras på sidan
                          som inline-element. Det finns ett sådant element-tillstånd som kallas inline-block.
Fungerar i de flesta
webbläsare, om ele-
mentet som man
ändrar beteende hos
                            1.        #meny li a { display: inline-block; }
tidigare varit ett in-
line-element. Vilket
gör att det passar att    Så där, nu när du förhandsgranskar bör de lagt sig vackert på rad. Om det inte gör så, beror
användas till länkar.
Var bara beredd på
                          det på din webbläsare, pröva med en annan webbläsare som följer webbstandarden. Det är
att det inte alltid ser   den här egenskapen som vi skulle vilja använda, men så länge den inte stödjs av alla
lika ut mellan olika
webbläsare                webbläsare, får vi använda oss av en annan metod.
       float
                          Det andra alternativ vi då har är att göra elementet flytande med egenskapen [float].
Fungerar inte lika i
alla webbläsare, men
                          Nackdelen här är att även det inte alltid fungerar fullt ut i alla webbläsare. Övriga inline-
är ändå en väldigt an-
vändbar metod.
     Ett element som
görs flytande, om-                                                                                                        29
vandlas till ett block-
element (med allt det
innebär), men lägger
sig utanför inline och
Vi skapar en webbsida



              element flödar runt det flytande-elementet, vilket gör att det passar bra till bilder som ligger
              inne i en text. Man kan göra alla element flytande. Man kan välja om det flyter mot vänster
              sida eller höger sida och det flytande elementet utgår från det yttre element (föräldra-
              element) den ligger inom. Men den tappar sin position i inline-flödet (och dokument-flödet),
              övriga element placeras runt objektet (ungefär på samma sätt som figursättning/text-wrap
              fungerar).

              Men här innebär det att länken inte längre räknas som en del av listposten/radens innehåll
              och om man inte angivit höjd [height] för det elementet kollapsar den ihop till en höjd av noll
              [0]. På samma sätt påverkas även hela listelementet, om listpost/raderna inte har höjd,
              kollapsar den ner till en höjd av noll [0]. Det är givetvis en egenhet du kan dra nytta av, nu
              när du vet det. Ange även alltid bredd [width] för flytande element.


                 1.            #meny li a { float: left; }




              Nu när du förhandsgranskar, läggs länkarna på rad (om listpost/raderna är inställda på att
              vara inline, så att även list-elementen läggs på rad). Använd [margin] och [padding], för att
              ytterligare kontrollera mellanrum och luft runt länktexterna; samt eventuellt [padding] och
              [margin] på listpost/raderna.



               Exempel - Enkel flikmeny, med horisontell linje nedtill.




              Den här menyn byggs upp an en lista med fem länkar, länkarna har gjorts om till block-element,
              listposterna gjorts om till inline-element (display). Sedan har länkarna även gjorts flytande (float),
              de flyter åt vänster. Listelementet, har tilldelats en kantlinje i nederkant (border-bottom) och en
              given höjd (height, som motsvarar länkarnas höjd). Dessutom, har listelementet en inre marginal
 H            (padding-left) på vänstra sidan, vilket knuffar länkarna inåt på linjen. Länkarna, har en yttre
 T
 M
              vänstermarginal (margin-left) om två pixlar, vilket gör att länkarna får ett litet mellanrum. Till
 L            menyn är även definierat de olika pseudoklasserna (link, visited, hover, active, focus) för de olika
 o
              tillstånd som länkarna kan ha.                                                    Variation…
 c
 h                 Låt länkarna flyta åt höger, ha en kantlinje upptill, andra färger.
 C                 Ta bort float och ange länkarna som inline-block istället.
 S
 S      …                                           #meny {border-bottom: 1px solid black; padding-left: 10px; font:
        <ul id="meny">                                     bold 12px Verdana; list-style-type: none; min-width: 400px;
 e       <li><a href="#">   Home   </a></li>               height:28px;}
 x       <li><a href="#">   Un     </a></li>
 e                                                  #meny li {display: inline;}
         <li><a href="#">   Dos    </a></li>
 m
         <li><a href="#">   Tres   </a></li>       #meny li a {display: inline-block; text-decoration: none; text-
 p
 e
         <li><a href="#">   Away   </a></li>                   align:center; width: 50px; padding: 7px 8px; margin-left:
 l      </ul>                                                  2px; color: white; background-color: #414141;}
        …
                                                    #meny li a:link {} #meny li a:visited {} #meny li a:hover {} … osv
           2. Positionering                av


      30
Vi skapar en webbsida



              menyn
              Nu är det dags att välja en plats för din meny, om du inte redan valt en. Jag kommer i mina
C             exempel placera menyn dels på sidan om [satsytan] och dels under [rubriken], två rätt
              vanliga placeringar. Men det är också läge för att tala lite om dokumentflödet och positioner.
D             Dokumentflödet, är det sätt som webbläsare tolkar och placerar ut innehåll på en webbsida,
              hur sidan visas i webbläsaren. Men även i vilken ordning en webbsida läses upp av talsyntes.

              Dokumentflödet

              Dokumentflödet, är egentligen två olika flöden, som tillsammans utgör ett gemensamt
              dokumentflöde. Det är block-nivå-flödet [block] och text-nivå-flödet [inline]. Blocknivå-
              element, bildar egna enheter, ofta med en radbrytning före och efter elementet. Textnivå-
              element, lägger sig på rad efter varandra, på samma nivå och utan radbrytningar. Även om
              du kan ändra detta beteende, är den generella uppmaningen att man inte bör göra så.

              Element visas på sidan i den ordning de skrivs in i html-dokumentet och efterföljande
              element placeras (utifrån sin sort, block eller inline) på första lediga plats i ordningen.
                                           Placeras något före ”sidyta”, knuffar det ner övrigt innehåll.

[ Dokumentflödet ]




                                           Placeras något efter ”sidyta”, hamnar den under/efter den ytan.


              Inget blocknivå-element kan placeras bredvid ett annat element (då de knuffas ner en rad)
              om man inte ändrar elementets beteende (med t.ex. float, display eller position). Alla
              textnivå element, lägger sig på rad efter varandra. Men även de utgör en gemensam yta, en
              tillfällig box som består av hela raden, vars höjd utgår från radens högsta element.

                                                                          Textnivå-boxar av olika höjd kan inte
                                                                          existera samtidigt på samma rad och
                                                                          man kan inte skapa textnivå-boxar.



                                                                                                               31
Vi skapar en webbsida



                      Position, inom dokumentflödet

                      Position (static)

                      På samma sätt som alla element har en yta, har alla element en position även om den inte är
                      definierad. Detta kan skrivas ut som [position: static;], men behöver inte skrivas eftersom
                      det är standardvärdet för alla element (inline, som block). Ett element som har positionen
                      static, kan anses som ”opositionerad” (även om de rent tekniskt faktiskt innehar en position).




                      Det finns tre övriga positioneringstillstånd som element kan ha/tilldelas: [relative], [absolute]
                      och [fixed]. Vi ska kortfattat gå igenom dem här nedanför, för att deklarera position, behöver
                      man i regel bara definiera egenskapen [position] och ett av ovanstående värden. Men för att
                      kontrollera hur elementet flyttar, lägger du även till något av eller flera av följande värden:
                      [top], [right], [bottom] och [left], positivt värde är från angiven kant/sida och inåt. Anges
                      inget värde för dem, anses de ha värdet [auto], anges ett numreriskt värde, är det
                      dominerande över (används istället för och/eller påverkar) det automatiska värdet. Vi börjar
                      med det som mest liknar static:

                      Position (relative)

                      Positionering med egenskapen [relative] placerar elementet relativt till den plats den har i
                      dokumentflödet, det vill säga den plats den skulle ha om den var opositionerad. Nu kan man
                      förflytta elementet från den platsen, men utrymmet i dokumentflödet förblir ”upptaget”. Det
                      vill säga att elementet lämnar en tom yta efter sig. Du måste ange värden för minst en av
                      top, right, bottom eller left, för att du ska se en positionsförändring; annars ligger elementet
                      kvar på sin position i dokumentflödet (som om den var av värdet static).

{
Position: relative;
    Top: 10px;
    Left: 25px;
}




                      En annan sak som händer är att det flyttade elementet, lägger sig ovanför de andra
                      elementen på webbsidan. Du kan ändra detta genom att ange ett värde för [z-index] på
                      elementet, positiva värden är längre upp/fram, negativa längre ner/bak.


              32
Vi skapar en webbsida



                         Position, utanför dokumentflödet

                         Position (absolute)

                         När du positionera ett element med egenskapen [absolute] händer flera saker som skiljer sig
                         radikalt från hur element placerar sig enligt det normala dokumentflödet. Det som tydligast
                         är märkbart är hur elementet tappar sin plats i dokumentflödet, dessutom fylls utrymmet av
                         vad som är placerat efter i ordningen (då den platsen nu är ”ledig”).

 {
  Position: absolute;
     Top: 10px;
     Left: 25px;
 }



                         Nästa tydliga förändring är hur elementet krymper ner till storleken av sitt innehåll (höjd och
                         bredd blir detsamma som innehållet). Därför måste du lägga till egenskaperna [height] och
                         [width] om du vill kontrollera storleken.

                         Men den viktigaste förändringen är att det absolut placerade elementet tilldelas en unik
                         lagerposition [z-index] som skiljer sig från alla övriga element. Det innebär att den lätt kan
                         läggas över andra element, men det innebär även att om man har flera absoluta element,
                         lägger de sig automatiskt på var sitt lager. De placeras i den ordning som de är inskrivna i
                         html-dokumentet, det element som skrivits in senare/längre ner, får ett högre lagervärde (z-
                         index). Du kan ändra detta genom att ange ett värde för [z-index] på elementet, positiva
 Absolut och
                         värden är längre upp/fram, negativa längre ner/bak.
 odefinierat
  värde ...              Absolut position
Saknas värde för top,
right, bottom och        Eftersom ett AP-element (absolut positionerat element) inte är en del av dokumentflödet,
left, anses de ha
värdet [auto], men
                         har den en absolut position som utgår från horisontella   och vertikala koordinater.
vad innebär det i
praktiken?               Men från vad utgår dessa koordinater? AP-elementet får sin position från sitt förhållande till
Jo att det absolut       sin närmaste föräldra-elements position, men om föräldern är opositionerad (static) utgår
positionerade     ele-   den från första element i hierarkin som är positionerad (dvs allt annat än static). Finns inget
mentet är placerat i
förhållande till den     positionerat element, utgår den från <body> (egentligen <html>-taggen), vilket i proncip blir
position den skulle
ha, om den inte tag-
                         det samma som webbläsarfönstret.
its ut ur dokument-
flödet. Det innebär       Relativt positionerat element används ofta som förälder till ett absolut positionerat för
även att det ligger
ovanför annat inne-       att styra dess position, då ett relativt positionerat element kan bete sig som och placera
håll som flyttats upp     sig som de som placerats efter dokumentflödet.
för att fylla tomrum-
met efter elementet.
                         Du styr AP-elementets position med [top], [right], [bottom] eller [left], positivt värde är från
Anger du ett värde       angiven kant/sida och inåt. Anges inget värde för dem, anses de ha värdet [auto], anges ett
för top, right, bottom
eller left, tappar det   numreriskt värde, är det dominerande över (används istället för och/eller påverkar) det
absolut positioner-
ade elementet den
                         automatiska värdet. Om det blir en konflikt mellan värden (t.ex left-right; top-bottom), måste
här egenskapen.          en av dessa prioriteras, standarden anger att det är vänstra [left] och övre [top] som vinner.



                                                                                                                       33
Vi skapar en webbsida



                   Position (fixed)

                   Positionering med egenskapen [fixed] är en variant av absolut positionering, med den
                   skillnaden att fixerade element alltid utgår från webbläsarfönstret. Var försiktig så att inte
                   fixerade element placeras utan för den synliga ytan (till exempel med väldigt höga värden
                   eller negativa värden). Fixerade element påverkar aldrig webbläsaren att använda sig av
                   rullisten, även om man kan använda sig av rullister inom ett fixerat element.

{
Position: fixed;
    Top: 10px;
    Left: 25px;
}

                   Om man flyttar på webbsidans innehåll med hjälp av en rullist, kvarstår det fixerade
                   elementet; medan resten av innehållet förflyttas.




                                                         Vissa äldre webbläsare kan inte läsa fixerade element, för dem passar AP-element bättre.


                   Flytande position
                   (Float)

                   När vi talar om position kan vi inte undvika att tala om flytande position. Även om egen-
                   skapen [float] inte är en del av (attributet) position, så är det också ett sätt att positionera
                   innehåll. Det element som görs flytande tappar sin position i dokumentflödet, men samtidigt
                   placeras det flytande elementet i förhållande till flödet. Det kan göras flytande åt höger
                   [right] eller åt vänster[left]. Element som placerats före det flytande elementet påverkas
                   inte, men alla som kommer efter flödar/flyter runt elementet. Det flytande elementet
                   omvandlas till ett block-element (med allt det innebär) när det gjorts flytande, så man bör
                   alltid ange bredd [width] på flytande element (förutom bilder). Flytande element lägger sig
                   på rad efter varandra, utefter vilket utrymme som finns tillgängligt.




                    I exemplet ovan är det flytande elementet placerat först före alla andra element, sedan efter rubriken<h1> och sist efter texten.



            34
Vi skapar en webbsida



 Flytande element och yta

 En aspekt av flytande element som lätt glöms bort är hur de påverkar de element som flyter
 runt det. Det märks tydligast hos block-elemet som tilldelats bakgrund eller andra
 blockegenskaper som marginaler och kantlinjer. (inline) Innehållet i de ytor som omsluter det
 flytande elementet reagerar på ytan hos flytande elementets, genom att knuffas undan. Alla
 marginaler, kantlinjer och bakgrunder till den yta som omsluter det undanknuffade
 innehållet kommer fortfarande reagera som att det flytande elementet inte är där.




 Då det flytande elementet har avlägsnats från flödet, men fortfarande knuffar undan inline-innehåll,
breder bakgrunder, kantlinjer och marginaler hos block-elementen ut sig under det flytande elementet.

 (clear)

 Att flytande element funkar så att det man placerar efter (i html-dokumentet) omsluter det
 flytande elementet istället för att det flytande elementet flyter upp genom ovanliggande
 inline-element har en enkel förklaring. Annars flyter alla element med en flytande position
 upp längst upp på webbsidan, vilket inte är önskvärt. För att om det vore så, skulle det kräva
 att man blev tvungen att lägga till en massa extrakod, för att få de flytande elementen att
 stanna på plats. Nu är det istället bara automatiskt att underliggande element flyttas uppåt
 och omsluter det flytande elementet.

 Men om du inte vill att det som ligger efter (nedanför) det flytande elementet skall flyttas
 upp och omsluta runt elementet, kan du använda attributet [clear]. Attributet kopplas till ett
 av de efterliggande elementen och stoppar då upp flödet (uppflyttandet av element).

  Clear kan ha följande fyra (fem)värden: right, left, both och none.

      Värdet right gör så att elementet lägger sig under den yttersta kanten av ett flytande
      element som har värdet [ clear: right; ] som kommer före i html-dokumentet.

      Värdet left gör så att elementet lägger sig under den yttersta kanten av ett flytande
      element som har värdet [ clear: left; ] som kommer före i html-dokumentet.

      Värdet both gör så att elementet lägger sig under den yttersta kanten av alla flytande
      element som kommer före i html-dokumentet.

      Värdet none, är detsamma som att inte ange ett clear-värde alls.

 Clear kan även ha det femte värdet: Inherited, som innebär att den ärver egenskapen från
 ett föräldraelement och får då det värde det elementet har för attributet clear.


                                                                                                    35
Vi skapar en webbsida



   C        2.1. Meny under rubriken

               Jag börjar med att beskriva vad som är lättast att åstadkomma, för här ska vi helt enkelt bara
               låta dokumentflödet göra sitt jobb, vi lägger inte till några större förändringar. Jag utgår nu
               från att du har en horisontell meny, då den passar bäst att placera under sidrubriken.

                      Placera din ”lista med länkar” efter <h1> (rubrik) men före <div>-taggen (satsytan).

                 1.        <div id=”sidyta”>

                 2.                   <h1 …>Rubrik </h1>

                 3.                   <ul …>

                 4.                       <li><a …>Lnk txt </a></li> …

                 5.                   </ul>

                 6.                   <div …> Satsyta </div>

                 7.                   <div …> Sidfot </div>

                 8.        </div>




               Ja, det är så enkelt för att få dem i rätt ordning, nu läser webbläsaren in dem i den ordning
               som de kommer att visas på sidan (om du inte på något annat sätt, till exempel positionering,
               ändrat dokumentflödet).




               Jag föreslår att du tar dig en liten titt igen på illustrationen över dokumentflödet i början av
               kapitlet som en liten repetition innan du går vidare.




       36
Vi skapar en webbsida



D1   2.2. Meny bredvid sidinnehållet (absolut)

        Lite svårare uppgift är att placera menyn på sidan, som alltid när man vill placera block-
        element bredvid varandra. Vi ska titta på två varianter, i den första använder vi oss av absolut
        position i kombination med relativt placerad förälder (det omslutande elementet). I den
        andra tittar vi närmare på en lösning med att göra menyn flytande.

        Grundproblemet dem mellan är detsamma, när vi har en vertikal meny (lista) knuffar den ner
        efterföljande innehåll, då menyn upptar hela raden (det naturliga beteendet för block-
        element). Men vi vill att delar av innehållet (satsytan) skall ligga bredvid menyn istället.




        Vi ändrar därför menyn [#meny] från att vara opositionerad (static) till något vi kan
        kontrollera, i det här fallet använder vi oss av absolut position.

          1.       #meny { position: absolut; }


        Menyn tappar nu sin plats i dokumentflödet och underliggande element flyttar upp i dess
        ställe. Men det blir inte riktigt som vi vill ha det, nu så ligger menyn över allt annat innehåll
        och skymmer eventuellt innehåll.




                                                                                                      37
Vi skapar en webbsida



               Menyn placerar sig dock fint utifrån sin tidigare plats i dokumentflödet. Vilket snabbt
               kommer att ändras om du lägger till ett numreriskt värde för positionerings attributen top,
               right, bottom eller left; även om värdet är noll [0].




               Vi kan avhjälpa detta beteende genom att ge närmaste förälder (omslutande element) en
               annan position än dess naturliga (static). Samtidigt vill vi inte ta den ur dokumentflödet; vi
               gör det omslutande elementet därför till relativt positionerad.

                 1.      #sidyta { position: relativ; }




               Sådär, nu kan vi sätta igång och placera ut vår meny. Skriver vi in negativa värden (för top,
               right, bottom och left) placeras den utanför sitt föräldra elements ytterkanter, positiva
               värden flyttar den inåt över ytan. Prova med att ge menyn ett negativt vänstervärde (left)
               som är lika stort som menyn är bred; vips så har menyn placerats bredvid innehållet.

                 1.      #meny { position: absolute; left: -70px; }




      38
Vi skapar en webbsida




         D2                Meny bredvid sidinnehållet (float)

                           I den här varianten gör vi menyn till ett flytande element och låter det andra sidinnehållet
    Flytande
                           flyta på plats, vi kan lätt låta den flyta åt vänster eller höger. Se till att menyn är placerad före
    element
    problem                det innehåll som skall läggas sida vid sida med menyn.
När du börjar anvä-
nda dig av flytande          1.       < … id=”rubrik>        …    </h1>          Det som är placerat före det
element i din design,                                                            flytande elementet påverkas
kommer du snabbt
märka att det kan
                             2.       <ul id=meny”>           … </ul>            inte.
dyka upp underliga
skillnader mellan oli-       3.       <div id=”satsyta”> …        </div>         Det som är placerat efter
ka webbläsare, jag
har valt att undvikia                                                            påverkas
att ta upp det här.          4.       <div id=”sidfot”>      …    </div>

En sådan sak kan
vara att bakgrunds-        Sen gör vi menyn flytande (se till så du inte även har angett absolut position till menyn).
bilder och även text
försvinner plötsligt,
trots att de borde           1.       #meny { … float: left; … }
vara där, för att
sedan dyka upp igen
när man laddar om          Efterföljande element flyttar nu upp och omsluter/fyller snyggt upp högersidan, men
sidan.                     bakgrunden lägger sig även bakom menyn.
Du undviker det här
problemet genom att
ge det försvinnande
elementet en posit-
ion, förslagsvis [posit-
ion:relative;].

Det kan även vara
problem med hur
marginaler runt ett
block-element beter
sig brevid ett flyt-
ande element, hur
det kan bli oförut-
sedda skillnader i hur
mycket      elementet
knuffas ifrån det flyt-
ande elementet.

Lösningen här är att
sätta marginalerna
på de flytande ele-        Men vad händer om det man vill ska ligga jäms med menyn upptar lika stor yta som menyn i
menten, inte de
statiska.                  sig gör? Vi prövar genom att ta bort all text från den ytan vi kallat [satsyta].
Ytterligare ett prob-
lem kan uppstå när
man har flera flyt-
ande element efter
varandra. Dels kan de
lägga sig på bredd,
fastän det inte finns
utrymme för det,
eller att de fortsätter
ut utanför ett om-
slutande element.

Prova att ge det
omslutande elemen-
tet en given vidd
[width].                                                             Kanske inte riktigt vad vi kan kalla önskvärt resultat.

                                                                                                                               39
Vi skapar en webbsida

Más contenido relacionado

La actualidad más candente

HT17 - DA156A - Layout med HTML & CSS
HT17 - DA156A - Layout med HTML & CSSHT17 - DA156A - Layout med HTML & CSS
HT17 - DA156A - Layout med HTML & CSSAnton Tibblin
 
HT16 - DA156A - Introduktion till CSS
HT16 - DA156A - Introduktion till CSSHT16 - DA156A - Introduktion till CSS
HT16 - DA156A - Introduktion till CSSAnton Tibblin
 
VT18 - DA355A/DA344A - Introduktion till HTML
VT18 - DA355A/DA344A - Introduktion till HTMLVT18 - DA355A/DA344A - Introduktion till HTML
VT18 - DA355A/DA344A - Introduktion till HTMLAnton Tibblin
 
HT17 - DA156A - Responsiv webbutveckling
HT17 - DA156A - Responsiv webbutvecklingHT17 - DA156A - Responsiv webbutveckling
HT17 - DA156A - Responsiv webbutvecklingAnton Tibblin
 
VT18 - DA355A - Introduktion till CSS
VT18 - DA355A - Introduktion till CSSVT18 - DA355A - Introduktion till CSS
VT18 - DA355A - Introduktion till CSSAnton Tibblin
 
VT16 - DA355A - Layout med CSS
VT16 - DA355A - Layout med CSSVT16 - DA355A - Layout med CSS
VT16 - DA355A - Layout med CSSAnton Tibblin
 
Webbapplikationer - Kursintroduktion (anton.tibblin@mah.se)
Webbapplikationer - Kursintroduktion (anton.tibblin@mah.se)Webbapplikationer - Kursintroduktion (anton.tibblin@mah.se)
Webbapplikationer - Kursintroduktion (anton.tibblin@mah.se)Anton Tibblin
 
HT16 - DA156A - Introduktion till HTML
HT16 - DA156A - Introduktion till HTMLHT16 - DA156A - Introduktion till HTML
HT16 - DA156A - Introduktion till HTMLAnton Tibblin
 
HT16 - DA156A - CSS, layout
HT16 - DA156A - CSS, layoutHT16 - DA156A - CSS, layout
HT16 - DA156A - CSS, layoutAnton Tibblin
 
HT17 - DA156A - Kursintroduktion
HT17 - DA156A - KursintroduktionHT17 - DA156A - Kursintroduktion
HT17 - DA156A - KursintroduktionAnton Tibblin
 
Css layouts, en kort repris
Css layouts, en kort  reprisCss layouts, en kort  repris
Css layouts, en kort reprisPhilip Ekholm
 
HT19 - DA156A - Introduktion till CSS
HT19 - DA156A - Introduktion till CSSHT19 - DA156A - Introduktion till CSS
HT19 - DA156A - Introduktion till CSSAnton Tibblin
 
HT18 - DA156A - Introduktion till CSS
HT18 - DA156A - Introduktion till CSSHT18 - DA156A - Introduktion till CSS
HT18 - DA156A - Introduktion till CSSAnton Tibblin
 
HT17 - DA156A - Tabeller & Formulär
HT17 - DA156A - Tabeller & FormulärHT17 - DA156A - Tabeller & Formulär
HT17 - DA156A - Tabeller & FormulärAnton Tibblin
 
HT17 - DA156A - Introduktion till HTML
HT17 - DA156A - Introduktion till HTMLHT17 - DA156A - Introduktion till HTML
HT17 - DA156A - Introduktion till HTMLAnton Tibblin
 
HT17 - DA156A - CSS, Layout 2
HT17 - DA156A - CSS, Layout 2HT17 - DA156A - CSS, Layout 2
HT17 - DA156A - CSS, Layout 2Anton Tibblin
 
HT20 - DA106A - Kursintroduktion
HT20 - DA106A - KursintroduktionHT20 - DA106A - Kursintroduktion
HT20 - DA106A - KursintroduktionAnton Tibblin
 
HT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottleHT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottleAnton Tibblin
 
HT16 - DA156A - Kursintroduktion
HT16 - DA156A - KursintroduktionHT16 - DA156A - Kursintroduktion
HT16 - DA156A - KursintroduktionAnton Tibblin
 

La actualidad más candente (20)

HT17 - DA156A - Layout med HTML & CSS
HT17 - DA156A - Layout med HTML & CSSHT17 - DA156A - Layout med HTML & CSS
HT17 - DA156A - Layout med HTML & CSS
 
HT16 - DA156A - Introduktion till CSS
HT16 - DA156A - Introduktion till CSSHT16 - DA156A - Introduktion till CSS
HT16 - DA156A - Introduktion till CSS
 
VT18 - DA355A/DA344A - Introduktion till HTML
VT18 - DA355A/DA344A - Introduktion till HTMLVT18 - DA355A/DA344A - Introduktion till HTML
VT18 - DA355A/DA344A - Introduktion till HTML
 
JavaScript - Intro
JavaScript - IntroJavaScript - Intro
JavaScript - Intro
 
HT17 - DA156A - Responsiv webbutveckling
HT17 - DA156A - Responsiv webbutvecklingHT17 - DA156A - Responsiv webbutveckling
HT17 - DA156A - Responsiv webbutveckling
 
VT18 - DA355A - Introduktion till CSS
VT18 - DA355A - Introduktion till CSSVT18 - DA355A - Introduktion till CSS
VT18 - DA355A - Introduktion till CSS
 
VT16 - DA355A - Layout med CSS
VT16 - DA355A - Layout med CSSVT16 - DA355A - Layout med CSS
VT16 - DA355A - Layout med CSS
 
Webbapplikationer - Kursintroduktion (anton.tibblin@mah.se)
Webbapplikationer - Kursintroduktion (anton.tibblin@mah.se)Webbapplikationer - Kursintroduktion (anton.tibblin@mah.se)
Webbapplikationer - Kursintroduktion (anton.tibblin@mah.se)
 
HT16 - DA156A - Introduktion till HTML
HT16 - DA156A - Introduktion till HTMLHT16 - DA156A - Introduktion till HTML
HT16 - DA156A - Introduktion till HTML
 
HT16 - DA156A - CSS, layout
HT16 - DA156A - CSS, layoutHT16 - DA156A - CSS, layout
HT16 - DA156A - CSS, layout
 
HT17 - DA156A - Kursintroduktion
HT17 - DA156A - KursintroduktionHT17 - DA156A - Kursintroduktion
HT17 - DA156A - Kursintroduktion
 
Css layouts, en kort repris
Css layouts, en kort  reprisCss layouts, en kort  repris
Css layouts, en kort repris
 
HT19 - DA156A - Introduktion till CSS
HT19 - DA156A - Introduktion till CSSHT19 - DA156A - Introduktion till CSS
HT19 - DA156A - Introduktion till CSS
 
HT18 - DA156A - Introduktion till CSS
HT18 - DA156A - Introduktion till CSSHT18 - DA156A - Introduktion till CSS
HT18 - DA156A - Introduktion till CSS
 
HT17 - DA156A - Tabeller & Formulär
HT17 - DA156A - Tabeller & FormulärHT17 - DA156A - Tabeller & Formulär
HT17 - DA156A - Tabeller & Formulär
 
HT17 - DA156A - Introduktion till HTML
HT17 - DA156A - Introduktion till HTMLHT17 - DA156A - Introduktion till HTML
HT17 - DA156A - Introduktion till HTML
 
HT17 - DA156A - CSS, Layout 2
HT17 - DA156A - CSS, Layout 2HT17 - DA156A - CSS, Layout 2
HT17 - DA156A - CSS, Layout 2
 
HT20 - DA106A - Kursintroduktion
HT20 - DA106A - KursintroduktionHT20 - DA106A - Kursintroduktion
HT20 - DA106A - Kursintroduktion
 
HT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottleHT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottle
 
HT16 - DA156A - Kursintroduktion
HT16 - DA156A - KursintroduktionHT16 - DA156A - Kursintroduktion
HT16 - DA156A - Kursintroduktion
 

Destacado

Alliefoster pwpt
Alliefoster pwptAlliefoster pwpt
Alliefoster pwptAllief0712
 
Alliefoster pwpt
Alliefoster pwptAlliefoster pwpt
Alliefoster pwptAllief0712
 
Stratégies des réseaux sociaux pour des causes sociales
Stratégies des réseaux sociaux pour des causes socialesStratégies des réseaux sociaux pour des causes sociales
Stratégies des réseaux sociaux pour des causes socialesTom Liacas
 
Tom Liacas - Memefest Symposium Melbourne
Tom Liacas - Memefest Symposium MelbourneTom Liacas - Memefest Symposium Melbourne
Tom Liacas - Memefest Symposium MelbourneTom Liacas
 
Jx webinar csr-materiality-brand-v1-condensed
Jx webinar csr-materiality-brand-v1-condensedJx webinar csr-materiality-brand-v1-condensed
Jx webinar csr-materiality-brand-v1-condensedAdam Garfunkel
 

Destacado (6)

Alliefoster pwpt
Alliefoster pwptAlliefoster pwpt
Alliefoster pwpt
 
Alliefoster pwpt
Alliefoster pwptAlliefoster pwpt
Alliefoster pwpt
 
Stratégies des réseaux sociaux pour des causes sociales
Stratégies des réseaux sociaux pour des causes socialesStratégies des réseaux sociaux pour des causes sociales
Stratégies des réseaux sociaux pour des causes sociales
 
Tom Liacas - Memefest Symposium Melbourne
Tom Liacas - Memefest Symposium MelbourneTom Liacas - Memefest Symposium Melbourne
Tom Liacas - Memefest Symposium Melbourne
 
Jx webinar csr-materiality-brand-v1-condensed
Jx webinar csr-materiality-brand-v1-condensedJx webinar csr-materiality-brand-v1-condensed
Jx webinar csr-materiality-brand-v1-condensed
 
Abortion
AbortionAbortion
Abortion
 

Similar a Vi skapar en webbsida

Introduktion till CSS
Introduktion till CSSIntroduktion till CSS
Introduktion till CSSAnton Tibblin
 
Dreamweaver cs3 och css
Dreamweaver cs3 och cssDreamweaver cs3 och css
Dreamweaver cs3 och csstonicii
 
Anpassad kurs för Acudira AB
Anpassad kurs för Acudira ABAnpassad kurs för Acudira AB
Anpassad kurs för Acudira ABAntonio Riveras
 
WPKAFE - Grunderna i WordPress
WPKAFE - Grunderna i WordPress WPKAFE - Grunderna i WordPress
WPKAFE - Grunderna i WordPress Bloggcoach
 
HT19 - DA156A - Layout med CSS (2)
HT19 - DA156A - Layout med CSS (2)HT19 - DA156A - Layout med CSS (2)
HT19 - DA156A - Layout med CSS (2)Anton Tibblin
 
Introduktion till HTML
Introduktion till HTMLIntroduktion till HTML
Introduktion till HTMLAnton Tibblin
 
Responsiv webbdesign + HTML5 + CSS5
Responsiv webbdesign + HTML5 + CSS5Responsiv webbdesign + HTML5 + CSS5
Responsiv webbdesign + HTML5 + CSS5Martin Carlsson
 
HT18 - DA156A - Introduktion till HTML
HT18 - DA156A - Introduktion till HTMLHT18 - DA156A - Introduktion till HTML
HT18 - DA156A - Introduktion till HTMLAnton Tibblin
 
HT18 - DA156A - Layout med CSS (2)
HT18 - DA156A - Layout med CSS (2)HT18 - DA156A - Layout med CSS (2)
HT18 - DA156A - Layout med CSS (2)Anton Tibblin
 
HT19 - DA156A - Introduktion till HTML
HT19 - DA156A - Introduktion till HTMLHT19 - DA156A - Introduktion till HTML
HT19 - DA156A - Introduktion till HTMLAnton Tibblin
 
Global återställing av CSS
Global återställing av CSSGlobal återställing av CSS
Global återställing av CSSkurs-resurs
 
CSS för utskrift
CSS för utskriftCSS för utskrift
CSS för utskriftkurs-resurs
 
VT24 - Responsiv design & Ramverk inom webbutveckling
VT24 - Responsiv design & Ramverk inom webbutvecklingVT24 - Responsiv design & Ramverk inom webbutveckling
VT24 - Responsiv design & Ramverk inom webbutvecklingAnton Tibblin
 
VT23 - RWD & Ramverk
VT23 - RWD & RamverkVT23 - RWD & Ramverk
VT23 - RWD & RamverkAnton Tibblin
 
jQuery & HTML5 Cache
jQuery & HTML5 CachejQuery & HTML5 Cache
jQuery & HTML5 CacheAnton Tibblin
 
VT2019 - DA355A - CSS Grid & Webbramverk
VT2019 - DA355A - CSS Grid & WebbramverkVT2019 - DA355A - CSS Grid & Webbramverk
VT2019 - DA355A - CSS Grid & WebbramverkAnton Tibblin
 
SEO do's and don'ts for e-commerce
SEO do's and don'ts for e-commerceSEO do's and don'ts for e-commerce
SEO do's and don'ts for e-commerceBernt Johansson
 

Similar a Vi skapar en webbsida (20)

Introduktion till CSS
Introduktion till CSSIntroduktion till CSS
Introduktion till CSS
 
Dreamweaver cs3 och css
Dreamweaver cs3 och cssDreamweaver cs3 och css
Dreamweaver cs3 och css
 
Anpassad kurs för Acudira AB
Anpassad kurs för Acudira ABAnpassad kurs för Acudira AB
Anpassad kurs för Acudira AB
 
Joomladay1
Joomladay1Joomladay1
Joomladay1
 
WPKAFE - Grunderna i WordPress
WPKAFE - Grunderna i WordPress WPKAFE - Grunderna i WordPress
WPKAFE - Grunderna i WordPress
 
HT19 - DA156A - Layout med CSS (2)
HT19 - DA156A - Layout med CSS (2)HT19 - DA156A - Layout med CSS (2)
HT19 - DA156A - Layout med CSS (2)
 
Introduktion till HTML
Introduktion till HTMLIntroduktion till HTML
Introduktion till HTML
 
Responsiv webbdesign + HTML5 + CSS5
Responsiv webbdesign + HTML5 + CSS5Responsiv webbdesign + HTML5 + CSS5
Responsiv webbdesign + HTML5 + CSS5
 
HT18 - DA156A - Introduktion till HTML
HT18 - DA156A - Introduktion till HTMLHT18 - DA156A - Introduktion till HTML
HT18 - DA156A - Introduktion till HTML
 
HT18 - DA156A - Layout med CSS (2)
HT18 - DA156A - Layout med CSS (2)HT18 - DA156A - Layout med CSS (2)
HT18 - DA156A - Layout med CSS (2)
 
HT19 - DA156A - Introduktion till HTML
HT19 - DA156A - Introduktion till HTMLHT19 - DA156A - Introduktion till HTML
HT19 - DA156A - Introduktion till HTML
 
Global återställing av CSS
Global återställing av CSSGlobal återställing av CSS
Global återställing av CSS
 
CSS för utskrift
CSS för utskriftCSS för utskrift
CSS för utskrift
 
VT24 - Responsiv design & Ramverk inom webbutveckling
VT24 - Responsiv design & Ramverk inom webbutvecklingVT24 - Responsiv design & Ramverk inom webbutveckling
VT24 - Responsiv design & Ramverk inom webbutveckling
 
VT23 - RWD & Ramverk
VT23 - RWD & RamverkVT23 - RWD & Ramverk
VT23 - RWD & Ramverk
 
Snabbkurs webbsida
Snabbkurs webbsidaSnabbkurs webbsida
Snabbkurs webbsida
 
jQuery & HTML5 Cache
jQuery & HTML5 CachejQuery & HTML5 Cache
jQuery & HTML5 Cache
 
Introduktion till webbutveckling
Introduktion till webbutvecklingIntroduktion till webbutveckling
Introduktion till webbutveckling
 
VT2019 - DA355A - CSS Grid & Webbramverk
VT2019 - DA355A - CSS Grid & WebbramverkVT2019 - DA355A - CSS Grid & Webbramverk
VT2019 - DA355A - CSS Grid & Webbramverk
 
SEO do's and don'ts for e-commerce
SEO do's and don'ts for e-commerceSEO do's and don'ts for e-commerce
SEO do's and don'ts for e-commerce
 

Vi skapar en webbsida

  • 1. Handledning Vi skapar en webbsida! - med CSS En enkel genomgång hur du kan skapa en enkel webbsidesdesign med hjälp av html och grundläggande css
  • 2. Vi skapar en webbsida Grundläggande genomgång av hur du skulle kunna bygga en enkel webbsidesdesign med hjälp av html och grund- läggande css. Främst för webbläsare som följer W3C:s rekommendationer, det vill säga följer webbstandarden. Jonas Lidström, Isegrim 2
  • 3. Vi skapar en webbsida Vi skapar en webbsida! - med CSS Målsättning V i ska i den här handledningen lära oss att steg för steg skapa en enkel webbsida. Vi kommer att utnyttja teknikens fördelar och begränsningar. Det du lär dig här utgör grunden för mer avancerad webbsidesdesign, men vi kommer inte att titta på några speciallösningar. Sidan som du skapar med den här handledningen kan du sen utveckla på egen hand, eller med efterföljande handledningar och övningar. Förberedelse Skapa ett nytt html-dokument för den här genomgången, vi kan kalla det för min- css-sida.html. Vi kommer även att definiera egenskaper med css. Du väljer själv om du jobbar med en extern css-mall eller med intern-css uppe i head-sektionen av html-doku- mentet. I exemplen kommer jag utgå från att du jobbar med en extern css-mall, skillnaden mellan extern och intern är inte så stor, så du kan lätta följa med i resonemangen ändå. Vill du jobba med en extern mall, döp den då till min-css-sida.css och spara den i samma mapp som min-css-sida.html. 3
  • 4. Vi skapar en webbsida Det finns många wysiwyg-editorer som skapar webbsidor utan att du behöver se hur sidan skrivs (där du inte behöver se hur html eller css skrivs). Jag rekommenderar ändå att du bekantar dig med hur sidor skapas under ytan, det ger dig större kontroll över innehåll och utseende, det ger dig även djupare förståelse för vad som händer. Väljer du att jobba med en texteditor, kom ihåg att websidorna skall sparas med filändelsen [.htm] eller [.html] och stilmallarna sparas som [.css]. Glömmer du det, kommer webbläs- aren öppna filen som en textfil. Handledningen är uppdelad i tre steg. Steg 1 – HTML - Vi skapar en grundläggande sida Vi lägger upp en grundsida i html och talar lite om struktur. Steg 2 – CSS - Vi formaterar dess utseende med css Vi kopplar en css-mall till grundsidan och formaterar sidans utseende. Vi tittar på ett sätt att låta sidan alltid vara centrerad i webbläsar- fönstret. Vi talar lite om hur css skrivs och kopplas till ett html- dokument. Steg 3 – MENY - Vi skapar en navigationsmeny Vi formaterar en lista med länkar, skapar nytt utseende samt position- erar länkar både vertikalt och horisontellt. Vi tittar lite närmare på länkar och vi tar upp sidstrukturer igen. 4
  • 5. Vi skapar en webbsida Bakgrund När du skapar webbsidor med html styr webb- läsarens inställningar hur sidan visas. Stil och storlek på bokstäver, visas utifrån de ins- tällningar besökaren valt eller de standard- inställningar den aktuella webbläsaren har. Med attribut som skrivs in i html-taggen, kan man förändra webbsidans utseende. Men vill man senare ändra sidans utseende, måste man gå in på alla ställen där man skrivit in attribut, särskilt besvärligt är detta om man vill uppdatera flera webbsidors utseende. Vad vill vi uppnå Tanken nu är att vi skall använda oss av en metod där vi skriver webbsidans utseende med css. Det hjälper oss att separera sidinnehåll och utseende. På så vi kan man lättare ändra på sidans utseende, utan att behöva leta reda på alla html-attribut. Det ger oss även nya möjlig- heter, att placera, förändra, färglägga webb- sidans olika delar. Skriver vi vår css i en separat fil, kan den även länkas till flera webbsidor. CSS? Vad kan man göra med CSS-kod? Styra utseendet på ett element, alla element av en viss typ eller hela webbsidor. Man kan bestämma placeringen av element och kontrollera elementens i lager egenskaper. Man kan dölja och visa element och ändra på elementens beteende. Behöver man lära sig CSS utantill? Nej egentligen inte, men det är bra att lära sig grundprinciperna och några ofta förekommande attribut, samt hur boxmodellen fungerar. Vilka ofta förekommande attribut bör man lära sig? Kan givetvis variera, men de grupper jag rekommenderar är de kopplade till boxmodellen (höjd, vidd, positionering, marginaler och kant), de kopplade till text (bokstavsstilar, färg, formatering av text), de kopplad till bakgrunder. Syftet med CSS Om vi delar på innehållet och utseende, kan vi lättare anpassa samma innehåll för olika plattformar, ska det anpassas för att visas på en skärm, en handdator, en mobiltelefon, via din spelkonsol eller skrivas ut på papper. För olika situationer behöver man anpassa sidans utseende på lite olika sätt och om vi ska göra det inne i html-koden, måste vi skapa ett html dokument för varje anpassning. Tänk då att vi har en hel webbplats, med flera interna sidor. Med hjälp av CSS-mallar kan vi istället skapa flera utseenden/anpassningar som formar innehållet istället för att skapa flera sidor med samma innehåll. 5
  • 6. Vi skapar en webbsida CSS är en förkortning som står för Cascading Style Sheets, vilket vi skulle kunna översätta till skurar av stil eller stil som stänker. Förvisso en haltande översättning, men metaforen är inte så dum. För css är tänkt att användas som just ett dokument, var ur utseendet (stilen) flödar från malldoku- mentet in till webbsidorna och formar webbinnehållet. Hur du strukturerar din websida? Du bör alltid märka upp ditt innehåll korrekt, är det en lista använder du dig av list element (<ol>,<ul>,<dl>), rubriker märks upp med rubrik-taggar (<h1>, <h2>, <h3> … ), textstycken märks upp med paragraftaggen (<p>) osv. Undvik att använda dig av ”fel sorts html-tagg” även om slutresultatet blir detsamma. Ibland uppnår du inte önskat utseende, när du märkt upp sidan på ”rätt sätt”, men det kan du lätt ändra med css. Utöver uppmärkning av innehåll, kan du även gruppera ditt innehåll med grupperings-elementen <div> och <span> och på så vis ytterligare dela upp, sortera och placera ditt innehåll. Men se till att inte överanvända dig av dem, de behövs inte till allt, uppmärkningen i övrigt är ofta tillräcklig. Se det som en möjlighet att skapa större strukturer, som håller samman innehållet på webbsidan. Efter uppmärkning är nu allt innehåll antingen på block-nivå (block) eller text-nivå (inline) Blocknivå-element, bildar egna enheter, ofta med en radbrytning före och efter elementet. Textnivå- element, lägger sig på rad efter varandra, på samma nivå och utan radbrytningar. Även om du kan ändra detta beteende, är den generella uppmaningen att man inte bör göra så. Många gånger kan man lösa det på andra sätt, ibland kan detta däremot vara att föredra. Om boxar, namngivning och sånt. Allt innehåll på en webbsida, varje element (uppmärkt innehåll och all text) upptar en viss yta. Innehållet, de olika elementen, kan du nu se som rutor, eller boxar med innehåll som du kan bestämma utseendet och placeringen av. Det man ofta benämner som elementets box och det är detta som syftas till när man talar om boxmodellen. Boxar är alltså den yta som ett element du infogat på din webbsida upptar. Exempel på element: rubriker <h1>, indelningar <div>, paragrafer <p>, betoningar <em>, länkar <a> osv, även webbsidan i sig <body>. Har man märkt upp innehållet på sin sida (med html-taggar, id-namn, klasser) kan man kontrollera hur den ytan ser ut och placeras på webbsidan. Det här är något som oftast sker automatiskt i bakgrunden, men med css tar du kommandot över hur det visas. Boxar kan tilldelas fler egenskaper, som till exempel höjd och bredd, bakgrundsfärg eller bakgrunds- bild, kantlinje, dess bredd, stil och färg, marginal runt boxen och mellanrum mellan boxens kant och dess innehåll. Boxmodellen är en av CSS grundstenar. Lär man sig hur den fungerar har man kommit en bra bit på väg att förstå hur mycket av all CSS fungerar, och varför elementen beter sig som de gör på sidan. Men framför allt hur du själv kan ändra dess beteende. CSS förekommer även som ett html-attribut och heter style! 6
  • 7. Vi skapar en webbsida Vi skapar en webbsida. Steg för steg HTML Innan du sätter igång med denna handledning läser du texten om grundläggande html: [html grund] eller samma information hos World Wide Web Consortium (W3C) http://www.w3.org/TR/html401/struct/global.html . html 1. Inledningsvis startar vi med ett tomt html-dokument &xhtml Det finns flera I handledningen, kommer bara aktuella förändringar skrivas ut (i några fall, anges även om- versioner av upp- givande element i svagare färg). Du placerar förändringarna flera mellan <body>-taggarna, märkningsspråket html och det den del av html-dokumentet som visas i webbläsaren eller i css-mallen. pågår en ständig utveckling av det. Vi kommer att jobba med en extern css-mall, där alla css-deklarationer skrivs in, vi kommer Det finns dessut- om en striktare att växelvis ändra i de båda dokumenten. Det är bra om du ofta sparar och förhandsgranskar, variant av html, gärna i olika webbläsare för bästa resultat, under arbetets gång. Det är inte alltid som som är en kombi- nation av html webbsidan ser lika ut i olika webbläsare och på olika plattformar, allt beroende på webb- och xml – xhtml. läsaren och på användarens personliga inställningar. ” Ett kännetecken för XHTML är att Radbrytningar i html-kod är främst till för att få god översikt, det spelar ingen roll om man strukturens utse- ende styrs av pre- skriver html-taggarna på rad efter varandra. Webbläsaren tolkar innehåll och uppmärkning sentationen; man korrekt ändå, under förutsättning att man skrivit in den rätt. använder således alltid css till pre- sentationen och Du kan även ha för vana att lägga in anteckningar i ditt html-dokument och din css-mall, där html till att bygga strukturen. För att du berättar vad de olika elementen är och var de börjar och slutar. Öppna en html-mall, eller därutöver få en skapa en ny sida från grunden, jobba med html-dokumentet i valfri editor. websajt att kunna impleenteras  Glöm inte att ge sidan en lämplig titel <title>. crossbrowser vali- derar vi den ut- Din sida bör se ut något liknande detta: ifrån rätt doctype för att få den att följa en webb- 1. <!DOCTYPE … > standard.” Ett html-doku- 2. <html … > ment ska deklar- eras som ett 3. <head> text/html , medan ett xhtml doku- ment skall deklar- 4. <title>Din sidtitel </title> eras som antin- gen applica- 5. </head> tion/xml eller application/xhtm 6. <body> l+xml. Läs mer: 7. <!-- Sidans innehåll här -->  HTML-grund 8. </body> 9. </html> Som du ser, har jag inte skrivit ut all information i exemplet ovan, - läs den grundläggande texten [html grund] för att skriva in vad som saknas.. 7
  • 8. Vi skapar en webbsida 2. Innehåll Vi behöver bestämma oss för vad som skall finnas med på vår sida och hur vi tänkt oss fördela innehållet över sidytan. Jag kommer att utgå från en enkel sidlayout, som är lätt att variera. Längst upp på sidan sätter vi en titel, man kan tänkas byta ut den mot en bild i ett senare skede. Längst ner på sidan placeras kontaktinformation i ett eget fält, som en sidfot. Där mellan gör vi plats för annat sidinnehåll, som till exempel texter, bilder, länkar och navi- geringsmeny. Även med detta upplägg, kan vi variera sidans layout på flera sätt. Utöver val av färg och storlek på de olika enheterna (sidhuvud, sidfot och sidinnehåll), kan placering av navigationsmeny påverka intrycket av sidan rätt mycket. Så mycket att vi bör se den som ytterligare en enhet och ta den i beräkning när vi lägger upp vårt arbete. Nästa steg blir att avgöra hur vi ska märka upp sidan, vilka html-taggar ska vi använda oss av. I detta steg, är det viktigare att veta delarnas funktion än hur de skall se ut och placeras. Sidhuvudet, sidfoten och sidinnehållet (satsytan) är separata enheter >>block<<, likaså menyn. Till de tre första kan vi använda oss av grupperings-taggen <div>, för att skapa avskilda enheter. Menyn kommer att bestå av en mängd länkar, vilket passar att placeras i en lista. Man kan även tänka sig att vi använder oss av rubrik-taggen <h1> som sidhuvud då den är tänkt att användas som sidans titel och man kan tänkas använda en paragraf-tagg <p> till sidfoten, då den enbart skall användas till enkel text (kontaktinformation). Ett annat alternativ skulle kunna vara att placera texten (kontaktinformationen) inom <address>-taggen, vilket än mer gör det till tydlig uppmärkning av innehållet. Resterande sidyta, placerar vi inom en <div>-tagg. Vi samlar alla dessa olika delar inom en yttre sammanhållande <div>-tagg, för att ordna och placera innehållet som en sammanhållen gemensam yta. 8
  • 9. Vi skapar en webbsida 3. Yttre sammanhållande block Infoga ett <div>-element på din sida ge div-taggen en unik identitet, förslagsvis något som beskriver div-taggens funktion. I det här fallet kommer vi att använda den här div-taggen som en yttre ram till allt annat sidinnehåll, jag ger den därför identiteten sidyta *id=”sidyta”+. 10. <div id=”sidyta”> 11. <!-- här mellan placeras alla andra enheter, som sidhuvud, sidfot, satsyta och meny --> 12. </div> Det kan vara bra om du tillfälligt placerar lite text innanför <div>-taggar, medan du arbetar med dem, då de annars riskeras att inte visas när du förhandsgranskar i en webbläsare. Den oformaterade div-taggen baserar sin höjd på innehållet. Saknar den innehåll, kollapsar div- taggen ner till en höjd av noll [0], vilket inte är synligt i en webbläsare. 4. Sidhuvud/Rubrik Vi behöver avdela en yta för sidhuvudet, du kan välja att göra det med en <div>-tagg men jag föreslår att du istället använder dig av ett annat block-element, rubriker. Infoga den största rubriktaggen <h1> och ge den en unik identitet, som beskriver dess funktion. Jag väljer att ge den beskrivande identiteten sidhuvud *id=”sidhuvud”+. Skriv även in en temporär titeltext. 11. <h1 id=”sidhuvud”> Min webbsida! </h1> 5. Sidinnehåll (satsyta) Nu lägger vi in en yta för diverse innehåll, som texter, bilder m.m. Eftersom innehållet kan variera använder vi oss av grupperingstaggen <div>, i ett senare skede kanske vi vill fylla den här ytan olika stycken, kolonner, citat och då vill vi hålla den ytan så öppen som möjligt. Vi ska även ge den här ytan en unik identitet. Jag kommer att låna det typografiska uttrycket satsyta, för att beskriva den här enheten. Satsyta är inom typografiska sammanhang den del av en sida som upptas av text och bild. Jag vill inte ge delen ett namn som är för likt någon annan indelning (sidyta-sida-sidinnehåll) och jag bör undvika specialtecken som å, ä och ö. 12. <div id=”satsyta”> Tillfällig text </div> 13. <!-- placer något mellan så att inte div-taggen kollapsar --> 6. Sidfot Infoga nu även en yta för sidfoten, jag väljer att även här använda mig av en <div>-tagg, då det inte är säkert att man enbart kommer infoga kontaktinformation här. 11. <div id=”sidfot”> Min sidfot! </div> Du ger givetvis dina indelningar valfria namn, men se till att det är lätt att förstå vilken det är. 9
  • 10. Vi skapar en webbsida 7. Koppla samman html-dokumentet och extern css-mall Innan du fortsätter är det en sak till som vi bör lägga till på html-dokumentet, en länk till css-mallen. Glömmer vi länka mellan dokumenten, kan inte webbläsaren veta vilka egen- skaper som skall kopplas till element på sidan och lämnar dem därför oformaterade. Sammanlänkningstaggen <link> placeras mellan <head> och </head> i html-dokumentet. 1. <head> 2. … 3. <link href="stylel.css" rel="stylesheet" type="text/css" media="screen" > 4. </head> Man kan koppla flera olika stilmallar (css-mallar) till en och samma webbsida, som anpassas för olika [media]. Kommer stilmallar i konflikt med varandra, gäller den som läses in sist. Alternativ – intern css Du kan även placera din css i html-dokumentet. Skrivsättet är detsamma som för den externa mallen, med den skillnaden att det placeras uppe mellan <head>-taggarna. För att webb- läsare skall tolka innehållet rätt och inte skriva ut det som text, använder du dig av <style>- taggar. För äldre webbläsare, som inte kan tolka css eller <style> inte ska läsa och skriva ut koden som text, placeras även all css inom komentatorstaggar <! -- … -- > 1. <head>… 2. <style type="text/css" > 3. <!-- 4. Css { … } 5. --> 6. </style> 7. </head> Sådär nu är du (nästan) färdig! Nu behöver du bara ge den ett nytt utseende… 10
  • 11. Vi skapar en webbsida CSS Steg för steg Öppna upp din css-mall i valfri editor. Det är bra om du under arbetets gång ofta sparar och att du ofta testar din webbsida i olika webbläsare för bästa resultat; det är inte alltid som det ser lika ut mellan olika webbläsare. Din sida ser just för tillfället inte så mycket ut för världen, inte ens om jag fyller på med mer text. Om du lägger till en underrubrik (<h2>), ett kort textstycke (<p>), och ett citat (<blockquote>), inom <div>-taggen [satsyta], skulle din sida kunna se ut någonting liknande detta: <div id=”sidyta”> <h1 id=”sidhuvud”> <div id=”satsyta” > <h2> <p> <blockquote> <div id=”sidfot”> Fortfarande inte så spännande, nu ska vi formatera innehållet, ge det nya egenskaper, nytt utseende. Så första steget blir att skriva in regelsatser som kopplar till de olika delar vi just skapat. En regelsats består av en selektor (ett taggnamn, en identifierare eller klass), följt av ett deklarationsblock. Deklarationsblocket skrivs in mellan klamrar [{] och [}]. Deklarationsblocket samlar alla egenskaper som vi tilldelar ett element, flera egenskaper kan radas upp efter varandra om de separeras av semikolon [;]. CSS-regelsatsen får då en syntax som består av tre delar: Selektor, egenskap och värde selektor {egenskap: värde;} Vill man ange samma egenskaper till flera selektorer, kan man separera dem med kommatecken: Selektor, selektor, selektor {egenskap: värde;} 11
  • 12. Vi skapar en webbsida 1. Förarbete med Stilmallen Infoga tomma regelsatser för alla element som du vill påverka, vi kommer att tilldela dem egenskaper allt eftersom. Html-taggar skrivs in med enkel text utan hakparenteser, identifierare föregås av nummertecknet (#) och klasser föregås av punkt (.). Vilka element och id-namn är det då vi har i vårt dokument. Hela webbsidan ligger inom <body>, vi har även <h1>, <h2>, <p>, <blockquote> och <div>, div-taggarna och största rubriktaggen<h1> har även unika namn (id). Skriv bara in de element som du tänkt dig att ändra på och gruppera element som har egenskaper med samma värden. I vårt fall är det viktigare att skriva in regelsats för de unika namnen (id) än en regelsats för alla <div>-element. Däremot kan vi gruppera <h1> och <h2>, som får samma bokstavsstil (font) och sedan ge <h1> unika egenskaper utifrån sitt namn (id). 1. body {} 2. h1, h2 {} 3. #sidyta {} 4. #sidhuvud {} 5. #satsyta {} 6. #sidfot {} 2. Bakgrund, textstil och färg på brödtext Infoga nu egenskaper för <body>, vi kommer att ge den bakgrundsfärg. Här kan man även definiera vilken stil och färg vi ska använda till text på webbsidan. Då element ärver (vissa men inte alla) egenskaper av sina föräldrar (element som omsluter dem, vilket body-taggen definitivt gör), så definierar vi nu utseendet på all text på hela webbsidan. 1. body { 2. background-color:#066; 3. color:#036; 4. font-family: "Times New Roman", Times, serif 5. } Vill vi använda oss av andra färger eller stilar(font) i någon del av sidan, till exempelvis på rubriker, måste vi ange avvikelsen hos de elementen. Det som deklarerats senare, ersätter det föregående på de ställen (de element) det är angett. 12
  • 13. Vi skapar en webbsida Rubriker Nu lägger vi till gemensamma egenskaper för alla rubriker, du kan skriva in rubriknivå tre även om den inte förekommer i dokumentet, så är du beredd på eventuella framtida förändringar. På så vis behöver du bara märka upp webbsidan korrekt för att få en tydlig lättläst layout, med rubriker som avviker från brödtexten. 6. h1, h2, h3 { 7. color: #005; font-family: Arial, Helvetica, sans-serif; 8. } 3. Ge sidelementen bakgrundsfärg Under tiden du jobbar med sidlayout kan du med fördel ge de olika ytorna (boxarna) en unik bakgrundsfärg, så att du lättare ska kunna hålla reda på hur de placerar sig i förhållande till varandra. Det behöver inte vara ”rätt färger” så här i början, det spelar inte så stor roll vilka färger det är, så länge de inte är samma. Vi kommer sedan att ta bort bakgrundsfärgen eller byta ut den mot en som lämpar sig bättre för det intryck vi vill uppnå. 9. #sidyta { 10. background-color: #33f; 11. } 12. #sidhuvud { 13. background-color: #ff3; 14. } 15. #satsyta { 16. background-color: #f55; 17. } 18. #sidfot { 19. background-color: #3f3; 20. } Förhandsgranska sidan i en webbläsare, du kommer se de olika ytorna i den färg som du tilldelat dem. Saknar du någon yta, dubbelkolla om ytan saknar innehåll. Är den tom, skriv tillfälligt in något eller några ord. 13
  • 14. Vi skapar en webbsida 4. Sidhuvudet Vi börjar med att förändra sidhuvudet. Första steget blir att göra rubriken centrerad på sidan, det gör vi med text-attributet [text-align]som vi ger värdet [center]. Förhandsgranskar vi sidan kan vi nu se att texten är centrarad. Du kan passa på att byta textfärg [color] och bakgrundsfärg [background-color]på sidhuvudet om du vill. Vill du att texten inte skall ligga så nära överkanten av sidhuvudet, lägger du till lite marginal mellan innehåll och sidhuvudets yttre kant [padding]; pröva dig fram hur mycket du behöver. Det kan även vara läge att definiera en fast höjd [height] på sidhuvudet, kom ihåg att du måste skriva ut enheter (pixlar skrivs px) i css. 7. #sidhuvud { 8. background-color: #...; 9. color: #...; /* ändra bara färgen här om den ska avvika från det du angett för rubriktaggar tidigare */ 10. text-align:center; 11. height: 75px; 12. padding-top: 10px; 13. } Om man vill ersätta sidhuvudets bakgrund med en bild gör du det med bakgrundsattributet [background-image] enligt följande: 7. background-image:url(...här skriver du in sökväg och bildens namn); 5. Sidfoten Definiera på samma sätt, ny bakgrundsfärg och textfärg som passar till den på sidfoten. Skriv även in sidfotens höjd och inre marginaler. 8. #sidfot { 9. background-color: #...; 10. color: #...; 11. height: 75px; 12. padding: 5px; 13. } Samma gäller som ovan, att om du vill ersätta bakgrundsfärgen med en bild, så använder du dig av bakgrundsattributet [background-image]. 14
  • 15. Vi skapar en webbsida 6. Satsytan, ytan för sidinnehåll Den här ytan ska vi inte göra så mycket med, den kommer att vara behållare för alla delar som du stoppar in på din sida; som texter, bilder m.m. Så vi vill inte ge den en fixerad höjd, så att vi begränsas av hur mycket som ryms på höjden. Däremot vill vi inte heller att den ska vara för liten, när vi saknar innehåll. Därför ska vi definiera minsta önskade höjd med attributet [min-height] Min-height, gör så att om innehållet är större än ytan, expanderar den, men är den mindre stannar den vid den storlek vi valt. 14. min-height: 200px; Marginaler För att snygga upp ytan och lyfta fram dess innehåll, lägger vi till marginal mellan ytans yttre kanter och dess innehåll, så kallad inre marginal [padding]. Men vi vill kanske inte använda oss av samma marginaler hela vägen runt om, kanske man kan ha större på vänster och höger sida än uppe och nere. För detta kan vi använda oss av två metoder, den ena är att definiera inre marginal för var och en av dem (padding-top, padding-right, padding-bottom och padding-left) eller så skriver vi det i en förkortad form: 15. padding: 10px 50px 10px 50px; Marginalen, anges då i ordningen top,right, bottom, left - alltså medsols. Har dessutom top - bottom och right -left samma värden som ovan, kan man förkorta ner det ytterligare. 15. padding-top: 10px 50px; Bakgrund Välj även en passande bakgrundsfärg till ytan, tänk på vad du skall fylla sidan med, ofta fungerar en ljus yta bättre. Detsamma gäller att en enfärgad yta ofta passar bättre än en brokig (som till exempel en bild). Pröva dig fram till vad som passar just din designidé. 15. #satsyta { 16. background-color: #...; 17. color: #...; 18. min-height: 200px; 19. padding: 10px 50px; 20. } 15
  • 16. Vi skapar en webbsida 7. Centrera hela sidan och definiera dess bredd Nästa steg blir att centrera allt innehåll på vår sida, till det ändamålet ska vi använda oss av den omslutande <div>-taggen [sidyta]. Vi kommer att använda oss av boxegenskapen för yttre marginal [margin], den som anger marginal mellan box och omgivande element. I det här fallet är det enbart <body> som omger div-taggen [sidyta], vilket kommer göra så att den alltid är centrerad i webbläsarfönstret. Men vi vill inte centrera både lodrätt och vågrätt, utan enbart vågrätt (åt sidorna), vi anger därför enbart marginalvärden för höger och vänster marginal. Höger [margin-right] och vänster [margin-left], vi ställer in värdet till [auto]. Värdet [auto] anger i det här fallet att marginalen skall bli så stor som möjligt och eftersom vi anger [auto] på både höger och vänster sida fördelas ytan mellan dem; och sidan centreras. För att det här ska fungera, måste vi också ange bredd på sidytan [sidyta]. Det förhands- inställda beteendet hos blockelement gör så att den upptar en hel radbredd, den breder ut sig på så stor bredd som finns tillgänglig. Vilket då gör så att det inte finns något utrymme kvar för marginalen (som när den är inställd på [auto] tar det utrymme som blir över). 21. #sidyta{ 22. margin-left: auto; 23. margin-right: auto; 24. width: 680px 25. } Sådär, nu är du färdig! Nu behöver du bara en navigationsmeny… 16
  • 17. Vi skapar en webbsida LÄNKAR En kort beskrivning Om du känner dig säker på hur man skriver och använder länkar, kan du hoppa över det här kapitlet och fortsätta direkt med nästa kapitel - meny. Du kan även läsa mer om länkar i den grundläggande texten: [övning: länkar] och på World Wide Web Consortium (W3C) http://www.w3.org/TR/html401/struct/links.html <a> Inledning Även om det är ett enkelt koncept, har länken varit en av de främsta drivkrafterna till framgång för webben. En länk <a> är en förbindelse från en webbsida till en annan punkt på internet. Man kan länka inom en och samma webbsida likväl som till en annan webbsida, som ligger på eller utanför den egna webbplatsen/servern. En länk har två ändar - kallade ankare - och en riktning. Länken startar vid ett "käll-ankare" (den klickbara ytan) och pekar mot ett "destinations-ankare", t.ex. en webbplats, en bild, ett videoklipp, ett ljud, ett program, ett HTML-dokument, ett element i ett HTML-dokument osv. När länk-taggens [href] attribut är satt, definierar elementet det en källa (ankare) för den länken, som kan aktiveras av användaren (genom att klicka) för att hämta en webbresurs. Den hämtade webbresursen kan hanteras av webbläsaren på flera sätt: Genom att öppna ett nytt fönster, genom att öppna i samma fönster som webbsidan med länken (och då ersätta innehållet med den nya sidan, eller innehållet), genom att starta ett program för att hantera källan (destinationsankaret: ett ljud, en film, ett dokument et.c.). Länk-attributet [target] kan berätta för webbläsaren om den skall öppna destinations- ankaret i ett nytt fönster *target=”_blank”+ eller i samma fönster [ target =”_self”+, men kan även länka till en namngiven yta (frame) *target=” … ”+ (där man då skriver in ytans defini- erade [name]). Anger man inte [target], utgår webbläsaren oftast från att destinations- ankaret ersätter källan (sidan med länken). Så man behöver inte skriva in attributet om det är det här beteendet man vill uppnå. När ett [name] eller [id] attribut finns angivet hos länk-taggen kan länken fungera som ett ankare, som kan användas av andra länkar att länka till, även inom en webbsida. På samma sätt, kan en länk-tagg länka till ett element på en webbsida, om den har en unik identitet. Man kan med fördel använda sig av [title] attributet i länk-taggen för att ge mervärde och information till användaren om länken. En [title] kan även läsas upp av talsyntes eller visas av webbläsaren. <a href=”… destination ” name=” … ” id=” … ” title=” Beskrivning av vad länken leder till” > Vad som syns </a> . 17
  • 18. Vi skapar en webbsida Hur länkar ser ut, och hur du vill att de ska se ut på din webbsida? När en text formaterats till en länk, visas detta ofta genom att texten ges ett avvikande och framträdande utseende. Webbläsaren brukar även visa länkens nuvarande tillstånd: att det är en länk; att det är en besökt länk; att det är en aktiv länk. Muspekarens utseende ändras i de flesta fall hos webbläsaren (från pil  till hand), när den ligger ovanför en länk. länkar Tänk på att det fin- Vanligast förekommande förändring av länktexter är textfärgen. Visa att det är en länk ns en anledning till genom att göra länktexten blå och göra den understruken, visa att en länk redan är att länkar är utmär- kta och avvikande, använd genom att göra den lila och medan länken är aktiv/klickas på/används visa den det är meningen att som röd. Webbläsaren kan även visa att länken är markerad/vald/i focus genom att ge man ska hitta dem – förstå att de går länken en ram av prickar, länkar kan få en ny färg när muspekaren ligger ovanför länken. att klicka på! Med CSS kan du förändra de förhandsinställda länkfärgerna, men även ge länkar nya egenskaper. Du kan ge länkar de flesta block-, text- och font-egenskaper, även om länkar är inline-element, vilket är väldigt användbart. CSS exempel Exempel på egenskaper du kan ge: kantlinje (border – widht, -color, -style), marginaler (padding, margin) bakgrund (background -color, -image, -position), positionering (position, top, float …)m.m. 1. a{ font-family: Tahoma, Geneva, sans-serif; 2. font-size: xx-large; 3. font-weight: bolder; 4. color: #F90; 5. text-decoration: none; 6. background-color: #0FC; 7. text-align: center; 8. margin: 5px; 9. padding: 5px; 10. border: thin double #00F; 11. } 12. /* … och så vidare … */ Display kan växla ett element från att bete sig som ett inline till att bete sig som ett block-element och vice versa. Man kan även välja display:none; för att dölja elementet helt och hållet . 13. a { display: block; … } 18
  • 19. Vi skapar en webbsida Text-decoration, color, background, font-size och text-align font-size text-decoration: har flera val (läs mer om det i css text och font-övningarna), men Användaren kan ändra inställnin- vill du ta bort understrykningen hos länkar skriver du in[none], vill gen för bokstäv- du få den att blinka skriver du [blink] och vill du återställa ernas storlek i sin egen webbläsare. understrykningen skriver du [underline]. Dessutom kan det color: ger texten en ny färg, välj mellan webbfärgnamn eller skriv in det skilja mellan olika webbläsare hur med hexadecimaler [#RRGGBB] (läs mer om det i webbfärger). stor skillnad det blir. background-color: ger bakgrunden till länktexten en ny färg. Ett enkelt fix för detta är att tilldela background-image: ger dig möjlighet att använda en bild som bakgrund till länktexten, ett attribut till <html> med css tänk på att ytan begränsas av radlängd och radhöjd (läs mer om och sätta textstor- hur du kan påverka detta i css text och fontövningarna). leken till 100.01% Html { font-size: ändrar storleken på bokstäverna (läs mer om hur du kan påverka font-size:100.01% } detta i css text och fontövningarna). För att sen sätta storleken på text i text-align: ändrar justeringen av texten, normalt är text vänsterjusterad t.ex <body>. [left], men du kan även välja högerställd [right], centrerad [center] och marginaljusterad (dvs rak kant både åt höger och vänster) [justify]. Pseudoklasser Det finns några speciella selektorer som främst är kopplade till länkar och som inte kan användas på egen hand, utan måste kopplas till en html-tagg, en id-selektor eller en klass- selektor. De sätt direkt efter aktuell selektor avskild enbart av ett kolon ( : ). Dessa selektorer kallas för pseudoklasser och kan inte användas separat LVHA(f) De vi ska titta på här är kopplade till länkarnas olika tillstånd: Ordning på pseudo- klasserna är viktiga :link är en normal obesökt länk, länkens normaltillstånd. just för hur webb- läsare läser in dem. :visited är en besökt länk, visas när man kommer tillbaka till sidan. Den senare regeln ersätter föregående :hover är ett tillstånd när muspekaren placeras (svävar) ovanför länken. om det uppstår en konflikt dem emel- lan. :active är ett tillstånd när länken är vald, klickas eller används. :focus är ett tillstånd när webbläsarens fokus ligger på länken. När du skriver in pseudo-klasserna i ditt css-dokument, måste de skrivas in i den ordning som du ser ovan (för att fungera fullt ut) men du behöver inte definiera dem allihop. Det finns väldigt mycket man kan göra för att lyfta fram sina länkar på en webbsida, men ibland vill man även att länkarna skall smälta in i en löptext. Pseudo-klasserna [:active]och [:focus] brukar glömmas bort, men det är lika viktigt som de andra, dels för att underlätta tillgängligheten och dels för att betona det aktiva tillståndet. 19
  • 20. Vi skapar en webbsida Du kan ge varje tillstånd egna egenskaper, på samma sätt som du kan ge länktaggen egenskaper. Du kan även skriva en deklaration för <a>-taggen som gäller för sidans alla länkar. Det skall då vara allmänna värden, som till exempel textens stil (font) eller annat som inte skall ändras och som gäller för alla tillstånd på sidans länkar. Det vanligaste är att ändra länktextens färger, ta bort understrykningen och ge länken olika bakgrund beroende på i vilket tillstånd den befinner sig i. 14. a { font-family: arial, sans-serif;} 15. a:link { background-color: #fff; color: #000;} 16. a:visited { background-color: #eee; color: #333;} 17. a:hover { background-color: #000; color: #fff;} 18. a:active, a:focus { background-color: #333; color: #eee;} Du skriver enbart in de förändringar som skall göras (textfärg, bakgrundsfärg et.c.). Du kanske noterar att i exemplet ovan både finns angett en regel för länkar i allmänhet [a] och länkars normaltillstånd/oanvänd länk [a:link], vilket kan tyckas onödig dubbel- skrivning. Men det står med där, för att skilja på vilka egenskaper alla länkar skall ha, oavsett tillstånd och vad som hör till ett aktuellt tillstånd. Vi vill inte att webbläsaren skall sluta använda vissa egenskaper bara för att länken används, är besökt, osv och vi vill slippa a och a:link skriva samma egenskaper (med samma värde) flera gånger. Därför skriver du bara in det Pseudoklassen [:link] som skall förändras i de olika tillstånden. letar efter närvaron av - [href] - i det element som regeln Men du behöver även vara medveten om att när du deklarerar en regel för [a] omfattar för pseudoklassen är den även länkar som fungerar som ankare inom ett dokument (de som inte länkar till en kopplad till. Saknas denna, tolkar webb- plats utan till en identitet eller ett namn). Vill man inte att regeln skall omfatta även kapitel läsaren det inte som och styckes referenser inom dokumentet, utan enbart länktaggar som används till externa en länk (:link). länkar, kopplar man regeln till [a:link] enbart. 20
  • 21. Vi skapar en webbsida MENY Steg för steg Öppna upp både din css-mall och ditt html-dokument i valfri editor. Vi kommer att lägga till länkar och bygga en meny av dem, menyn skapas delvis med hjälp av css. Du kan om du vill, jobba med menyn i ett separat projekt/dokument och kopiera in den när du är färdig. Det är bra om du under arbetets gång ofta sparar och att du ofta testar din webbsida i olika webbläsare, det är inte alltid som det ser lika ut mellan olika webbläsare. Känner du dig osäker, läser du föregående beskrivning av och korta genomgång om länkning. 1. Länk, lista, navigeringsmeny A  Infoga minst en länk i ditt html-dokument, har du inget att länka till kan du som länkmål skriva in nummertecknet (#) eller en blanrad ( ). 19. <a href=”#” title=” en länk”> Länk </a> A B  Du kan även placera din länk i en lista, särskilt om du har flera. Fördelen med att lägga länkar inom en lista är att de blir tydligt uppdelade även om sidformateringen (css) går förlorad eller stängs av. Man kan man även argumentera för att en samling länkar är just en >> lista << med länkar, så då blir det även semantiskt rätt när man märker upp sidan. 1. <ul> href=”#” 2. <li> <a href=”un.html” title=” Una enlace muy interesante” > Un </a> En del webbläsare förstår inte använd- 3. </li> andet av tomma län- kar eller länkar som 4. <li> <a href=”dos.html” title=” Una enlace muy interesante” > Dos </a> inte leder någon- stans. Som vid använ- 5. </li> dandet av – [#] - som länkmål. Stöter du på 6. <li> <a href=”tres.html” title=” Una enlace muy interesante” > Tres </a> problem, hitta på en länk som ser rätt ut, eller länka till något 7. </li> tillfälligt. 8. </ul> Nästa steg blir att förändra utseendet hos de här länkarna och listan, så att de ser ut som en del av sidans grafiska utformning, så det mer är en navigeringsmeny än text. Men redan nu bör du bestämma dig för hur menyn ska placeras och hur stor yta den får uppta. Vi ska titta på tre enkla menyer, som skapas på lite olika sätt, den första skapas med enbart formaterade länkar, de andra två utgår från länkar i en lista. Du kan läsa den första separat och slutresultatet kommer att bli en färdig meny, eller så kan du hoppa över den och läsa direkt om de två andra. Utseendet, det visuella slutresultatet kan bli detsamma med bägge arbetssätten, det som skiljer dem åt är hur de visas när css saknas eller är avstängt.  Känner du dig osäker, kan du med fördel välja den första menyvarianten, då den är enklare och innehåller färre moment. Vill du i ett senare skede byta till en lista är det följer du bara stegen för en meny skapad av listor. 21
  • 22. Vi skapar en webbsida A 1.1. Meny, av enbart länkar Du har nu minst en länk, förslagsvis flera, så att du kan se hur de kommer att se ut på din webbsida. Vi kommer nu att ge länkarna nytt utseende och göra så att de ändras när man interagerar med dem (använder länken). Du väljer givetvis färg och stil efter vad som passar just på din sida, jag kommer att göra mina länkar fetstilta, ändra bokstavsstilen(font), ta bort understrykningen, ändra bokstävernas färg till mörkblå och ge dem en gul bakgrundsfärg. Öppna upp din stilmall (css-dokument) och lägg till en regelsats för länktaggar <a>: 1. a { 2. font-weight: bold; /* fetstilt text */ 3. font-family: Arial, Helvetica, sans-serif; /* ny font */ 4. text-decoration: none; /* tar bort understrykning */ 5. color: #009; /* mörkblå textfärg */ 6. background-color: #ff0; /* gul bakgrundsfärg */ 7. } Spara både ditt html och css-dokument och förhandsgranska resultatet. Du kommer nu att se hur alla länkar på webbsidan fått det nya utseendet. Du märker även hur länkarna ligger tätt ihop, sida vid sida och att den gula bakgrunden ligger precis bakom länktexten. Vi ska därför lägga till utrymme, yta för bakgrunden att breda ut sig på. Det gör vi med inre margnal, [padding], pröva dig fram till hur mycket som behövs, här lägger vi till tio pixlars extra höjd och bredd (fem pixlar från innehållet och utåt). 1. {… padding: 5px; …} Nu ser det lite bättre ut, vi skulle kunna nöja oss med detta om vi ville, men vi kan även lätt lägga till fler egenskaper. Kanske vill vi ha en ram runt länken, det gör vi med egenskapen kantlinje [border]: (border-color, border-style, border-width). Kanske vill du öka avståndet mellan länkarna (utan att för den skull öka den färgade ytan), det gör du med yttre marginal [margin]: (margin-top, margin-right, margin-bottom, margin-left). 2. {… 3. border: #009 thin solid; 4. margin-left: 10px; 5. } Även om storleken på länkknapparna styrs av länktextens längd, har vi kommit en lång väg mot att skapa oss en webbsidesmeny, nästa steg blir att lägga till interaktivitet. 22
  • 23. Vi skapar en webbsida :link, :visited, :hover, :active, :focus. Lägg till pseudoklasser för länktaggen, kom ihåg ordningen och att enbart skriva in vad som skall ändras (t.ex. bakrundsfärg och passande textfärg). Har flera pseudoklasser samma värde, kan du med fördel bunta ihop dem, kom ihåg att separera dem med komma [ , ]. 6. a:visited { color: #449; background-color: #880;} 7. a:hover{ color: #490; background-color: #940;} 8. a:active, a:focus{ color: #6f0; background-color: #f60;} Här, de tre olika tillstånd som vi angett ovan. Först en besökt länk (visited), sedan en med muspekaren över (hover) och sist en länk som är i fokus/är aktiv (active/focus). Vi kan även se länktiteln (title) när muspekaren ligger över länken. Man kan med fördel samla alla länkarna som skall utgöra länkmenyn inom en <div>-tagg, dels för att man då kan ge hela menyn en bakgrundsfärg, kantlinje och så vidare, men även för att avskilja dem från annat innehåll på sidan. Vill man använda sig av fler länkar, men inte att också dessa skall få samma formatering som en menylänk, gör vi det lättast på följande vis.  Samla alla menylänkar inom en <div>-tagg och ge den en unik identitet [id], till exempel meny *id=”meny”+. Koppla sedan id-selektorn till länkar som ligger innanför div-taggen genom att skriva in id-namnet som en del av css-regeln för menytaggarna. Du åstadkommer detta genom att framför varje länkregel även skriver id-namnet följt av ett mellanslag. Regeln läses då av webbläsaren som: länk inom namngivet element; och inga andra länkar på sidan ände innanför div-taggen påverkas av css-reglerna. html 1. <div id=”meny> 2. <a href=”#” title=”Länk” > Länktext </a> 3. </div> Du kan även passa på att ge div-taggen som omger länkarna egna egenskaper. css 1. #meny { … } /* egenskaper till den omslutande div-taggen */ 2. #meny a { … } /* länkar innanför ett element med id=meny */ 3. #meny a:visited { …} /* besökt länk*/ 4. #meny a:hover{ …} /* lank när muspekaren “hänger” ovanför */ 5. #meny a:active, #meny a:focus { … } /* flera med samma värden */ 23
  • 24. Vi skapar en webbsida B1 1.2. Vertikal meny av lista med länkar Du har nu minst en länk [a], förslagsvis flera, placerade i en lista. Det spelar ingen roll om det är en numrerad (ordered list [ol]) eller onumrerad punktlista (unordered list [ul]), för vi kommer att ta bort listpunktmarkeringarna. Vi kommer även att ge länkar och lista nytt utseende, samt göra så att de ändras när man interagerar med dem (använder länken). Fördelen med att lägga länkar inom en lista är att de blir tydligt uppdelade även om sidformateringen (css) går förlorad eller stängs av. Man kan man även argumentera för att en samling länkar är just en >> lista << med länkar, så då blir det även semantiskt rätt när man märker upp sidan.  Länk i lista Länk utan lista  När css formateringen går förlorad syns länkar i en lista tydligare, än länkar lagd efter var- andra, därför underlättar du sidnavigeringen även för dem som inte kan se formateringen. 9. <ul> 10. <li> <a href=”un.html” title=” Una enlace muy interesante” > Un </a> </li> 11. <li> <a href=”dos.html” title=” Una enlace muy interesante” > Dos </a> </li> 12. <li> <a href=”tres.html” title=” Una enlace muy interesante” > Tres </a> </li> 13. </ul> Nästa steg blir att förändra utseendet hos de här länkarna och listan, så att de ser ut som en del av sidans grafiska utformning, så det mer är en navigeringsmeny än text. Vi kommer att utnyttja att listor är blocknivå-element och forma listans utseende och storlek, på så vis behöver vi inte lägga till ytterligare behållare (sidavdelare, som t.ex en div-tagg). Ge list-elementet en unik identitet, förslagsvis något som beskriver dess funktion. I det här fallet kommer vi att använda den här list-taggen som en yttre ram till allt menyinnehåll, jag ger listytan därför identiteten meny *id=”meny”+. 9. <ul id=”meny” > … När vi sedan formaterar listan (som nu har namnet [meny]), listposterna [li] och länkar [a] i listan, kopplar vi ihop dem på följande vis: 1. #meny { … } /* egenskaper till den omslutande list-taggen */ 2. #meny li { … } /* egenskaper till list-posternas yta */ 3. #meny li a { …} /* egenskaper till länkar inom en listpost */ 24
  • 25. Vi skapar en webbsida Formatera listan Det finns några få listspecifika egenskaper du kan ändra hos listor med CSS: 1. ul { 2. list-style-type: xxx; /* listposternas inledande numrering eller symbol */ 3. list-style-position: xxx; /* placera symbolen/numret innanför eller utanför */ 4. list-style-image: url( xxx ); /* byta ut listpostens inledande numrering/symbol mot en bild */ 5. } Du kan ändra på listposternas inledande numrering eller symbol, placera symbolen/numret innanför eller utanför listan eller byta ut listpostens inledande numrering/symbol mot en bild. Utöver detta är det intressant att veta att både listan i sig själv (ol och ul) och listposterna (li) är block-element, så man kan påverka deras utseende på samma sätt som boxar i övrigt (höjd, bredd, bakgrund, kantlinje, marginaler, …). Vi att använda oss av en ospecifierad lista (ul) men ändra gärna tillfälligt till en numrerad lista (ol) för att pröva de olika numreringsalternativen. <ul> Ospecifierad lista: Pröva skriv list-style-type:  disc (för en lista med fyllda punkter)  circle (för en lista med cirklar)  square (för en lista med fyrkanter)  none (för en lista utan inledande symbol på listposten) <ol> Specifierad lista: Pröva skriv list-style-type: 1. decimal eller decimal-leading-zero (för en vanlig numrerad lista) 2. upper-latin, upper-alpha 3. lower-latin eller lower-alpha (för en lista ordnad med bokstäver: a b c …) 4. lower-roman eller upper-roman (för en lista romerskt numrerad I II III IV…) 5. armenian, georgian eller lower-greek etc (för språk specifik numrering) 6. none (för en lista utan inledande symbol på listposten) Ta bort inledande symbol genom att specificera värdet [none] till [list-style-type]. 1. #meny { 2. list-style-type: none; /* listposternas inledande numrering eller symbol */ 3. } 25
  • 26. Vi skapar en webbsida Färg och form Vårt nästa steg blir att ge listytan (den yta listan utgör) bakgrund och form, vi börjar med bakgrundsfärg [background-color]. Du kan givetvis även använda dig av bakgrundsbilder, men här håller vi oss nu till att välja bakgrundsfärg. 1. #meny { 2. background-color: #f90; /* vi tilldelar listan boxegenskapen för bakgrund */ 3. } Block-element upptar hela sidbredden om man inte anger en begränsning, vi ska därför ange en fast bredd till listan [width]. Vi ska även lägga till lite inre marginal [padding], så att inte texten ligger så nära ytans ytterkanter. 1. … 2. width: 50px; /* vi tilldelar listan boxegenskapen för bredd */ 3. padding: 5px; /* vi anger inre marginal */ 4. … Vi har nu tre ytor som vi kan påverka utseendet på, ytan för hela listan, ytan för varje listpost/listrad och ytan för varje länk. Varje yta kan tilldelas egen bakgrund, egna kantlinjer, egna marginaler osv … 1. #meny {background-color: #000; } /* bakgrund till menyn (listan) */ 2. #meny li {background-color: #000; } /* bakgrund till listpost/listrad */ 3. #meny li a {background-color: #000;} /* bakgrund till länktexten/länkyta */ Det är med detta vi ska skapa vår navigationsmeny, men vägen dit kan variera, liksom slutresultatet. Det finns så mycket som du kan förändra, så kombinationsmöjligheterna är många, bara val av färg, kantlinje och bakgrund ger dig mer än nog. Tänk också på att du kan ge ytans olika sidor (top, right, bottom och left) egna värden, både vad gäller marginaler och kantlinjer. Vilket gör att du lätt kan skapa klassiska ”knappar”, som du ”kan trycka ner”, likväl som grafiskt enkla ”understrykta länkar”, som ändrar färg på linjen vid interaktion med länken och grafiskt utsmyckade länkar som ändrar färg och form. Formatera länktexten 26
  • 27. Vi skapar en webbsida Vi ska nu göra de nödvändiga förändringar som behövs för att förvandla länkarna från vanliga länkar till menyknappar. Det vi börjar med är att definiera hur länkarna ska se ut i allmänhet. Vi vill inte att våra länkar skall ha det typiska utseende och beteende som man förknippar med länkar. Som att länkar är blå och understrukna, så därför tar vi bort understrykningen med deklarationen [text-decoration: none;] och definierar en ny länkfärg med deklarationen [color: #000;] (givetvis väljer du en färg som passar, här valde vi svart). 1. #meny li a { 2. text-decoration:none; /* tar bort understrykning */ 3. color: #000; /* definierar textens färg */ … Vi kan även definiera vilken stil (typsnitt, font) vi vill ha på länktexten med deklarationen [font-family: Helvetica, Arial, sans-serif;] även om det inte direkt hör till länkars förinställda beteende. 4. … 5. font-family: Helvetica, Arial, sans-serif; /* anger stil på bokstäver */ Samt blockegenskaper som bakgrundsfärg, marginaler och kantlinjer. 6. … background-color: #fff; /* bakgrund till länktexten/länkyta */ … /* m.fl. men dock inte höjd och bredd, läs nedan [Formatera länkarnas elementegenskaper] */ 7. } Här placerar du även deklarationer för att centrera texten [text-align], om du betonar den på något vis (t.ex fetstilt eller kursivt) [font-weight] och [font-style]. :link, :visited, :hover, :active, :focus. Lägg till pseudoklasser för länktaggen, kom ihåg ordningen och att enbart skriva in vad som skall ändras (t.ex. bakrundsfärg och passande textfärg). Har flera pseudoklasser samma värde, kan du med fördel bunta ihop dem, kom ihåg att separera dem med komma [ , ]. 4. #meny li a:visited { color: #449; background-color: #880;} 5. #meny li a:hover{ color: #490; background-color: #940;} 6. #meny li a:active, #meny li a:focus{ color: #6f0; background-color: #f60; } Formatera listposterna/listraderna 27
  • 28. Vi skapar en webbsida Du kan sluta läsa det här och hoppa till nästa stycke om du vill, jag ska förklara varför! När du använder dig av länkar, så är länken klickbar, inget konstigt med det, men länken avgör även vilken yta som är klickbar. I de flesta fall är det samma yta som texten utgör, finns det inre marginal [padding], utökas den klickbara ytan. Detsamma gäller för kantlinjer [border], men inte för yttre marginal [margin]. Utökar du ytan av länkposten, med till exempel höjd och bredd, eller med inre marginal [padding], kommer det att finnas en stor yta runt länken som inte är klickbar (yta som tillhör listan, inte länken). Därför kan det vara på sin plats att ändra på länktaggens utseende och storlek istället för listpostens och låta listpostens yta bestämmas av dess innehåll (dvs länken). Listposter/rader är block-element, så de kommer att uppta hela listans bredd och får sin höjd av eventuellt innehåll. Anger man inget värde för bakgrund, är den genomskinligt och visar listytan. Men vill du formatera listposten/raden, kan du ge den alla boxegenskaper, som höjd, bredd, bakgrund, kantlinje och marginaler. 1. #meny li { 2. background-color: #fff; /* bakgrund till länktexten/länkyta */ 3. /* m.fl. */ 4. } Formatera länkarnas elementegenskaper Som vi redan nämnt tidigare, kan du ge länkar de flesta box-egenskaper som block-element kan ha, förutom att definiera höjd och bredd. Därför ska vi ändra länkarna från att vara inline-element, till att vara och bete sig som ett block-element. 1. #meny li a { 2. display: block; 3. …} Formatera nu länken som du önskar, med alla box-egenskaper, även höjd och bredd, men läs även om element som gjorts flytande med [float] eller gjorts om till [inline-block] nedan. Så där! Nu var vi nästan färdiga, nu ska det bara placeras på sidan. B2 1.3. Horisontell meny av lista med länkar 28
  • 29. Vi skapar en webbsida Bara ett kort ord om att göra en horisontell meny, har du gjort en meny av enbart länkar lägger de sig på rad (eftersom länken är ett inline-element), men är länkarna placerade i en lista lägger de sig på hög (under varandra, på ny rad) eftersom listposten/raden är ett block- element. Detsamma gäller om du ändrat länkarna från att vara inline- till att vara block- element med attributet [display] i css-dokumentet. Vi kommer därför att använda oss av [display] även för att placera länkarna på rad bredvid varandra igen. Men det första vi behöver göra är att se till så att bredden på list-elementet ([ol] eller [ul]) är nog bred för att lägga dem på rad. Ändra [width] till lämplig bredd (bredden på länkarna+ marginaler+ eventuell bredd på listposterna/raderna och dess marginaler) eller ange värdet [auto], anger du inget värde för bredd utgår webbläsare från att värdet [auto] ska användas. Nästa steg är att placera länkarna så att de ligger på rad, och för att göra det behöver vi dels veta hur vi lagt upp vårt tidigare arbete och dels ändra block-elementen så att de inte staplas ovan och under varandra. Jag kommer att utgå från att du lagt länkarna i en lista och att du sedan ändrat länkar till att bete sig som block-element. Utseendet på länkmenyn utgår nu alltså från dina inställningar för länkytan (bredd, höjd, kantlinjer, färger, bakgrunder och marginaler) och från eventuella inställningar för listytan ([ol] eller [ul] och [li]). Inline Nu tar vi bort blockegenskapen från listposterna ([li]) så att de inte längre staplas på varan- dra. Du kommer att märka att länkarna inte lägger sig på rad, men det beror på att de fortfarande är inställda att bete sig som block-element. Lägg till följande till ditt css- dokument: 1. #meny li { display: inline; } Tar du bort display-deklarationen från länktaggen, eller ändrar den från värdet [block] till [inline], läggs länkarna på rad, men då tappar du också den boxformatering du tidigare lagt till. Vad vi behöver är en lösning där vi har kvar block-egenskaperna, samtidigt som vi kan lägga dem i rad som inline-element. Inline-block och float inline-block Vad vi behöver är block element som behåller sina blockegenskaper, men placeras på sidan som inline-element. Det finns ett sådant element-tillstånd som kallas inline-block. Fungerar i de flesta webbläsare, om ele- mentet som man ändrar beteende hos 1. #meny li a { display: inline-block; } tidigare varit ett in- line-element. Vilket gör att det passar att Så där, nu när du förhandsgranskar bör de lagt sig vackert på rad. Om det inte gör så, beror användas till länkar. Var bara beredd på det på din webbläsare, pröva med en annan webbläsare som följer webbstandarden. Det är att det inte alltid ser den här egenskapen som vi skulle vilja använda, men så länge den inte stödjs av alla lika ut mellan olika webbläsare webbläsare, får vi använda oss av en annan metod. float Det andra alternativ vi då har är att göra elementet flytande med egenskapen [float]. Fungerar inte lika i alla webbläsare, men Nackdelen här är att även det inte alltid fungerar fullt ut i alla webbläsare. Övriga inline- är ändå en väldigt an- vändbar metod. Ett element som görs flytande, om- 29 vandlas till ett block- element (med allt det innebär), men lägger sig utanför inline och
  • 30. Vi skapar en webbsida element flödar runt det flytande-elementet, vilket gör att det passar bra till bilder som ligger inne i en text. Man kan göra alla element flytande. Man kan välja om det flyter mot vänster sida eller höger sida och det flytande elementet utgår från det yttre element (föräldra- element) den ligger inom. Men den tappar sin position i inline-flödet (och dokument-flödet), övriga element placeras runt objektet (ungefär på samma sätt som figursättning/text-wrap fungerar). Men här innebär det att länken inte längre räknas som en del av listposten/radens innehåll och om man inte angivit höjd [height] för det elementet kollapsar den ihop till en höjd av noll [0]. På samma sätt påverkas även hela listelementet, om listpost/raderna inte har höjd, kollapsar den ner till en höjd av noll [0]. Det är givetvis en egenhet du kan dra nytta av, nu när du vet det. Ange även alltid bredd [width] för flytande element. 1. #meny li a { float: left; } Nu när du förhandsgranskar, läggs länkarna på rad (om listpost/raderna är inställda på att vara inline, så att även list-elementen läggs på rad). Använd [margin] och [padding], för att ytterligare kontrollera mellanrum och luft runt länktexterna; samt eventuellt [padding] och [margin] på listpost/raderna.  Exempel - Enkel flikmeny, med horisontell linje nedtill. Den här menyn byggs upp an en lista med fem länkar, länkarna har gjorts om till block-element, listposterna gjorts om till inline-element (display). Sedan har länkarna även gjorts flytande (float), de flyter åt vänster. Listelementet, har tilldelats en kantlinje i nederkant (border-bottom) och en given höjd (height, som motsvarar länkarnas höjd). Dessutom, har listelementet en inre marginal H (padding-left) på vänstra sidan, vilket knuffar länkarna inåt på linjen. Länkarna, har en yttre T M vänstermarginal (margin-left) om två pixlar, vilket gör att länkarna får ett litet mellanrum. Till L menyn är även definierat de olika pseudoklasserna (link, visited, hover, active, focus) för de olika o tillstånd som länkarna kan ha. Variation… c h  Låt länkarna flyta åt höger, ha en kantlinje upptill, andra färger. C  Ta bort float och ange länkarna som inline-block istället. S S … #meny {border-bottom: 1px solid black; padding-left: 10px; font: <ul id="meny"> bold 12px Verdana; list-style-type: none; min-width: 400px; e <li><a href="#"> Home </a></li> height:28px;} x <li><a href="#"> Un </a></li> e #meny li {display: inline;} <li><a href="#"> Dos </a></li> m <li><a href="#"> Tres </a></li> #meny li a {display: inline-block; text-decoration: none; text- p e <li><a href="#"> Away </a></li> align:center; width: 50px; padding: 7px 8px; margin-left: l </ul> 2px; color: white; background-color: #414141;} … #meny li a:link {} #meny li a:visited {} #meny li a:hover {} … osv 2. Positionering av 30
  • 31. Vi skapar en webbsida menyn Nu är det dags att välja en plats för din meny, om du inte redan valt en. Jag kommer i mina C exempel placera menyn dels på sidan om [satsytan] och dels under [rubriken], två rätt vanliga placeringar. Men det är också läge för att tala lite om dokumentflödet och positioner. D Dokumentflödet, är det sätt som webbläsare tolkar och placerar ut innehåll på en webbsida, hur sidan visas i webbläsaren. Men även i vilken ordning en webbsida läses upp av talsyntes. Dokumentflödet Dokumentflödet, är egentligen två olika flöden, som tillsammans utgör ett gemensamt dokumentflöde. Det är block-nivå-flödet [block] och text-nivå-flödet [inline]. Blocknivå- element, bildar egna enheter, ofta med en radbrytning före och efter elementet. Textnivå- element, lägger sig på rad efter varandra, på samma nivå och utan radbrytningar. Även om du kan ändra detta beteende, är den generella uppmaningen att man inte bör göra så. Element visas på sidan i den ordning de skrivs in i html-dokumentet och efterföljande element placeras (utifrån sin sort, block eller inline) på första lediga plats i ordningen. Placeras något före ”sidyta”, knuffar det ner övrigt innehåll. [ Dokumentflödet ] Placeras något efter ”sidyta”, hamnar den under/efter den ytan. Inget blocknivå-element kan placeras bredvid ett annat element (då de knuffas ner en rad) om man inte ändrar elementets beteende (med t.ex. float, display eller position). Alla textnivå element, lägger sig på rad efter varandra. Men även de utgör en gemensam yta, en tillfällig box som består av hela raden, vars höjd utgår från radens högsta element. Textnivå-boxar av olika höjd kan inte existera samtidigt på samma rad och man kan inte skapa textnivå-boxar. 31
  • 32. Vi skapar en webbsida Position, inom dokumentflödet Position (static) På samma sätt som alla element har en yta, har alla element en position även om den inte är definierad. Detta kan skrivas ut som [position: static;], men behöver inte skrivas eftersom det är standardvärdet för alla element (inline, som block). Ett element som har positionen static, kan anses som ”opositionerad” (även om de rent tekniskt faktiskt innehar en position). Det finns tre övriga positioneringstillstånd som element kan ha/tilldelas: [relative], [absolute] och [fixed]. Vi ska kortfattat gå igenom dem här nedanför, för att deklarera position, behöver man i regel bara definiera egenskapen [position] och ett av ovanstående värden. Men för att kontrollera hur elementet flyttar, lägger du även till något av eller flera av följande värden: [top], [right], [bottom] och [left], positivt värde är från angiven kant/sida och inåt. Anges inget värde för dem, anses de ha värdet [auto], anges ett numreriskt värde, är det dominerande över (används istället för och/eller påverkar) det automatiska värdet. Vi börjar med det som mest liknar static: Position (relative) Positionering med egenskapen [relative] placerar elementet relativt till den plats den har i dokumentflödet, det vill säga den plats den skulle ha om den var opositionerad. Nu kan man förflytta elementet från den platsen, men utrymmet i dokumentflödet förblir ”upptaget”. Det vill säga att elementet lämnar en tom yta efter sig. Du måste ange värden för minst en av top, right, bottom eller left, för att du ska se en positionsförändring; annars ligger elementet kvar på sin position i dokumentflödet (som om den var av värdet static). { Position: relative; Top: 10px; Left: 25px; } En annan sak som händer är att det flyttade elementet, lägger sig ovanför de andra elementen på webbsidan. Du kan ändra detta genom att ange ett värde för [z-index] på elementet, positiva värden är längre upp/fram, negativa längre ner/bak. 32
  • 33. Vi skapar en webbsida Position, utanför dokumentflödet Position (absolute) När du positionera ett element med egenskapen [absolute] händer flera saker som skiljer sig radikalt från hur element placerar sig enligt det normala dokumentflödet. Det som tydligast är märkbart är hur elementet tappar sin plats i dokumentflödet, dessutom fylls utrymmet av vad som är placerat efter i ordningen (då den platsen nu är ”ledig”). { Position: absolute; Top: 10px; Left: 25px; } Nästa tydliga förändring är hur elementet krymper ner till storleken av sitt innehåll (höjd och bredd blir detsamma som innehållet). Därför måste du lägga till egenskaperna [height] och [width] om du vill kontrollera storleken. Men den viktigaste förändringen är att det absolut placerade elementet tilldelas en unik lagerposition [z-index] som skiljer sig från alla övriga element. Det innebär att den lätt kan läggas över andra element, men det innebär även att om man har flera absoluta element, lägger de sig automatiskt på var sitt lager. De placeras i den ordning som de är inskrivna i html-dokumentet, det element som skrivits in senare/längre ner, får ett högre lagervärde (z- index). Du kan ändra detta genom att ange ett värde för [z-index] på elementet, positiva Absolut och värden är längre upp/fram, negativa längre ner/bak. odefinierat värde ... Absolut position Saknas värde för top, right, bottom och Eftersom ett AP-element (absolut positionerat element) inte är en del av dokumentflödet, left, anses de ha värdet [auto], men har den en absolut position som utgår från horisontella och vertikala koordinater. vad innebär det i praktiken? Men från vad utgår dessa koordinater? AP-elementet får sin position från sitt förhållande till Jo att det absolut sin närmaste föräldra-elements position, men om föräldern är opositionerad (static) utgår positionerade ele- den från första element i hierarkin som är positionerad (dvs allt annat än static). Finns inget mentet är placerat i förhållande till den positionerat element, utgår den från <body> (egentligen <html>-taggen), vilket i proncip blir position den skulle ha, om den inte tag- det samma som webbläsarfönstret. its ut ur dokument- flödet. Det innebär Relativt positionerat element används ofta som förälder till ett absolut positionerat för även att det ligger ovanför annat inne- att styra dess position, då ett relativt positionerat element kan bete sig som och placera håll som flyttats upp sig som de som placerats efter dokumentflödet. för att fylla tomrum- met efter elementet. Du styr AP-elementets position med [top], [right], [bottom] eller [left], positivt värde är från Anger du ett värde angiven kant/sida och inåt. Anges inget värde för dem, anses de ha värdet [auto], anges ett för top, right, bottom eller left, tappar det numreriskt värde, är det dominerande över (används istället för och/eller påverkar) det absolut positioner- ade elementet den automatiska värdet. Om det blir en konflikt mellan värden (t.ex left-right; top-bottom), måste här egenskapen. en av dessa prioriteras, standarden anger att det är vänstra [left] och övre [top] som vinner. 33
  • 34. Vi skapar en webbsida Position (fixed) Positionering med egenskapen [fixed] är en variant av absolut positionering, med den skillnaden att fixerade element alltid utgår från webbläsarfönstret. Var försiktig så att inte fixerade element placeras utan för den synliga ytan (till exempel med väldigt höga värden eller negativa värden). Fixerade element påverkar aldrig webbläsaren att använda sig av rullisten, även om man kan använda sig av rullister inom ett fixerat element. { Position: fixed; Top: 10px; Left: 25px; } Om man flyttar på webbsidans innehåll med hjälp av en rullist, kvarstår det fixerade elementet; medan resten av innehållet förflyttas. Vissa äldre webbläsare kan inte läsa fixerade element, för dem passar AP-element bättre. Flytande position (Float) När vi talar om position kan vi inte undvika att tala om flytande position. Även om egen- skapen [float] inte är en del av (attributet) position, så är det också ett sätt att positionera innehåll. Det element som görs flytande tappar sin position i dokumentflödet, men samtidigt placeras det flytande elementet i förhållande till flödet. Det kan göras flytande åt höger [right] eller åt vänster[left]. Element som placerats före det flytande elementet påverkas inte, men alla som kommer efter flödar/flyter runt elementet. Det flytande elementet omvandlas till ett block-element (med allt det innebär) när det gjorts flytande, så man bör alltid ange bredd [width] på flytande element (förutom bilder). Flytande element lägger sig på rad efter varandra, utefter vilket utrymme som finns tillgängligt. I exemplet ovan är det flytande elementet placerat först före alla andra element, sedan efter rubriken<h1> och sist efter texten. 34
  • 35. Vi skapar en webbsida Flytande element och yta En aspekt av flytande element som lätt glöms bort är hur de påverkar de element som flyter runt det. Det märks tydligast hos block-elemet som tilldelats bakgrund eller andra blockegenskaper som marginaler och kantlinjer. (inline) Innehållet i de ytor som omsluter det flytande elementet reagerar på ytan hos flytande elementets, genom att knuffas undan. Alla marginaler, kantlinjer och bakgrunder till den yta som omsluter det undanknuffade innehållet kommer fortfarande reagera som att det flytande elementet inte är där. Då det flytande elementet har avlägsnats från flödet, men fortfarande knuffar undan inline-innehåll, breder bakgrunder, kantlinjer och marginaler hos block-elementen ut sig under det flytande elementet. (clear) Att flytande element funkar så att det man placerar efter (i html-dokumentet) omsluter det flytande elementet istället för att det flytande elementet flyter upp genom ovanliggande inline-element har en enkel förklaring. Annars flyter alla element med en flytande position upp längst upp på webbsidan, vilket inte är önskvärt. För att om det vore så, skulle det kräva att man blev tvungen att lägga till en massa extrakod, för att få de flytande elementen att stanna på plats. Nu är det istället bara automatiskt att underliggande element flyttas uppåt och omsluter det flytande elementet. Men om du inte vill att det som ligger efter (nedanför) det flytande elementet skall flyttas upp och omsluta runt elementet, kan du använda attributet [clear]. Attributet kopplas till ett av de efterliggande elementen och stoppar då upp flödet (uppflyttandet av element). Clear kan ha följande fyra (fem)värden: right, left, both och none. Värdet right gör så att elementet lägger sig under den yttersta kanten av ett flytande element som har värdet [ clear: right; ] som kommer före i html-dokumentet. Värdet left gör så att elementet lägger sig under den yttersta kanten av ett flytande element som har värdet [ clear: left; ] som kommer före i html-dokumentet. Värdet both gör så att elementet lägger sig under den yttersta kanten av alla flytande element som kommer före i html-dokumentet. Värdet none, är detsamma som att inte ange ett clear-värde alls. Clear kan även ha det femte värdet: Inherited, som innebär att den ärver egenskapen från ett föräldraelement och får då det värde det elementet har för attributet clear. 35
  • 36. Vi skapar en webbsida C 2.1. Meny under rubriken Jag börjar med att beskriva vad som är lättast att åstadkomma, för här ska vi helt enkelt bara låta dokumentflödet göra sitt jobb, vi lägger inte till några större förändringar. Jag utgår nu från att du har en horisontell meny, då den passar bäst att placera under sidrubriken. Placera din ”lista med länkar” efter <h1> (rubrik) men före <div>-taggen (satsytan). 1. <div id=”sidyta”> 2. <h1 …>Rubrik </h1> 3. <ul …> 4. <li><a …>Lnk txt </a></li> … 5. </ul> 6. <div …> Satsyta </div> 7. <div …> Sidfot </div> 8. </div> Ja, det är så enkelt för att få dem i rätt ordning, nu läser webbläsaren in dem i den ordning som de kommer att visas på sidan (om du inte på något annat sätt, till exempel positionering, ändrat dokumentflödet). Jag föreslår att du tar dig en liten titt igen på illustrationen över dokumentflödet i början av kapitlet som en liten repetition innan du går vidare. 36
  • 37. Vi skapar en webbsida D1 2.2. Meny bredvid sidinnehållet (absolut) Lite svårare uppgift är att placera menyn på sidan, som alltid när man vill placera block- element bredvid varandra. Vi ska titta på två varianter, i den första använder vi oss av absolut position i kombination med relativt placerad förälder (det omslutande elementet). I den andra tittar vi närmare på en lösning med att göra menyn flytande. Grundproblemet dem mellan är detsamma, när vi har en vertikal meny (lista) knuffar den ner efterföljande innehåll, då menyn upptar hela raden (det naturliga beteendet för block- element). Men vi vill att delar av innehållet (satsytan) skall ligga bredvid menyn istället. Vi ändrar därför menyn [#meny] från att vara opositionerad (static) till något vi kan kontrollera, i det här fallet använder vi oss av absolut position. 1. #meny { position: absolut; } Menyn tappar nu sin plats i dokumentflödet och underliggande element flyttar upp i dess ställe. Men det blir inte riktigt som vi vill ha det, nu så ligger menyn över allt annat innehåll och skymmer eventuellt innehåll. 37
  • 38. Vi skapar en webbsida Menyn placerar sig dock fint utifrån sin tidigare plats i dokumentflödet. Vilket snabbt kommer att ändras om du lägger till ett numreriskt värde för positionerings attributen top, right, bottom eller left; även om värdet är noll [0]. Vi kan avhjälpa detta beteende genom att ge närmaste förälder (omslutande element) en annan position än dess naturliga (static). Samtidigt vill vi inte ta den ur dokumentflödet; vi gör det omslutande elementet därför till relativt positionerad. 1. #sidyta { position: relativ; } Sådär, nu kan vi sätta igång och placera ut vår meny. Skriver vi in negativa värden (för top, right, bottom och left) placeras den utanför sitt föräldra elements ytterkanter, positiva värden flyttar den inåt över ytan. Prova med att ge menyn ett negativt vänstervärde (left) som är lika stort som menyn är bred; vips så har menyn placerats bredvid innehållet. 1. #meny { position: absolute; left: -70px; } 38
  • 39. Vi skapar en webbsida D2 Meny bredvid sidinnehållet (float) I den här varianten gör vi menyn till ett flytande element och låter det andra sidinnehållet Flytande flyta på plats, vi kan lätt låta den flyta åt vänster eller höger. Se till att menyn är placerad före element problem det innehåll som skall läggas sida vid sida med menyn. När du börjar anvä- nda dig av flytande 1. < … id=”rubrik> … </h1> Det som är placerat före det element i din design, flytande elementet påverkas kommer du snabbt märka att det kan 2. <ul id=meny”> … </ul> inte. dyka upp underliga skillnader mellan oli- 3. <div id=”satsyta”> … </div> Det som är placerat efter ka webbläsare, jag har valt att undvikia påverkas att ta upp det här. 4. <div id=”sidfot”> … </div> En sådan sak kan vara att bakgrunds- Sen gör vi menyn flytande (se till så du inte även har angett absolut position till menyn). bilder och även text försvinner plötsligt, trots att de borde 1. #meny { … float: left; … } vara där, för att sedan dyka upp igen när man laddar om Efterföljande element flyttar nu upp och omsluter/fyller snyggt upp högersidan, men sidan. bakgrunden lägger sig även bakom menyn. Du undviker det här problemet genom att ge det försvinnande elementet en posit- ion, förslagsvis [posit- ion:relative;]. Det kan även vara problem med hur marginaler runt ett block-element beter sig brevid ett flyt- ande element, hur det kan bli oförut- sedda skillnader i hur mycket elementet knuffas ifrån det flyt- ande elementet. Lösningen här är att sätta marginalerna på de flytande ele- Men vad händer om det man vill ska ligga jäms med menyn upptar lika stor yta som menyn i menten, inte de statiska. sig gör? Vi prövar genom att ta bort all text från den ytan vi kallat [satsyta]. Ytterligare ett prob- lem kan uppstå när man har flera flyt- ande element efter varandra. Dels kan de lägga sig på bredd, fastän det inte finns utrymme för det, eller att de fortsätter ut utanför ett om- slutande element. Prova att ge det omslutande elemen- tet en given vidd [width]. Kanske inte riktigt vad vi kan kalla önskvärt resultat. 39