28172 sujets

CSS et mise en forme, CSS3

Bonjour,voilà j'ai un problème que je n'arrive pas à régler et j'espère que vous allez pouvoir m'aider Smiley smile .
Dans mon code html ,j'ai une balise aside à droite d'une galerie de 9 images,lors du redimensionnement(réduction de la fenêtre),ma galerie passe de 4 à 3 colonnes,la balise aside elle glisse à gauche en suivant la galerie,mais lorsque ma galerie arrive sur 2 colonnes,mon aside plonge en bas,comment faire pour qu'il reste sur la même hauteur.Je dois faire en sorte par la suite qu'à 800 pixels de large,mon aside plonge cette fois ci en bas de cette gallerie à gauche entre celle-ci et le bandeau.
Je dois utiliser les media queries ou bootstrap que je ne connais pas bien.
pour le aside qui termine en bas de la gallerie à gauche,cela dois se faire sur téléphone,
dois-je créer deux @media? un pour les portables et l'autre pour les écrans normaux?
upload/1494779479-63519-img.jpg
Modifié par Ildegan29 (14 May 2017 - 18:53)
quelqu'un peut t'il m'aider
dois-je mettre mon aside en position:relative;?
Modifié par Ildegan29 (14 May 2017 - 18:57)
J’ai réussi à obtenir quelque chose de satisfaisant comme ça :
https://codepen.io/Duchampignon/pen/Qvxjvg
Seul bémol, l’aside passe sous la galerie avant la limite des 800px, mais je pense qu’on peut régler ça en flexbox.
Et désolé pour la mise en forme plus que basique Smiley smile

PS: le display: table est le seul moyen que j’ai trouvé pour que les blocs prennent le moins de place possible.
Modifié par Duchampignon (14 May 2017 - 20:41)
Non, je n’ai pas utilisé les media-queries, car les inline-block fonctionnent très bien tout seuls, mais je n’arrive pas à ce que l’aside aie le comportement que tu attends.
Je pensais faire ça avec des media-queries et du flexbox, mais cela crée un conflit avec l’astuce du display:table que j’ai utilisée...
Il faut encore que je regarde ça un moment.
Par ailleurs, si quelqu’un a une solution autre que display-table, elle est bienvenue !
Merci encore,effectivement ça ne se bouscule pas aux portillons pour répondre. Smiley smile
Modifié par Ildegan29 (14 May 2017 - 22:55)
Ildegan29 a écrit :
Merci encore,effectivement ça ne se bouscule pas aux portillons pour répondre. Smiley smile

En principe, quand il n'y a pas de code de départ, les gens ne répondent pas sur ce forum. Parce que bon, apporter des réponses dans le vide...

Pour pouvoir répondre correctement il faudrait que les gens connaissent la structure html du site. Par exemple la galerie et son titre sont-elles séparées de l'aside par une div (ou un autre élément html) ? Pour pouvoir proposer une solution propre il faudrait qu'elle le soit.

On pourrait alors ensuite appliquer à la galerie une solution de grille comparable à celle-ci (ici en flexbox mais ce n'est pas obligé) : Example layout for photoblog
<!DOCTYPE html>
<html lang="fr"><!-- Ouverture de la balise langage html. -->
<head><!--La balise head permet l'insertion d'une balise titre et de lier une feuille de style
ou les références javascript utilisées au document.
-->

<!-- Spécifie l'encodage des caractéres(par exemple chinois,russe etc...) -->
<meta charset="utf-8" />

<!-- Permet d'attacher la feuille de style css à la page html. -->
<link rel="stylesheet" href="style.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1">

<!-- Titre de la page du site obligatoire. -->
<title>Ma Gallerie</title>
</head>


<body><!-- Ici le body contiendra à la fois la balise header,l'article,l'élément aside et le pied de page. -->

<!-- Header contient une div class identifié par l'id bandeau contenant la balise titre h1(ma gallerie) et le navigateur
et ses trois composants insérés dans une balise ul li de classe tiret.-->
<header>
<div class id="bandeau">
<div class id="texteg"><a href="Page1.html"><h1>MA GALERIE</h1></a></div>
<nav>
<ul>
<li class="tiret"><a href="Page3.html">ME CONTACTER</a></li>
<li class="tiret"><a href="Page4.html">LIENS</a></li>
<li><a href="Page2.html">MON PROFIL</a></li>
</ul>
</nav>
</div>
</header>

<!-- La balise article regroupe le corps de la page du site,qui est constitué d'une class div d'id titre contenant
la balise titre h2 contenant MES DERNIÈRES ŒUVRES ainsi q'un paragraphe qui permet de commenter la galerie d'image qui suit,le tout faisant parti intégrante de l'article,cette gallerie d'images est implémentée dans une balise ul li de classe "zoomarticle" contenant une div class="article_big_img" ainsi que les miniatures des images(<img src=) et en cliquant sur ses derniéres l'accés à la version hd de ses images en étant redirigé vers le site de la gallerie(<a href>).-->
<article>
<!-- Ouverture de la balise article -->

<header id="intro">

<h2>MES DERNIÈRES ŒUVRES</h2>

<p>Voici les derniéres oeuvres que j'ai réalisées,je vous invite à les consulter. Chacune d'elle demande plusieurs jours de travail, sans compter les recherches préalables. N'hésitez pas à me contacter si vous souhaitez faire l'acquisition de l'une d'entre elles ou tout simplement pour obtenir des renseignements sur les dimensions ou tout autre détail.</p>
</header>

<!--Galerie intégrée dans une balise ul de classe "images",contenant une balise li et une div respectivement de classe "zoomarticle"
et"article_img" -->

<ul class="images">
<li class="zoomarticle" data-price="120" data-description="TEMPETE EN PLEIN CIEL">
<div class="article_img"></div>
<a href="http://lorempixel.com/800/800/abstract/1/"><img src="http://lorempixel.com/200/200/abstract/1/" alt="Tempete en plein ciel"/></a>


<li data-price="63" data-description="TRIANGLE DE COULEURS">
<div>
<a href="http://lorempixel.com/800/800/abstract/2/"><img src="http://lorempixel.com/200/200/abstract/2/" alt="Triangle de couleurs"></a>
</div>
</li>

<li data-price="230" data-description="TABLEAU ABSTRAIT">

<div>
<a href="http://lorempixel.com/800/800/abstract/3/"><img src="http://lorempixel.com/200/200/abstract/3/" alt="Tableau abstrait"></a>
</div>
</li>

<li data-price="94" data-description="LUMIERES DE NUIT">
<div>
<a href="http://lorempixel.com/800/800/abstract/4/"><img src="http://lorempixel.com/200/200/abstract/4/" alt="Lumieres de nuit"></a>
</div>
</li>

<li data-price="108" data-description="ARBRES D'AUTOMNE">
<div>
<a href="http://lorempixel.com/800/800/abstract/5/"><img src="http://lorempixel.com/200/200/abstract/5/" alt="Arbres d'automne"></a>
</div>
</li>

<li data-price="146" data-description="LA VIE EN ROSE">
<div>
<a href="http://lorempixel.com/800/800/abstract/6/"><img src="http://lorempixel.com/200/200/abstract/6/" alt="La vie en rose"></a>
</div>
</li>

<li data-price="856" data-description="LUMIERES SUR LE LAC">
<div>
<a href="http://lorempixel.com/800/800/abstract/7/"><img src="http://lorempixel.com/200/200/abstract/7/" alt="Lumieres sur le lac"></a>
</div>
</li>

<li data-price="485" data-description=" FEUILLES DE TEMPETE">
<div>
<a href="http://lorempixel.com/800/800/abstract/8/"><img src="http://lorempixel.com/200/200/abstract/8/" alt="Feuilles de tempete"></a>
</div>
</li>

<li data-price="756" data-description="SCINTILLEMENT LUMIERES">
<div>
<a href="http://lorempixel.com/800/800/abstract/9/"><img src="http://lorempixel.com/200/200/abstract/9/" alt="Scintillement lumiere"></a>
</div>
</li>
</ul>
</article>

<!-- fermeture de la balise article -->

<!-- L'élément aside qui est ici un complément d'information peut se trouver aprés la balise article
dans l'ordre hiérarchique, il contient plusieurs balises h2 h3 et h4,ainsi que des éléments div apportant des informations en complément pour joindre par mail ou par courrier le propriétaire des oeuvres, ainsi q'un lien(<a href=) permettant d'envoyer un message par mail.-->

<!-- div class "infos","oh","price" et "description" nécessaire au fonctionnement de l'animation jquery
et demandé dans la consigne pour deux d'entre elles-->



<aside>
<h2>CONTACT</h2>
<h3>Par mail</h3>
<h4><a href="mailto:jl.godasse@gmail.com">jl.godasse@gmail.com</a></h4>
<h3>Par courrier</h3>
<div>Jean-Luc Godasse</div>
<address>12 rue du cherche-midi</address>
<div>13008 Marseille</div>
</aside>

<div class="infos">
<div class="oh"></div>
<div class="price"></div>

<div class="oh"></div>
<div class="description"></div>
</div>
<!--Le footer ou pied de page contient le copyright du propriétaire.-->
<footer><p>© 2015 Jean-Luc Godasse</p></footer>

</body><!-- fermeture de la balise contenant body -->
</html><!-- fermeture de la balise language html -->
@charset "utf-8";
/* css Document */

/* css commun à toutes les pages */

body {

max-width: 1600px;
border-width: 0;
margin-left: -5px;
font-family: "HelveticaNeue",Helvetica, Arial, sans-serif;
font-weight : normal;
font-size: 93%;
margin-left: 10%;
margin-right: 20%
height: 100%;
}

/* css commun à toutes les pages */

header {
font-size: 75%;
}

/* css commun à toutes les pages */
div#bandeau {
width: 1338px;
height:91px;
background-color: #6793D4;
text-decoration: none;
text-indent: 10px;
margin-top: -28px;
margin-left: 5px;
margin-right: 0px;
clear:both;
}

/* css commun à toutes les pages */
nav {
text-align: right;
margin-top: -4px;
margin-right:22px;
margin-bottom: 0px;
position: relative; top :-2px;
position: relative; right : 0px;
font-size: 104%;
}

/* css commun à toutes les pages */
h1 {
font-weight: normal;
position: relative; top :24px;
position: relative; left :12px;
font-size: 217%;
color: white;
font-size: 268%;
margin-top: 28px;
}

/* css commun à toutes les pages */
h1::first-letter {
font-size: 124%;
}

/* css commun à toutes les pages */

.tiret::before{
content:'-';
margin: 0 8px;
}

/* css commun à toutes les pages */

div#titre {

margin-left: 23px;
padding:0 10px 0 0;
margin-top: 25px;
}

/* css commun à toutes les pages */

div#titre h2 {
margin-top:-4px;
}

/* css commun à toutes les pages */

a {
text-decoration: none;
}

header nav ul li {

font-size: 117%;

}


/* css commun à toutes les pages */

h2 {

font-weight: lighter;
font-size: 245%;
line-height:32px;

}

header p {
max-width: 941px;
margin-left: 28px;
}

header h2 {
margin-left: 30px;
margin-top: 83px;
}

#intro {
margin-top: 280px;
}

/* css commun à toutes les pages */
h3 {
font-size: 175%;
font-weight: normal;
line-height:5px;
}

/* css commun à toutes les pages */

h4 {

font-size: 90%;
font-weight: lighter;

}

/* css commun à toutes les pages */
header li {
color: white;
}


header li a {
color: white;
}

header h2 p {
font-size: 200%;
}

p {
font-size: 126%;
}

/* css propre à la page 1 */

article{

margin-left: -11px;
margin-top: -235px;
}

ul.images li {

height: auto;
float: left;
margin-bottom: 30px;
margin-left: 30px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
list-style: none;
display: inline-block;
margin-top: -5px;
box-shadow: 0px 0px 5px 2px #999999;
-webkit-box-shadow: 0px 0px 5px 2px #999999;
-moz-box-shadow: 0px 0px 5px 2px #999999;
text-align: left;
padding: 0;
-webkit-transition: 0.2s linear;
-moz-transition: 0.2s linear;
-o-transition: 0.2s linear;
transition: 0.2s linear;
}

ul.images li:hover {

box-shadow:4px 4px 19px 5px #999999;
-webkit-transform: translate(-5px,-5px);
-moz-transform: translate(-5px,-5px);
-o-transform: translate(-5px,-5px);
-ms-transform: translate(-5px,-5px);
overflow: visible;
}

/* css propre à la page 1 */

img {
width: 200px;
height: 200px;
padding: 0px;
vertical-align: bottom;
height: auto;
overflow: visible;
}

/* css commun à toutes les pages */
ul {
list-style-type: none;
margin-left: 55px;
height: auto;
max-height: 100%;
max-width: 100%;
min-width: auto;

}

/* css commun à toutes les pages */
ul li{
float: right;
margin-right: 0px;
position: relative; top :-19px;
position: relative; right: 3px;
}

/* css commun à toutes les pages */

ul li a {
text-decoration: none;
}

/* css commun à toutes les pages */
aside {
font-weight: normal;
float: right;
margin-right: 420px;
margin-top: -870px;
font-size: 92%;
top:80px;
}

aside h2 {
font-size: 204%;
}


/* css commun à toutes les pages */

.aside> div{
line-height: 17px;
font-size: 91%;
}




/*classes de la page 1 */
.infos {
padding: 10px 0;
}

.oh {
overflow: hidden;
}


.price {
text-align: right;
font-size: 23px;
height: 23px;
line-height: 50px;
transform: translateY(100%);
transition: all 300ms;
margin-right: 455px;
margin-top: -620px;
}


.description {
text-align: right;
font-size: 14px;
max-width: 300px;
margin: 0 auto;
transform: translateY(100%);
transition: all 300ms;
margin-right: 420px;
margin-top: -38px;
}

/* footer commun à toutes les pages */
footer {
font-size: 84%;
text-align: left;
margin-left: 5px;
text-indent: 10px;
width: 1338px;
height:72px;
background-color: #6793D4;
clear:both;
position: relative;
bottom:-86px;
}


footer p{
color: white;
position: relative; bottom :-28px;
margin-left: 15px;
}


/* éléments liés à l'utilisation de jquery en page 1 */
a {
color: #87CEEB;
}

.images{
margin-top: 48px;
display: inline-block;
}

ul.images {
list-style: none;
padding: 0;
margin-left: 32px;
max-width: 920px;
overflow: visible;
display: inline-block;
}

img {
position: relative;
z-index: 0;
display: block;
height: auto;
width: 100%;
margin: 0 auto;
}

@media all and (max-width:614px) and (max-width: 1400px)
{
html
{
width: auto;
}

header nav ul {
margin-right: 586px;
}

#intro p {
max-width: 450px;
}

ul.images {
max-width: 570px;
min-width: auto;
}

aside {
width: 100%;
border-right: none;
border-left: 0px;
margin-left: 0px;
margin-right:-15px;
margin-top: 0px;
}
}
Modifié par Ildegan29 (15 May 2017 - 09:25)
Voilà j'ai mis mon html et css,je veux juste que la page soit responsive,même si au final à part le aside le texte, la galerie se réordonne ainsi que le nav(même si la aside chevauche la galerie ce que je ne veux pas.Merci encore de votre aide. Smiley smile
Modifié par Ildegan29 (15 May 2017 - 09:26)
Oulà... as-tu généré ton code avec un programme ? Ou utilisé un exemple de code ? Parce qu’il y a des traces de JQuery, alors que tu ne nous a pas fourni de code de ce genre... et qu’il n’y en aurait pas forcément besoin Smiley confus
oui j'ai utilisé jquery et je n'ai pas généré avec un programme ce code(ce n'est pas un exemple),je l'ai fait à partir de sublimetext, j'en avais besoin pour le survol des images,mais je ne l'ai pas donné.
Le Voici :

var timeout = false;
$('ul.images li').on('mouseenter', function(){
clearTimeout(timeout);
var price = $(this).data('price').toLocaleString('fr', {
minimumFractionDigits: 2,
style: 'currency',
currency: 'EUR'
}),
description = $(this).data('description');
$('.infos .price').text(price);
$('.infos .description').text(description);
setTimeout(function(){
$('.infos .price, .infos .description').addClass('visible');
});
});
$('ul.images li').on('mouseleave', function(){
$('.infos .price, .infos .description').removeClass('visible');
timeout = setTimeout(function(){
$('.infos .price, .infos .description').text('');
}, 300);

});
Modifié par Ildegan29 (15 May 2017 - 17:38)
quelqu'un a t'il eu une brillante idée?,j'ai tenté diverses méthodes,mais je n'y suis pas encore parvenu Smiley smile
Modifié par Ildegan29 (16 May 2017 - 00:09)
Modérateur
Coucou,

Désolé j'ai pas trop le temps ce matin donc je te poste une proposition vite fait : https://jsfiddle.net/e6nob5z6/

Les seuls soucis que j'y vois sont :
- avoir une taille fixe pour ton aside pour le calc(100% - taille du aside + marge)
- utiliser un min-width fixé a 2 fois la taille es images pour arreter le truc. On peut effectivement jouer avec les media queries en disant qu'en dessous d'une certaine largeur d'écran le . content passe en width:100%; (le blco aside ira automatiquement en dessous).

Bonne journée
Merci_Laurent,j'ai essayé d'appliquer ta méthode à mon css,mais je n'y suis pas arrivé
car il faut dans un premier temps que le aside glisse proche du texte pour ensuite à 800px descendre en bas,sans pour autant déborder sur le texte et la galerie(ce que je n'arrive pas à obtenir).
En essayant avec @media min 800px et max 1600px avec aside à une certaine hauteur margin top, je réussis à le maintenir à la même hauteur que le texte mais ensuite,il empiète sur la galerie et attend d'être à l'extrême gauche de la page pour descendre.Merci en tout cas de ton contribution Smiley cligne .
Modifié par Ildegan29 (16 May 2017 - 13:13)