28172 sujets

CSS et mise en forme, CSS3

Hello,

Comme dit dans le titre, ma div s'affiche mal sous 400-500px ...

Normalement
upload/61886-Capture.PNG

Sur petit écran
upload/61886-Capture2.PNG

Le code concerné:
<div class="start">
<h4><a href="./menu.html">COMMENCER L'IDENTIFICATION</a></h4>
</div>


.start	{	
	margin: 0;
	margin-top: 120px; 
	margin-bottom: 120px;
	padding: 0;
	text-align: center;
}

.start h4{	
	text-align: center;
	display: inline;
	font-size: 120%; font-family: segoe print, verdana, sans-serif; 
	font-weight: bold; 
}

.start a {	
	background: #eef2e8 ;
	padding: 50px 10px 50px 10px;
	border: 1px solid #AFC415 ;
	text-align: center ;
	text-decoration: none ;
	transition-duration: 0.2s;
}


J'ai pas réussi de mon coté Smiley sweatdrop , mais vous êtes bien meilleur que moi Smiley ravi
Modifié par vinula (11 May 2016 - 12:42)
Administrateur
Bonjour,

Il ne s'agit pas ici d'un problème dû aux pixels (tous tes éléments ont des largeurs fluides, et ton texte en en %).
Par contre, le souci vient du fait que ton titre est en inline, et les mots passent logiquement à la ligne lorsqu'ils n'ont plus de place.

Il faudrait connaître le résultat souhaité pour pouvoir t'aider. S'il faut que le texte rentre systématiquement dans une seule ligne quelle que soit la largeur de la fenêtre, il faudra utiliser les unités de polices "vw", mais tes contenus risquent rapidement d'être illisibles car trop petits.
Raphael a écrit :
Bonjour,

Il ne s'agit pas ici d'un problème dû aux pixels (tous tes éléments ont des largeurs fluides, et ton texte en en %).
Par contre, le souci vient du fait que ton titre est en inline, et les mots passent logiquement à la ligne lorsqu'ils n'ont plus de place.

Il faudrait connaître le résultat souhaité pour pouvoir t'aider. S'il faut que le texte rentre systématiquement dans une seule ligne quelle que soit la largeur de la fenêtre, il faudra utiliser les unités de polices "vw", mais tes contenus risquent rapidement d'être illisibles car trop petits.

Même question que Raphaël sur le but recherché exactement.
Pour conserver le titre sur une seule ligne, on peut aussi le rendre non sécable via l'attribut white-space (valeur nowrap).
Pour autant que ce soit ça la finalité...
Raphael a écrit :

Il ne s'agit pas ici d'un problème dû aux pixels (tous tes éléments ont des largeurs fluides, et ton texte en en %).
Par contre, le souci vient du fait que ton titre est en inline,

mY bad j'avais pas vu!
Raphael a écrit :
Par contre, le souci vient du fait que ton titre est en inline

Oui effectivement, ça n'a rien à faire là ^^ J'avais fais des test et oublié de l'enlever Smiley confused
Mais même sans le problème reste le même Smiley confus
Bonjour !

Essayez plutôt le 'background-color' et le 'border' sur le h4...

(Mais pourquoi faire autant de contenants ?)
Smiley smile
Administrateur
Bonjour,

(après avoir enlevé ce display: inline;) il faut en effet laisser le texte passer à la ligne librement sans avoir un padding énorme autour de lui ni une bordure autour de chaque ligne et du coup pas de fond non plus (le texte est dans un élément A, c'est de lui qu'il s'agit).
Ces 3 dernières propriétés sont à déplacer sur le parent du A donc le H4.
Cela donne : http://codepen.io/anon/pen/mPozbL?editors=0100

2 autres points :
- text-align est hérité (par les enfants d'un élément pour lequel il est défini) donc inutile de le déclarer 3 fois. Une fois sur le parent suffit.
- déclarer margin: 0; (donc margin-top -right -bottom et -left à 0) puis redéclarer -top et -bottom à 120px n'est pas utile et peut même être source d'erreur (on tente de modifier margin, ça n'a pas d'effet sur -top et -bottom qui sont écrasés plus bas ou bien on déplace margin:0 plus bas et ça écrase -top et -bottom ...)
margin: 120px 0; a le même effet Smiley cligne
Bonjour,
a écrit :
pourquoi faire autant de contenants ?

a écrit :
Pourquoi un <a> dans un <h4> ?

Parce que j'y connais pas grand chose Smiley confused

J'ai essayé ton code Felipe, mais ça ne donne pas le résultat souhaité.
Je souhaiterai garder le fonctionnement actuel (comme visible ici) mais avec le texte qui va à la ligne quand nécessaire Smiley smile

Merci beaucoup pour le temps que vous passez pour ça Smiley sweatdrop
Je suis du même avis que Gcyrillus : pour encadrer un élément qui, à la base est 'inline', il faut le transformer en 'display : inline-block ' ou en 'display : block'... et mettre les arrière-plans, les bordures.. bref tout sur lui...

Dans le lien sur le site, il y a même un 'span' dans le 'a'... Mais pourquoi ?

La complexité est dans votre HTML, pas dans le CSS...
Smiley smile
Modérateur
Pourtant cela devrait avoir l'effet voulu en modifiant le contexte de formatage: upload/2857-a-inline-bl.jpg

j'ai grossi la font pour provoquer le passage à la ligne

++
Ben je sais pas pourquoi mais ça ne fonctionnait pas Smiley sweatdrop

Mais j'ai encore repris et maintenant ça marche Smiley ravi Smiley ravi

<div class="start">
<a href="./menu.html">Commencer l'identification</a>
</div>

.start	{	
	margin: 70px 0;
	text-align: center; 
}

.start a {	
	display: block;
	max-width: 350px;
	margin: auto;
	padding: 50px 10px;
	border: 1px solid #AFC415 ;
	text-decoration: none ;
	transition-duration: 0.2s;
	font-size: 120%; 
	font-family: segoe print, verdana, sans-serif; 
	font-weight: bold; 
	text-transform: uppercase; 
}


C'est bon comme ça ? ^^
Merci à vous tous Smiley biggrin