Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  14 1388
Når jeg starter å programmere noe som innebærer CSS støter jeg alltid på det samme problemet: Ting ser ikke likt ut i alle nettlesere for fem flate øre! Det virker som alle andre sider takler dette fint på et eller annet vis, så det jeg trenger er en guide eller en eller annen innføring i hvordan man skriver CSS som oppfører seg likt uavhengig av nettleser.

Jeg stoler på dere Freaker - dere er mitt eneste håp i en verden hvor all CSS er ute etter å ødelegge livet mitt!
Det er nok fordi nettlesere ser forskjellig på box-modellen. Kan du poste noe kode du har skrevet, så kan vi evt. komme med tips til hva som kan endres?
Kyrios's Avatar
Trådstarter
Servertjenesten jeg bruker er ubeleilig nok nede for øyeblikket, men iløpet av dagen eller morgendagen skal jeg nok kunne komme med et godt eksempel. Problemet er egentlig rimelig universalt. Et gjengående problem er at størrelsen på bokser og rammer ser ut til å variere, slik at ting blir forskjøvet med noen få piksler i enkelte nettlesere.
Foretar du en css-reset når siden lastes?

Eks:

Kode

*{
margin: 0px;
padding: 0px;
}
Tror det kan hjelpe deg langt hvertfall. Gjorde det for meg
Det er dessverre slik at det tar mye prøving og feiling før css-kode ser lik ut i alle browsere, og da er vel (tidligere?) versjoner av IE verstingen. Jeg opplever at Opera er den browseren som behandler css "mest riktig", uten at jeg har noe annet enn personlig erfaring å vise til.
http://en.wikipedia.org/wiki/Interne..._box_model_bug er en grei artikkel om IE6 sin håndtering av boksmodellen. Bruk IE-spesifikke kommentarer for å servere IE et eget stilsett med annen padding.

I tillegg er det slik at "default"-verdier for margin og padding ikke er spesifisert i CSS-spesifikasjonen. Ulike nettlesere implementerer med andre ord for eksempel en div- eller h1-tagg med forskjellig marg. Det er derfor lurt å benytte en css reset, som tidligere nevnt. Da starter man med blanke ark i alle nettlesere.
Kyrios's Avatar
Trådstarter
Serveren er tilbake, og jeg har et prima ser-ikke-likt-ut-problem, kombinert med noe jeg rett og slett ikke får til. La oss se:
Siden i FireFox
http://i118.photobucket.com/albums/o108/vardark/FF.png
Siden i Internet Explorer
http://i118.photobucket.com/albums/o108/vardark/IE.png
Siden i Opera
http://i118.photobucket.com/albums/o108/vardark/oPERA.png

Målet er i utgangspunktet at den grå bakgrunnen man ser øverst skal være bakgrunn for alt innholdet på siden (inkludert det grønne sensurerte bilde FireFox ikke dekker). I tillegg vil jeg at knappanelet, som FireFox gjør om til en slags rar liste, skal ligge på bunnen slik som IE og Opera gjør det. Under følger relevant kode:

HTML/PHP

Kode

<?php
echo'<div id="hovedmeny-velkomst">
<p>Dette burde se likt ut i alle nettlesere.</p>

<p>Det ser ikke likt ut i alle nettlesere.</p>

<p>Ingenting er slik jeg vil det skal være heller.</p>

<p>Sukk.</p>
</div>

<div id="hovedmeny-logginn">
<form action="index.php" method="post">  
                      <table>
                            <tr><td><b>Logg inn:</b></td></tr>
                            <tr><td>Brukernavn:</td><td><input name="username" class="logtextlong" maxlength="16"></td></tr>
                            <tr><td>Passord:</td><td><input type="password" name="password" class="logtextlong" maxlength="16"></td></tr>
                            <tr><td colspan="2"><input type="submit" value="Logg inn!" class="logsubmitlong" name="logginn"></td></tr>
                      </table>
                  </form><div id="hovedmeny-svar">'.$loggoutput.'</div>
                  <img src="bilder/index.bmp" alt=""></div>';
}
?>                
<div id="hovedmeny-knapper">
                      <ul id="liste-knapper">
                      <li><a href="index.php">logg inn</a></li>
                      <li class="hovedmeny-knapp"><a href="index.php?meny=registrer">opprett bruker</a></li>
                      <li class="hovedmeny-knapp"><a href="index.php?meny=regler">regelverk</a></li>
                      <li><a href="index.php?meny=om">om <i>test</i></a></li>
</ul>
</div>
CSS

Kode

#hovedmeny-velkomst{
                    width: 400px;
                    height: 285px;
                    float: left;
                    padding-left: 25px;
}

#hovedmeny-logginn{
                   width: 400px;
                   height: 285px;
                   float: right;
}
#hovedmeny-svar{
                height: 20px;
                color: #763B3B;
                font-weight: bold;           
}
#hovedmeny-knapperul{
                 padding-left: 0;
                 margin-left: 0;
                 background-color: #464646;
                 color: White;
                 float: left;
                 width: 100%;
                 font-family: arial, helvetica, sans-serif;
}

#hovedmeny-knapper ul li{
                    display: inline;
}

#hovedmeny-knapper ul li a{
                      padding: 0.2em 1em;
                      background-color: #464646;
                      color: White;
                      text-decoration: none;
                      float: left;
                      border-right: 1px solid #fff;
                      width: 15%;
}

#hovedmeny-knapper ul li a:hover{
                            background-color: #20A040;
                            color: #fff;
}
Dette er sikkert et salig rot for dere kjennere, men jeg satser på at jeg kan få noen gode råd for å ordne opp i denne suppa. Bare si ifra hvis det er kode som ser ut til å mangle eller noe slikt.
Jeg har blogget om hvordan få sider som ser bra ut overalt, og vil tro du finner en del tips der.
Kyrios's Avatar
Trådstarter
Sitat av fuzzy76 Vis innlegg
Jeg har blogget om hvordan få sider som ser bra ut overalt, og vil tro du finner en del tips der.
Vis hele sitatet...
Takker, skal ta en titt på det. Strever virkelig med dette problemet.
z0p
uʍop ǝpısdn
z0p's Avatar
Sitat av Kyrios Vis innlegg
Serveren er tilbake, og jeg har et prima ser-ikke-likt-ut-problem, kombinert med noe jeg rett og slett ikke får til. La oss se:
Siden i FireFox
http://i118.photobucket.com/albums/o108/vardark/FF.png
Siden i Internet Explorer
http://i118.photobucket.com/albums/o108/vardark/IE.png
Siden i Opera
http://i118.photobucket.com/albums/o108/vardark/oPERA.png

Målet er i utgangspunktet at den grå bakgrunnen man ser øverst skal være bakgrunn for alt innholdet på siden (inkludert det grønne sensurerte bilde FireFox ikke dekker). I tillegg vil jeg at knappanelet, som FireFox gjør om til en slags rar liste, skal ligge på bunnen slik som IE og Opera gjør det. Under følger relevant kode:

HTML/PHP

Kode

<?php
echo'<div id="hovedmeny-velkomst">
<p>Dette burde se likt ut i alle nettlesere.</p>

<p>Det ser ikke likt ut i alle nettlesere.</p>

<p>Ingenting er slik jeg vil det skal være heller.</p>

<p>Sukk.</p>
</div>

<div id="hovedmeny-logginn">
<form action="index.php" method="post">  
                      <table>
                            <tr><td><b>Logg inn:</b></td></tr>
                            <tr><td>Brukernavn:</td><td><input name="username" class="logtextlong" maxlength="16"></td></tr>
                            <tr><td>Passord:</td><td><input type="password" name="password" class="logtextlong" maxlength="16"></td></tr>
                            <tr><td colspan="2"><input type="submit" value="Logg inn!" class="logsubmitlong" name="logginn"></td></tr>
                      </table>
                  </form><div id="hovedmeny-svar">'.$loggoutput.'</div>
                  <img src="bilder/index.bmp" alt=""></div>';
}
?>                
<div id="hovedmeny-knapper">
                      <ul id="liste-knapper">
                      <li><a href="index.php">logg inn</a></li>
                      <li class="hovedmeny-knapp"><a href="index.php?meny=registrer">opprett bruker</a></li>
                      <li class="hovedmeny-knapp"><a href="index.php?meny=regler">regelverk</a></li>
                      <li><a href="index.php?meny=om">om <i>test</i></a></li>
</ul>
</div>
CSS

Kode

#hovedmeny-velkomst{
                    width: 400px;
                    height: 285px;
                    float: left;
                    padding-left: 25px;
}

#hovedmeny-logginn{
                   width: 400px;
                   height: 285px;
                   float: right;
}
#hovedmeny-svar{
                height: 20px;
                color: #763B3B;
                font-weight: bold;           
}
#hovedmeny-knapperul{
                 padding-left: 0;
                 margin-left: 0;
                 background-color: #464646;
                 color: White;
                 float: left;
                 width: 100%;
                 font-family: arial, helvetica, sans-serif;
}

#hovedmeny-knapper ul li{
                    display: inline;
}

#hovedmeny-knapper ul li a{
                      padding: 0.2em 1em;
                      background-color: #464646;
                      color: White;
                      text-decoration: none;
                      float: left;
                      border-right: 1px solid #fff;
                      width: 15%;
}

#hovedmeny-knapper ul li a:hover{
                            background-color: #20A040;
                            color: #fff;
}
Dette er sikkert et salig rot for dere kjennere, men jeg satser på at jeg kan få noen gode råd for å ordne opp i denne suppa. Bare si ifra hvis det er kode som ser ut til å mangle eller noe slikt.
Vis hele sitatet...
jeg ville startet med å rydde opp markupen.


Kode

<?php
echo'
php tagger er uvessentlige i sammenhengen og du bør droppe de for ryddighetens skyld


Wrap logiske deler av siden i div elementer. unngå unødvendig markup

Kode

div id="hovedmeny">
  <div id="hovedmeny-velkomst">
    <p>paragraf1
    <p>paragraf2
    <p>paragraf3
  </div>

  <form action="index.php" method="post" class="login">  
    <strong>Logg inn</strong>
    <label for="username">Brukernavn</label>
    <input type="text" name="username" maxlength="16">
    <label for="password>Passord</label>
    <input type="password" name="password" maxlength="16">
    <input type="submit" value="Logg inn!" name="logginn">
  </form>

  <div id="hovedmeny-svar" />

  <img src="bilder/index.bmp" alt="whatever" class="whatever-this-is" />

  <ul id="liste-knapper">
    <li><a href="index.php">logg inn</a>
    <li><a href="index.php?meny=registrer">opprett bruker</a>
    <li><a href="index.php?meny=regler">regelverk</a>
    <li><a href="index.php?meny=om">om <em>test</em></a>
  </ul>

</div>
dette skal være en fullgod erstatning for markupen din.
siden jeg egentlig ikke aner hva du vil, og du ikke lærer av om jeg gjør det for deg får jeg bare si at du bør lese deg litt opp om emnet. spesielt hvordan du strukturer en side
Limited edition
Moff's Avatar
Jeg klarer ikke på stående fot å se hva som er feil i den originale koden - men jeg ser at den er veldig rotete. Det er nok også det som er problemet her; semantikken er ikke god nok. Semantikk handler om hvordan du strukturerer koden din, at alle elementer og tagger havner i rett rekkefølge. Det finnes et veldig bra online-verktøy for å sjekke om koden din er semantisk korrekt og fri for skrivefeil. Gå til validator.w3.org og skriv inn linken til siden din - eller velg "validate by direct input" og lim inn kildekoden din. Du vil få en liste over feil i koden, med en melding om hvorfor feilen oppstår. Husk at, som i all debugging, problemet trenger ikke nødvendigvis være det validatoren peker på - den kan gi utslag på noe som er korrekt, fordi det er en feil på et tidligere punkt. Den gir også beskjed om du bruker koder som ikke følger standarden du skriver i - for eksempel, i XHTML 1.0 Strict, så er det andre regler for bruk av Flash-objekter enn det XHTML 1.0 Transitional har.

Jeg anbefaler at du bruker nettopp XHTML 1.0 Strict som standard, fordi den er rimelig solid i de aller fleste nettlesere.

Sitat av z0p Vis innlegg
jeg ville startet med å rydde opp markupen.
[...]
php tagger er uvessentlige i sammenhengen og du bør droppe de for ryddighetens skyld
[...]
unngå unødvendig markup
[...}
dette skal være en fullgod erstatning for markupen din.
[...]
spesielt hvordan du strukturer en side
Vis hele sitatet...
Jeg blir ikke enig med meg selv om hvorvidt du tuller eller faktisk er seriøs nå. Bruk av PHP på denne måten er forsåvidt ikke helt stuerent i min bok - men samtidig er det en helt legitim måte å bruke dynamisk innhold på - noe trådstarter også gjør med variabelen $loggoutput. Jeg ser at du også har droppet "unødvendig" markup i koden din - du glemmer å lukke <p>-taggene, du lukker en <div>-tagg inni seg selv (det går ikke an på omsluttende tagger, som <div>, <p>, <a> og lignende - i motsettning til <img>, <meta>, <link> etc.) og du bruker foreldede tagger som <strong> og <em>. Styling bør foregå gjennom CSS alene - å blande det sammen vil på sikt lage kaos. Resultatet av markupen du postet er heller ikke i nærheten av det trådstarter - antakeligvis - ønsker å oppnå.

Her er et eksempel jeg har satt sammen med XHTML 1.0 Strict, basert på beskrivelsen du (trådstarter) gav. For å kjøre direkte, lagre CSS-en som "test.css" i samme mappe som en fil med HTML-delen.

XHTML:

Kode

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<title>Test</title>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<link rel="stylesheet" href="test.css" />
	</head>
	<body>
		<div id="bakgrunn">
			<div id="topp">
				Topp
			</div>
			
			<div id="venstre">
				<h1>XHTML 1.0 Strict.</h1>
				<p>Helt likt.</p>
				<p>Uansett.</p>
			</div>
			
			<div id="hoyre">
				<form method="post" action="?">
					<p>
						Brukernavn
						<input type="text" name="brukernavn" id="brukernavn" /><br />
						Passord
						<input type="password" name="passord" id="passord" /><br />
						<input type="submit" name="submit" value="Logg inn" />
					</p>
				</form>
				
				<p>
				Takket være clear:both så dytter begge disse kolonnene bakgrunn og meny nedover
				jo mer innhold du putter inn.
				</p>
				
				<img src="http://www.google.no/intl/en_com/images/srpr/logo1w.png" alt="Eksempelbilde" />
			</div>
			
			<div id="bunn">
				<ul>
					<li><a href="#">Knapp</a></li>
					<li><a href="#">Knapp</a></li>
					<li><a href="#">Knapp</a></li>
				</ul>
			</div>
		</div>
	</body>
</html>
CSS:

Kode

body {
	font-family: verdana;
	font-size: 12px;
	background: #ccffcc;
}
div#bakgrunn {
	width: 600px;
	background: #cccccc;
	padding-bottom: 5px;
}
div#topp {
	background: #666666;
	color: #ffffff;
	font-weight: bold;
	padding: 5px;
}
div#venstre {
	float: left;
	width: 290px;
	padding: 5px;
}
div#hoyre {
	float: right;
	width: 290px;
	padding: 5px;
}
div#hoyre form {
	text-align: right;
}
div#bunn {
	clear: both;
}
a {
	color: #000000;
}
ul {
	list-style-type: none;
}
li {
	display: inline;
	background: #666666;
	border: 1px solid #ffffff;
	padding: 5px;
}
Legg merke til hvordan jeg styler listen (ul og li) for å få menyen til å funke i alle nettlesere. Se også på clear:both, som sørger for å trekke ned bakgrunnen slik du ville. Clear:both betyr at dette elementet ikke vil ha noen flytende (floating) elementer ved sidenav seg (kan også bruke clear:left og clear:right). Dette kan du bruke til å "oppheve" float-elementene. En div skal faktisk ikke wrappe seg rundt et float-element selv om elementet er større enn div-en. Men når du legger inn et element etter float-elementene som har clear:both, så skal div-en wrappe seg rundt dette - og clear:both sørger for å dytte float-elementene unna, og dermed havner disse også på innsiden av div-en. Du kan lese mer om tagger, atributter (både for XHTML og CSS) på W3Schools. Google "W3Schools" + elementnavn eller tag for å få opp en bra beskrivelse av hva det er for noe.

Noen tips: Spesielt for XHTML så skal alle tagger åpnes og lukkes, og i rett rekkefølge. Feil: <div><p>Tekst[COLOR="Red"]</div></p>[/COLOR] - Korrekt: <div><p>Tekst[COLOR="Lime"]</p></div>[/COLOR]. I forhold til XHTML 1.0 Strict er det mange kjente HTML-tagger du bør unngå å bruke - som de nevnte <i> og <strong>. Dette vil du få beskjed om i valideringen. For å strukturere siden din bør du først visualisere (les: tegne) hvordan nettsiden skal se ut. Tegn alle div-ene som firkanter og få oversikt over hvordan nestingen ("nest", eng. hvordan tagger ligger inni hverandre) skal se ut. Prøv å være konsekvent - jeg ser du bruker både fargekoder (eks. #ffcc00) OG farger som ord (eks. "White") i CSS-en din. Prøv å bare bruker fargekoder. Alle nettlesere trenger ikke å ha samme farge på "Blue" - men "#0000ff" skal være nogenlunde likt. (Teknisk notis: Nettlesere HAR faktisk ulike fargepaletter, så fargene vil ikke være like.) Jeg ser også at du bruker ulike måleenheter, som em, prosent og pixler. Prøv å holde deg til én enhet - selv bruker jeg kun pixler.

For å ta det et steg videre mot semantisk korrekthet, så har jeg også slengt inn nødvendige referanser for charset i HTML-koden - jeg skriver alltid i UTF-8 - denne koden MÅ samsvare med den faktiske tegnkodingen du skriver i. Du kan ikke endre tegnkoding i vanlig notisblokk (den lagrer som ANSI, og du må da bruke ISO-8859-1. Om jeg ikke tar helt feil), så du må laste ned noe skikkelig redigeringsverktøy for å endre det. Jeg bruker Notepad++, som er gratis å laste ned på SourceForge.
z0p
uʍop ǝpısdn
z0p's Avatar
Sitat av Moff Vis innlegg
Jeg blir ikke enig med meg selv om hvorvidt du tuller eller faktisk er seriøs nå. Bruk av PHP på denne måten er forsåvidt ikke helt stuerent i min bok - men samtidig er det en helt legitim måte å bruke dynamisk innhold på - noe trådstarter også gjør med variabelen $loggoutput.
Vis hele sitatet...
Jeg vet ikke om det kom helt frem, men jeg tenkte på å poste php-koden her når problemet omhandlet markup/styling. Parsingen i seg selv er jo en helt annen diskusjon
Sitat av Moff Vis innlegg
Jeg ser at du også har droppet "unødvendig" markup i koden din - du glemmer å lukke <p>-taggene,
Vis hele sitatet...
Det gikk litt fort i svingene, så jeg droppet avsluttende tag. Kanskje litt dumt, men det er forsåvidt gyldig html i henhold til w2c rec. av html 4
Sitat av Moff Vis innlegg
du lukker en <div>-tagg inni seg selv (det går ikke an på omsluttende tagger, som <div>, <p>, <a> og lignende - i motsettning til <img>, <meta>, <link> etc.)
Vis hele sitatet...
jeg kan være enig her. som sagt gikk det litt fort i svingene. Et tomt div-element er selvfølgelig meningsløst, og det var en vri for en mal
Sitat av Moff Vis innlegg
og du bruker foreldede tagger som <strong> og <em>. Styling bør foregå gjennom CSS alene - å blande det sammen vil på sikt lage kaos.
Vis hele sitatet...
Strong og em er uttrykk og bør dermed bruke tagger som muligjør korrekt gjenngivelse av teksten for skjermlesere/text-to-speech og dermed ivareta tilgjenngelighet. Bruken av em og strong her var nok ikke den beste, men intensjonen var å vise at i og b er utdatert og det finnes mer semantisk korrekte elementer som em og strong
Sitat av Moff Vis innlegg
Resultatet av markupen du postet er heller ikke i nærheten av det trådstarter - antakeligvis - ønsker å oppnå.
Vis hele sitatet...
Jeg ser at jeg kanskje ikke fikk med meg alt han ønsket, men i utgangspunktet vil jeg tro markupen uansett skal holde mål. Siden det grå feltet skulle inneholde alt innhold wrappet jeg alt i en div, som da vil være det "grå arealet". Plassering av det kan gjøres ved positioning, margins eller padding.
Velkomsteksten er wrappet i en div, å wrappe enkeltelementer som form og lister i en div ser jeg ikke helt nytteverdien av. Jeg ser at han ønsket menyen nederst på siden, og da bommet jeg litt med å trykke den i div-seksjonen, men siden det han tydeligvis ønsker må gjøres med fixed position, går den uansett utenom "DOM-flyten", og plasseringen er i utgangspunktet uvesentlig.

Ved å bruke label-element tilknyttet input-elementene vil man i de fleste nettlesere få funksjonene innebygget plattformen tilknyttet form-elementer (fokus/aktivering ved klikking på teksten)

Det mangler vel et element med clear:both, som du sier, for å kunne kjøre den kolonne-løsningen han ønsker, men strengt tatt så er vel dette en "hack" mer tilknyttet css enn markup, så jeg valgte å droppe det.

Forøvrig er det ikke stress å lagre i utf-8 med notepad afaik, men syntax highlight, linjenum. avanserte tekst redigering og søke funksjoner er absolutt ikke feil.

Når det gjelder fargene er vel dette standarisert i både html og css spec. Man har også 216 farger som omtales som "web-safe". Disse gjengis mer eller mindre korrekt på alle skjermer.
Sist endret av z0p; 5. august 2010 kl. 02:22.
Har du vurdert å bruke et CSS-rammeverk? F.eks. Blueprint: http://www.blueprintcss.org/
improbable
Gusto's Avatar
DonorAdministrator
Sitat av Moff Vis innlegg
og du bruker foreldede tagger som <strong> og <em>. Styling bør foregå gjennom CSS alene - å blande det sammen vil på sikt lage kaos.
Vis hele sitatet...
Her tar du feil, for <em> har alltid vært semantisk og betyr at du fremhever noe (emphasis). Samme med <strong>, for ord som markeres som noe veldig viktig i setningen den brukes.

<i> og <b> står derimot for den visuelle presentasjonen av teksten, selvsagt kursiv (italicize) og fet type (bold).

Protip: I HTML5 har <i> fått en semantisk betydning og skal ikke lenger brukes som italicize. Nå betyr det at teksten leses med en alternativ stemme eller stemning.

Forresten, har du ikke hørt? XHTML er ut
Sist endret av Gusto; 5. august 2010 kl. 02:52.
Sitat av Moff Vis innlegg
Det finnes et veldig bra online-verktøy for å sjekke om koden din er semantisk korrekt og fri for skrivefeil. Gå til validator.w3.org...
Vis hele sitatet...
Nei. W3C's validator sjekker ikke semantikk i det hele tatt. Den sjekker for validitet, og kun det. En tabell for layout er semantisk feil, men validerer som bare juling.

Sitat av Moff Vis innlegg
Jeg anbefaler at du bruker nettopp XHTML 1.0 Strict som standard, fordi den er rimelig solid i de aller fleste nettlesere.
Vis hele sitatet...
Her er jeg forferdelig uenig med deg. For å fungere i Internet Explorer må XHTML serveres med mimetypen "text/html", som igjen medfører at alle nettlesere bruker HTML-parseren sin på XHTML. Derfor tolker nettlesere XHTML som ugyldig HTML. Da er det mye bedre å bruke HTML fra bunnen av. Du finner en kort oppsummering av problemstillingen hos Jarel Remick samt en lengre avhandling hos Lachlan Hunt, en autoritet på området og medlem i W3C's egen HTML work group.

XHTML er generelt også et blindspor, ettersom det ikke finnes en eneste nettleser i verden som har planer om å implementere neste versjon, XHTML 2, fordi den er blitt alt for kompleks, uhåndterlig og bryter bakoverkompatibilitet. Til og med Firefox-teamet har sagt at XHTML2 aldri vil skje.

Sitat av Moff Vis innlegg
...og du bruker foreldede tagger som <strong> og <em>. Styling bør foregå gjennom CSS alene - å blande det sammen vil på sikt lage kaos.
Vis hele sitatet...
NEI. <em> og <strong> er erstatning for de foreldede taggene <i> og <b>, og er innført nettopp fordi de angir semantikk og ikke styling. "em" sier absolutt ingenting om hvordan elementet skal/må se ut. Den har bare tilfeldgivis italic som default styling. Em står for emphasis som betyr fremheving. Fremheving kan gjøres på mange måter og er derfor ikke styling i seg selv.

Sitat av Moff Vis innlegg
I forhold til XHTML 1.0 Strict er det mange kjente HTML-tagger du bør unngå å bruke - som de nevnte <i> og <strong>. Dette vil du få beskjed om i valideringen.
Vis hele sitatet...
<i> er deprecated i strict ja (både for HTML og XHTML), men <strong> er ikke.