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 :

Superposition de texte avec un background dynamique (canvas)


Sujet :

CSS

  1. #1
    Membre du Club Avatar de Cybercope
    Homme Profil pro
    Programmeur amateur
    Inscrit en
    Mai 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Programmeur amateur

    Informations forums :
    Inscription : Mai 2014
    Messages : 78
    Points : 59
    Points
    59
    Par défaut Superposition de texte avec un background dynamique (canvas)
    Bonjour,

    Je suis actuellement en train de concevoir un site. Cependant, je rencontre un problème que je n'avais jamais rencontré auparavant :
    La première page nommé index.php dispose d'un fond dynamique canvas mis en œuvre par un script javascript nommé js_01.js

    Code HTML : 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
    <!DOCTYPE html>
    <html>
     
    <head>
    	<meta property="og:title" content="TChat - Connexion"/>
    	<meta property="og:type" content="website"/>
    	<meta charset="utf-8" />
    	<meta type="author" content="Ind6x"/>
    	<link rel="icon" href="img/favicon.png" />
    	<link href="css/css_01.css" rel="stylesheet">
     
    	<title>TChat-ICAM</title>
    </head>
     
    <body>
     
    <div id="particle-canvas">
    		<script type="text/javascript" src="js/js_01.js"></script>
    </div>
    	<div id="parent">
    		<div id="parent-connexion">
    			<div id="rect-connexion">
    			</div>
    		</div>
    	</div>
     
    </body>
     
    </html>

    L'aspect visuel de la page est traitée par le fichier css_01.css :

    Code CSS : 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
    html ,
    body {
      height: 100%;
      width: 100%;
      margin: 0;
      padding: 0;
      overflow: hidden;
    }
     
    #particle-canvas 
    {
    width: 100%;
    height: 100%;
    }
     
    #parent
    {
    display: table;
    position: absolute;
    height: 100%;
    width: 100%;
    }
     
    #parent-connexion 
    {
    display:table-cell; 
    vertical-align:middle;
    }
     
    #rect-connexion
    {
     width: 400px;
     height: 250px;
     overflow: auto;
     margin: auto;
     position: absolute;
     top: 0; left: 0; bottom: 0; right: 0;
    background-color: #E6E6E6;
     border-radius: 50px;
     opacity: 1;
    }

    Je vous met le script javascript que je ne comprend qu'a moitié (ce n'est pas moi qui l'ai écrit)
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    // particle.min.js hosted on GitHub
    // Scroll down for initialisation code
     
    !function(a){var b="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global;
    "function"==typeof define&&define.amd?define(["exports"],function(c){b.ParticleNetwork=a(b,c)}):"object"==typeof module&&module.exports?module.exports=a(b,{}):b.ParticleNetwork=a(b,{})}
    (function(a,b){var c=function(a){this.canvas=a.canvas,this.g=a.g,this.particleColor=a.options.particleColor,this.x=Math.random()*this.canvas.width,this.y=Math.random()*this.canvas.height,this.velocity={x:(Math.random()-.5)*a.options.velocity,y:(Math.random()-.5)*a.options.velocity}};
    return c.prototype.update=function(){(this.x>this.canvas.width+20||this.x<-20)&&(this.velocity.x=-this.velocity.x),(this.y>this.canvas.height+20||this.y<-20)&&(this.velocity.y=-this.velocity.y),this.x+=this.velocity.x,this.y+=this.velocity.y},
    c.prototype.h=function(){this.g.beginPath(),this.g.fillStyle=this.particleColor,this.g.globalAlpha=0.7,this.g.arc(this.x,this.y,2,0,2*Math.PI),this.g.fill()},
    b=function(a,b){this.i=a,this.i.size={width:this.i.offsetWidth,height:this.i.offsetHeight},b=void 0!==b?b:{},this.options={particleColor:void 0!==b.particleColor?b.particleColor:"#fff",background:void 0!==b.background?b.background:"#1a252f",interactive:void 0!==b.interactive?b.interactive:!0,velocity:this.setVelocity(b.speed),density:this.j(b.density)},this.init()},
    b.prototype.init=function(){
    if(this.k=document.createElement("div"),this.i.appendChild(this.k),this.l(this.k,{position:"absolute",top:0,left:0,bottom:0,right:0,"z-index":1}),/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(this.options.background))this.l(this.k,{background:this.options.background});
    else{
    if(!/\.(gif|jpg|jpeg|tiff|png)$/i.test(this.options.background))
    return console.error("Please specify a valid background image or hexadecimal color"),!1;
    this.l(this.k,{background:'url("'+this.options.background+'") no-repeat center',"background-size":"cover"})}
    if(!/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(this.options.particleColor))return console.error("Please specify a valid particleColor hexadecimal color"),!1;
    this.canvas=document.createElement("canvas"),this.i.appendChild(this.canvas),this.g=this.canvas.getContext("2d"),this.canvas.width=this.i.size.width,this.canvas.height=this.i.size.height,this.l(this.i,{position:"relative"}),this.l(this.canvas,{"z-index":"20",position:"relative"}),window.addEventListener("resize",function(){return this.i.offsetWidth===this.i.size.width&&this.i.offsetHeight===this.i.size.height?!1:(this.canvas.width=this.i.size.width=this.i.offsetWidth,this.canvas.height=this.i.size.height=this.i.offsetHeight,clearTimeout(this.m),void(this.m=setTimeout(function(){this.o=[];
    for(var a=0;a<this.canvas.width*this.canvas.height/this.options.density;a++)this.o.push(new c(this));
    this.options.interactive&&this.o.push(this.p),
    requestAnimationFrame(this.update.bind(this))}.bind(this),500)))}.bind(this)),this.o=[];
    for(var a=0;a<this.canvas.width*this.canvas.height/this.options.density;a++)this.o.push(new c(this));
    this.options.interactive&&(
    this.p=new c(this),
    this.p.velocity={x:0,y:0},
    this.o.push(this.p),
    this.canvas.addEventListener("mousemove",
    function(a){
    this.p.x=a.clientX-this.canvas.offsetLeft,
    this.p.y=a.clientY-this.canvas.offsetTop}.bind(this)),
    this.canvas.addEventListener("mouseup",function(a){
    this.p.velocity={x:(Math.random()-.5)*this.options.velocity,y:(Math.random()-.5)*this.options.velocity},
    this.p=new c(this),
    this.p.velocity={x:0,y:0},
    this.o.push(this.p)}.bind(this))),
    requestAnimationFrame(this.update.bind(this))},
    b.prototype.update=function(){
    this.g.clearRect(0,0,this.canvas.width,this.canvas.height),
    this.g.globalAlpha=1;
    for(var a=0;a<this.o.length;a++){this.o[a].update(),this.o[a].h();
    for(var b=this.o.length-1;b>a;b--){
    var c=Math.sqrt(Math.pow(this.o[a].x/1.7 -this.o[b].x/1.7,2)+Math.pow(this.o[a].y/1.7-this.o[b].y/1.7,2));c>100||(
    this.g.beginPath(),
    this.g.strokeStyle=this.options.particleColor,
    this.g.globalAlpha=(100-c)/100,
    this.g.lineWidth=1.5,
    this.g.moveTo(this.o[a].x,this.o[a].y),
    this.g.lineTo(this.o[b].x,this.o[b].y),
    this.g.stroke())}}0!==this.options.velocity&&requestAnimationFrame(this.update.bind(this))},
    b.prototype.setVelocity=function(a){return"fast"===a?1:"slow"===a?.33:"none"===a?0:.66},
    b.prototype.j=function(a){return"high"===a?5e3:"low"===a?2e4:isNaN(parseInt(a,10))?1e4:a},
    b.prototype.l=function(a,b){for(var c in b)a.style[c]=b[c]},b});
     
    // Initialisation
     
    var canvasDiv = document.getElementById('particle-canvas');
    var options = {
      particleColor: '#FA58F4',
      background: 'img/back_1.jpg',
      interactive: true,
      speed: 'fast',
      density: 'high'
    };
    var particleCanvas = new ParticleNetwork(canvasDiv, options);

    Très concrètement mon problème est le suivant :

    Ma page s'affiche bien, avec une image de fond et des point rose qui se baladent et se lient dès qu'il sont proches (pour faire un effet constellation).

    Cependant je souhaite afficher par dessus un rectangle semi-transparent pour pourvoir ensuite écrire du texte (c'est ce que j'ai tenté de faire avec la division #parents, mais sans résultat. J'ai essayé de déplacer l'autre division en bas, mais sans résultat non plus.

    C'est sans doute un problème simple à résoudre mais je n'ai pas l'habitude de travailler avec des div, je suis plus habitué au table.

    Enfin, pour une meilleur compréhension de mon problème, je vous met deux image : la première étant ce qui s'affiche et la seconde ce que j'aimerai obtenir (image retouché manuellement) :

    Nom : Capture.JPG
Affichages : 2075
Taille : 506,4 Ko

    Nom : Capture_2.JPG
Affichages : 1842
Taille : 497,1 Ko

    Merci beaucoup pour votre aide !

  2. #2
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Salut un essaie ici, je suis pas web designer .

    https://codepen.io/headmax/full/BJOKpJ/
    https://codepen.io/headmax/pen/BJOKpJ

  3. #3
    Membre du Club Avatar de Cybercope
    Homme Profil pro
    Programmeur amateur
    Inscrit en
    Mai 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Programmeur amateur

    Informations forums :
    Inscription : Mai 2014
    Messages : 78
    Points : 59
    Points
    59
    Par défaut
    Bonjour,

    Merci beaucoup c'est exactement ce que je cherchais a faire !

    Je récapitule :

    rajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    top:0px;
    left:0px;
    dans #parent suffisait a afficher la form.

    Grâce a toi j'ai appris que l'on pouvais gérer une form dans un CSS !

    J'ai vu que tu a mis :

    En effet, j'avais déjà essayer de mettre un z-index, mais il fallait mettre un nombre suffisamment grand pour que la form se retrouve au dessus de l’arrière plan.

    Cependant, a l'origine le canvas était dynamique avec la souris de l'utilisateur. c'est a dire que les "traits roses" se reliaient a la souris de l'utilisateur quand celui s'approchait des points (comme une toile d’araignée) . Cette animation ne fonctionne plus car la form est au 1er plan.

    Je voulais donc savoir s'il était possible de faire un compromis entre les deux. Si ce n'est pas possible, ce n'est pas grave, vous m'avez déjà été d'une précieuse aide !

    Merci encore

    Ind6x

  4. #4
    Membre éclairé
    Homme Profil pro
    Retraité informatique
    Inscrit en
    Juin 2012
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 519
    Points : 705
    Points
    705
    Par défaut
    Il ne s'agit pas d'avoir un z-index très grand.
    La propriété z-index permet de préciser l'empilement de certains éléments d'une page sur l'axe vertical.

    par défaut le zindex est 0
    un z-index:1 sera toujours au dessus d'un z-index:0
    Comme un z-index:-1 sera toujours en dessous d'un z-index:0

    Tout dépend de ton code.
    Seuls les éléments positionnés peuvent avoir un z-index.
    Un élément positionné est un élément dont la propriété CSS position a pour valeur relative, absolute ou fixed.
    Par défaut, les éléments d'une page ne sont pas positionnés (ils sont en position:static donc z-index:0).
    Et les valeurs les plus élevées sont au premier plan, et les plus faibles sont au second plan.

  5. #5
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Ah oui j'avais pas vu l’interaction tu peux faire ceci, bien à toi.
    https://codepen.io/headmax/pen/BJOKpJ?editors=0100
    Comme le dit très bien JefReb, les z-index sont comme des calques de dessins ou les calques sont au premier plan z-index 0 si tu change alors ils se trouveront les uns empilés sur les autres ce sont des nombres signés plus on monte (plus on se déplace vers le premier plan) plus on descend plus on va vers l'arrière plan. plus d'infos sur les limites http://softwareas.com/whats-the-maximum-z-index/

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 082
    Points : 44 685
    Points
    44 685
    Par défaut z-index vous avez dit z-index ?

  7. #7
    Membre du Club Avatar de Cybercope
    Homme Profil pro
    Programmeur amateur
    Inscrit en
    Mai 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Programmeur amateur

    Informations forums :
    Inscription : Mai 2014
    Messages : 78
    Points : 59
    Points
    59
    Par défaut
    Je vous remercie tous pour votre aide, mais comme je suis curieux, j'ai une question :

    Pourquoi le seul fait de mettre

    a permit a l'animation de fonctionner ?

    et pourquoi

    ce code permet de centrer la form (ça devrait être 50% non ?)

    Merci beaucoup, je met le sujet en résolu

  8. #8
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    Salut c'est vrai qu'on a ici une masse d'info , ça serait cool d'y mettre comme sur stackoverflow des liens croisées lors de la création d'un post sur une catégorie de sujet, comme un moteur de recherche il essaie de voir si le sujet n'a pas déjà été abordé pour ne pas créer des doublons .

    Je vais essayé de jeter un coup d’œil sur la FAQ avant de répondre !

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

    Citation Envoyé par Ind6x Voir le message
    ...J'ai vu que tu a mis : z-index: 21;...
    1- Quand on "Inspecte" le fichier (touche "F12"), on voit que le canvas a un z-index de 20.
    2 aurait suffit.
    Et donc 3 au lieu de 21.

    2- Si tu veux que le formulaire soit toujours centré :
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #parent {
      display: table;
      position: absolute;
      top: 0;
      left: 0;
      height: 100%;
      width: 100%;
      z-index: 21;
      opacity: 0.8;
    }
    Autre solution :
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #parent {
      display: table;
      position: absolute;
      top: 0;
      left: 50%;
      margin-left:-200px; /* 1/2 width */
      height: 100%;
      width: 400px;
      z-index: 21;
      opacity: 0.8;
    }
    Dernière modification par Invité ; 17/01/2018 à 08h24.

  10. #10
    Membre du Club Avatar de Cybercope
    Homme Profil pro
    Programmeur amateur
    Inscrit en
    Mai 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Programmeur amateur

    Informations forums :
    Inscription : Mai 2014
    Messages : 78
    Points : 59
    Points
    59
    Par défaut
    Bonjour,

    Merci pour cette précision sur z-index. En effet, comme ce n'est pas moi qui est écrit le javascript et comme celui-ci n'est pas commenté, je n'avais pas vu qu'un z-index y était présent et avait pour valeur 20. C'est modifié.

    Cependant, la première solution que vous proposez pour centrer le formulaire ne fonctionne pas car la propriété "width" doit être à "auto;" pour que l'animation fonctionne. Mais ce n'est pas un problème car

    centre bien mon formulaire.

    Merci,

    Ind6x

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

Discussions similaires

  1. afficher une zone de texte avec une partie dynamique
    Par sheridan08 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 20/04/2013, 14h56
  2. JButton avec image background et texte.
    Par SuperCoquillette dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 26/05/2011, 09h27
  3. Comment faire une balise <html:text> avec valeur dynamique
    Par chriscoolletoubibe dans le forum Struts 1
    Réponses: 13
    Dernier message: 14/05/2007, 22h13
  4. afficher texte avec retour chariot aprèq requète sql
    Par frenchy371 dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/01/2004, 17h33
  5. Réponses: 4
    Dernier message: 16/01/2003, 15h30

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