Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1000 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  1326  1327  1328  ..  1449  1450  1451  1452  1453  1454
Auteur Sujet :

blabla@web

n°2246393
skylight
Made in France.
Posté le 17-12-2014 à 18:42:38  profilanswer
 

Reprise du message précédent :
je fous la merde en disant que ça marche pas sur Safari 8 ?


Message édité par skylight le 17-12-2014 à 18:42:50
mood
Publicité
Posté le 17-12-2014 à 18:42:38  profilanswer
 

n°2246395
Shinuza
This is unexecpected
Posté le 17-12-2014 à 19:27:51  profilanswer
 

Tu fous la merde si tu donnes pas l'erreur que t'as :o


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°2246396
tomsoft
Posté le 17-12-2014 à 19:30:21  profilanswer
 
n°2246397
Shinuza
This is unexecpected
Posté le 17-12-2014 à 19:34:37  profilanswer
 

Gatsu: http://www.gv.com/2014/#exits
Du topic blabla
:D


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°2246398
Shinuza
This is unexecpected
Posté le 17-12-2014 à 19:36:48  profilanswer
 


Et la?
 
http://codepen.io/anon/pen/LEZxZB


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°2246400
tomsoft
Posté le 17-12-2014 à 20:17:24  profilanswer
 

c'est bon :jap:

n°2246420
gelatine_v​elue
Posté le 18-12-2014 à 09:15:12  profilanswer
 


 
 
La section #companies laggue grave chez moi quand je passe la souris dessus.

n°2246430
mechkurt
Posté le 18-12-2014 à 10:20:48  profilanswer
 

mechkurt a écrit :

[:halp]  
 
J’essaye de faire une menu responsive avec des images sans déformations, j'ai tenté 2 approches :
 
- 1ère avec des floats, des images redimensionné sur la hauteur (width auto) :
http://codepen.io/anon/pen/jEqgqz?editors=110
Ça marche sur FF et IE, mais la taille des blocs ne s’adapte pas au changement de taille des images à l’intérieur d'eux
Par contre sur chrome, ne connaissant pas la taille des images il fait de la merde avec des blocs de la largeur des border du span...
 
- 2eme avec des table, table-row, table-cell
http://codepen.io/anon/pen/XJdvmo?editors=110
Ça fonctionne mieux mais il me déforme les images, et il ne s’agrandit pas plus que la taille des images...
 
D'autres pistes ou des idées pour corriger celle-ci ?
 
Si la seule manière de faire c'est de passer par du JS, je prends aussi. :- /


Une idée alors de comment je peux fixer la largeur des floats en fonction de la largeur des images pour la solution 1...
 
...ou de conserver la ratio de mon image dans les table-cell pour la solution 2 ?

Message cité 1 fois
Message édité par mechkurt le 18-12-2014 à 10:21:22

---------------
D3
n°2246441
Proov
Art & Science
Posté le 18-12-2014 à 16:03:26  profilanswer
 

Shinuza a écrit :

Tu fous la merde si tu donnes pas l'erreur que t'as :o


 
 :lol:  
 


 
 [:implosion du tibia]  
c'est beau, mais j'aime pas quand le scroll n'est pas fluide :o  
 

mechkurt a écrit :


Une idée alors de comment je peux fixer la largeur des floats en fonction de la largeur des images pour la solution 1...
 
...ou de conserver la ratio de mon image dans les table-cell pour la solution 2 ?


 
c'est le bordel ton truc, j'ai essayé de tout refaire la derniere fois mais j'ai pas eu la patience :D
j'essaierai de m'y repencher.
De manière générale pour éviter la deformation d'une image, tu mets un height:auto quand tu modifies le width (et inversement). Tu peux aussi mettre un max-width:100% pour éviter que ton soit trop pixélisée. Puis pour la centrer, un display:block et margin:0 auto. Sinon display:inline-block et un text-align:center sur le parent. Mais le mieux pour ça comme l'a dit une personne du topic c'est le flex layout. Et chance pour toi, Alsacréation vient de mettre à jour aujourd'hui son article : http://www.alsacreations.com/tuto/ [...] odule.html

n°2246442
mechkurt
Posté le 18-12-2014 à 16:16:26  profilanswer
 

Merki pour le tuto, je sens qu'il y a de la solution potentiel...
 
 
..et dans tous les cas de l'acquisition de connaissance ! ^^


---------------
D3
mood
Publicité
Posté le 18-12-2014 à 16:16:26  profilanswer
 

n°2246448
mechkurt
Posté le 18-12-2014 à 17:17:34  profilanswer
 

Ça morche pô... :- /
 
http://codepen.io/anon/pen/VYjMPz?editors=110
 
J'ai mis le A dans le LI (toujours en table-cell) en display:flex et du coups je voulais que l'image du haut soit "normal" qu'elle occupe sa hauteur dimensionné par sa largeur (width:100%;height:auto;) et celle du bas en flex-grow mais mon span.bot prend pas le flex-grow.
 
Bon en plus la mes images n'ayant pas la même largeur, et les li en table cell ayant eux la même largeur, mes images ont pas la même hauteur, mais bon 1 problème après l'autre ! ^^
 
J'ai découvert la case à cocher de l'autoprefixer donc j'ai put nettoyer un peu ma css.


---------------
D3
n°2246467
pop-pan
yay!
Posté le 18-12-2014 à 19:50:38  profilanswer
 

mechkurt a écrit :

Ça morche pô... :- /
 
http://codepen.io/anon/pen/VYjMPz?editors=110
 
J'ai mis le A dans le LI (toujours en table-cell) en display:flex et du coups je voulais que l'image du haut soit "normal" qu'elle occupe sa hauteur dimensionné par sa largeur (width:100%;height:auto;) et celle du bas en flex-grow mais mon span.bot prend pas le flex-grow.
 
Bon en plus la mes images n'ayant pas la même largeur, et les li en table cell ayant eux la même largeur, mes images ont pas la même hauteur, mais bon 1 problème après l'autre ! ^^
 
J'ai découvert la case à cocher de l'autoprefixer donc j'ai put nettoyer un peu ma css.


 
honnetemment je comprends toujours pas ce que tu essaies de faire.
 
mais je t'ai fait ca :
http://codepen.io/anon/pen/myEqjb


Message édité par pop-pan le 18-12-2014 à 20:47:43

---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2246495
mechkurt
Posté le 19-12-2014 à 10:29:27  profilanswer
 

Merki mais c'est toujours pas ça...
 
J'ai fait une preview :
http://reho.st/preview/self/d9ef63b9052c6075d4fbce3f7a68200cc893f741.jpg
 
En gros le vert est focus et le rose est hover, on gère ça avec des background en noir ou rgba sur le A, je geres en images car je veux que mes marges noire soient proportionnés.
Ce qui pose soucis c'est que je veux que mes images AAAA, BBBB, CCCC aient la même hauteur (bien qu'elle est des largeurs différentes), qu'elle s'adapte en largeur pour occuper environ un tiers de l’écran (je ferais peut être plusieurs ratio en fonction des ratios d’écrans).
Et le partie basse s'adapte pour remplir l'espace restant en hauteur.
 
Je sais pas si je suis clair, ça me semble pas infaisable, d'ailleurs plusieurs de mes codepen y arrive pas trop mal mais comme d'hab c'est la compatibilité des navigateurs qui fait hiech... :- /
 
Au final si le flex ne me sort pas de l'embarras je ferais avec la version table en corrigeant en js les ratios des images pour que ça pousse les span en table-cell...

Message cité 1 fois
Message édité par mechkurt le 19-12-2014 à 10:33:46

---------------
D3
n°2246516
pop-pan
yay!
Posté le 19-12-2014 à 14:27:27  profilanswer
 

mechkurt a écrit :

Merki mais c'est toujours pas ça...
 
J'ai fait une preview :
http://reho.st/preview/self/d9ef63 [...] 93f741.jpg
 
En gros le vert est focus et le rose est hover, on gère ça avec des background en noir ou rgba sur le A, je geres en images car je veux que mes marges noire soient proportionnés.
 
=> les marges de quoi ? quel rapport avec le rgba ? proportionnées par rapport a quoi ? on parle des marges ou des bordures ?
 
Ce qui pose soucis c'est que je veux que mes images AAAA, BBBB, CCCC aient la même hauteur (bien qu'elle est des largeurs différentes),
 
=> ... et la hauteur est calée sur quoi ? la taille de l'ecran ? une valeur random ? faut les centrer top center ou center center ? Si tu connais la hauteur tu balances les images en fond et tu appliques 'background-size:cover' ou 'background-size:contain'
 
 qu'elle s'adapte en largeur pour occuper environ un tiers de l’écran (je ferais peut être plusieurs ratio en fonction des ratios d’écrans).
 
=> tu mets le menu et le main en float:left avec width:33% et 66%
 
Et le partie basse s'adapte pour remplir l'espace restant en hauteur.
 
=> tu mets le fond noir sur le li, et tu met le ul en overflow:hidden, sauf si il y a une raison particulière a la transparence des images, auquel cas tu te fais pas chier et tu mets un :after
 
Je sais pas si je suis clair, ça me semble pas infaisable, d'ailleurs plusieurs de mes codepen y arrive pas trop mal mais comme d'hab c'est la compatibilité des navigateurs qui fait hiech... :- /
 
=> c'est presque clair, mais tu essaies d'appliquer des solutions a un probleme non posé. je sais toujours pas si ce sont vraiment des images que tu va mettre ou si tu propose des images parce que tu n'arrive pas a mettre du texte.
=> quels navigateurs cible ? ie5 ?

 
Au final si le flex ne me sort pas de l'embarras je ferais avec la version table en corrigeant en js les ratios des images pour que ça pousse les span en table-cell...
 
=> ... cf compat navigateurs
 


 
float: left, texte => http://codepen.io/anon/pen/KwMRYr
float:left:img et bordures => http://codepen.io/anon/pen/WbxyxL
flexbox => http://codepen.io/anon/pen/gbMKav


Message édité par pop-pan le 19-12-2014 à 15:14:41

---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2246550
mechkurt
Posté le 19-12-2014 à 16:51:37  profilanswer
 

Citation :

J'ai fait une preview :
http://reho.st/preview/self/d9ef63 [...] 93f741.jpg
 
En gros le vert est focus et le rose est hover, on gère ça avec des background en noir ou rgba sur le A, je geres en images car je veux que mes marges noire soient proportionnés.


 
=> les marges de quoi ? quel rapport avec le rgba ? proportionnées par rapport a quoi ? on parle des marges ou des bordures ?
 
Je parles de l'espace entre mes images, le graphiste a pondu du texte vertical qui sera ingérable en css car dont la largeur / hauteur / spacing varie pour être équilibré.
J'ai d'abord essayé de couper au plus cours de la transparence, mais j'ai vite vu que mes border serait pas proportionné et que le client n'en voudrait pas.
Je parles rgba comme couleur de fond car en fond du site y'a une anim et l'on veut que ça bouge sous le menu.
 

Citation :

Ce qui pose soucis c'est que je veux que mes images AAAA, BBBB, CCCC aient la même hauteur (bien qu'elle est des largeurs différentes),


 
=> ... et la hauteur est calée sur quoi ? la taille de l'ecran ? une valeur random ? faut les centrer top center ou center center ? Si tu connais la hauteur tu balances les images en fond et tu appliques 'background-size:cover' ou 'background-size:contain'
 
Ben justement c'est la que ça coince, ils faut que les images soient toutes callés à la même hauteur (bien qu'ayant des largeurs différentes),  et je ne veux pas cropper les images (comme tu le fait sur tes exemples ci-dessous).
 

Citation :

qu'elle s'adapte en largeur pour occuper environ un tiers de l’écran (je ferais peut être plusieurs ratio en fonction des ratios d’écrans).


 
=> tu mets le menu et le main en float:left avec width:33% et 66%
 
Non mais ça c'est clairement pas le problème, j’arrive bien à le faire (en float, en inline-block, en table-cell, et sans doute maintenant en flex si j'essayais ^^ ).
 

Citation :

Et le partie basse s'adapte pour remplir l'espace restant en hauteur.


 
=> tu mets le fond noir sur le li, et tu met le ul en overflow:hidden, sauf si il y a une raison particulière a la transparence des images, auquel cas tu te fais pas chier et tu mets un :after
 
cf. ci dessus, on a toujours de l'alpha sur les zones (sauf l'image du bas qui repeat, focus et hover alpha, le reste du temps opaque).
 

Citation :

Je sais pas si je suis clair, ça me semble pas infaisable, d'ailleurs plusieurs de mes codepen y arrive pas trop mal mais comme d'hab c'est la compatibilité des navigateurs qui fait hiech... :- /


 
=> c'est presque clair, mais tu essaies d'appliquer des solutions a un probleme non posé. je sais toujours pas si ce sont vraiment des images que tu va mettre ou si tu propose des images parce que tu n'arrive pas a mettre du texte.
=> quels navigateurs cible ? ie5 ?

 
J'esperes avoir clarifié la nécessité des images plus haut.
Pour les navigateurs, plus y'en mieux c'est, mais au pire IE8-9 auront une version degradé, IE7 et - osef...
 

Citation :

Au final si le flex ne me sort pas de l'embarras je ferais avec la version table en corrigeant en js les ratios des images pour que ça pousse les span en table-cell...


 
=> ... cf compat navigateurs
 
http://caniuse.com/ for the win \o/
 
float: left, texte => http://codepen.io/anon/pen/KwMRYr
 
Donc celle la ne colle pas, la typo devra être sous forme d'image, j'aime beaucoup l'idée d'avoir du sémantique, et de gérer au maximum avec :berfore, :after le rendu pour avoir un html propre, mais comme dit plus haute, les contraintes de typo sont à mon avis incompatible avec une mise en page uniquement en css... :- /
 
float:left:img et bordures => http://codepen.io/anon/pen/WbxyxL
 
Ben les images en background-cover, ça vas pas régler mon problème, par contre j'aime beaucoup l'idée de gérer les marges en em pour qu'elle soit aussi responsive, mais après quelque essai je n'arrives pas à reproduire le même effet qu'en intégrant les marges directement à mes images.
 
flexbox => http://codepen.io/anon/pen/gbMKav
 
Autre solution très propre aussi, mais ça ne résout pas mon problème puisque pas de délimitations barre noire entre les éléments du menu et encore une fois de gros doute sur le background cover, j'ai pensé un moment faire des images carré avec (beaucoup ^^) de noir à droite et a gauche, mais en plus d’alourdir les images, ça me ferait des marges noire variable.
 
 :jap:  
Un grand merci en tout cas pour toutes tes solutions, j'ai appris pas mal de trucs et ça à du te prendre du temps !


Message édité par mechkurt le 19-12-2014 à 16:53:21

---------------
D3
n°2246563
pop-pan
yay!
Posté le 19-12-2014 à 17:47:52  profilanswer
 

Bouais non je fais d'autres trucs en //
mais en fait y'a qu'un truc qui reste flou dans ton explication :  le comportement quand l'image est plus large que le 1/6e du menu (meme recalee). ca fait quoi? ca elargi le conteneur ou juste ca stretch de facon degueu?
 
si ca stretch => http://codepen.io/anon/pen/WbxKwv
qi ca stretch pas => http://codepen.io/anon/pen/xbOJVp


---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2246572
Proov
Art & Science
Posté le 19-12-2014 à 18:26:38  profilanswer
 

pop-pan a écrit :

Bouais non je fais d'autres trucs en //
mais en fait y'a qu'un truc qui reste flou dans ton explication :  le comportement quand l'image est plus large que le 1/6e du menu (meme recalee). ca fait quoi? ca elargi le conteneur ou juste ca stretch de facon degueu?
 
si ca stretch => http://codepen.io/anon/pen/WbxKwv
qi ca stretch pas => http://codepen.io/anon/pen/xbOJVp


 
 [:rotflmao] les images

n°2246580
Proov
Art & Science
Posté le 19-12-2014 à 19:25:13  profilanswer
 

Vous partiriez sur quoi pour faire un système de template de site assez simple (5 pages maxi) ?
 
Genre j'ai une petite admin toute simple, avec un champ "uploader un template" (format ZIP ou autre), puis le système reconnaitrait les différentes variables, ajouterai les pages correspondantes, des champs spécifique à ce template pourrait apparaitre dans l'admin etc..
Un peu comme Campaign Monitor en somme :o
 

n°2246591
gatsu35
Blablaté par Harko
Posté le 19-12-2014 à 20:53:01  profilanswer
 

Prend wordpress, t'emmerde pas :o
 
Je suis plus la ======>[]


---------------
Blablaté par Harko
n°2246599
flo850
moi je
Posté le 20-12-2014 à 10:31:26  profilanswer
 

le moteur de template le plus simple possible genre mustache


---------------

n°2246606
flo850
moi je
Posté le 20-12-2014 à 13:43:07  profilanswer
 

Je viens de découvrir resurectio https://chrome.google.com/webstore/ [...] e-ntp-icon pour générer les scripts casperjs

 

Ca simplifie * très légèrement* la mise en place de tests fonctionnels

 

Je vais essayer de le coupler à http://mindthecode.com/recording-a [...] nd-ffmpeg/ pour générer des videos  à de multiples résolutions d'un coup, comme ça mes vidéos de balade dans l'appli pourront être tenues à jour régulièrement

Message cité 1 fois
Message édité par flo850 le 20-12-2014 à 13:43:28

---------------

n°2246607
0x90
Posté le 20-12-2014 à 14:04:49  profilanswer
 

flo850 a écrit :

Je viens de découvrir resurectio https://chrome.google.com/webstore/ [...] e-ntp-icon pour générer les scripts casperjs

 

Ca simplifie * très légèrement* la mise en place de tests fonctionnels

 

Je vais essayer de le coupler à http://mindthecode.com/recording-a [...] nd-ffmpeg/ pour générer des videos  à de multiples résolutions d'un coup, comme ça mes vidéos de balade dans l'appli pourront être tenues à jour régulièrement

 

[:bien]

 

C'est un des petits fantasmes que j'ai jamais eu le temps/occasion d'implémenter, générer les screenshot/video de la doc automatiquement en même temps que les builds.

 

(Avec l'effet de bord sympa, quand tu demandes un screen qui entoure un bouton dans la doc, et que le bouton a disparu de l'interface,
le générateur te prévient que la procédure dans la doc n'est pas faisable)


Message édité par 0x90 le 20-12-2014 à 14:05:46

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°2246609
flo850
moi je
Posté le 20-12-2014 à 15:04:32  profilanswer
 

Code :
  1. /*==============================================================================*/
  2. /* Casper generated Sat Dec 20 2014 13:38:52 GMT+0100 (Paris, Madrid) */
  3. /*==============================================================================*/
  4. casper.options.waitTimeout = 10000;
  5. casper.options.loadImages = true;
  6.  
  7. var x = require('casper').selectXPath;
  8. var mouse = require("mouse" ).create(casper);
  9. var fs = require('fs');
  10.  
  11.  
  12. var wait_before_hover = 2000,
  13.  wait_before_click = 1000,
  14.  frame_duration = 40,
  15.  width= 320,
  16.  height = 568,
  17.  login ='xxxxxxx',
  18.  password ='++++++',
  19.  url = '******',
  20.  frames=1
  21.  ;
  22.  
  23.  
  24. casper.__click__ = casper.click;
  25.  
  26. casper.click = function(el,has_no_delay){
  27.  this.mouse.move(el);
  28.  if(!has_no_delay)
  29.    this.wait(wait_before_hover);
  30.  casper.evaluate(function(el,duration) {
  31.    var offset = $(el).offset();
  32.    window.___cursor___.css({
  33.      top:(offset.top)+'px',
  34.      left:(offset.left)+'px'
  35.    })
  36.    window.___cursor___.show();
  37.    window.___cursor___.fadeOut()
  38.  },el,wait_before_click);
  39.  if(!has_no_delay)
  40.    this.wait(wait_before_click);
  41.  this.__click__(el)
  42. }
  43.  
  44.  
  45. casper.test.begin('Resurrectio test', function (test) {
  46.  var start_time = Date.now(), last_frame_id =0;
  47.  casper.start(url);
  48.  
  49.  casper.viewport(width,height);
  50.  
  51.  casper.userAgent('casper');
  52.  
  53.  setInterval(function () {
  54.    frames = Math.floor(( Date.now() - start_time) / frame_duration)
  55.    casper.capture('frames/out' + (frames) + '.png', {
  56.      top: 0,
  57.      left: 0,
  58.      width: width,
  59.      height: height
  60.    }, {format: "png"});
  61.  }, frame_duration)
  62.  
  63.  
  64.  casper.waitForSelector("input#login",
  65.    function success() {
  66.      casper.evaluate(function() {
  67.        window.___cursor___ = $('<div></div>');
  68.        window.___cursor___.css({
  69.          position: 'absolute',
  70.          'z-index': 5000,
  71.          'background-color': 'rgba(255,255,0,0.5)',
  72.          color: 'black',
  73.          width: '50px',
  74.          height: '50px',
  75.          'border-radius':'50%',
  76.          top:'100px',
  77.          right:'100px'
  78.  
  79.        })
  80.        window.___cursor___.appendTo('body')
  81.        window.___cursor___.hide();
  82.      });
  83.      this.sendKeys("input#login", login);
  84.      this.sendKeys("input#password", password);
  85.  
  86.      test.assertExists("form#login-form button" );
  87.      this.click("form#login-form button",false);
  88.    },
  89.    function fail() {
  90.      test.assertExists("input#login" );
  91.    });
  92.  
  93. /* Là je fais toute ma navigation classique, en appelant waitForSelector /  click */
  94.   /*et à la fin */
  95.  
  96.  casper.run(function () {
  97.    test.done();
  98.    var started = false;
  99.    for( var i = 0 ; i < frames; i ++){
  100. // on bouche les trous pour que ffmpeg ne fasse pas la gueule
  101.    if(fs.exists('frames/out' + (i) + '.png')){
  102.      started = true;
  103.    }else{
  104.      if(started){
  105.        fs.copy('frames/out' + (i-1) + '.png','frames/out' + (i) + '.png')
  106.  
  107.      }
  108.    }
  109.  
  110.    }
  111.    console.log('opcied')
  112.  });


 
 
EDIT : ça marche, a part que casperjs ne permet pas d'utiliser /dev/stdout, obligé de passer par le disque  


avconv -start_number 10 - frames/out%02d.png -c:v libx264 -r 25 -pix_fmt yuv420p out.mp4


me sort une video qui fait en gros 10Ko/s


Message édité par flo850 le 20-12-2014 à 22:36:44

---------------

n°2246631
flo850
moi je
Posté le 21-12-2014 à 10:51:18  profilanswer
 

tu fais chier 0x, j'ai pensé une bonne partie de la nuit a ton idée. J'y bosserai ce soir  
 
Je vais partir d'un petit langage de script : des variables ( login, mot de passe) , des actions ( open, fill, click, hover )
 
Je me sert de ca pour construire un script de test phantomjs  
Pendant l'execution du script de test , je récupère les labels et les positions  des bouton/liens a cliquer, et le timing
Je fais une video ( sans aucun timer de pause)
 
Je génère une doc lisible par un humain
 
Je me sers de tout ca pour générer un script d'event de lecture ( lire 3s, pause 1s, afficher un div en overlay, un faux curseur, ....)  
 


---------------

n°2246641
flo850
moi je
Posté le 21-12-2014 à 15:44:23  profilanswer
 

Voilà, c'est fait
1/ générer une trace json des dimensions et des timecode + des captures png

Code :
  1. var page = require('webpage').create();
  2. var fs = require('fs');
  3. var viewportSize = {
  4.    width: 1024,
  5.    height: 768
  6.  },
  7.  useragent ='casper',
  8.  login = 'wwwww',
  9.  password = 'wwwwww',
  10.  base_url = '**************',
  11.  frame_duration = 40,
  12.  frame = 0,
  13.  start_time;
  14.  
  15. var actions = [], action, current_action, counter = 0;
  16.  
  17. actions = [{
  18.  type: 'open',
  19.  url: base_url
  20. }, {
  21.  type: 'fill',
  22.  target: 'input#login',
  23.  label:'Saissez votre identifiant ',
  24.  value: login
  25. }, {
  26.  type: 'fill',
  27.  label:'Saissez votre mot de passe ',
  28.  
  29.  target: 'input#password',
  30.  value: password
  31. }, {
  32.  type: 'click',
  33.  target: 'form#login-form button',
  34.  delay_before_hover:10,
  35.  delay_before_click:10
  36. }, {
  37.  type: 'click',
  38.  label:'Cliquez sur une opération pour en voir le détail',
  39.  target: '#details .list-group-item:nth-child(4) .center.label a'
  40. }/*et plein d'autres clicks */];
  41.  
  42. page.viewportSize = viewportSize;
  43.  
  44. page.clipRect = { left: 0, top: 0, width: viewportSize.width, height: viewportSize.height };
  45. page.settings.userAgent = useragent;
  46. function nextAction() {
  47.  console.log('NEXT ACTION ', (counter + 1), '/', actions.length)
  48.  if (counter == actions.length - 1) {
  49.  
  50.    setTimeout(function(){
  51.  
  52.      console.log('done');
  53.      var path = 'output.json';
  54.      fs.write(path, JSON.stringify(actions), 'w');
  55.      var started = false;
  56.      for (var i = 0; i < frame; i++) {
  57.        if (fs.exists('frames/out' + (i) + '.png')) {
  58.          started = true;
  59.        } else {
  60.          if (started) {
  61.            fs.copy('frames/out' + (i - 1) + '.png', 'frames/out' + (i) + '.png')
  62.  
  63.          }
  64.        }
  65.      }
  66.  
  67.      phantom.exit();
  68.    },5000)
  69.    return;
  70.  }
  71.  if (current_action) {
  72.    current_action.end = Date.now()-start_time
  73.  }
  74.  
  75.  current_action = actions[counter];
  76.  current_action.start = Date.now()-start_time;
  77.  
  78.  switch (current_action.type) {
  79.    case 'open':
  80.      console.log('open page');
  81.      current_action.ready = Date.now()-start_time;
  82.      page.open(current_action.url, nextAction);
  83.      break;
  84.    case 'fill':
  85.      console.log('fill field ', current_action.target);
  86.      fill(current_action.target, current_action.value, nextAction);
  87.      break;
  88.    case 'click':
  89.      click(current_action.target, nextAction);
  90.      break;
  91.  }
  92.  counter++;
  93.  
  94. }
  95.  
  96.  
  97. function fill(target, value, cb) {
  98.  
  99.  waitFor(function () {
  100.    // Check in the page if a specific element is now visible
  101.    return evaluate(page, function (target) {
  102.      return $(target).is(":visible" );
  103.    }, target);
  104.  }, function () {
  105.  
  106.    current_action.ready = Date.now()-start_time;
  107.    current_action.dimensions = evaluate(page, function (target) {
  108.      var dimensions = $(target).offset();
  109.      dimensions.width = $(target).width();
  110.      dimensions.height = $(target).height();
  111.      return dimensions;
  112.    }, target);
  113.  
  114.    evaluate(page, function (target, value) {
  115.      return $(target).val(value);
  116.    }, target, value);
  117.    cb();
  118.  });
  119.  
  120. }
  121.  
  122. function click(target, cb) {
  123.  waitFor(function () {
  124.    // Check in the page if a specific element is now visible
  125.    return evaluate(page, function (target) {
  126.      return $(target).is(":visible" );
  127.    }, target);
  128.  }, function () {
  129.  
  130.    current_action.ready = Date.now()-start_time;
  131.    var d = current_action.dimensions = evaluate(page, function (target) {
  132.      var dimensions = $(target).offset();
  133.      dimensions.width = $(target).width();
  134.      dimensions.height = $(target).height();
  135.      return dimensions;
  136.    }, target);
  137.  
  138.    setTimeout(function () {
  139.      page.sendEvent('mousemove', d.left + d.width / 2, d.top + d.height / 2);
  140.      current_action.hover = Date.now()-start_time;
  141.  
  142.      setTimeout(function () {
  143.        page.sendEvent('click', d.left + d.width / 2, d.top + d.height / 2);
  144.        current_action.click = Date.now()-start_time;
  145.  
  146.        cb();
  147.      },current_action.delay_before_click ||  1500)
  148.    }, current_action.delay_before_hover || 1500)
  149.  
  150.  });
  151.  
  152.  
  153. }
  154.  
  155. function evaluate(page, func) {
  156.  var args = [].slice.call(arguments, 2);
  157.  var fn = "function() { return (" + func.toString() + " ).apply(this, " + JSON.stringify(args) + " );}";
  158.  return page.evaluate(fn);
  159. }
  160.  
  161.  
  162. function waitFor(testFx, onReady, timeOutMillis) {
  163.  var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 10000, //< Default Max Timout is 3s
  164.    start = new Date().getTime(),
  165.    condition = false,
  166.    interval = setInterval(function () {
  167.      if ((new Date().getTime() - start < maxtimeOutMillis) && !condition) {
  168.        // If not time-out yet and condition not yet fulfilled
  169.        condition = (typeof(testFx) === "string" ? eval(testFx) : testFx()); //< defensive code
  170.      } else {
  171.        if (!condition) {
  172.          // If condition still not fulfilled (timeout but condition is 'false')
  173.          console.log("'waitFor()' timeout" );
  174.          phantom.exit(1);
  175.        } else {
  176.          // Condition fulfilled (timeout and/or condition is 'true')
  177.          console.log("'waitFor()' finished in " + (new Date().getTime() - start) + "ms." );
  178.          typeof(onReady) === "string" ? eval(onReady) : onReady(); //< Do what it's supposed to do once the condition is fulfilled
  179.          clearInterval(interval); //< Stop this interval
  180.        }
  181.      }
  182.    }, 250); //< repeat check every 250ms
  183. };
  184.  
  185. start_time = Date.now();
  186.  
  187. setInterval(function () {
  188.  frame = Math.floor(( Date.now() - start_time) / frame_duration)
  189.  page.render('frames/out' + (frame) + '.png');
  190. }, 25);
  191. nextAction();
 

2/ Faire un film depuis les captures

avconv -start_number 10 -i frames/out%02d.png -c:v libx264 -r 25 -pix_fmt yuv420p out.mp4

 

3/ Rejouer tout ça

Code :
  1. <script src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
  2.  
  3.        <div id="video-container" style="position:relative">
  4.  
  5.            <video  controls="controls" id="video" style="position:relative">
  6.                <source src="./out.mp4" type="video/mp4" />
  7.                Ici l'alternative à la vidéo : un lien de téléchargement, un message, etc.
  8.            </video>
  9.            <div id="overlay" style="position:absolute;width:100%;bottom:0;left:0;height:100px;background-color:rgba(255,255,255,0.5) "></div>
  10.        </div>
  11.  
  12.  
  13. <script>
  14.    var scenario = /*le json généré à l'étape 1 */
  15.  
  16.    var $cursor = $('<div></div>');
  17.    $cursor.css({
  18.        position: 'absolute',
  19.        'z-index': 5000,
  20.        'background-color': 'rgba(255,255,0,0.5)',
  21.        width: '50px',
  22.        height: '50px',
  23.        'border-radius':'50%',
  24.        top:'100px',
  25.        left:'100px'
  26.  
  27.    });
  28.  
  29.    var video = document.getElementById("video" );
  30.    var $textoverlay = $('#overlay');
  31.    $cursor.appendTo('#video-container');
  32.  
  33.    //Todo : listen to pause/buffering and stop events
  34.    scenario.forEach(function(scene){
  35.        if(scene.label){
  36.            setTimeout(function(){
  37.                $textoverlay.text(scene.label).fadeIn();
  38.                setTimeout(function(){
  39.                    $textoverlay.fadeOut();
  40.                },scene.end -500)
  41.            },scene.start+500)
  42.        }
  43.  
  44.        if(scene.hover){
  45.            setTimeout(function(){
  46.                console.log(' move your body')
  47.                $cursor.animate({
  48.                    left:(scene.dimensions.left +scene.dimensions.width/2-25)+'px',
  49.                    top:(scene.dimensions.top +scene.dimensions.height/2-25)+'px'
  50.                })
  51.            },scene.hover-400)
  52.        }
  53.    })
  54.    video.play();
  55.  
  56.  
  57. </script>
 

Pour fignoler , il faudra

  • mieux synchroniser tout ça ( setTimeout glisse )
  • mettre en pause le tout lorsque la video bufferise ou que l'utilisateur revient en arrière.
  • générer les erreurs sur les tests fonctionnels qui échouent
  • voir pourquoi je n'arrive pas a faire sortir les images sur /dev/stdout. Ca economisera mon ssd


Mais en l'état, le simple fait de faire des tests fonctionnels et d'ajouter  un champ label permet de générer une doc , eventuellement en de multiples résolutions et avec de multiples droits d'accès


Message édité par flo850 le 21-12-2014 à 15:49:26

---------------

n°2246642
ratibus
Posté le 21-12-2014 à 16:03:22  profilanswer
 

C'est quand sur Github ?

n°2246643
flo850
moi je
Posté le 21-12-2014 à 16:05:40  profilanswer
 

Il me manque un nom :o

 

Je pose ça ce soir, là, c'est l'heure du gouter avec les loulous


Message édité par flo850 le 21-12-2014 à 16:06:08

---------------

n°2246660
flo850
moi je
Posté le 21-12-2014 à 21:31:22  profilanswer
 

poussé : https://github.com/fbeauchamp/phantom-filmmaker


Message édité par flo850 le 21-12-2014 à 22:48:49

---------------

n°2246670
ratibus
Posté le 21-12-2014 à 22:47:13  profilanswer
 

t'as pas un m en trop ? :o

n°2246671
flo850
moi je
Posté le 21-12-2014 à 22:47:51  profilanswer
 

rhaaa mairde

 

edit : corrigé

 

edit2 : je m'attendais à ce que ce soit plus douloureux à corriger en fait


Message édité par flo850 le 21-12-2014 à 22:52:09

---------------

n°2246757
Proov
Art & Science
Posté le 22-12-2014 à 20:03:54  profilanswer
 

Vous utilisez toujours jQuery ? (je sens que je vais me faire lincher...)
 
Je me suis rendu compte de la lenteur du truc, même dans la dernière version.. sur desktop c'est pas trop perceptible je pense mais sur mobile c'est vraiment marqué comme différence... Pourtant j'en fais une utilisation vraiment basique, pour un un simple sélecteur de mon boutton de menu je faisais un $("#menu-btn-trigger" ).machin(), j'avais une latence qui était perceptible... Hors je suis passé (pour tenter d'optimiser) à du JS classique avec un getElementbyId(), la différence a été stupéfiante.. le menu s'ouvre instantanément [:pingouino]  
 
Alors si au niveau des sélecteurs la différence est aussi nette, j'ose même pas imaginer ce que ça doit être a des niveaux plus poussé... [:figti]  
 
Pourtant Foundation sont revenu à jQuery2 alors qu'ils avaient tenté Zepto.. on m'a parlé de Vanilla, ça vaut le coup pour un webdesigner d'apprendre Vanilla ou c'est un truc de web dev :o ?

n°2246758
ratibus
Posté le 22-12-2014 à 20:16:56  profilanswer
 

Très étrange. C'est pas ton .machin() qui rame plutôt ? :D

n°2246762
flo850
moi je
Posté le 22-12-2014 à 21:55:44  profilanswer
 

clair
Je fais attention aux perfs, et pourtant, je n'ai jamais vu un $('#id') faire ramer  
 
Avec des selecteurs plus tordus par contre ....


---------------

n°2246766
pop-pan
yay!
Posté le 23-12-2014 à 00:10:00  profilanswer
 

getElementById c'est ce qu'il y a de plus rapide et je le privilégie si je n'ai pas besoin de $ (genre juste changer la classList ou un append simple)
 
Après c'est a toi de voir ce que tu fais avec mais franchement entre 15Miops et 5Miops si il y a une latence se serait plutot lié au chargement de la lib...
 
pour un designer... vanilla si tu target seulement les navigateurs compatibles pourquoi pas. mais en général tu fais plutot un PoC et a charge au dev de faire en sorte que ca tourne vite. du coup jQuery c'est peut etre plus adapté.


Message édité par pop-pan le 23-12-2014 à 00:10:48

---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2246770
gatsu35
Blablaté par Harko
Posté le 23-12-2014 à 08:27:31  profilanswer
 

Proov a écrit :

Vous utilisez toujours jQuery ? (je sens que je vais me faire lincher...)
 
Je me suis rendu compte de la lenteur du truc, même dans la dernière version.. sur desktop c'est pas trop perceptible je pense mais sur mobile c'est vraiment marqué comme différence... Pourtant j'en fais une utilisation vraiment basique, pour un un simple sélecteur de mon boutton de menu je faisais un $("#menu-btn-trigger" ).machin(), j'avais une latence qui était perceptible... Hors je suis passé (pour tenter d'optimiser) à du JS classique avec un getElementbyId(), la différence a été stupéfiante.. le menu s'ouvre instantanément [:pingouino]  
 
Alors si au niveau des sélecteurs la différence est aussi nette, j'ose même pas imaginer ce que ça doit être a des niveaux plus poussé... [:figti]  
 
Pourtant Foundation sont revenu à jQuery2 alors qu'ils avaient tenté Zepto.. on m'a parlé de Vanilla, ça vaut le coup pour un webdesigner d'apprendre Vanilla ou c'est un truc de web dev :o ?


Jamais vu de pertes de perf avec jQuery sauf si tu fais le con et que tu colles et events comme un crasseux :o
Et le Vanilla JS, c'est simplement le javascript pur.


---------------
Blablaté par Harko
n°2246776
gelatine_v​elue
Posté le 23-12-2014 à 09:53:28  profilanswer
 

Proov a écrit :

Vous utilisez toujours jQuery ? (je sens que je vais me faire lincher...)
 
Je me suis rendu compte de la lenteur du truc, même dans la dernière version.. sur desktop c'est pas trop perceptible je pense mais sur mobile c'est vraiment marqué comme différence... Pourtant j'en fais une utilisation vraiment basique, pour un un simple sélecteur de mon boutton de menu je faisais un $("#menu-btn-trigger" ).machin(), j'avais une latence qui était perceptible... Hors je suis passé (pour tenter d'optimiser) à du JS classique avec un getElementbyId(), la différence a été stupéfiante.. le menu s'ouvre instantanément [:pingouino]  
 
Alors si au niveau des sélecteurs la différence est aussi nette, j'ose même pas imaginer ce que ça doit être a des niveaux plus poussé... [:figti]  
 
Pourtant Foundation sont revenu à jQuery2 alors qu'ils avaient tenté Zepto.. on m'a parlé de Vanilla, ça vaut le coup pour un webdesigner d'apprendre Vanilla ou c'est un truc de web dev :o ?


 
Et avec un query selector ça donne quoi?

n°2246840
Proov
Art & Science
Posté le 24-12-2014 à 12:50:07  profilanswer
 

ratibus a écrit :

Très étrange. C'est pas ton .machin() qui rame plutôt ? :D


 
un simple ToggleClass sur le body pourtant avec le $("body" ) mis en cache...
 
je suis tombé sur ça http://toddmotto.com/avoiding-anon [...] functions/ j'ai voulu optimiser 2/3 trucs, et en JS pur la classe s'ajoute/s'enlève instantanément meme sur un vieil iPhone 4S..
 
Bon, je pense que j'utiliserai au max le JS pur quand je peux ^^


Message édité par Proov le 24-12-2014 à 12:50:47
n°2246853
Profil sup​primé
Posté le 24-12-2014 à 14:24:47  answer
 

[:quatre quart]

n°2246856
pop-pan
yay!
Posté le 24-12-2014 à 14:40:01  profilanswer
 
n°2246870
Proov
Art & Science
Posté le 24-12-2014 à 15:59:10  profilanswer
 


 
j'aime bien ce site :o
 
44K vs 636K  :D

n°2246879
flo850
moi je
Posté le 24-12-2014 à 16:10:58  profilanswer
 

enfin ce genre de chiffres ne fait pas de différence sur une permutation  
 
tu payera beaucoup plus cher les repaints liés au changement de classe  
 
A noter que classlist n'est pas dispo partout, il me semble. L'implémentation générique est un peu plus chiante


---------------

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  1326  1327  1328  ..  1449  1450  1451  1452  1453  1454

Aller à :
Ajouter une réponse
 

Sujets relatifs
blabla 3blabla 2
PUTAIN HARKO TU AS FERM2 BLABLA ![Beaucoup de blabla pour rien : post à effacer] Compiler .bat
variable1="blabla + variable2 +blala : c'est possible ??[PHP & regex] "blabla blabla file.ext?point=444 blabla" Recupérer 444
mail("celine@hotmail.com"," sujet","blabla"); pose une err ! Help[MySQL] WHERE 'blabla' compris dans le champ truc
[blabla@hosto] Le topic des vieux[PHP / BlaBla - limite]
Plus de sujets relatifs à : blabla@web


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR