jeud84
Messages postés6Date d'inscriptionlundi 23 février 2009StatutMembreDernière intervention30 mars 2009
-
26 mars 2009 à 14:21
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 2011
-
30 mars 2009 à 17:52
Bonjour,
je cherche à effectuer une redimensionnement inversement proportionnel, j'explique : dans le cas d'une fenêtre séparée en 2 par une barre de séparation, je veux que lorsque je déplace cette barre vers le haut ou vers le bas, les deux éléments suivent en dimensions.
La structure est la suivante :
<hr class="separateur">
Si je fais un mousedown sur le <hr> et que je monte ou que je descende, je veux que les div form1 et form2 suivent en dimension (hauteur dans ce cas).
première technique :
- je calcule et de réatribue les dimensions du form2 en fonction de celle du form1. ça fonctionne mais visiuellement c'est horrible. En gros ça saccade.
deuxième technique:
-j'utilise resizable de jquery, le problème est que je n'arrive pas à inverser l'effet du resize sur le form2
donc si je reduis form1, je réduis form2 et dans mon cas, j'ai besoin d'un redimensionnement inversement proportionnel, soit si je reduis form1, form2 grandi pour combler la place.
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 26 mars 2009 à 14:35
Bonjour,
met des frame... ce sera géré automatiquement par les
navigateurs, sans bugs, de manière parfaitement correcte.
Cordialement [mon Site] [M'écrire] Bul
jeud84
Messages postés6Date d'inscriptionlundi 23 février 2009StatutMembreDernière intervention30 mars 2009 26 mars 2009 à 15:21
Oui,
merci mais les frames sont la solution actuellement utilisées sur mon projet et pour sa ré-écriture il est clairement énoncé de ne plus utiliser cette technique.
Si tu as une autre idée, ...je suis toujours à la recherche.
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 26 mars 2009 à 19:19
Bonjour à vous,
Pourquoi faire simple quand on peut se
compliquer la vie ?
Question :
La barrre de séparation est gérée
comment, DIV déplaçable... ou que sais je, rien d'ailleurs.
;O)
Vous n’avez pas trouvé la réponse que vous recherchez ?
jeud84
Messages postés6Date d'inscriptionlundi 23 février 2009StatutMembreDernière intervention30 mars 2009 27 mars 2009 à 09:53
Oui la barre de séparation est gérée comme une div déplaçable. Mais en réalité c'est son le container mitoyen qui est redimensionner. Cette barre ne fait que suivre le container.
Voici mon code jquery + javascript : ceci fonctionne mais produit un effect de saccade au redimentionnement
<html>
<head>
<title>Ecran slide bis</title>
<script type="text/javascript">
$(document).ready(function(){
//Dimension utilisable de l'ecran
//hauteur utilisable,largeur utilisable
var hauteur=screen.availHeight;
var largeur=screen.availWidth;
//hauteur utilisable,largeur du div listeZone
var hauteurListeZone=$('#listZone').height();
var largeurListeZone=$('#listZone').width();
//hauteur de la barre
var barreListe=$('#barreListe').height();
var barreListe=$('#barreListe').width();
//hauteur du container
var mainContainer=$('#mainContainer').height();
var mainContainer=$('#mainContainer').width();
// alert('dimension utilisable x : ' + largeur + ' y : '+ hauteur
// + ' dimension div x : ' + largeurListeZone + ' y : '+ hauteurListeZone );
// Lorsqu'on déplace la barre de separation verticalement, les dimensions des sous containers formulaire et liste suivent.
$("#listZone").resizable();
var hauteurListeZone=$('#listZone').height();
var largeurListeZone=$('#listZone').width();
});
function register_position(){
taille_x = 0;
taille_y = 0;
document.onmousemove = position;
}
function position(evt){
if(!evt) evt = window.event;
taille_x = $('#listZone').width();//evt.clientX;
taille_y = $('#listZone').height();//evt.clientY;
//hauteur de la barre
var barreListe_y=$('#barreListe').height();
var barreListe_x=$('#barreListe').width();
//hauteur du container
var mainContainer_y=$('#mainContainer').height();
var mainContainer_x=$('#mainContainer').width();
//dimensions calculées du form
var form_y =mainContainer_y-barreListe_y-taille_y;
var form_x =taille_x;
//redimensionnement du div inférieur
$('#formContainer').width(form_x);
$('#formContainer').height(form_y);
document.getElementById("coordonnees").innerHTML = "X : "+taille_x+" ; Y : "+taille_y;
document.getElementById("coordonnees").innerHTML = "X : "+taille_x+" ; Y : "+taille_y;
}
</script>
***********Dans le cas d'un script jquery, issue gracieusement dans un membre d'un autre forum
mais celui-ci produit également des exections de redimensionnement quazi exact
$(document).ready(function(){
$("#listZone").resizable({
stop: function(event, ui) {
/*
ui.helper - a jQuery object containing the helper element
ui.originalPosition - {top, left} before resizing started
ui.originalSize - {width, height} before resizing started
ui.position - {top, left} current position
ui.size - {width, height} current size
*/
var offsetHeight = ui.size.height - ui.originalSize.height; var newHeight $("#formContainer").height() - offsetHeight; // - * - +
$("#formContainer").css("height", newHeight);
}
});
$("#formContainer").resizable({
stop: function(event, ui) {
/*
ui.helper - a jQuery object containing the helper element
ui.originalPosition - {top, left} before resizing started
ui.originalSize - {width, height} before resizing started
ui.position - {top, left} current position
ui.size - {width, height} current size
*/
var offsetHeight = ui.size.height - ui.originalSize.height; var newHeight $("#listZone").height() - offsetHeight; // - * - +
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 27 mars 2009 à 12:54
comme pressenti !
je me cite ?
ça va être un monstre probablement...
cerne précisément où est ton souci et met nous l'essentiel
citerais-je petoleTeam ?
Pourquoi faire simple quand on peut se compliquer la vie ?
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 27 mars 2009 à 13:10
Bonjour,
<table bgcolor="#e6effe" border="0" cellpadding="5" cellspacing="0" width="100%">----, première technique :
- je calcule et de
réatribue les dimensions du form2 en fonction de celle du form1. ça fonctionne
mais visiuellement c'est horrible. En gros ça
saccade.</td>
</td></tr></tbody></table>ou encore
<table bgcolor="#e6effe" border="0" cellpadding="5" cellspacing="0" width="100%">----, Voici mon code jquery + javascript : ceci
fonctionne mais produit un effect de saccade au
redimentionnement</td>
</td></tr></tbody></table>dans
les deux cas cela saccade et c'est normal attendu que la prise en compte des événements ne
ce fait pas comme on le veut, plus ou moins de retard ou attente d'une pause...
donc peut être revenir à un code plus light en mettant un setTimeout pour la prise en compte du déplacement
par exemple.
jeud84
Messages postés6Date d'inscriptionlundi 23 février 2009StatutMembreDernière intervention30 mars 2009 30 mars 2009 à 11:56
Bonjour.
Voici 2 solutions, la première basée sur jquery, merci à un membre d'un autre forum pour son aide: l'effet attendu est bien présent. Cependant il reste un effet de redimensionnement non instantané. L'ajout d'une simple css permet de detourner ce petit défaut.
La seconde est une association de jquery et de simple code javascript. (voir plus bas)
Rappel du besoin exprimer : reproduire le redimensionnement connu au sein des frames.
$("#results").html(texte);
//fin pour test
}
});
});
Ci-joint : le code qui permet le même effet avec cette fois ci un redimensionnement instanté.
$(document).ready(function(){
//cache le div liste
$('.ptogtitle').click( function()
{$('#listZone').toggle();
}
);
//Dimension utilisable de l'ecran
//hauteur utilisable,largeur utilisable
var hauteur=screen.availHeight;
//hauteur utilisable,largeur du div listeZone
var hauteurListeZone=$('#listZone').height();
//hauteur de la barre
var barreListe=$('#barreListe').height();
//hauteur du container
var mainContainer=$('#mainContainer').height();
// alert('dimension utilisable x : ' + largeur + ' y : '+ hauteur
// + ' dimension div x : ' + largeurListeZone + ' y : '+ hauteurListeZone );
// Lorsqu'on déplace la barre de separation verticalement, les dimensions des sous containers formulaire et liste suivent.
$("#listZone").resizable();
var hauteurListeZone=$('#listZone').height();
});
function register_position(){taille_x 0; taille_y 0; document.onmousemove = position;}
function position(evt){
if(!evt) evt = window.event;
listZone_y = $('#listZone').height();//evt.clientY;
//hauteur de la barre
var barreListe_y=$('#barreListe').height();
//hauteur du container
var mainContainer_y=$('#mainContainer').height();
//dimensions calculées du form
var form_y =mainContainer_y-barreListe_y-listZone_y;
//redimensionnement du div inférieur
$('#formContainer').height(form_y);
}