Spry menu

Status
Niet open voor verdere reacties.

davidkennis

Gebruiker
Lid geworden
27 jan 2011
Berichten
56
ik heb nu een spry menu gemaakt.
waarvan ik de layout niet goed (mooi krijg)

ik krijg ook het onder liggende submenu de balk niet goed.

heeft iemand een idee of tips?
dit is de website http://home.kpn.nl/dakab000/index.html

is het mogelijk om bij de nieuws knop sterretjes te laten zien als ik iets nieuws te melden heb. en bij de rest van de knoppen niet?

graag jullie hulp/advies.
 
Aha: er zitten zowel menu-styles in het SpryMenuBarHorizontal.css als in de ingebakken styles in de <head> van de pagina (met deels andere namen maar dezelfde effecten). Ik denk dat je dat even goed moet uitzuiveren.

Verder zal er in elk geval #menu ul {overflow: visible;} moeten komen i.p.v. {overflow: hidden;}, dan zijn de uitklap-producten ook in bv. Firefox te zien.

En in de #menu a:hover, # menu a:focus staat nu een {font-size: 90%;}, dat veroorzaakt dat de knoppen opeens kleiner worden bij een hover. Je kunt die 90% weghalen bij de hover/focus, en als je een kleinere lettergrootte wilt voor de knoppen: toevoegen bij de gewone #menu a {...} styles.

Met vriendelijke groet,
CSShunter
_____________
PS: als je uit de #header even de margin-right: 10px; weghaalt, komt de foto mooi rechts boven de menubalk.
 
Laatst bewerkt:
zou je nog eens naar de site kunnen kijken.
het gaat nu niet goed.
ik heb de verwijzingen weg gehaald uit de menu styles.
en zou alleen de opmaar in de spry willen doen.
naar zoals je ziet gaat het niet goed.
 
ik heb nu sub menu's gemaakt.
alleen als ik nu van producten/vensterfilm naar producten/scheurstrip wil gaan dan gaat dat niet.
in de adres balk zet hij er alleen een #scheurstrip of #vensterfilm achter.
dit gaat niet werken. maar waarom doet hij dit niet goed.
zover ik kan zien staat alles goed ingesteld.
het vreemde is dat vanuit het index.html het wel goed werkt.
 
Hoi David,
Hier wat tips voor links:
  1. Gebruik voor de menu-links naar binnen de site altijd de volledige pad-naam. Dus bv.
    HTML:
    <li><a href="http://home.kpn.nl/dakab000/" title="Startpagina">Home</a></li>
    <li><a href="http://home.kpn.nl/dakab000/nieuws.html" title="Nieuwspagina">Nieuws</a></li>
    <li><a href="http://home.kpn.nl/dakab000/producten.html" title="Producten">Producten</a></li>
    <li><a href="http://home.kpn.nl/dakab000/product-paginas/vensterfilm.html" title="Vensterfilm">Vensterfilm</a></li>
    ... enz.
    Zo is verwarring uitgesloten, en het kan later ook goed van pas komen als we één menu voor alle pagina's gaan maken.

  2. Gebruik voor de mapnamen en bestandsnamen altijd kleine letters, dan kan je je nooit vergissen (op een Windows-pc maakt een hoofd- of kleine letter niet uit, op een server wel: daardoor kan een map of pagina onvindbaar zijn).

  3. Zet in de mapnamen en bestandsnamen nooit spaties, die kunnen o.a. gebroken libnks veroorzaken. Gebruik streepjes - (zoals bij "product-paginas") of onderstreepjes _ om woorden van elkaar te onderscheiden.

  4. Hou de richting van de slashes / in de gaten: het moeten altijd voorover hellende slashes / zijn (niet achterover-slashes \).

  5. Een href="#..." is een bladwijzer die op dezelfde pagina blijft, en die niet naar een andere pagina gaat (deze kan ook niet de .html uitgang hebben: de bladwijzer springt naar een element met id="..." (zelfde woord, zonder #; mag niet beginnen met een cijfer, en ook geen spaties bevatten).
Met vriendelijke groet,
CSShunter
 
Mooi!
Ik zie dat je het zwarte/witte "drop-down" pijltje bij het menu-item Producten los van de tekst "Producten" kunt krijgen door een iets andere padding te gebruiken; daarvoor toevoegen:
Code:
ul.MenuBarHorizontal a.MenuBarItemSubmenu
{
    ...
    padding-right: 20px;
}
Verder kan je om het submenu niet transparant te maken het volgende gebruiken:
Code:
ul.MenuBarHorizontal ul li
{
    width: 12em;
}
Dan zijn ook alle producten uit het submenu over de volle breedte van het submenu aanklikbaar.
En misschien is het ook mooi om het bovenrandje van het submenu wat meer afstand van het hoofdmenu te geven. Dat kan met bv.:
Code:
ul.MenuBarHorizontal ul
{
    border: solid #CCC;
    border-width: 5px 2px 2px 2px;
}
Verder is door de toevoeging van het submenu de oorspronkelijke balk-kleur achter het hoofdmenu verdwenen. Die kan weer teruggeroepen worden met het weghalen van de width:auto; uit de ul.MenuBarHorizontal, en daarvan bv. te maken:
Code:
ul.MenuBarHorizontal
{
    margin: 0;
    list-style-type: none;
    font-size: 100%;
    cursor: default;
    width: 780px;
    float: left;
    background: #90C2D4;
    padding: 3px 0 3px 20px;
    border-bottom: 1px solid #67ACC5;
}
Al met al wordt het dan zoiets:

daka-submenu.gif

[Gaat goed in Firefox; moet nog getest in Internet Explorer(s).]​

Met vriendelijke groet,
CSShunter
 
Nou, ik dacht dat ik het best goed had nu.
maar nu ik jou opmerkingen heb gedaan blijkt dat ik nog erg veel moet leren.

ik vind het wel fijn dat je de moeite hiervoor neemt en met je opmerkingen kan ik stap voor stap zien wat er ook gebeurd.

bedankt.
 
nu heb ik een pagina cutting edge gemaakt.
maar deze firma heeft een rood logo met rode achtergrond.
nu wilde ik ook de spry menu balk een ander kleur geven. dat is gelukt.
maar omdat ik op de website maar 1 mapje heb met spry gegevens is nu voor de hele site de kleur veranderd.

dat was niet de bedoeling.
kan ik nu in de sprymap een map daka en map trading maken en dan in de site de linken opnieuw maken.
waardoor ik eigenlijk 2 spry balken krijg 1 voor daka en 1 voor trading.
en dan kan ik de kleuren aanpassen.

als dit zo kan hoe moet ik dan beginnen.
 
Ha! Dat is een leuke variant! :thumb:

Dit moeten we even systematisch aanpakken.
Er kan voor alle pagina's één algemeen stylesheet gemaakt worden: daka-general.css.
Daarmee zijn we meteen van het inplakken van steeds (bijna) dezelfde styles in de <head> van alle pagina's af.
De truc is als volgt:
  • Voor alle pagina's die in het blauw tevoorschijn moeten komen, maken we een class="daka" aan.
  • Voor alle pagina's die in het rood tevoorschijn moeten komen, maken we een class="trading" aan.
  • Deze class zet je in de body-tag.
  • Alle blauwe pagina's krijgen: <body class="daka">.
  • Alle rode pagina's krijgen: <body class="trading">.
De nieuwe class is nu de wisselaar voor de afwijkende styles die erna moeten komen. Dit kan zowel in de gewone daka-general.css toegepast worden (voor bv. de pagina-achtergrond) als in het spry-stylesheet voor het menu.
Bijvoorbeeld de algemene styles voor de horizontale menubar zijn:
Code:
ul.MenuBarHorizontal
{
    margin: 0;
    list-style-type: none;
    font-size: 100%;
    cursor: default;
    width: 780px;
    float: left;
    padding: 3px 0 3px 20px;
}
De menu-bar verschilt alleen in de achtergrondkleur en in de kleur van het randje onderaan.
Dan gebruiken we voor de blauwe variant:
Code:
.daka ul.MenuBarHorizontal
{
    background: #96C2D2; /* blauw */
    border-bottom: 1px solid #67ACC5;
}
En voor de rode variant:
Code:
.trading ul.MenuBarHorizontal
{
    background: #c85176; /* rood */
    border-bottom: 1px solid #F00;
}
Wat betekent: alléén als er een menu-bar is waaraan de class="daka" voorafgaat, moet de blauwe achtergrond en het blauwe randje gebruikt worden. En dat is alleen het geval voor de pagina's waar in de body de class="daka" staat. Dat gaat dus altijd goed.
Voor de trading-pagina's wordt op dezelfde manier het rood gebruikt, want dat zijn de enige pagina's waar de class="trading" in de html voorafgaat aan de menubar.
Dat is nou het mooie van het cascade-karakter van CSS. :d
En eigenlijk heel logisch!

Nu is er één complicatie.
  • De pagina-achtergrondkleur is momenteel vastgeknoopt aan de <html> tag.
  • Maar die staat in de html boven de <body> tag, dus die kan met <body class="daka"> of <body class="trading"> niet beïnvloed worden.
De pagina-achtergrondkleur kan wel vastgeknoopt worden aan de <body> zelf, die kan wel wisselen met de ingevulde class.
  • Probleem is hier, dat de <body> op een breedte van 800px staat, zelf ook kleuren heeft, en niet de volle pagina-breedte heeft.
  • Oplossing is om er dan een <div id="wrapper"> tussen te zetten:
HTML:
<body id="daka">
    <div id="wrapper">
    ...
    de hele rest van de code
    ...
    </div>
</div>
en ook:
HTML:
<body id="trading">
    <div id="wrapper">
    ...
    de hele rest van de code
    ...
    </div>
</div>
  • De <body> krijgt nu de kleuren die eerst in de <html> zaten.
  • De #wrapper krijgt nu de kleuren die eerst in de <body> zaten.
Nu is alles wel met de body-class te beïnvloeden. :)

Met vriendelijke groet,
CSShunter
 
oke het kwartje moet nog vallen.
alle pagina's heb ik nu gemaakt vanuit een sjabloon die daka heet.
nu moet ik een CSS bestand gaan maken die Dak-general heet. dat heb ik gedaan. ( in het DWT bestand)
in de pagina's die uit dat sjabloon komen daarin kan ik alleen de teksten plaatsen verder niets.
moet ik in sjabloon (dwt bestand) daarin het CSS bestand maken die exporteren en die gebruiken bij alle andere pagina's.
die moet ik zo kunnen inlezen als het goed is. ( mooi van CSS)

klopt het tot nu toe?

ik zou je graag mijn sjabloon en mijn daka-general willen sturen.
hoe kan ik dat doen?
hoe krijg ik dat genaral CSS bestand nu gevult met de juiste inhoud zonder alles weer opnieuw in te voeren?
 
O ja, Dreamweaver-templates... :eek:
Ik doe het altijd recht voor z'n raap met broncode in Kladblok, en uploaden met FileZilla, dan heb je van die dwt-dingen geen last (of gemak, hoe je het wilt zien). :D

Het komt er denk ik op neer:
  • Je maakt een mooi daka-general.css stylesheet. Dat moet in een mapje "stylesheets" komen, bv.: home.kpn.nl/dakab000/stylesheets/daka-general.css.
  • Je maakt het spry-menu gebruiksklaar voor de wisseldienst. Die wordt weer opgeslagen in z'n mapje (ik noem de nieuwe even daka-spry.css): home.kpn.nl/dakab000/SpryAssets/daka-spry.css
/Je kunt ze ook alle twee in hetzelfde mapje "stylesheets" stoppen; dat maakt niet uit, als de verwijzingen maar kloppen./
In het not-editable gedeelte van je pagina (= in het dwt-bestand) moeten in de <head> de goede links naar deze twee stylesheets komen, bv.:
HTML:
...
<!-- InstanceEndEditable -->
<link rel="shortcut icon" href="http://home.kpn.nl/dakab000/images/dakalogo.ico" /> 

<link href="http://home.kpn.nl/dakab000/stylesheets/daka-general.css" 
    rel="stylesheet" type="text/css" />
<link href="http://home.kpn.nl/dakab000/stylesheets/daka-spry.css" 
    rel="stylesheet" type="text/css" />

<script src="http://home.kpn.nl/dakab000/SpryAssets/SpryMenuBar.js" 
    type="text/javascript"></script>
<!-- InstanceBeginEditable name="head" -->

<!-- InstanceEndEditable -->
</head>
Verder moet nu ook de <body> tag in een wijzigbaar gedeelte komen, anders kan aan de pagina's niet de goede class toegewezen worden. En ook de logo-bron moet aangepast kunnen worden. Dan wordt het dus:
...
HTML:
<!-- InstanceEndEditable -->
</head>
<!-- InstanceBeginEditable name="bodyclass" -->
<body class="daka">
<!-- InstanceEndEditable -->
    <div id="wrapper">
        <div id="header">
            <!-- InstanceBeginEditable name="logo" -->
            <img src="http://home.kpn.nl/dakab000/Images/tradinglogowit.png" 
                width="180" height="75" alt="tradinglogo" />
            <!-- InstanceEndEditable -->
        </div>
        <div id="menu">
        .... enz.
Of zoiets ... pfff!

In elk geval, ik heb nog wat geknutseld.
In alle twee zitten rood en blauw ingebakken.
Alleen de body-tag is dus verschillend, de rest wordt "vanzelf" door de css geregeld.
Hokus-de-pokus! :D

O nee: alleen het logo wordt niet door de css geregeld, dat staat als voorgrond-img in de html, en daar kan de css niet zo gauw bij. Maar als je de verkeerde kleur logo in een pagina inplakt, zie je dat vanzelf.

Met vriendelijke groet,
CSShunter
 
het werkt nu goed alleen het logo wisseld niet mee.
komt dat omdat het <div id="wrapper"> een fout geeft.
als ik met de muis op deze regel druk dan zie ik onder in de balk dit <?> ongeldige opmaakcode gemarkeerd als ongeldig omdat het is een overlappende of niet-afgesloten tag.
 
het werkt nu goed alleen het logo wisselt niet mee.
komt dat omdat het <div id="wrapper"> een fout geeft?
  • Nee, het logo wisselt niet mee omdat dat geen achtergrond-img is die door de css bediend kan worden. Het logo staat in de html van elke pagina zelf, en dus moet je op de pagina zelf het goede logo er in zetten.
  • Het foutje van de <div id="wrapper"> is, dat er helemaal op het eind (vlak voor de </body>) nog een </div> bij gezet moet worden. Want omdat er nu een <div id="wrapper"> bij gekomen is meteen na de <body>-tag, moet er vlak voor het eind van de body ook een afsluitende div voor die #wrapper in komen: wat geopend wordt, moet gesloten worden!
Met vriendelijke groet,
CSShunter

_____
PS:
In je spry-css zitten nog een paar links naar een lokaal bestand:
Code:
ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
{
    background-image: url(file:///C|/Users/davidqosmio/AppData/Local/Microsoft/Windows/Temporary%20Internet%20Files/Content.IE5/I4NK36KO/SpryMenuBarRight.gif);
    ... enz.
en
ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
{
    background-image: url(file:///C|/Users/davidqosmio/AppData/Local/Microsoft/Windows/Temporary%20Internet%20Files/Content.IE5/I4NK36KO/SpryMenuBarRightHover.gif);
    ... enz.
Die kunnen naar je server verwijzen:
Code:
ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
{
    background-image: url(http://home.kpn.nl/dakab000/SpryAssets/SpryMenuBarRight.gif);
    ... enz.
En de andere ook zo.
 
Laatst bewerkt:
nou je moet maar eens kijken.
de wrapper fout is eruit maar wat ik nu heb veroorzaakt.
geen idee. maar het ziet er niet goed uit.

maar ik kan ook geen fout meer vinden.
de menu balk doet het niet meer en ik denk dat er met de index pagina ook iets niet goed meer is.
 
Hoi David,
Er zit een </div> te veel vlak voor de <div id="content">. Er staan er daar twee, terwijl er maar één hoort te staan.
  • Daardoor wordt in feite de #wrapper afgesloten, die alles in de breedte in het gareel houdt. Dan wordt waar de #content begint de volle breedte benut, en dan blijft ook de linker blauwe balk niet meer intact.
Deze afsluitende </div> moet helemaal op het eind komen, vlak voor het javascript. Er staat daar één <div>, en daar moeten het er twee zijn. - Zowel de #content als de #wrapper (waar alles in zit) moet daar namelijk afgesloten worden.

(Het aantal <div>'s en </div>'s klopte wel, daarom geeft de html-validator geen alarm. Dat ze op een verkeerde plaats staan, kan de html-validator niet zien!)
Het menu zal ik later nog eens naar kijken.

Met vriendelijke groet,
CSShunter
 
Het vervolg!
Ah, ik zie dat je de dubbele </div> er al uit gehaald hebt. We zijn er bijna. :)

Opm.1
Op dit moment mist nog de tweede </div> op het eind. Dus:
HTML:
<!-- InstanceEndEditable --> </div>
<script type="text/javascript">
... enz.
moet worden:
HTML:
<!-- InstanceEndEditable --> </div></div>
<script type="text/javascript">
... enz.

Opm.2
In de <head> staat:
HTML:
<style type="text/css">
@import url("http://home.kpn.nl/dakab000/SpryAssets/daka-spry.css");
</style>
Die regels kunnen er uit, want eerder wordt het stylesheet daka-spry.css op een andere manier ook al aangeroepen: het hoeft niet dubbel.

Opm.3
Maar het bovenstaande is niet de oorzaak dat de menukleuren bij een hover niet goed meer werken. Na enig speurwerk (de stylesheets zijn goed, de menucode is ook goed!) kwam ik er achter dat in de <head> het regeltje:
HTML:
<script src="http://home.kpn.nl/dakab000/SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
ontbreekt. Dat moet er nog bij.
  • Dit script maakt dat bij een hover extra classes aan de links wordt gekoppeld. Die extra classes staan keurig in de css, en dan werkt het. Als het javascript er niet is, worden die speciale hover-classes niet ingevoegd op het moment van hover, en dan werkt het niet!
  • Deze diagnose kan je stellen met Firebug (aanrader!), want daarmee kan je precies zien welke styles worden toegepast op het moment van een hover. Met de vergelijking van mijn wel werkende testpagina en de huidige pagina kwam het verschil er uit. Zoiets verzin je anders niet!
Succes!
Met vriendelijke groet,
CSShunter
 
Laatst bewerkt:
gelukkig het werkt weer.
zoek dit maar eens na.
als je niet goed weet waar te zoeken, dan vind je het nooit.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan