Archief - CSS: dropdown menu klein vraagje

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

den Acid Burn

Legacy Member
waar zitten die css specialisten hier?

ik heb een simpele html file gemaakt op een drop down menu te testen.
het drop down menu werkt ondertussen vrij aardig maar ik heb nog 2 kleine vraagjes:

1: hoe kan je ervoor zorgen dat bij een hover de volledige achtergrond van een menuitem (li) rood wordt en niet enkel het link gedeelte?

2: kan er iemand een schaduw effect verkrijgen op de drop down box (liefst zonder een image te gebruiken)

hierbij de simpele code (niet op het stukje javascript letten, dat is een workaround voor internet explorer...):

PHP:
<html>
<head>
<style>

ul {
  padding: 0;
  margin: 0;
  list-style: none;
}

li {
  float: left;
  position: relative;
  width: 10em;
} 

li ul {
  display: none;
  position: absolute;
  top: 1em;
  left: 0;
  background-color: white;
} 

li:hover ul, li.over ul{ 
  display: block;
} 

#content {
   clear: left;
} 

a:link {
  color: red;
  text-decoration: none;
}

a:visited {
   color: red;
   text-decoration: none;
}

a:active {
   color: red;
   text-decoration: none;
}

a:hover {
   color: white;
   background-color: red;
   text-decoration: none;
}

.borderfull {
  border: 1px solid black;
}

.borderpartly {
  border-left: 1px solid black; 
  border-right: 1px solid black; 
  border-bottom: 1px solid black;
}

</style>

<script type="text/javascript">
startList = function() {
   if (document.all&&document.getElementById) {
      navRoot = document.getElementById("nav");
      for (i=0; i<navRoot.childNodes.length; i++) {
         node = navRoot.childNodes[i];
         if (node.nodeName=="LI") {
            node.onmouseover=function() {
               this.className+=" over";
            }
            node.onmouseout=function() {
               this.className=this.className.replace(" over", "");
            }
         }
      }
   }
}
window.onload=startList;
</script> 

<body>
<ul id="nav">
  <li><div align="center">Item 1</div>
    <ul>
      <li class="borderfull"><a href="">Sub Item 1.1</a></li>
      <li class="borderpartly"><a href="">Sub Item 1.2</a></li>
      <li class="borderpartly"><a href="">Sub Item 1.3</a></li>
      <li class="borderpartly"><a href="">Sub Item 1.4</a></li>
   </ul>
  </li>

  <li><div align="center">Item 2</div>
    <ul>
      <li class="borderfull"><a href="">Sub Item 2.1</a></li>
      <li class="borderpartly"><a href="">Sub Item 2.2</a></li>
      <li class="borderpartly"><a href="">Sub Item 2.3</a></li>
    </ul>
  </li>

  <li><div align="center">Item 3</div>
    <ul>
      <li class="borderfull"><a href="">Sub Item 3.1</a></li>
      <li class="borderpartly"><a href="">Sub Item 3.2</a></li>
      <li class="borderpartly"><a href="">Sub Item 3.3</a></li>
      <li class="borderpartly"><a href="">Sub Item 3.4</a></li>
      <li class="borderpartly"><a href="">Sub Item 3.5</a></li>
    </ul>
  </li>
</ul>

<p>&nbsp;</p>

<div id="content">
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse egestas ultricies pede. Phasellus suscipit blandit risus. Praesent nonummy. In erat. Duis nibh pede, accumsan eu, pulvinar et, volutpat vel, elit. Curabitur nec dui sed nunc congue tempus. Nulla ac dui ac libero fringilla nonummy. Maecenas ullamcorper sodales risus. Vivamus pretium dolor. Proin eu turpis. Phasellus ut mauris non nulla mattis luctus. Nunc porttitor dapibus sapien. In malesuada fermentum metus. Nulla egestas, tellus a vestibulum pharetra, nunc purus auctor lacus, ut semper purus ipsum eu velit. Praesent dui. Nulla accumsan turpis at erat.</p>
</div> 

</body>
</html>

Obliv`

Legacy Member
kheb uw code niet helemaal gelezen, maar dit zou kunnen helpen

a
{
display: block;
}

den Acid Burn

Legacy Member
thx Obliv`, die a { display:block; } doet inderdaad de truk.

enige uitleg wat die display:block ongeveer inhoudt?
allee tis te zeggen, van deze definitie:

block The element will be displayed as a block-level element, with a line break before and after the element

word ik niet bepaald wijzer, waarom gaat ie plots de hele <li> rood kleuren door display:block mee te geven?

Quilombo

Legacy Member
block is gewoon het tegenovergesteld van inline

block elementen (standaard): p, ul, ol, ... gewoon alles dat ge nie middenin een zin kunt plaatsen (+/-)
inline: img, a, ...


block elementen kunt ge ook een width meegeven (en da doet ge meestal best ook) en die dan laten floaten

Xavez

Legacy Member
Omdat uw principe gebaseerd is op het weergeven en verbergen. Verbergen wordt gedaan door display: none; (zoals in je CSS code staat). Het element daarna terug weergeven gaat dan via display: block;. In dit specifieke geval is display: block; dus het tegenovergestelde van display: none;

Een tip: leer eerst een beetje CSS voor je klakkeloos kopieert :).

den Acid Burn

Legacy Member
ik heb nog een vraagje, vrienden van de css

als ik dit stukje aanpas:

PHP:
li ul {
  display: none;
  position: absolute;
  top: 25px;   <-------
  left: 0;
  background-color: white;
}

zodat het menu een deel lager verschijnt dan het <li> element, dan kan ik niet met de muis in het dropdown menu navigeren, want zodra ik met de cursor het <li> element verlaat springt het dropdown menu weg natuurlijk.

is hier een workaround voor??

den Acid Burn

Legacy Member
het vorige is opgelost, 1 bijkomend vraagje nog:

hoe kan je wat ruimte laten tussen elk <li> element?
alle text staat nu praktisch tegen de top en bottom border geplakt, ik zou er graag toch een pixel of 3 ruimte tussen krijgen

den Acid Burn

Legacy Member
ok ik heb ne workaround gedaan om dat allemaal te realiseren.
de implementatie op de eigenlijke site is ook goed gelukt.

mss niet de properste oplossing maar de site ziet er 100% hetzelfde uit op firefox, opera en internet explorer 6/7 dus who cares!

KoenDK

Legacy Member
den Acid Burn zei:
het vorige is opgelost, 1 bijkomend vraagje nog:

hoe kan je wat ruimte laten tussen elk <li> element?
alle text staat nu praktisch tegen de top en bottom border geplakt, ik zou er graag toch een pixel of 3 ruimte tussen krijgen

margin-top:3px;

definiëren bij uw li element

brechtvm

Legacy Member
ff vraagje :

hoe zorg je ervoor dat bij dit menu, enkel de menu-bar een achtergrond krijgt...
(image)

en de lists (dropdown) een grijze achtergrond hebbe...

Ul li > wordt direct toegepast op alles
#nav li > idem

:sad: ik ben ten einde raad (ik zit hier nu al een tijdje op te zoeken)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan