salut
je veux resizer une frame avec animate.
Oui les frames sont deprecated merci on est au courantmais voilà par exemple, subsonic est développé comme ça et je ne crois pas que son créateur ait envie de tout revoir. Et on a pas tous le temps de forker des projets et de les reprendre à notre compte à chaque fois qu'on a envie d'apporter des petites modifications à un outil complexe et qui marche bien.
ce qu'il faut savoir c'est que jQuery n'agit que sur le CSS, donc animer l'attribut cols de la balise frameset est impossible avec jQuery.animate : http://api.jquery.com/animate/
resizer une frame avec un input ou un lien à l'intérieur est facile et ça marche bien :
au passage le mot clef "javascript:" est superflu mais je trouve ça plus propre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <input type="button" value="resize" onClick="javascript:parent.document.getElementById('parentFramesetID').cols='*,20';"> <a href="#" onclick="javascript:parent.document.getElementById('parentFramesetID').cols='*,20';">resize</a> <input type="button" value="anim" onClick="javascript:$('#parentFramesetID', top.document).attr({'cols':'*,20'});">
par contre pour l'animate c'est plus complexe : il faut faire des fonctions dédiées.
Exemple moche et qui bouffe du CPU mais qui marche :
maintenant si quelqu'un a une solution pour le faire en jquery ou toute autre fonction qui permette un resize smooth et qui ne bouffe pas le CPU je suis preneur !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 <script type="text/javascript"> var x = 20; var min = 20; var max = 200; var delay = 1; var step = 20; function enlargeFrameSet () { x += step; document.getElementById('middleframe').cols = '*,' + x; if (x < max) setTimeout('enlargeFrameSet()', delay); } function shrinkFrameSet () { x -= step; document.getElementById('middleframe').cols = '*,' + x; if (x > min) setTimeout('shrinkFrameSet()', delay); } $(function() { $("#right") .mouseover(function() { enlargeFrameSet(); }) .mouseout(function() { shrinkFrameSet(); }); }); </script> <frameset id="middleframe" cols="*,20" border="1"> <frame id="main" name="main" src="main.html"> <frame id="right" name="right" src="right.html" scrolling="no"> </frameset>![]()
Partager