2016-07-22 31 views
-1

Ich habe drei Elemente, die ich am selben Ort aufbewahren möchte, an dem das Bild ansprechend schrumpft.Responsive Positionierung von Elementen absolut über dem Hintergrund

.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 rollbacked ich Ihre bearbeiten, wie es in unangemessen. Bearbeitungen wie diese; die versuchen, die Frage zu korrigieren; sind auf SO nicht willkommen, da sie die eigentliche Frage ändern. Wenn Sie weitere Fragen haben oder Fragen haben, wenden Sie sich bitte an meta. –

+0

@ FélixGagnon-Grenier Keine Ausgaben bro. Wenn du es unangebracht gefunden hast. dafür könnte es einen Grund geben. Es ist in Ordnung. Danke dafür :) –

+0

@DeepakYadav great! Ich habe in Ihrer Geschichte gesehen, dass dies in der Tat keine Gewohnheit von Ihnen ist. Prost –

Antwort

2

Ich glaube, Sie wollen es auch als das Bild skaliert in Reaktion darauf nach unten skalieren, so dass dies wird erreicht, dass Wirkung.

.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>

ich inline-block bin mit automatisch erlauben dem wrapper Element egal um das Bild zu „verpacken“, welche Größe das Bild. Ich setze auch max-width: 100%, um das Bild in ein reagierendes Bild zu verwandeln (gut, es verkleinert sich gerade, wenn das Fenster die Größe ändert). Da die Punkte alle% -basiert sind, bleiben sie in der richtigen Position, wenn das Bild verkleinert wird.

✔ keine Anforderung eine feste Breite zu haben und Höhenbild/Wrapper, so ist es als Reaktion
✔ Weniger HTML erforderlich
✔ Funktioniert auf so ziemlich jedem Browser neben nicht unterstützten alten

Das ist ein schöner Trick, den ich bin es gewohnt, Dinge wie "Banner" über Bilder und andere Techniken zu machen, um Dinge über Bilder für Effekte zu positionieren.

+0

Das ist so komisch! Es funktioniert separat, aber wenn ich die Korrekturen auf meinen vorhandenen Code anwende, funktioniert es immer noch nicht. Naja, ich denke, ich muss noch etwas basteln. Ein Gewinner bist du! – HuskyBlue

+0

Überprüfen Sie Dev Tools im Browser und überprüfen Sie, ob das "wrapper" -Element eine 'position: relative' und' display: inline-block' aufweist, da dies der Schlüssel zum Funktionieren ist. – kamranicus

0

Machen Sie Ihre Behälter als Position relativ und stellen eine Höhe und Breite auf sie, da das Kind Ihres Container absolut ist. Machen Sie auch Ihre Bild absolute Positop und Top 0. Siehe Snippet.

.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

Legen Sie Breite und Höhe für Ihr img-Tag fest.

.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>