IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mise en page CSS Discussion :

Transformations CSS pour adapter une image


Sujet :

CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 8
    Par défaut Transformations CSS pour adapter une image
    Bonjour,
    Je veux utiliser les transformations CSS pour ajuster dynamiquement une image et la positionner exactement entre 2 divs (eux-mêmes dépendant de la fenêtre du navigateur).
    Voici le code de la fonction d'adaptation que j'utilise :
    Code javascript : 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
    function majImg ()
    {
    	var div = document.getElementById('img0');
    	var imgh, botmenu, topkeying;
    	var data, imgtranslate, imgscale;
     
    	// the image height
    	imgh = div.naturalHeight; 
    	// the upper limit to fit the image
    	botmenu = document.getElementById('menu').offsetTop + document.getElementById('menu').offsetHeight;
    	// the lower limit to fit the image
    	topkeying = document.getElementById('keyingzone').offsetTop;
     
    	// the scaling factor
    	imgscale = (topkeying - botmenu) / imgh;
    	// the translate factor
    	imgtranslate =  (imgh * (1 - imgscale)) / 2;
     
    	data = 'scale('+imgscale+','+imgscale+') translate(0px,'+imgtranslate+'px)';
    	div.style.transformOrigin = "center center"; 
    	div.style.webkitTransform = data; 
    	div.style.mozTransform    = data; 
    	div.style.msTransform     = data; 
    	div.style.oTransform      = data; 
    	div.style.transform       = data;
     
    }

    L'appli de test est dispo ici : http://vb-photo.com/tmp/
    L'image semble être bien redimensionnée (mais pas sûr à 100%) mais le positionnement n'est pas bon. Pourquoi à votre avis ?

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Bonjour,
    y a t-il une raison particulière pour que tu réalises cela avec une transformation quand il me semble que le CSS de base suffit !?!

  3. #3
    Membre chevronné
    Profil pro
    Chef Gérant
    Inscrit en
    Octobre 2005
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef Gérant
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2005
    Messages : 230
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    Bonjour,
    y a t-il une raison particulière pour que tu réalises cela avec une transformation quand il me semble que le CSS de base suffit !?!
    En effet, on pense tout de suite a background-size .

    couplé a display:flex (ou table) et un height de 100% herité de html on peut faire ceci: http://codepen.io/gc-nomade/pen/advQpe .. si j'ai compris l'effet voulu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <nav>test</nav>
    <div class="deco"></div>
    <form><input type="text" value="input"/></form>
    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
    html, body {
      height:100%;
    }
    body {
      display:flex;
      flex-direction:column;
      text-align:center;
      font-size:2em;
      line-height:1.6em;
    }
    .deco {
      background:url(http://vb-photo.com/tmp/J20100002001.jpg) no-repeat bottom center;
      flex:1;
      background-size:auto 100%
    }
    /* voyons voir */
    * {
      box-shadow:inset 0 0 0 1px purple;
    }

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 8
    Par défaut
    Bonjour et un grand merci à vous deux
    Votre solution marche très bien effectivement (je ne connaissais pas flex).

    En fait, après l'ajustement de l'image je dois ajouter une fonction de rotation de l'image (par pas de 90°) et de zoom (à plusieurs profondeurs) centré sur un point variable de l'image.
    Et donc je pensais faire tout ça avec une transformation (en ajoutant un facteur de zoom au scaling existant + une rotation).
    Est-ce compatible avec votre solution ? ou bien y a-t-il moyen de le faire autrement ?

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    ou bien y a-t-il moyen de le faire autrement ?
    as tu regardé du coté de l'API Canvas, j'avais mis un exemple sur le forum : Edition photo dans un canvas, regarde au post #6.

  6. #6
    Membre chevronné
    Profil pro
    Chef Gérant
    Inscrit en
    Octobre 2005
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef Gérant
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2005
    Messages : 230
    Par défaut
    re,

    Sinon, coté css , rotate et scale devrait le faire. http://codepen.io/gc-nomade/pen/JGGPmx démo rapide basé sur radio + :checked ... juste pour la demo

Discussions similaires

  1. Lien pour TELECHARGER une image plutôt que pour l'ouvrir
    Par nabab dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/01/2005, 18h07
  2. Réponses: 13
    Dernier message: 23/12/2004, 18h01
  3. Réponses: 7
    Dernier message: 21/10/2004, 09h13
  4. Comment faire pour afficher une image ds une dbgrid
    Par totomaze dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/10/2004, 15h31
  5. Mkisofs - problème pour créer une image
    Par tomnie dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 04/08/2004, 11h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo