Hallo,

Op het moment ben ik bezig met een startpagina script alleen nu laad ik de linkjes en categorieën uit een database en worden ze horizontaal ingeladen. Dit is niet mooi als de bovenste categorieën meer links hebben.

Je krijgt dan dit effect:

Categorie1 Categorie2 Categorie3
Link1 Link1 Link1
Link2 Link2 Link2
Link3
Link4

Categorie4 Categorie5 Categorie6
etc.................................

Die lege ruimte tussen Categorie1 en Categorie4 is niet mooi. Nu heb ik dus een idee om deze verticaal in te laden maar ik heb geen idee hou ik dat met de css en de loop goed moet krijgen.

(Ik wil dus dit:)
Categorie1 Categorie2 Categorie3
Link1 Link1 Link1
Link2 Link2 Link2
Link3
Categorie4 Categorie5 Link4

Huidige CSS:

#content{
	display: block;
	width: 768px;
	background-image: url(../img/pageborder.png);
	background-repeat: repeat-y;
	padding: 0 39px 15px; 39px;
}
#content:after {
	content: '';
    display: block;
    clear: both;
}
.cat_rij{
	display:block;
}
.cat_rij:after {
	content: '';
    display: block;
    clear: both;
}
.categorie{
	float:left;
	display:block;
	padding: 15px 35px 0 0;
	width:200px;
}
.categorie-top{
	padding: 4px 0 0 0;
	width: 200px;
	height: 28px;
	background-image: url(../img/categoriebg.png);
	background-repeat:repeat-x;
	color: #fff;
	font-size: 20px;
	font-weight: bold;
	text-align: center;
}
.links{
	width: 196px;
	padding: 3px 10px;
	background-image:url(../img/link-border.png);
	background-repeat:repeat-y;
}
.links ul{
	list-style-type: none;
	padding: 0;
	margin: 0;
}
.endlinks{
	float:none;
	clear:both;
	padding: 0;
	margin: 0;
	height: 2px;
	background-image:url(../img/link-end.png);
	background-repeat: no-repeat;
}


en de html/php (ik gebruik het code igniter framework dus daarom zal de volledige code niet lukken maar de view post ik)


<div id="content">
        <?php
        foreach($cats as $name => $data){ ?>
    	<div class="categorie">
        	<div class="categorie-top">
            	<?php echo $name."\n"; ?>
            </div>
            <div class="links">
                <ul>
                <?php
                foreach($data['links'] as $link){
                $disp = $link['display'];
                $linklink = $link['link'];
                echo "<li><a href=\"$linklink\">$disp</a></li>\n";
                }
                ?>
                </ul>
            </div>
            <div class="endlinks"></div>
        </div>
        <?php } ?>
    </div>
Ik zou dit persoonlijk volledig via CSS oplossen.
Veel makkelijker en flexibeler.
Ook als je scherm minder breed wordt.

Dus gewoon deze html:
<div class="cat_rij">
   <a href="">...</a>
   <a href="">...</a>
   <a href="">...</a>
   <a href="">...</a>
</div>


En dan met CSS alles netjes uitlijnen, floaten.
Je kan de a's floaten, maar ook de div.cat_rij's.
Henk Tenk op 22/08/2012 12:42:52

Zo als je al kan zien is mijn variant korter :), daarom gebruik ik die ook.

Misschien korter maar niet goed/beter.
Zie ook http://www.phphulp.nl/php/tutorial/php-algemeen/correct-quoten/772/
Omdat een query zonder foutafhandeling / beveiliging is, sla je dat dan vast ook maar over?!

Henk Tenk op 22/08/2012 14:18:41

@Erwin klopt ik kopieer inderdaad de variabelen omdat ik het overzichtelijker vind.

Dan kan het korter/efficiënter (en beter) en dan doe je het niet. :s
Je weet dat het de view is, alle query beveiling e.d. is ergens anders geregelt, de display hoef ik niet meer te beveiligen

Reageren