2017-05-10 1 views
0

J'essaie de créer une boîte de nouvelles où il y aura une div contenant une image sur la gauche et une div contenant des lignes de texte sur la droite. Chaque fois que je les mets en ligne, le texte passe juste sous l'image div et reste là. Je veux qu'ils soient dans une seule ligne. Voici mon code, pouvez-vous indiquer ce que je fais mal?Affichage: inline-block ne fonctionne pas avec divs

EDIT: Correction du TYPO, mais encore ...

<div id="newsBox"> 

             <div id="newsImg"> 
              <img src="images/news1.jpg" alt="news1"> 
             </div> 

             <div class="metaNews"> 
              <div id="newsTitle"> 
               <h3>Text Text Text Text Text Text Text Text .</h3> 
              </div> 

              <div class="newsBrief"> 
               <p>Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text </p> 
              </div> 
             </div> 
             <div style="clear:both"></div> 

             <div class="newsBy"> 
              <span class="metaDate">Posted on 10/5/2017</span> 
              <span class="metaBy">By Li</span> 
             </div> 

             <div class="newsLink"> 
              <a href="news1.html">View &rarr;</a> 
             </div> 
             <div style="clear:both"></div> 

           </div> 

Et le CSS:

#newsBox { 
    width: 85%; 
    margin: 0.5rem auto; 
    padding: 0.5rem; 
    border: #333 solid 1px; 
    background-color: #c2c2c2; 
} 

#newsImg { 
    display:inline-block; 


} 
#newsImg > img{ 
    max-width: 120px; 
    max-height: 120px; 
    padding-right:20px; 
    vertical-align: middle; 
} 
.metaNews{ 
    text-align:center; 
    display:inline-block; 

} 
#newsTitle { 

} 
.newsBy { 
    display:inline-block; 
} 
.newsLink { 
    float:right; 
    width: 6rem; 
    text-align: center; 
    background-color: #2F4F4F; 
} 
.newsLink a{ 
    font-family: 'Play', sans-serif; 
    color: #fff; 
    text-decoration: none; 

}

+0

Pour commencer il y a une faute d'orthographe, vous avez écrit 'display: inline-blockl' – phpheini

+0

Corrigé cela mais toujours. –

Répondre

1

Vous avez une faute de frappe dans:

.metaNews{ 
    text-align:center; 
    display:inline-blockl 

} 

inline-blockl ha s l supplémentaire au lieu d'un ;

.metaNews{ 
    text-align:center; 
    display:inline-block; 

} 

jsfiddle (vous devez étirer la fenêtre de résultat un peu pour laisser assez de largeur pour voir les résultats que vous voulez)

+0

Corrigé mais toujours .. Des idées? –

+0

Ça me va quand je le lance sur jsfiddle. –

0

Enroulez le divs <div id="newsImg">, <div class="metaNews"> en utilisant un div et définissez display sur flex.

#newsBox { 
 
    width: 85%; 
 
    margin: 0.5rem auto; 
 
    padding: 0.5rem; 
 
    border: #333 solid 1px; 
 
    background-color: #c2c2c2; 
 
} 
 

 
#newsImgWrapper { 
 
    display: flex; 
 
} 
 

 
#newsImg { 
 
    display: inline-block; 
 
} 
 

 
#newsImg>img { 
 
    max-width: 120px; 
 
    max-height: 120px; 
 
    padding-right: 20px; 
 
    vertical-align: middle; 
 
} 
 

 
.metaNews { 
 
    text-align: center; 
 
    display: inline-block; 
 
} 
 

 
#newsTitle h3{ margin:0;} 
 

 
.newsBy { 
 
    display: inline-block; 
 
} 
 

 
.newsLink { 
 
    float: right; 
 
    width: 6rem; 
 
    text-align: center; 
 
    background-color: #2F4F4F; 
 
} 
 

 
.newsLink a { 
 
    font-family: 'Play', sans-serif; 
 
    color: #fff; 
 
    text-decoration: none; 
 
}
<div id="newsBox"> 
 
    <div id="newsImgWrapper"> 
 
    <div id="newsImg"> 
 
     <img src="images/news1.jpg" alt="news1"> 
 
    </div> 
 

 
    <div class="metaNews"> 
 
     <div id="newsTitle"> 
 
     <h3>Text Text Text Text Text Text Text Text .</h3> 
 
     </div> 
 

 
     <div class="newsBrief"> 
 
     <p>Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text </p> 
 
     </div> 
 
    </div> 
 
    </div> 
 
    <div style="clear:both"></div> 
 

 
    <div class="newsBy"> 
 
    <span class="metaDate">Posted on 10/5/2017</span> 
 
    <span class="metaBy">By Li</span> 
 
    </div> 
 

 
    <div class="newsLink"> 
 
    <a href="news1.html">View &rarr;</a> 
 
    </div> 
 
    <div style="clear:both"></div> 
 

 
</div>

+0

Le problème avec cela est qu'il place chaque bloc dans une seule ligne, même les secondes "newsBy" et "newsLink". Pourquoi? Aussi, merci beaucoup d'avoir répondu. –

0

Le problème est que vous utilisez display: inline-block, Sans largeur d'utilisation, display: inline-block ne fonctionne pas sans utiliser la largeur de réglage,

J'ajouté ces propriétés: width: 50% à #newsImg sélecteur et à .metaNews,

Voici un exemple courant dans jsFiddle

+0

J'ai essayé cela et cela a fonctionné, mais il y a des écarts entre l'image et le haut de l'image. Puis-je résoudre ce problème? Aussi, pourquoi avons-nous besoin de définir la largeur? Ne peuvent-ils pas travailler dans un ensemble fixe? Merci beaucoup d'avoir répondu. –

+0

La position de l'image est en bas cause de l'alignement vertical, j'ai ajouté cette propriété 'vertical-align: top' au sélecteur' # newsImg', Et pour la question c'est besoin largeur cause la propriété 'inline-block' a besoin de largeur cause son bloc, sinon vous pouvez utiliser juste la propriété 'inline', Et cela fonctionnera sans spécifier la largeur. [jsFiddle] (https://jsfiddle.net/4x3vw0z4/6/) –

+0

Cela a fonctionné, merci! –