CSS website ziet er soms vreemd uit

Status
Niet open voor verdere reacties.
Ah, ik was nog niet aan de includes toe...
  • Je testpagina is goed gelukt als rechttoe-rechtaan-pagina. :thumb:
    Die gaat de basis worden voor het includen.
Zal morgen weer een stukje vervolgverhaal maken. :)

Zeker weten: IrfanView is ook prima voor schaalwerk van logo's en nog een hele serie bewerkingen; met Gimp zal je nog wat meer kunnen doen in de afbeeldingen zelf.

Wordt vervolgd!
Met vriendelijke groet.
CSShunter
__________
PS: Google wil dat ik op een 3-letterpartij ga stemmen waar ik al m'n hele leven een afkeer van heb. Dat ga ik dus niet doen! :d
 
Laatst bewerkt:
Ik heb van de onderdelen van de html aparte includes gemaakt zoals bv "include-navigatie.htm" en "include-content.htm" en dacht simpel dat ik dat makkelijk per stukje uit kon gaan testen. Maar wellicht is het stukje bij beetje uittesten niet mogelijk.

Heb wel goed gekeken naar het "reisverslag" waar het duidelijk in staat uitgelegd.

Testpagina was met de verstrekte gegevens niet zo moeilijk, maar zo kon ik zelf gaan uitproberen. ;)
 
Zo, je wilt tempo maken! :)
Dan zal ik ook wat sneller gaan met de toelichting.

4. Drie kolommen naast elkaar



Om drie kolomen te krijgen die naast elkaar staan, wordt eerst een <div id="hoofdsectie"> gemaakt waar de drie kolommen in zitten.
Vervolgens wordt de float-eigenschap gebruikt voor de kolommen . De linkerkolom drijft naar links, de middelste ook (die drijft er dus aan de linkerkant tegenaan), en de rechterkolom drijft hier naar rechts (had ook naar links gekund).


  • Bij de breedte-vaststelling van de kolommen is zo gesteggeld, dat de linkerkolom even breed is als de rechterkolom, en dat de linkerkolom plus de inhoud-kolom samen net geen 800px breed zijn.
  • Dan kunnen eventuele kijkers met een beeldscherm op 800*600px nog altijd de inhoud goed lezen zonder horizontaal te hoeven scrollen voor elke regel.
  • De rechter-advertentiekolom missen ze dan zonder L/R scrollen, maar dat zullen ze niet zo erg vinden. ;)

Om de voettekst onder de hoogste van de 3 kolommen te krijgen, is een losse div met de clear-eigenschap ingevoegd, vlak voor het sluiten van de hoofdsectie-container.
De kolommen hebben voorlopig nog even geen inhoud: eerst het model. :)

Wordt vervolgd!

[edit]In Internet Explore 7 zijn de tijdelijke randjes om de <div>'s niet te zien, in de andere browsers wel (ook IE8 en IE9)[/edit]
 
Laatst bewerkt:
En de volgende:

5. De content voorop



Voor Google en de toegankelijkheid is het beter als de inhoud-kolom het eerste in de html-code staat. Nu staat daar de linkerkolom.
Er kan echter listig gebruik gemaakt worden van het verschijnsel dat je een float naar links en een float naar rechts in willekeurige volgorde kunt zetten.

We pakken eerst de linker- en content-kolom in in een <div id="wrapper">, dan kunnen ze samen links van de rechterkolom gaan drijven.
Nu kan de linkerkolom naar links floaten, en de content-kolom naar rechts!

Daarmee kan ook de content-kolom het eerst in de html komen, zonder dat deze meteen aan de linkerkant van het scherm begint.

Het gaat nog goed met de html-validator.
Nu kunnen de kolommen gevuld gaan worden.

Wordt vervolgd!

[edit]In Internet Explore 7 zijn de tijdelijke randjes om de <div>'s niet te zien, in de andere browsers wel (ook IE8 en IE9)[/edit]
 
Laatst bewerkt:
Ziezo, de vuldop er af, en in de klaar staande <div id="content"> kan de inhoud van de middenkolom gegoten worden.

6. De content gevuld



Voor de inleiding zijn nog een aantal eigen styles nodig, maar bij de onderwerpen daaronder komt de kracht van css pas goed tot zijn recht.
In de html zit elk onderwerp in een <div class="onderwerp">, en heeft precies dezelfde opbouw:
HTML:
<div class="onderwerp">
    <h2>Onderwerp-titel</h2>
    <h3>* subtitel *</h3>
    <p>
        Eén of meer tekstregels
    </p>
    <p class="leesverder">
        De "lees verder"-link
    </p>
</div><!-- einde onderwerp -->
De css zorgt ervoor dat ze dan ook precies dezelfde opmaak hebben, zonder dat je er verder per onderwerp iets aan hoeft te doen. :)
De lees-verder's hebben een hover-image gekregen, zodat goed duidelijk is wanneer je er op staat.
Externe links hebben een title="Externe link" gekregen (zichtbaar bij hover), zodat men weet dat men van de Aspartaam-site af gaat. Dan is geen openen-in-nieuw-tabblad nodig, en kan het valid html-Strict blijven.

Video's
Alleen voor de video-onderwerpen komt er wat extra bij.
Om niet te overheersend op de pagina te worden, is de video-inbedding een kleiner image-met-hover-variant geworden.
Klik je er op, dan wordt met een javascriptje (helemaal onderaan in de code, vlak voor de </body>) een "css-popup" geopend. Daarin staat de echte video-inbedding van de YouTube's, nu vergroot en met een randje er om heen om los te komen van de pagina.
Kan met een kruisje en javascript weer gesloten worden.
Door de video's niet in te sluiten in een <iframe> maar in een <object>-element kan het valid html-Strict blijven.
  • Mocht javascript uit staan, dan worden de video's rechtstreeks op de site van YouTube geopend. Helaas is de YouTube-site wel javascript-afhankelijk, dus men ziet dan geen video. Maar de bezoeker/ster van de Aspartaam-site weet dan in elk geval dat het niet aan de Aspartaam-site ligt, en zal de Terug-knop van de browser vlug weten te vinden!

Het gaat prima met de html-validator. :)
  • Tussendoor worden bij elke stap trouwens ook de Internet Explorer versies IE7, IE8 en IE9 op het testrooster gelegd, om te kijken of die zich niet branden. Met onze fatsoenlijke code: gelukkig niet (maar je weet 't nooit).

Nu komt de linkerkolom.

Wordt vervolgd!
__________
PS:
Gaandeweg worden nog enkele kleine verbeteringen aangebracht in het eerder gegeven model.

[edit]Toch geen <object> en Strict mogelijk... Zie nr. #51![/edit]
 
Laatst bewerkt:
De linkerkolom kan nu ook bijgetankt worden:

7. De linkerkolom gevuld



Deze kolom stond al klaar in de <div id="linkerkolom">.
De kolom heeft een lichtgroene achtergrondkleur gekregen om de tekst van de content meer op te laten vallen. Een andere kleur dan de background-kleur van de Google-advertenties bovenaan, om aan te geven dat het hier om "eigen advertenties" gaat. Dat er voor alle duidelijkheid ook boven gezet.
Alles in deze kolom kan mooi gecentreerd worden.
Behalve de validator-images hebben alle image-links ook een hover-variant gekregen.
  • Voor de details: zie broncode.

Gaat goed met de html-validator.
En een klikje zegt: ook de css-validator is tevreden.

Dus: wij ook tevreden en over naar de rechterkolom.
Wordt vervolgd!
 
Hoi CSShunter,

Nou, dat is inderdaad bijtanken. Ziet er idd weer beter uit.

Ik breng voor mij zelf alle veranderingen in kaart voor het leerproces.
Zelf wil ik hierna ook mijn andere pagina's een update gaan geven.

Het gaat ineens als een speer, bedankt.

Zo komen we steeds dichter bij includen, maar daarvoor was toch ook een hoop op te steken.

Ik heb je nog niet gehoord over: "Ontwerp CSShunter" o.i.d. in de footer? (lijkt me leuk)

[off-topic] nog bericht van de "wandelende takken" gekregen?
 
De rechterkolom gaat snel!

8. De rechterkolom gevuld



Deze kolom staat al klaar in de <div id="rechterkolom">.
De css-toebehoren zijn hetzelfde als voor de linkerkolom, knip/plak. :)
De css voor de inhoud van de Google-advertenties wordt net als bij de top-advertenties geregeld in het script voor de advertenties.
De advertenties hebben een heel lichtgrijs buitenrandje gekregen voor geval er in een advertentie geen buitenrand mocht zitten. En is het bv. een pittig gekleurde staande banner, dan valt het niet op.
De advertentie-vulling is weer de Google-code, met een <noscript> regeltje voor wie javascript uit mocht hebben staan..

Hup, de footer!

Wordt vervolgd,
CSShunter
 
Aha, kruispost.
Ik kreeg even een telefoontje tussendoor.
Ja hoor, "Ontwerp: CSShunter" mag van mij in de footer

[off-topic]Jazeker, het is gelukt!!! De non-stop 100km is binnen 28,5 uur uitgewandeld (= afstand Nijmegen-Breda!!!) en het team heeft er zo'n € 2.000 aan sponsorgelden mee binnengehaald voor gezondheidszorg- en onderwijs-projecten in Mali e.a. goede doelen. :thumb:
 
Hoi CSShunter,

Een voorbeeldje van de footer: :thumb:
CSShunter.png

Trouwens fijn om dat laatste nieuws te horen!
 

Bijlagen

  • CSShunter.png
    CSShunter.png
    16,3 KB · Weergaven: 14
Ha, die footer had ik intussen ook zo gemaakt! :)
Maar eerst:

HERSTEL !!!
De met een <object>-element ingesloten video werkt prima in Firefox, Chrome en Opera, maar blijkt niet te werken in Safari en Internet Explorer (7).
Dus dat feest kan niet doorgaan.
Daarom er toch weer een <iframe> van gemaakt (en de stappen 06, 07 en 08 aangepast).
Jammer, nu kan het geen valid html4.01-Strict meer zijn.
Maar het is nog wel valid html4.01-Transitional.

Met vriendelijke groet,
CSShunter

[edit]Vanwege het Transitorial mag er in stap 07 en volgende nu ook een target="_blank" geplaatst worden bij externe links, om deze in een nieuw tabblad te laten openen.
Ook dat aangepast!
(2 sept. 2012)[/edit]
 
Laatst bewerkt:
Nu kan de afronding van de renovatie plaatsvinden:

9. De footer gevuld, wat finishing touch, en het stylesheet extern



Aan de footer valt weinig te stylen: alles komt in het midden, en een wat kleiner letterformaat.
Er is een negatieve margin-top van een paar px gegeven om de footer iets omhoog te trekken. Daarmee wordt het onderste lijntje van het laatste onderwerp van de inhoud aan het oog onttrokken.
Later moet er nog een php-functie in komen die automatisch de update-datum er in zet.
De css is overgeheveld naar een apart stylesheet.

Voor de finishing touch: een stukje javascript toegevoegd om bij een resolutie van 800*600px de kop en het menu in het midden van het scherm te krijgen (bij openen van een pagina).
Het scriptwerk opgenomen in de footer, om later mee te kunnen nemen in de php-include van de footer.

Check html-validator: akkoord.
Check css-validator: akkoord.
Check browsers: Firefox, Chrome, Opera, Safari en IE7 akkoord. Volgens Netrenderer.com IE8 en IE9 ook.

Dan mogen we nu eindelijk gaan php-en! :)

Wordt vervolgd!
CSShunter
 
Laatst bewerkt:
Hoi CSShunter,

De titel van dit helpmij onderwerp: CSS website ziet er soms vreemd uit is absoluut niet meer van toepassing op dit nieuwe geheel.
Wat mij wel opviel was dat bouw-08 een ander doctype heeft dan bouw-09. Zit dit verschil alleen in de toevoeging van de footer?

Aspartaam-bouw-08
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

Aspartaam-bouw-09
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

Het is geweldig dat in al de browsers: Firefox, Chrome, Opera, Safari en IE7 akkoord. Volgens Netrenderer.com IE8 en IE9 de website goed is te bekijken.

Ik ben tot zondag naar de camping, dus je hoeft je niet te haasten. Hoewel ik stik-nieuwsgierig ben naar het "gaan php-en!" want dat lukte me voor geen meter.

Ik zag dat je mijn optie voor de footer aanvulling al hebt overgenomen in bouw-09.

Fijn weekend
 
Hoi Ed,
Zit dit verschil alleen in de toevoeging van de footer?
Nee, het zit 'm helemaal niet in de footer.
Dat het doctype Transitional i.p.v. Strict moet worden, zit in het (later) veranderen naar een <iframe> voor de video's (nodig voor IE7 en Safari), met ingang van bouw-06 waar de video's er in komen.
  • Een <iframe> is niet toegestaan in Strict, maar wel in Transitional.
Vandaar had ik achteraf de nummers vanaf bouw-06 ook aangepast met het naar Transitional veranderd doctype.

Vanaf de update van 30:08-2012 om 01:04 is dat het geval.
Ook aspartaam-bouw-08.htm is nu Transitional geworden (en valid Transitional).

Dat jij 'm nog zag als Strict, kan zijn als je keek vóór 01:04, of omdat de oude versie nog in de Tijdelijke Internetbestanden van je browser hing.
Met een reload van de pagina (of F5) zal het dan de laatste Transitional-versie worden.

Prettig weekend ook!
CSShunter
 
Hoi CSShunter,

Zoals je weet heb ik er vaker last van dat als ik iets bij de provider verander het dan niet gelijktijdig te zien is.
Ik wis nu al alle geschiedenis als ik FF afsluit, maar tijdens het bewerken van files is het zo nu en dan toch lastig.
F5 verandert daar bij mij dan niets aan omdat ze dan nog in de tijdelijke internetbestanden staan.
Zo nu en dan best vervelend.
 
Hoi Ed,
Ja, lastig; maar we gaan maar onverdroten verder.
Als eerste stap voor het includen gaan we aan aantal partjes "excluden", want ze moeten uit de gewone pagina.

10. Het uitknippen van de php-fragmenten



Werkpagina
We maken als werkpagina eerst een kopie van de laatste complete versie aspartaam-bouw-09.htm.
Daarin reizen we de html-code door: op zoek naar wat dezelfde fragmenten zijn die op elke pagina terug moeten komen.

De eerste knip
Het eerste dat we tegenkomen is de <div id="header"> met het menu:
HTML:
<div id="header">
	<h1 class="hiddenText">Feitelijke informatie over de zoetstof Aspartaam</h1>
	<span class="hiddenText"><a href="#content">Sla menu over.</a></span>
	<div id="menu">
		<h2 class="hiddenText">Menu.</h2>
		<ul>
		... enz.
		</ul>
	</div><!-- eind #menu -->
</div><!-- eind #header -->
Hier kan de schaar in! :)
Alleen het binnenwerk van deze <div> gaat uitgeknipt worden, de <div id="header"> zelf blijft in de pagina staan. Dan blijft de hoofd-structuur van de pagina overeind.


  • Selecteer de code met ingang van de regel <h1 class="hiddenText"> tot en met de regel </div><!-- eind #menu -->.
  • Knip!
  • Open Kladblok, en plak daar (zonder iets erbij) het uitgeknipte fragment in.
  • Sla dit bestand op in een mapje "includes", met de naam aspartaam-fragment-header-en-menu.php.
  • Belangrijk! Bij het opslaan moet de codering op UTF-8 gezet worden (staat standaard op "ANSI"):

asp-fragment-utf8.png


  • Je kunt ook zo'n fragment-bestand aanmaken in een html-editor: als er maar geen andere code bij komt, en als het maar als UTF-8 opgeslagen wordt.
  • Vervolgens kan het fragment geüpload worden naar een aangemaakt mapje includes op de server.

Terug naar de pagina. Waar het fragment stond, zetten we nu een commentaar-regeltje: <!-- hier header-fragment invoegen -->. We houden dus over:
HTML:
<div id="header">
	<!-- hier header-fragment invoegen -->
</div><!-- eind #header -->

Tussenresultaat
  • Zou je de pagina nu gaan bekijken (hier: bouw-10a), dan zie je dat het knippen goed gelukt is. Het hele menu is weg! Maar de rest van de pagina, inclusief de opmaak, staat er nog keurig in.
  • Als je het losse fragment op de server gaat bekijken, zie je deze kale platte tekst. De hele opmaak is weg! Maar kijk je naar de broncode, dan staan de hele menu-structuur en alle opmaak-aanwijzingen (ID's, classes) er nog keurig in.
  • Zou je het losse fragment door de html-validator laten toetsen, dan zou die je bestraffend toespreken. Maar het is de bedoeling dat het in de pagina teruggeplakt wordt, dus dat is niet erg.
  • De css-validator is daarentegen uitermate tevreden over dit losse fragment: klopt, want er staat helemaal geen css in! (dat wordt in de hoofdpagina aangehaakt)
We maken ons niet ongerust! ;)

Verder met het knipwerk
Op dezelfde manier als bij de header halen we nu ook de andere standaard-fragmenten er uit: de Google-advertenties bovenin, de linkerkolom, de rechterkolom en de footer.
Ook die codes plakken we stuk voor stuk in een eigen fragment-bestandje, en de fragmenten zetten we alvast op de server.

De automatische update-datum in de footer
Bij het apart zetten van het footer-fragment kan daarin in plaats van:
HTML:
<p>&copy; aspartaam.nl &nbsp;/&nbsp; Ontwerp: CSShunter &nbsp;/&nbsp; Deze pagina is voor het laatst bijgewerkt op 
30-08-2012 om 01:10</p>
... meteen de php-code gezet worden die de datum er automatisch in zet:
HTML:
<p>&copy; aspartaam.nl &nbsp;/&nbsp; Ontwerp: CSShunter &nbsp;/&nbsp; Deze pagina is voor het laatst bijgewerkt op	
<?php
	echo date ("d-m-Y ", getlastmod()) . " om " . date ("H:i", getlastmod());
?>
</p>
  • Dit soort handige codes zijn te vinden in het online PHP-manual, o.a. over de hier gebruikte php datum-functie .
  • Het php-manual is erg groot, maar dat hebben we gelukkig allemaal niet nodig voor het includen! ;)


Het overblijfsel
Er is nu een erg lege pagina overgebleven (de bouw-10): alle fragmenten weg en eigenlijk alleen de paginastructuur en inhoud van de middenkolom is er nog:
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html lang="nl">
<head>
... enz.
</head>
<body class="home">

<div id="header">
	<!-- hier header-fragment invoegen -->
</div><!-- eind #header -->

<div id="topAdvertenties">
	<!-- hier Google-top-fragment invoegen -->
</div><!-- einde #topAdvertenties -->

<div id="hoofdsectie"><!-- voor de drie kolommen naast elkaar -->
	<div id="wrapper"><!-- Bevat de middenkolom met de content (eerst) en de linkerkolom (erna) -->
		<div id="content">
			<h1>Welkom bij de Aspartaam informatie-site</h1>
			<p>"Aspartaam" is ...
			...
			enz. enz.
			...
		</div><!-- einde #content -->

		<div id="linkerkolom">
			<!-- hier linkerkolom-fragment invoegen -->
		</div><!-- einde #linkerkolom -->

		<div class="clearB"></div>
	</div><!-- einde #wrapper -->

	<div id="rechterkolom">
		<!-- hier rechterkolom-fragment invoegen -->
	</div><!-- einde #rechterkolom -->

	<div class="clearB"></div>
</div><!-- einde #hoofdsectie -->

<div id="footer">
	<!-- hier footer-fragment invoegen -->
</div><!-- einde #footer -->

</body>
</html>
Ook het javascript voor de video's werkt niet meer, want dat zit in het verwijderde footer-fragment.
Maar in deze aspartaam-bouw-10.htm staat voor de rest nog alles overeind.

Alleen de regels <!-- hier fragment invoegen --> moeten nog vervangen worden door iets wat de fragmenten daadwerkelijk laat invoegen!

Maar dat komt de volgende keer! :p

Wordt vervolgd,
CSShunter
 
Laatst bewerkt:
Hoi CSShunter,


Dat was een lekkere binnenkomer terug van de camping.

Ik maakte twee fouten bij het includen de vorige keer, nl. Ik knipte niet
alleen het binnenwerk van deze <div> maar met de <div id...> erbij.
Tevens sloeg ik de includes niet op als .php en UTF8, maar als .html en ANSI.

Ja dan is het wel logisch dat het dan niet wil werken.

Geweldige uitleg trouwens.
 
Hoi CSShunter,

Kan ik zelf iets doen, behalve knippen en plakken?
 
Goeiemiddag Ed,
Ja ... even m'n volgende bericht afwachten. :p
Maar we zijn er bijna, het gaat steeds sneller.

Wordt vervolgd!
CSShunter
 
Hoi Ed,
Daar gaat ie dan.

11. Het includen van de php-fragmenten !



In onze bouw-10 hadden we staan:
HTML:
<div id="header">
    <!-- hier header-fragment invoegen -->
</div><!-- eind #header -->
Dat gaan we nu doen, en daar is maar één regeltje php-code voor nodig:
HTML:
<div id="header">
    <!-- hier header-fragment invoegen -->
    	<?php include("includes/aspartaam-fragment-header-en-menu.php"); ?>
</div><!-- eind #header -->

Vervolgens kan in de pagina naar beneden gescrolld worden, en achtereenvolgens wordt toegevoegd:
HTML:
...
<div id="topAdvertenties">
	<!-- hier Google-top-fragment invoegen -->
	<?php include("includes/aspartaam-fragment-googleAds-boven.php"); ?>
</div><!-- einde #topAdvertenties -->
...
		<div id="linkerkolom">
			<!-- hier linkerkolom-fragment invoegen -->
			<?php include("includes/aspartaam-fragment-linkerkolom.php"); ?>
		</div><!-- einde #linkerkolom -->
...
	<div id="rechterkolom">
		<!-- hier rechterkolom-fragment invoegen -->
		<?php include("includes/aspartaam-fragment-googleAds-rechterkolom.php"); ?>
	</div><!-- einde #rechterkolom -->
...
<div id="footer">
	<!-- hier footer-fragment invoegen -->
	<?php include("includes/aspartaam-fragment-footer.php"); ?>
</div><!-- einde #footer -->

</body>
</html>
Bij dit includen is het belangrijk dat er (zoals boven) telkens het relatieve pad naar de includes-map en het bestand daarin wordt opgegeven.
Zou je het met het absolute pad doen, bv:
HTML:
<?php include("http://aspartaam.nl/includes/aspartaam-fragment-footer.php"); ?>
... dan werkt het niet.
  • Dat is om veiligheidsredenen: php verbiedt het om vanaf een URL een bestand te includen, want dan zou je ook includes kunnen aftappen van een andere server (!).

=======
Zo, dat was het includen, en het bestand kan geüpload worden.
Dat is dus heel vlug gebeurd! :)

En het werk zat 'm niet in het includen, maar in het netjes maken van de pagina waarin het includen moet plaatsvinden. Daar zijn we de hele tijd mee bezig geweest. - In de PHP-mini-tutorial staat niet voor niets:
Waarschuwing vooraf
Het meeste werk gaat zitten in het "gewone" ontwerp van de website. Dit moet eerst gebeuren, en daarna wordt het ombouwen tot php-site een kwestie van eenvoudig knippen en plakken!
:D

Alleen ... als je nu het product op de server gaat bekijken, is er nog steeds niets van die mooie includes te zien! :shocked:
Klopt, maar in de volgende stap gaan we toveren!

Met vriendelijke groet,
CSShunter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan