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 :

Mise en place d'une zone de code source


Sujet :

CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 62
    Par défaut Mise en place d'une zone de code source
    Bonjour à tous,
    Je cherche à mettre en place une zone de code source sur ma page.

    J'ai donc créé 2 div enfants imbriquées en gauche-droite dans une div parente.
    Dans la div de droite, j'ai donc les numéros de ligne et dans la div de droite, le code source.
    J'écris ce post pour une question et un problème.

    - La question : Comment faire en sorte que le div de gauche reste visible lors du scroll horizontale mais que les numéros de ligne suivent le code source lors du scroll vertical en restant visible a droite (avec le bloc de droite qui passe sous le bloc gauche lors du scroll horizontale).

    - Le problème : Je ne veux aucun retour de ligne si celle-ci dépasse le cadre du div : ça pas de problème, j'ai mis un white-space:nowrap; et ça fonctionne très bien sur Firefox. Par contre sur IE dans mon bloc de droite j'ai un bloc de texte, un grand blanc vertical jusqu'à la fin de mon div de gauche et ensuite à droite la suite du code source avec ma grande ligne, suivi du reste du bloc de source.

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <style type="text/css">
    	.textarea {
    		width:800px;
    		height:400px;
    		background-image:url(textareaSeparation.jpg);
    		background-repeat:repeat-y;
    		border:1px solid #000;
    		color:#000;
    		overflow:auto;
    	}
    	.lineNumber{
    		width:45px;
    		float:left;
    		border: 1px solid #00f;
    	}
    	.contenuDiv{
    		margin-left:55px;
    		white-space:nowrap;
    		border: 1px solid #f00;
    	}
    </style>
    <body>
    <div class='textarea'>
    	<div class='lineNumber'>
    		<div>1</div>
    		<div>2</div>
    		<div>3</div>
    		<div>4</div>
    		<div>5</div>
    	</div>
    	<div class='contenuDiv'>
    		<div>ma première ligne</div>
    		<div>deuxième ligne</div>
    		<div>blablablablablablablablablablablblablablablablablaablablabla</div>
    		<div>Ma ligne 4</div>
    		<div>Ma ligne 5</div>
    	</div>
    </div>
    </body>
    Si vous avez un quelconque élément de réponse à m'apporter, n'hésitez pas...
    D'avance merci. Cordialement,
    Damien LEVEQUE

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 62
    Par défaut
    Bon, alors finalement j'ai réussi a trouver la solution tout seul. Il suffit en faite de mettre un position absolute sur lineNumber mais pour que le positionnement ne sorte pas du cadre textarea, il ne faut pas oublier de mettre un position relative sur cette dernière class. De cette facon les DIVs de gauche et de droite pourront se superposer.

    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
    24
    25
    <style type="text/css">
    	.textarea {
    		width:750px;
    		height:400px;
    		position: relative;
    		border:1px solid #000;
    		color:#000;
    		overflow:auto;
    	}
    	.lineNumber{
    		background-image:url(textareaSeparation.jpg);
    		background-repeat:repeat-y;
    		width:45px;
    		padding-left:3px;
    		position:absolute;
    		float:left;
    		z-index:20;
    	}
    	.contenuDiv{
    		margin-left:45px;
    		padding-left:5px;
    		white-space:nowrap;
    		z-index:10;
    	}
    </style>
    Ensuite, pour fixer mon div de gauche à gauche lors du scroll horizontal, j'ai trouvé une astuce visant à utiliser du javascript.

    Cela consiste à déplacer mon div lineNumber lors de l'utilisation du scroll sur textarea. Pour ce faire j'appelle une fonction sur l'action onscroll de mon div textarea. La fonction en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function moveDIVlineNumber(obj,IDlineNumer)
    {
    	document.getElementById(IDlineNumer).style.marginLeft=obj.scrollLeft+"px";
    }
    De cette façon le rendu est impeccable et contre tout attente le bug que j'avais sur IE est résolu.

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

Discussions similaires

  1. [Apache] Mise en place d'une page de maintenance
    Par divail dans le forum Apache
    Réponses: 5
    Dernier message: 02/02/2006, 09h58
  2. Réponses: 2
    Dernier message: 06/10/2005, 16h10
  3. problème de mise en page d'une zone de liste
    Par audrey_desgres dans le forum Access
    Réponses: 26
    Dernier message: 24/06/2005, 09h11
  4. Mise en place d'une solution Data Guard 9i R2
    Par user_oracle dans le forum Oracle
    Réponses: 4
    Dernier message: 16/02/2005, 10h12
  5. [VB.NET] Mise en place d'une progress bar
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 14
    Dernier message: 19/10/2004, 09h23

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