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

jQuery Discussion :

Multiples arrières plan (background)


Sujet :

jQuery

  1. #1
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 402
    Points : 4 837
    Points
    4 837
    Par défaut Multiples arrières plan (background)
    https://jsfiddle.net/Toufi9/7uv2ywon/

    la ligne 12 : next_bg_position_X =3* i * bg_X/2;
    normalement la valeur la plus logique est : (i*bg_X), mais quand je la met, les images sont superposés l'une sur l'autre.
    je me trompes peut être?

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 946
    Points : 44 086
    Points
    44 086
    Par défaut
    Bonjour,
    tu fais une mauvaise interprétation de la spécification quant au calcul du positionnement.
    3.6. Positioning Images: the ‘background-position’ property
    Diagram of the meaning of ‘background-position: 75% 50%.
    Tu aurais peut être meilleur compte de passer par des images en position:absolute si tu dois en gérer plus de trois.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    vu la compléxité du positionnement en % (qui dépend du conteneur ET de l'image !),
    => on définira les largeurs d'images et les positions en pixels (c'est plus simple) : https://codepen.io/jreaux62/pen/ZKgJzx

    Code jQuery : 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
    34
    35
    36
    function set_container_backgrounds(id, imgs){
      var fond_css = [],
        bg_position = [],
        bg_size = [],
        bg_repeat = [];
      img_n = imgs.length; // nombre images (ici, 3)
      var img_W_pixel = ($(id).width() / img_n).toFixed(3); // (en pixels)
    //  alert(img_W_pixel);
      for (i = 0; i < img_n; i++) {
        fond_css[i] = " url('" + imgs[i] + "')";
        bg_position[i] = " " + (i * img_W_pixel) + "px 0"; // (en pixels)
        bg_size[i] = " " + img_W_pixel + "px 100%"; // (en pourcent)
        bg_repeat[i] = " no-repeat";
      }
      // on concatène
      fond_css = fond_css.join(',');
      bg_position = bg_position.join(',');
      bg_size = bg_size.join(',');
      bg_repeat = bg_repeat.join(',');
     
      $(id).css({
        'background': fond_css,
        'background-position': bg_position,
        'background-size': bg_size,
        'background-repeat': bg_repeat
      });
    };
     
    $(window).on("load resize", function(){
        var imgs = [
          "http://zupimages.net/up/17/21/r1v9.jpg",
          "http://zupimages.net/up/17/21/hsew.gif",
          "http://www.zupimages.net/up/17/21/pl48.jpg"
        ];
      set_container_backgrounds('#conteneur', imgs);
    });
    Dernière modification par Invité ; 31/05/2017 à 15h32.

  4. #4
    Invité
    Invité(e)
    Par défaut
    On peut aussi créer une fonction, si on veut l'appliquer à plusieurs conteneurs : https://codepen.io/jreaux62/pen/Lywjbw

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div id="conteneur"></div>
    <div id="conteneur2"></div>
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #conteneur {
      width: 100%;
      height: 300px;
      border: 1px solid black;
      background-color:black
    }
    #conteneur2 {
      width: 100%;
      height: 500px;
      border: 1px solid red;
      background-color:black
    }
    Code jQuery : 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    function set_container_backgrounds(id, imgs){
      var fond_css = [],
        bg_position = [],
        bg_size = [],
        bg_repeat = [];
      img_n = imgs.length; // nombre images
    //  alert(img_n); (ici, 3)
      var img_W_pixel = ($(id).width() / img_n).toFixed(3); // (en pixels)
    //  alert(img_W_pixel);
      for (i = 0; i < img_n; i++) {
        fond_css[i] = " url('" + imgs[i] + "')";
        bg_position[i] = " " + (i * img_W_pixel) + "px 0"; // (en pixels)
        bg_size[i] = " " + img_W_pixel + "px 100%"; // (en pourcent)
        bg_repeat[i] = " no-repeat";
      }
      // on concatène
      fond_css = fond_css.join(',');
      bg_position = bg_position.join(',');
      bg_size = bg_size.join(',');
      bg_repeat = bg_repeat.join(',');
     
      $(id).css({
        'background': fond_css,
        'background-position': bg_position,
        'background-size': bg_size,
        'background-repeat': bg_repeat
      });
    };
     
    $(window).on("load resize", function(){
        var imgs = [
          "http://zupimages.net/up/17/21/r1v9.jpg",
          "http://zupimages.net/up/17/21/hsew.gif",
          "http://www.zupimages.net/up/17/21/pl48.jpg"
        ];
      set_container_backgrounds('#conteneur', imgs);
     
        var imgs = [
          "http://www.zupimages.net/up/17/21/pl48.jpg",
          "http://zupimages.net/up/17/21/r1v9.jpg",
          "http://zupimages.net/up/17/21/hsew.gif"
        ];
      set_container_backgrounds('#conteneur2', imgs);
    });
    Dernière modification par Invité ; 31/05/2017 à 15h32.

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 946
    Points : 44 086
    Points
    44 086
    Par défaut
    Si l'on souhaite le faire via javascript et pour des images de même dimensions d'affichage et de nombre variable, on peut faire plus simple en pourcentage, cela évite le redraw lors du resize.
    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
    var img = [
      'http://zupimages.net/up/17/21/r1v9.jpg',
      'http://zupimages.net/up/17/21/hsew.gif',
      'http://www.zupimages.net/up/17/21/pl48.jpg'
    ];
    var i;
    var nombreImages = img.length;
    var urlImages = [];
    var positionImages = [];
    var largeurImages = (100 / nombreImages);
    var ecartImages = (100 / (nombreImages - 1) || 1);
     
    for (i = 0; i < nombreImages; i += 1) {
      urlImages.push('url(' + img[i] + ')');
      positionImages.push(ecartImages * i + '%');
    }
     
    $('.conteneur').css({
      'background-image': urlImages.join(','),
      'background-repeat': 'no-repeat',
      'background-position': positionImages.join(','),
      'background-size': largeurImages + '% 100%'
    });

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. OpenGL background arrière-plan fixe
    Par SpongeBob dans le forum OpenGL
    Réponses: 4
    Dernier message: 16/08/2009, 18h25
  2. Réponses: 1
    Dernier message: 05/10/2008, 22h51
  3. petit problème premier plan, arrière plan
    Par gros bob dans le forum OpenGL
    Réponses: 4
    Dernier message: 19/04/2004, 12h00
  4. comment stoper 1 thread d'arrière-plan
    Par ms91fr dans le forum Langage
    Réponses: 3
    Dernier message: 06/06/2003, 17h46
  5. changer l'image d'arrière plan du bureau
    Par etenclin dans le forum MFC
    Réponses: 7
    Dernier message: 22/08/2002, 15h54

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