X en Y binnen een div

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Lord Gaga

Lord Gaga

27/09/2010 17:46:13
Quote Anchor link
Hallo,

Ik heb een div van 844 x 899, en binnen die div moeten de leden een plakbriefje kunnen plaatsen. Als ik in de database dus bij X invul: 10 en bij Y ook 0, dan wil ik dus graag dat dat plakbriefje 10 pixels verwijderd staat van de linksbovenhoek van die div, maar hoe moet dat?

Alvast bedankt
 
PHP hulp

PHP hulp

20/04/2024 15:35:59
 
Karizma Yusuf

Karizma Yusuf

27/09/2010 17:48:56
Quote Anchor link
gebruik margin-left:10 margin-top:10 in je css
of padding als je rechtstreeks in de div bewerkt
 
Lord Gaga

Lord Gaga

27/09/2010 17:51:11
Quote Anchor link
Denk niet dat dat het goede resultaat geeft van wat ik bedoel,
Ik wil graag een soort habbo profiel, daar kun je widgets en plakbriefjes verslepen binnen een bepaald gebied op je profiel. Alleen kan ik niks bruikbaars vinden..
 
Karizma Yusuf

Karizma Yusuf

27/09/2010 18:05:16
Quote Anchor link
bedoel je zoiets.. anders kan ik niet veel helpen heb niet veel verstand van javascript :/
Quote:
<html>
<style>
div#wrapper{
position:relative;
top:0px;
left:10px;
width:844px;
height:899px;
border:1px solid #000;
}
div#plakbrief{
position:relative;
float:left;
margin-top:10px;
margin-left:10px;
width:100px;
height:100px;
border:1px dashed #000;
}
</style>

<div id="wrapper">
<div id="plakbrief">test</div>
<div id="plakbrief">test</div>
</div>
</html>
[/qoute]
Gewijzigd op 27/09/2010 18:06:51 door Karizma Yusuf
 
Lord Gaga

Lord Gaga

27/09/2010 18:09:59
Quote Anchor link
dat is css, dus nee, dat bedoel ik niet :P
uhm.. ik probeer het uit te leggen:

je hebt een profiel, en op dat profiel kun je 'items' verslepen. De X en Y as moeten dan in de database worden opgeslagen, maar als je de X en Y as opslaat vanaf de rand van het scherm, dan staat dat item niet op alle computers op de goede plek.

Ik heb dus 1 grote div en binnen die div moet je items verslepen, de X en Y as van die items moeten dus niet vanaf je computerscherm rand worden berekend maar vanaf de rand van de div


Edit: Ik heb even een voorbeeldje gemaakt:
http://easy-upload.nl/f/K9ftPpso

Het blauwe is de achtergrond van de site, het witte kader is de pagina, het rode gedeelte is de div, en het groene is het item. Nu wil ik dus dat de afstand tussen de rand van de div en de rand van het item word gemeten en word opgeslagen in de database, en dat als je de boel dan opslaat, dat item bij ALLE computers precies zoveel pixels van de rand van de div afstaat.
Gewijzigd op 28/09/2010 15:51:38 door Lord Gaga
 
Lord Gaga

Lord Gaga

29/09/2010 17:37:17
Quote Anchor link
BUMP

Als je in css 'left' en 'top' gebruikt dan is dat het aantal pixels vanaf de rand van je computer, kun je zoiets ook doen maar dan het aantal pixels vanaf de tabel waar de div in staat? (position moet alleen wel 'absolute' zijn!)
Gewijzigd op 29/09/2010 17:38:41 door Lord Gaga
 
The Force

The Force

29/09/2010 18:50:20
Quote Anchor link
Zie http://www.barelyfitz.com/screencast/html-training/css/positioning/, tabblad 4. Je moet met javascript de div's draggable gaan maken. Dat kan je zelf doen, maar dat kost tijd, werkt vaak niet in alle browsers en is later moeilijk aan te passen.

Dus:
1) Download jQuery (www.jquery.com) en jQuery UI (http://jqueryui.com/download).
2) Verwijs naar de code in je bestand.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<script src="js/jquery-1.4.2.js" type="text/javascript"></script>
<script src="js/jquery-ui.js" type="text/javascript"></script>


3) Doe via jQuery een Ajax request waarin je een PHP bestand aanroept. Deze geeft met json_encode() een array terug met op welke positie welke divjes staan.
4) Loop door de array. Maak voor elk element een divje aan. De x en de y waarde set je via jQuery door de CSS aan te passen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$(itemvanarray).css({ top: itemvanarray.y + "px", left: itemvanarray.x + "px"});


5) Maak de divjes draggable:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$("#draggable").draggable(); //Zie http://docs.jquery.com/UI/Draggable


Nu of:
6a) Roep een functie aan wanneer iemand stopt met slepen. Elke keer als iemand iets versleept heeft doe je dan een ajax request:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
//Zie http://docs.jquery.com/UI/Draggable
$( ".selector" ).draggable({
   stop: function(event, ui) {
      //Doe hier een ajax request waarin je de nieuwe positie van het divje doorgeeft.
      //Met ui.position kan je de positie van het element opvragen (top, left).
 }
});


Of:
6b) Maak een knop 'sla op'.
7b) Vang het click event af:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$('#slaopknop').click(function() {
    //Zet hier code van stap 8 en 9 in.
});


8b) Loop door alle divjes in je hoofddiv. Voor elk divje vraag je de top/left op. Zet het id van de div, de x (left) en de y (top), in een array.
9b) Doe een ajax call naar een PHP script en geef de array mee. Dit script insert/update vervolgens rijen in de database met de posities van de verschillende divjes.

Tot slot
10) roep "Eureka!"

Je kunt nu de divjes inladen vanuit de database op de goede positie. Daarnaast kan de gebruiker de divjes verslepen waarna de nieuwe coordinaten automatisch in de database gezet worden!
Gewijzigd op 29/09/2010 19:10:53 door The Force
 
Lord Gaga

Lord Gaga

29/09/2010 19:40:21
Quote Anchor link
Bedankt, gelijk even proberen :-) :-P

JQuery lukt me niet echt, dus ik heb gedaan wat er in die link stond, de posities van de divs kloppen nu (helemaal perfect), ik moet nu alleen nog dat de X en Y as van de div in de div staan, ik heb nu echt van alles gezocht en geprobeerd maar het lukt gewoon niet
Gewijzigd op 29/09/2010 20:55:24 door Lord Gaga
 
The Force

The Force

29/09/2010 21:16:22
Quote Anchor link
Ik snap je probleem niet helemaal. Kan je de relevante code die je tot nu toe hebt plaatsen?
 
Lord Gaga

Lord Gaga

29/09/2010 21:22:49
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<div style="left: 10px; top: 10px;">
// hier moet dus X: 10 en Y:10 staan, gewoon de left en top weergeven dus //
</div>
 
The Force

The Force

29/09/2010 21:49:17
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<div style="left: 10px; top: 10px;">
<span class="coordinates">X: 10, Y:10</span>
</div>


Dan met css opmaken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
.coordinates {
color: green;
}


Bijvoorbeeld.
 
Lord Gaga

Lord Gaga

29/09/2010 22:19:01
Quote Anchor link
Is niet helemaal wat ik bedoel, die 10 moet gewoon de X en Y as weergeven, als de left: 10 is, moet hij 10 weergeven als tekst in de div, als left 25 is, moet hij 25 als tekst in de div weergeven. Als het ware moet de div dus gewoon laten zien wat zijn X en Y coordinaten zijn.
Gewijzigd op 29/09/2010 22:20:38 door Lord Gaga
 
The Force

The Force

29/09/2010 22:34:34
Quote Anchor link
Ik snap je probleem niet helemaal. Als je de x en de y in de style krijgt kan je het toch ook in de div zelf zetten? Iemand anders?
 
Lord Gaga

Lord Gaga

29/09/2010 22:41:41
Quote Anchor link
de div moet zelf(!) weergeven op welke positie hij staat, die positie moet je kunnen opslaan in de database. Dat kan ik er dus niet zelf in zetten.
Gewijzigd op 30/09/2010 16:31:10 door Lord Gaga
 
Lord Gaga

Lord Gaga

01/10/2010 14:14:58
Quote Anchor link
Ik heb het volgende geprobeerd, maar dat werkt ook niet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$select = "SELECT * FROM leden_profiel_items WHERE memberid = '".$memberid_owner."'";  
$query = mysql_query($select)or die(mysql_error());
if (mysql_num_rows($query)==0) {
}
else
{
while($list = mysql_fetch_object($query)) {
$id = $list->id;
$x = $list->x;
$y = $list->y;
$z = $list->z;
$titel = $list->titel;
$tekst = $list->tekst;
$type = $list->type;
$opmaak = $list->opmaak;
?>


<script language="JavaScript">
var div
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo "".$id.""; ?>
= "div
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo "".$id.""; ?>
";

document.getElementById(div
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo "".$id.""; ?>
).innerHTML = "Left = " + document.getElementById(div
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo "".$id.""; ?>
).style.left + " en Top = " + document.getElementById(div
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo "".$id.""; ?>
).style.top;
</script>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if ($type == "widget") {
echo "<div name=\"1\" class=\"".$bewerken."\" style=\"cursor: ".$cursor."; position: absolute; Z-index: ".$z."; left: ".$x."px; top: ".$y."px;\">";
table_head_text("350","".$opmaak."","".$titel."");
echo "<span id=\"div".$id."\"></span>";
table_foot_text("".$opmaak."");
echo "</div>";
}

?>



Zo heeft elke div dus een eigen ID, maar hij geeft de tekst: Left = .., Top = ... niet weer? Wat doe ik fout? of hoe moet het anders?
 
Jel le

Jel le

01/10/2010 15:29:40
Quote Anchor link
Ik was gister ook toevallig met zoiets als dit bezig.

Voor het maken en opslaan van de posities gebruikte ik jQuery.
Ik sla het op als een string met alle instellingen erin, zoals dit:

| top | left | height | width | inhoud
!sep!120?sep?10?sep?100?sep?100?sep?blablabla bladie bladie

vervolgens met php exploden en er dit van maken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
#vak1 {
    border: 1px solid black;
    overflow: hidden;
    position: absolute;
    top: 120px;
    left: 10px;
    height: 100px;
    width: 100px;
}


en dan dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<div id="container">
  <div id="vak2">hhallo</div>
</div>



en oja, de css van #container:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
#container {
    position: relative;
    border: 1px solid black;
    height: 842px;
     width:    595px;
    margin: 30px;
}
 
Lord Gaga

Lord Gaga

01/10/2010 17:23:09
Quote Anchor link
Bedankt, maar ik ben ermee gestopt, het lukt gewoon niet en de hulp ik vraag, krijg ik niet.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.