810 likes | 1.11k Views
DHTML. Haidar Al Attar IT-lärare haidar@hakimdata.se. Agenda. DHTML. DHTML står för D ynamic HTML. DHTML är en kombination av HTML CSS JavaScript DOM DHTML används för att göra webbsidor mer händelserika.
E N D
DHTML Haidar Al Attar IT-lärare haidar@hakimdata.se
DHTML • DHTML står för Dynamic HTML. • DHTML är en kombination av • HTML • CSS • JavaScript • DOM • DHTML används för att göra webbsidor mer händelserika. • Fördelen med DHTML är att webbsidan inte behöver laddas om när ett objekt aktiveras utan förändringen sker i realtid.
Vad är CSS? • CSS står för Cascading Style Sheets. • Stilar definiera hur du vill visa HTML-element • Stilar förvaras normalt i Stilmallar • Stilar har lagts till i HTML 4.0 för att lösa ett problem • Externa stilmallar kan spara en hel del arbete • Externa stilmallar lagras i CSS-filer
Stilmallar löser ett allmänt problem • HTML-taggar var ursprungligen utformade för att definiera innehållet i ett dokument • Utformningen av dokumentet var tänkt att tas om hand av webbläsaren, utan att använda någon formatering taggar • De två största webbläsarna - Netscape och Internet Explorer - fortsatte att lägga till nya HTML-taggar och attribut (som <font> tagg och färg ”color” attribut) till den ursprungliga HTML-specifikationen • Det blev allt svårare att skapa webbplatser där innehållet i HTML-dokument var klart åtskilt från layouten
Stilmallar löser ett allmänt problem • World Wide Web Consortium (W3C) - icke vinstdrivande konsortium som ansvarar för standardisering av HTML - skapade STILAR (STYLES)som tillägg till HTML 4.0 • Med CSS blev det möjligt att separerar layout från innehåll • Alla stora webbläsare stöder stilmallar (Cascading Style Sheets)
Stilmallar (StyleSheets) kan spara en hel del arbete • Stilar (Styles) sparas normalt i externa Css-filer • Med externa stilmallar (Style Sheets)kan du ändra utseende och layout på alla sidor i webbplatsen, bara genom att redigera ett enda CSS-dokument! • Som en Webbutvecklare kan du definiera en stil för varje HTML-element och tillämpa den på så många webbplatser du vill • För att göra en global förändring, ändra helt enkelt stilen, och alla delar på webbplatsen uppdateras automatiskt!
Syntax • CSS syntax består av tre delar: • Selector: HTML-element/tagg som du vill definiera • Property (attribut, egenskap): de attribut du vill ändra i ett HTML-element • Value (värde): varje attribut kan ta ett värde • Property (attribut) och value (värde) skiljs åt av ett kolon, och omges av klamrar selector {property: value} body {color: black}
Syntax • Om värdet (value) består av flera ord sätt ”citattecken” runt värdet P {font-family: ”sans serif”} • Om du vill ange fler än ett attribut måste du separera varje attribut med ett semikolon. Exemplet nedan visar hur man kan definiera ett centerjusterat stycke (paragraph) med en röd text: P {text-align:center;color:red}
Syntax • För att göra stilmallen mer lättläst kan man ange ett attribut på varje rad, så här: P { Text-align: center; Color: black; Font-family: arial }
Placering av formatmallar (StyleSheets) • Formatmallar kan anges i ett enda HTML-element • Formatmallar kan anges inuti <head> delen av en HTML-sida • Formatmallar kan anges i en extern CSS-fil • Flera externa formatmallar (style sheets) kan hänvisas till i ett enda HTML dokument
Infogad stilmall i en HTML-tagg (InlineStyles) • En infogad stilmall förlorar många av fördelarna med formatmallar genom att blanda innehåll med layout • Använd den här metoden sparsamt, till exempel när en stil skall tillämpas på en enda förekomst av ett HTML-element • Om du vill använda en infogad stilmall (inline styles) använder du style-attributet i HTML-taggen
Övning (Formatmallar i ett enda HTML-element) Exempel: <html> <head> </head> <body> <p STYLE=”font-family: Tahoma; color: green”> Denna text skrivs med teckensnittet Tahoma i grön färg fram till sluttaggen. </p> </body>
Övning (Formatmallar i ett enda HTML-element) • Exemplet nedan visar hur du ändrar färg och vänster marginal på ett stycke (paragraph): <html> <head> </head> <body> <p style="color: sienna; margin-left: 20px">This is a paragraph </p> </body>
Interna stilmallar (InternalStyleSheet) • En intern formatmall används internt på ett enda HTML-dokument • Du definierar interna stilar i <head> delen av ett HTML-dokument med hjälp av <style> taggen, så här: <head><style type="text/css">hr {color: sienna}p {margin-left: 20px}body {background-image: url("images/back40.gif")}</style></head>
Interna stilmallar (InternalStyleSheet) • En webbläsare ignorerar normalt okända taggar • Detta innebär att en gammal webbläsare som inte stöder stilar, ignorerar <style> taggen, men innehållet i <style> taggen kommer att visas på sidan • Det är möjligt att förhindra en gammal webbläsare att visa innehållet genom att dölja den med hjälp av HTML kommentartaggar: <head><style type="text/css"><!--p {margin-left: 20px}--></style></head>
Övning (Formatmallar inuti <head> delen av en HTML-sida) <html> <head> <styletype="text/css"> hr {color: red} p {margin-left: 20px} body {background-image: url("back40.gif")} </style> </head> <body> <hr /> <p> Det här är ett stycke</p> </body>
Externa formatmallar (ExternalStyleSheet) • En extern formatmall passar perfekt när stilar appliceras på många sidor samtidigt • Med en extern formatmall kan du ändra utseendet på en hel webbplats genom att ändra en enda CSS-fil • Varje HTML-sida måste länkas till CSS-filen med hjälp av <link>-taggen • <link>-taggen sätts i <header> delen av ett HTML-dokument <head> <linkrel=”stylesheet” type=”text/css” href=”mystyle.css” /> </head>
Externa formatmallar (ExternalStyleSheet) • En extern formatmall kan skrivas i valfri textredigerare (t.ex. notepad) • Filen ska inte innehålla några HTML-taggar • Filen ska sparas med .css filändelsen • En extern formatmall kan se ut så här: Hr {color: red} P {margin-left: 20px} Body {background-image: url(”images/back_image.gif”)} • Lämna inte mellanrum mellan attributvärdet och dess enhet. ”margin-left: 20 px” fungerar i IE6 men inte i Mozilla Firefox eller Netscape
Övning (Formatmallar i en extern CSS-fil) <html> <head> <link rel="stylesheet" type="text/css" href="ex1.css" /> </head> <body> <h1>This header is 36 pt</h1> <h2>This header is blue</h2> <p>This paragraph has a left margin of 50 pixels</p> </body> </html>
Övning (Formatmallar i en extern CSS-fil) Den externa CSS filen är: body {background-color: yellow} h1 {font-size: 36pt} h2 {color: blue} p {margin-left: 50px}
Vilken stil kommer att användas när det finns mer än en stil som anges för ett HTML-element?
Vilken stil som gäller? • alla stilar kommer att bakas in "cascade" i en ny "virtuell" formatmall med följande regler, där punkt 1 har högsta prioritet: • Infogad stil (inom ett HTML-element) • Interna formatmallar (inuti <head> taggen) • Externa formatmallar • Webbläsarstandarder • En infogad stil (inom ett HTML-element) har högsta prioritet, vilket innebär att det kommer att åsidosätta en stil som har angetts i en intern formatmall i <head> taggen, i en extern formatmall, eller i en webbläsare (ett standardvärde)
Gruppering • För att gruppera HTML-element/tagg (selector) avgränsa varje HTML-element/tagg (selector) med ett kommatecken (,) • I exemplet nedan kommer alla rubriker (h1, h2, h3, h4, h5, h6) att visas i grön textfärg: h1, h2, h3, h4, h5, h6 { Color: green }
Övning (Gruppering) <html> <head> <styletype="text/css"> h1, h2, h3, h4, h5, h6 { Color: green } </style> </head> <body> <h1>Rubrik 1</h1> <h2>Rubrik 2</h2> <h3>Rubrik 3</h3> <h4>Rubrik 4</h4> <h5>Rubrik 5</h5> <h6>Rubrik 6</h6> </body>
Klasser (Class Selector) • Med hjälp av klasser kan man definiera olika stilar för samma typ av HTML-element • Om man vill ha två typer av stycke (paragraph) i HTML-dokumentet: ett högerjusterat stycke (paragraph) och ett centerjusterat stycke (paragraph). Exemplet nedan visar hur man gör det med klasser: p.right {text-align: right} p.center {text-align: center}
Övning (Klasser) <html> <head> <styletype="text/css"> p.right {text-align: right} p.center {text-align: center} </style> </head> <body> <p class="right"> This paragraphwill be right-aligned. </p> <p class="center"> This paragraphwill be center-aligned. </p> </body>
Klasser (Class Selector) • För att applicera mer än en klass på ett enda HTML-element blir syntaxen enligt följande: <p class=”center bold”> This is a paragraph. </p> • Stycket (paragraph) ovan kommer att formateras med klassen ”center” och klassen ”bold”
Övning (Klasser) • För att applicera mer än en klass på ett enda HTML-element blir syntaxen enligt följande: <html> <head> <styletype="text/css"> p.bold {font-weight: bold} p.center {text-align: center} </style> </head> <body> <p class="centerbold"> This is a paragraph. </p> </body>
Klasser (Class Selector) • Man kan utelämna HTML-taggens namn i klassen för att definiera en stil som kommer att användas av alla HTML-element .center {text-align: center} • I koden nedan kommer både h1 (rubrik 1) och p (stycke, paragraph) att följa stilmallen i klassen ”.center”: <h1class=”center”> This headingwill be center-aligned. </h1> <p1class=”center”> This paragraphwill be center-aligned. </p1>
Övning (Klasser) <html> <head> <styletype="text/css"> .center {text-align: center} </style> </head> <body> <h1class="center"> This headingwill be center-aligned. </h1> <p class="center"> This paragraphwill be center-aligned. </p> </body>
CSS kommentarer • Kommentarer används för att förklara din kod, och kan hjälpa dig när du redigerar källkoden vid ett senare tillfälle • En kommentar kommer att ignoreras av webbläsaren • En CSS kommentar börjar med ”/*” och slutar med ”*/” /* Det här är en kommentar */ P { Text-align: center; /* Det här är en annan kommentar */ Font-family: arial }
CSS (Text) • Detta exempel visar hur du anger färg på texten <html> <head> <styletype="text/css"> h1 {color: #00ff00} h2 {color: #dda0dd} p {color: rgb(0,0,255)} </style> </head> <body> <h1>This is header 1</h1> <h2>This is header 2</h2> <p>This is a paragraph</p> </body> </html>
CSS (Text) • Detta exempel visar hur man ställer in bakgrundsfärg i en del av texten <html> <head> <style type="text/css"> span.highlight { background-color:yellow } </style> </head> <body> <p> <span class="highlight">This is a text.</span> This is a text. This is a text. This is a text. This is a text. This is a text. This is a text. This is a text. This is a text. <span class="highlight">This is a text.</span> </p> </body> </html>
CSS (Text) • Detta exempel visar hur du kan öka eller minska utrymmet mellan tecken <html> <head> <style type="text/css"> h1 {letter-spacing: -3px} h4 {letter-spacing: 0.5cm} </style> </head> <body> <h1>This is header 1</h1> <h4>This is header 4</h4> </body> </html>
CSS (Font) • Detta exempel visar hur du anger ett typsnitt för en text <html> <head> <styletype="text/css"> h3 {font-family: times} p {font-family: courier} p.sansserif {font-family: sans-serif} </style> </head> <body> <h3>This is header 3</h3> <p>This is a paragraph</p> <p class="sansserif">This is a paragraph</p> </body> </html>
CSS (Font) • Detta exempel visar hur man ställer in storleken på en font <html> <head> <style type="text/css"> h1 {font-size: xx-large} p {font-size: xx-small} </style> </head> <body> <h1>This is header 1</h1> <p>This is a paragraph</p> </body> </html>
CSS (Font) • Detta exempel visar hur du ställer in formatet för en font <html> <head> <styletype="text/css"> h1 {font-style: italic} h2 {font-style: normal} p {font-style: oblique} </style> </head> <body> <h1>This is header 1</h1> <h2>This is header 2</h2> <p>This is a paragraph</p> </body> </html>
CSS (Border) • Detta exempel visar hur man ställer olika gränser på varje sida av ett html-element <html> <head> <styletype="text/css"> p.soliddouble {border-style: solid double} p.doublesolid {border-style: double solid} p.groovedouble {border-style: groovedouble} p.three {border-style: solid doublegroove} </style> </head> <body> <p class="soliddouble">Sometext</p> <p class="doublesolid">Sometext</p> <p class="groovedouble">Sometext</p> <p class="three">Sometext</p> </body> </html>
CSS (Outline) • Detta exempel visar hur man kan dra en linje runt ett html-element (OBS: fungerar inte i IE. Ska testas i Mozilla Firefox) <html> <head> <style type="text/css"> p { border: red solid thin; outline: green dotted thick } </style> </head> <body> <p>Some text.</p> </body> </html>
CSS (Outline) <html> <head> <style type="text/css"> p { border: red solid thin; } p.dotted {outline-style: dotted} p.dashed {outline-style: dashed} p.solid {outline-style: solid} p.double {outline-style: double} p.groove {outline-style: groove} p.ridge {outline-style: ridge} p.inset {outline-style: inset} p.outset {outline-style: outset} </style> </head> . . .
CSS (Outline) . . . <body> <p class="dotted">A dotted outline</p> <p class="dashed">A dashed outline</p> <p class="solid">A solid outline</p> <p class="double">A double outline</p> <p class="groove">A groove outline</p> <p class="ridge">A ridge outline</p> <p class="inset">An inset outline</p> <p class="outset">An outset outline</p> </body> </html>
CSS (Margin) • Detta exempel visar hur man ställer marginaler för ett html-element <html> <head> <style type="text/css"> p.margin {margin: 4cm 4cm4cm 4cm} </style> </head> <body> <p>This is a paragraph with no specified margins</p> <p class="margin">This is a paragraph with specified margins</p> <p>This is a paragraph with no specified margins</p> </body> </html> Top, Right, Bottom, Left
CSS (Padding) • Detta exempel visar hur man sätter padding för en cell i en tabell <html> <head> <style type="text/css"> td.test1 {padding: 1.5cm} td.test2 {padding: 0.5cm 2.5cm} </style> </head> <body> <table border="1"> <tr> <td class="test1"> This is a tablecell with equal padding on each side. </td> </tr> </table> . .
CSS (Padding) . . . <br /> <table border="1"> <tr> <td class="test2"> This tablecell has a top and bottom padding of 0.5cm and a left and right padding of 2.5cm. </td> </tr> </table> </body> </html>
CSS (Unordered List) <html> <head> <style type="text/css"> ul.disc {list-style-type: disc} ul.circle {list-style-type: circle} ul.square {list-style-type: square} ul.none {list-style-type: none} </style> </head> <body> <ul class="disc"> <li>Coffee</li> <li>Tea</li> <li>Coca Cola</li> </ul> . . .
CSS (Unordered List) . . . <ul class="circle"> <li>Coffee</li> <li>Tea</li> <li>Coca Cola</li> </ul> <ul class="square"> <li>Coffee</li> <li>Tea</li> <li>Coca Cola</li> </ul> <ul class="none"> <li>Coffee</li> <li>Tea</li> <li>Coca Cola</li> </ul></body></html>
CSS (Ordered List) <html> <head> <style type="text/css"> ol.decimal {list-style-type: decimal} ol.lroman {list-style-type: lower-roman} ol.uroman {list-style-type: upper-roman} ol.lalpha {list-style-type: lower-alpha} ol.ualpha {list-style-type: upper-alpha} </style> </head> <body> <ol class="decimal"> <li>Coffee</li> <li>Tea</li> <li>Coca Cola</li> </ol> . . .
CSS (Ordered List) . . <ol class="lroman"> <li>Coffee</li> <li>Tea</li> <li>Coca Cola</li> </ol> <ol class="uroman"> <li>Coffee</li> <li>Tea</li> <li>Coca Cola</li> </ol> <ol class="lalpha"> <li>Coffee</li> <li>Tea</li> <li>Coca Cola</li> </ol> . .