webForumDet fria alternativet

Placera meny rätt

HTML & CSSur HTML, XHTML & CSS

7 svar · 487 visningar · startad av asp

aspMedlem sedan aug. 2002733 inlägg
Frågan#1

Hej.

Jag har ett litet problem. Det är så jag jag placerar en dropdown meny med hjälp av position absolute. Men eftersom sidan är centrerad så hamnar menyn fel beroende på vilken skärmupplösning man använder.

Har testat med position relative men då flyttas massa text ner och sådant, det vill jag helst inte.

Finns det något sätt att göra så menyn alltid hamnar under själva länken fast ovanför allt annat? =)

Menyn:

<div style="display: none; position: absolute; top: 5px; left: 5px;" id="meny" onclick="menu('none');" onmouseover="menu('block');" onmouseout="menu('none');">
Start<br>
Spel<br>
Logga ut<br>
</div>

JavaScript:

	function menu(s) {
		document.getElementById('meny').style.display=s;
	}

Länken:

<a href="omoss.html" target="ram" class="meny" onclick="wee(this.id); menu('none');" id="1" onmouseover="menu('block');">OM OSS</a>

Tack på förhand!

Dev Nulls avatarDev NullMedlem sedan mars 200650 inlägg
#2

Kanhända är jag ute o cyklar, men om du först tar reda på skärmupplösningen och sen använder den i dina skript? Blir ju liiiite klumpigare, men attans så säkert.

aspMedlem sedan aug. 2002733 inlägg
#3

Kod för att ta reda på skärmupplösning tack. =) Men det är ju inte säkert det fungerar faktiskt, för om man har favoriter-sidor till vänster blir ju själva ytan för att visa hemsidan mindre men skärmupplösningen densamma.

Kan man få bredden på själva fönstret som sidan visas i eller finns det smidigare sätt?

Dev Nulls avatarDev NullMedlem sedan mars 200650 inlägg
#4
<?php
if (isset($_GET['width']) AND isset($_GET['height'])) {
  // output the geometry variables
#  echo "Screen width is: ". $_GET['width'] ."<br />\n";
#  echo "Screen height is: ". $_GET['height'] ."<br />\n";

$width = $_GET['width'];
$height = $_GET['height'];

if ($width > 800)
{echo "Screen width is very big!";}

} else {
  // pass the geometry variables
  // (preserve the original query string
  //  -- post variables will need to handled differently)
 
  echo "<script language='javascript'>\n";
  echo "  location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}"
           . "&width=\" + screen.width + \"&height=\" + screen.height;\n";
  echo "</script>\n";
  exit();
}
?>

Det är ett javaskript som skickar över info till php.

hypatias avatarhypatiaMedlem sedan feb. 20016 388 inlägg
#5

Det låter som att din meny-div placeras relativt skärmbredden.
Jag skulle ha lagt meny-diven inuti en div som omsluter hela den centrerade sidan (container, wrapper osv.). Om du har position: relative på den diven så placeras en absolutpositionerad div inuti den, relativt den diven och inte skärmbredden.

aspMedlem sedan aug. 2002733 inlägg
#6

hypatia >> använder jag relative så hamnar den inte ovanför allt utan den bara gör så att allt förflyttar sig nedåt när menyn kommer fram. Går det att lösa på något sätt?

hypatias avatarhypatiaMedlem sedan feb. 20016 388 inlägg
#7

Jag menade inte att du ska sätta position: relative på meny-diven, utan på den div som omsluter sidan, t.ex. wrapper, container eller vad du kallar den. :)
Meny-diven ska vara absolutpositionerad, men ligga inuti den div som du sätter position: relative på. :)

T.ex. så här:

<div id="container">
<div id="meny"> Menyn </div>

Resten av sidan
</div>
#container {position: relative; med mera}
#meny {position: absolute; osv. }
aspMedlem sedan aug. 2002733 inlägg
#8

Ah, smart. Men jag löste detta med en frame istället. :)

142 ms totalt · 3 externa anrop · v20260731065814-full.58439ac5
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)