Je travaille sur une galerie de première page qui a plusieurs images, mise à l'échelle pour s'adapter à la page via CSS.Les transitions Javascript sur les images à l'échelle CSS fonctionnent mal
Les images fondu de l'une à l'autre (superposées) et seront redimensionnées si l'utilisateur redimensionne le navigateur pour utiliser l'espace.
Le problème est que l'évanouissement de l'image fonctionne terriblement sur la plupart des navigateurs et sur tous les ordinateurs, sauf les plus récents. Toutefois, si les images ne sont pas étirées, les performances sont parfaites sur tous les navigateurs de la plupart des ordinateurs. J'ai déjà rencontré ce problème avec d'autres sites que j'ai conçus et j'ai passé beaucoup de temps à rechercher et tester des solutions, mais je n'arrive pas à trouver quoi que ce soit.
Des idées?
J'ai implémenté un compromis performance/style. Au lieu de mettre à l'échelle arbitrairement les images, disons par un facteur de 0.7543234, je l'arrondis à 8 et ainsi de suite. J'ai trouvé que les facteurs de mise à l'échelle arbitraires ont une énorme pénalité de performance, et l'utilisation de la mise à l'échelle décimale unique réduit considérablement cela.
Voici un code js:
var adjustedNewWidth = Math.round((roundNumber((newWidth/originalImage.width), 1)+0.1)*originalImage.width);
var adjustedNewHeight = Math.round((roundNumber((newHeight/originalImage.height), 1)+0.1)*originalImage.height);
- newWidth est la largeur désirée,
- originalImage.width est mon tableau où je garde l'image d'origine tailles (depuis js est si intelligent qu'il ne peut pas accéder après leur mise à l'échelle),
- roundNumebr est une fonction qui échelles à la plus proche décimale
function roundNumber(num, dec) { var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec); return result; }
Après cela, le fading travaille environ 50% de mieux, mais est toujours pas parfait. Eh bien merci pour votre aide tout le monde espère que cela aide quelqu'un là-bas.
Je ne vois pas une marque, mais j'ai travaillé avec des plugins JQuery comme: http: //www.buildinternet .com/project/supersized/default.php http://devkick.com/lab/fsgallery/ et n'ont jamais subi de dégradation de qualité d'image lorsque les navigateurs sont redimensionnés, à moins que l'ordinateur ne soit déjà taxé par d'autres systèmes. Pourriez-vous partager du code? –
Il est effectivement évident sur ce lien que vous m'avez envoyé. Le code dans le lien modifie l'image pour être 100% hauteur, et 100% largeur, et définit l'étiquette autour d'elle quelque chose comme largeur: 1462px; hauteur: 1096.5px ;. Le navigateur que vous utilisez est peut-être trop rapide ou votre ordinateur est trop rapide. Essayez-le dans Firefox (le navigateur le plus récent) ou IE si vous l'avez disponible. Redimensionnez également votre navigateur à la taille maximale. Sur mon ordinateur ici, il est très lent et nerveux, et je cours un 2ghz Core2Duo mac mini – Totomobile
J'ai testé dans Chrome, Ie9, FireFox et Opera et ils sont tous lisses. En le testant sur une machine virtuelle exécutant d'autres navigateurs, je peux voir de quoi vous parlez. Malheureusement, je ne pense pas qu'il y ait un moyen de contourner cela, sauf pour limiter les calculs de JS. JS ne fait pas un bon travail avec beaucoup de math/trig donc je recommanderais d'utiliser des nombres entiers, ou seulement 1 point décimal en faisant des calculs mineurs pour éviter la dégradation des performances. –