2017-10-20 21 views
0

J'ai un div umiejetnosc contient 2 div div web-development et inne. Les deux ont 2 divs qui les séparent. Je suis encore un problème avec la position du h3 dans les divs enfants.Mauvaise position de div et et ne peut pas appliquer une marge supérieure à un h3 enveloppé dans le div

J'essaye d'ajouter une marge aux entêtes h3, et le premier fonctionne mais pas le second. J'ai fait une capture d'écran avec les outils de développement de Google montrant que la marge est appliquée, mais la position de h3 est fausse. Est-ce problème avec display: block?

enter image description hereenter image description here

HTML

 <div id="umiejetnosci"> 
     <h2 class="tabStart">Umiejętności</h2> 

     <div id="web-development"> 
     <h3>Technologie Webowe</h3> 
      <div class = "nazwaUmiejetnosci">Html</div> 
      <div class = "gwiazdkiUmiejetnosci"><img src="image/skill.png"><img src="image/skill.png"><img src="image/skill.png"><img src="image/skill.png"><img src="image/noSkill.png"></div> 
      <div class = "nazwaUmiejetnosci">SS, SASS</div> 
      <div class = "gwiazdkiUmiejetnosci"><img src="image/skill.png"><img src="image/skill.png"><img src="image/skill.png"><img src="image/skill.png"><img src="image/noSkill.png"></div> 
      <div class = "nazwaUmiejetnosci">Bootstrap</div> 
      <div class = "gwiazdkiUmiejetnosci"><img src="image/skill.png"><img src="image/skill.png"><img src="image/skill.png"><img src="image/noSkill.png"><img src="image/noSkill.png"></div> 
      <div class = "nazwaUmiejetnosci">Javascript</div> 
      <div class = "gwiazdkiUmiejetnosci"><img src="image/skill.png"><img src="image/skill.png"><img src="image/skill.png"><img src="image/noSkill.png"><img src="image/noSkill.png"></div> 
      <div class = "nazwaUmiejetnosci">Jquery</div> 
      <div class = "gwiazdkiUmiejetnosci"><img src="image/skill.png"><img src="image/noSkill.png"><img src="image/noSkill.png"><img src="image/noSkill.png"><img src="image/noSkill.png"></div> 
      <div class = "nazwaUmiejetnosci">RWD</div> 
      <div class = "gwiazdkiUmiejetnosci"><img src="image/skill.png"><img src="image/skill.png"><img src="image/skill.png"><img src="image/noSkill.png"><img src="image/noSkill.png"></div> 
     </div> 

     <div id="inne"> 
      <h3>Inne</h3> 
      <div class = "nazwaUmiejetnosci">C#</div> 
      <div class = "gwiazdkiUmiejetnosci"><img src="image/skill.png"><img src="image/skill.png"><img src="image/skill.png"><img src="image/noSkill.png"><img src="image/noSkill.png"></div> 
      <div class = "nazwaUmiejetnosci">Photshop</div> 
      <div class = "gwiazdkiUmiejetnosci"><img src="image/skill.png"><img src="image/skill.png"><img src="image/skill.png"><img src="image/noSkill.png"><img src="image/noSkill.png"></div> 
      <div class = "nazwaUmiejetnosci">Unity 3D</div> 
      <div class = "gwiazdkiUmiejetnosci"><img src="image/skill.png"><img src="image/skill.png"><img src="image/skill.png"><img src="image/noSkill.png"><img src="image/noSkill.png"></div> 
      <div class = "nazwaUmiejetnosci">C++</div> 
      <div class = "gwiazdkiUmiejetnosci"><img src="image/skill.png"><img src="image/skill.png"><img src="image/noSkill.png"><img src="image/noSkill.png"><img src="image/noSkill.png"></div> 
     </div> 
    </div> 

CSS

#umiejetnosci{ 
width: 100%; 
background: #ffffff; 
overflow: auto; 
} 

#umiejetnosci h3{ 
margin: 25px 0 25px 25px; 
} 

#umiejetnosci img{ 
width: 30px; 
} 

#umiejetnosci #web-development{ 
width: 100%; 
} 

#umiejetnosci #inne{ 
width: 100%; 
} 


.nazwaUmiejetnosci{ 
width: 25%; 
text-align: right; 
font-size: 1.2em; 
padding: 10px 5% 0 0; 
float: left; 
display: inline-block; 
} 

.gwiazdkiUmiejetnosci{ 
width: 70%; 
float: left; 
display: inline-block; 
} 

Répondre

2

Le problème est que vous faites flotter les éléments .nazwaUmiejetnosci et .gwiazdkiUmiejetnosci, ce qui les éloigne du flux.

Vous devez utiliser clearfix sur le conteneur parent, de sorte que tous les éléments situés en dessous nettoient les éléments flottants et prennent leur position prévue en dessous dans leur propre "espace".

#web-development:after, #inne:after { 
    content: ""; 
    display: table; 
    clear: both; 
} 

Vous pouvez également définir une classe clearfix dans votre CSS, et vous pouvez l'appliquer à tout récipient qui a des éléments flottants, par exemple <div id="web-development" class="clearfix">

.clearfix:after { 
    content: ""; 
    display: table; 
    clear: both; 
} 

Et croyez-moi - si vous utilisez flotteurs, vous aurez besoin d'un beaucoup!

Référence pour plus d'informations: CSS Tricks - The Clearfix: Force an Element To Self-Clear its Children

0

Parce que vous utilisez le flotteur gauche, juste effacer le flotteur avant id = "inne", par exemple

...your code 
<div style="clear:both"></div> 
<div id="inne"> 
...your code 
+0

solution hein était chose si simple, drôle j'ai essayé avec claire, mais n'avez pas idée comment je foiré ça, thx, résolu – kozi

+0

@kozi Voir l'une des autres réponses pour une meilleure solution - une solution CSS est * beaucoup * préférable à l'ajout d'éléments HTML partout où vous voulez effacer un flottant. – FluffyKitten

1

Peut-être que vous pouvez essayer, pour commencer:

div{clear:both;} 

(c'est une meilleure solution que son Momo avec style - ne pas utiliser style, au meilleur).

Et pour l'appliquer seulement dans le conteneur que vous voulez:

section#myContainer div { clear: both; } 

et effacer les espaces class = "css" ->class="css". Vous pouvez les utiliser, mais les espaces sont des diables dans les programmes.

+0

Oui, vous avez raison de dire qu'une solution CSS est mieux que d'ajouter des éléments HTML ...cependant cela s'applique à * chaque * div dans le site entier - ce qui n'est certainement pas un résultat que n'importe qui voudrait :) EDIT: Aussi, il n'y a pas de problème avec des espaces autour du '=' dans 'class =" css "' ... C'est un choix stylistique et certaines personnes pensent que c'est plus facile à lire. – FluffyKitten

+0

@FluffyKitten. Pour ne pas s'appliquer à toutes les div, il est facile de les placer dans un conteneur: 'section # my_container div {clear: both;}'. Aucun problème avec les espaces jusqu'à ce que vous reg-recherche vos classes ou vos attributs de tag. Les espaces sont les diables du programme. ;-) Je suis d'accord, j'ai pensé;) –

+0

Oui, je sais cela, mais vous devez l'inclure dans votre réponse pour les utilisateurs qui ne le font pas - beaucoup d'utilisateurs de Stack Overflow sont inexpérimentés et apprennent simplement, donc nous ne pouvons pas supposer qu'ils ont la connaissance ou l'expérience de le savoir. – FluffyKitten