2016-07-22 2 views
-1

J'ai trois éléments que je veux conserver au même endroit lorsque l'image rétrécit de façon sensible.Positionnement dynamique des éléments Absolument sur l'arrière-plan

.main 
 
{ 
 
\t position: relative; 
 
} 
 

 
.container 
 
{ 
 
\t display: inline; 
 
} 
 

 
.point 
 
{ 
 
\t display: inline; 
 
    position: absolute; 
 
\t max-width: 15%; 
 
\t margin-right: 10px; 
 
\t padding: 3px 7px 3px 5px; 
 
\t font-size: 12px; 
 
\t font-weight: bold; 
 
\t color: #fff; 
 
\t background: #ff0000; 
 
\t border-radius(5px); 
 
\t box-shadow(1px 2px 5px rgba(0,0,0,0.5)); 
 
} 
 

 
.one 
 
{ 
 
\t top: 40%; 
 
\t left: 10%; 
 
} 
 

 
.two 
 
{ 
 
\t top: 50%; 
 
\t left: 40%; 
 
} 
 

 
.three 
 
{ 
 
\t top: 75%; 
 
\t left: 20%; 
 
}
<div class="main"> 
 
    <div class="container"> 
 
    <div class="point one">1</div> 
 
    <div class="point two">2</div> 
 
    <div class="point three">3</div> 
 
    </div> 
 
    <img src="https://i.ytimg.com/vi/M5SHKCxKDgs/hqdefault.jpg" alt="Husky"> 
 
</div>

+1

@DeepakYadav Je rollbacked votre édition comme dans inappropriée. Des modifications telles que celles-ci; qui essaie de corriger la question; ne sont pas les bienvenus sur SO car ils changent la question réelle. Si vous avez d'autres questions ou avez des questions, s'il vous plaît allez poser des questions à ce sujet sur meta. –

+0

@ FélixGagnon-Grenier Aucun problème. Si vous l'avez trouvé inapproprié. il pourrait y avoir une raison à cela. c'est bon. Merci de le faire :) –

+0

@DeepakYadav génial! En regardant dans votre histoire je me suis rendu compte que ce n'est pas votre habitude. acclamations –

Répondre

2

Je crois que vous le voulez aussi à l'échelle que les échelles image vers le bas réactive, de sorte que cette mesure permet cet effet.

.wrapper { 
 
     position: relative; 
 
     display: inline-block; 
 
    } 
 
    
 
    .wrapper img { max-width: 100%; } 
 
    
 
    .point 
 
    { 
 
     position: absolute; 
 
    \t max-width: 15%; 
 
    \t margin-right: 10px; 
 
    \t padding: 3px 7px 3px 5px; 
 
    \t font-size: 12px; 
 
    \t font-weight: bold; 
 
    \t color: #fff; 
 
    \t background: #ff0000; 
 
    \t border-radius(5px); 
 
    \t box-shadow(1px 2px 5px rgba(0,0,0,0.5)); 
 
    } 
 
    
 
    .one 
 
    { 
 
    \t top: 40%; 
 
    \t left: 10%; 
 
    } 
 
    
 
    .two 
 
    { 
 
    \t top: 50%; 
 
    \t left: 40%; 
 
    } 
 
    
 
    .three 
 
    { 
 
    \t top: 75%; 
 
    \t left: 20%; 
 
    }
<div class="main"> 
 
    <span class="wrapper"> 
 
    <img src="https://i.ytimg.com/vi/M5SHKCxKDgs/hqdefault.jpg" alt="Husky"> 
 
    <span class="point one">1</span> 
 
    <span class="point two">2</span> 
 
    <span class="point three">3</span> 
 
    </span> 
 
</div>

J'utilise inline-block pour autoriser automatiquement l'élément wrapper à « envelopper » autour de l'image peu importe la taille de l'image est. J'ai également mis max-width: 100% pour transformer l'image en une image réactive (bien, il réduit juste quand la fenêtre redimensionne). Comme les points sont tous basés sur%, ils restent dans la bonne position lorsque l'image est réduite.

✔ Aucune exigence d'avoir une largeur de l'image fixe et hauteur/emballage, il est donc sensible
✔ Moins HTML requis
✔ Fonctionne sur à peu près tous les navigateurs en plus les anciens non pris en charge

C'est une belle astuce que je J'ai l'habitude de faire des choses comme des "bannières" à travers des images et d'autres techniques pour positionner les choses sur des images pour obtenir des effets.

+0

C'est tellement bizarre! Cela fonctionne séparément, mais lorsque j'applique les correctifs à mon code existant, cela ne fonctionne toujours pas. Eh bien, je suppose que je dois faire plus de bricolage. Un gagnant c'est toi! – HuskyBlue

+0

Cochez Dev Tools dans le navigateur et vérifiez que l'élément "wrapper" a 'position: relative' et' display: inline-block' car c'est la clé pour le faire fonctionner. – kamranicus

0

Faites votre récipient en position relative et définir une hauteur et la largeur sur elle depuis l'enfant de votre conteneur est absolu. Faites également votre image positop absolue et top 0. Voir l'extrait.

.container 
 
{ 
 
    width: 480px; 
 
    height: 360px; 
 
    position: relative; 
 
    z-index: 100; 
 
\t position: relative; 
 
} 
 
.main img{ 
 
position:absolute; 
 
top:0;} 
 

 
.point 
 
{ 
 
\t display: inline; 
 
    position: absolute; 
 
\t max-width: 15%; 
 
\t margin-right: 10px; 
 
\t padding: 3px 7px 3px 5px; 
 
\t font-size: 12px; 
 
\t font-weight: bold; 
 
\t color: #fff; 
 
\t background: #ff0000; 
 
\t border-radius(5px); 
 
\t box-shadow(1px 2px 5px rgba(0,0,0,0.5)); 
 
} 
 

 
.one 
 
{ 
 
\t top: 40%; 
 
\t left: 10%; 
 
} 
 

 
.two 
 
{ 
 
\t top: 50%; 
 
\t left: 40%; 
 
} 
 

 
.three 
 
{ 
 
\t top: 75%; 
 
\t left: 20%; 
 
}
<div class="main"> 
 
    <div class="container"> 
 
    <div class="point one">1</div> 
 
    <div class="point two">2</div> 
 
    <div class="point three">3</div> 
 
    </div> 
 
    <img src="https://i.ytimg.com/vi/M5SHKCxKDgs/hqdefault.jpg" alt="Husky"> 
 
</div>

0

Définissez la largeur et la hauteur de votre tag img.

.main 
 
{ 
 
\t position: relative; 
 
} 
 

 
.container 
 
{ 
 
\t display: inline; 
 
} 
 

 
.point 
 
{ 
 
\t display: inline; 
 
    position: absolute; 
 
\t max-width: 15%; 
 
\t margin-right: 10px; 
 
\t padding: 3px 7px 3px 5px; 
 
\t font-size: 12px; 
 
\t font-weight: bold; 
 
\t color: #fff; 
 
\t background: #ff0000; 
 
\t border-radius(5px); 
 
\t box-shadow(1px 2px 5px rgba(0,0,0,0.5)); 
 
} 
 

 
.one 
 
{ 
 
\t top: 40%; 
 
\t left: 10%; 
 
} 
 

 
.two 
 
{ 
 
\t top: 50%; 
 
\t left: 40%; 
 
} 
 

 
.three 
 
{ 
 
\t top: 75%; 
 
\t left: 20%; 
 
} 
 
img{ 
 
    width:100%; 
 
    height:100%; 
 
}
<div class="main"> 
 
    <div class="container"> 
 
    <div class="point one">1</div> 
 
    <div class="point two">2</div> 
 
    <div class="point three">3</div> 
 
    </div> 
 
    <img src="https://i.ytimg.com/vi/M5SHKCxKDgs/hqdefault.jpg" alt="Husky"> 
 
</div>