Über das responsive Kalenderbild möchte ich einen Text mit dem Datum haben. Wenn die Größe des Bildschirms bis zu dem Punkt geändert wird, an dem die Größe des Bilds beginnt, sollte auch der Text über diesem Bild in der Größe angepasst werden, damit es relativ zur Bildbreite und -höhe gleich bleibt. Responsive Textgröße mit absoluter Position über Bild
Ich habe erreicht, dass durch mit Hilfe von Javascript, da ich nicht in der Lage war, es mit CSS nur zu tun. Meine Frage ist, wie kann ich das nur mit CSS machen? Ist es möglich? Wenn ja, bitte zeigen Sie, dass in dem Code, den ich an der Geige erstellt haben:
https://jsfiddle.net/bej0od7r/
HTML:
<div class="datePictureHolder">
<img class="img-responsive" alt="News Icon" src="http://shrani.si/f/u/13K/4rB6HshN/news-icon.png"/>
<div class="datePictureText">
<div class="year">2017</div>
<div class="day">25. Feb</div>
</div>
</div>
JAVASCRIPT
ResizeDateIcons();
window.onresize = function() {
ResizeDateIcons();
};
function ResizeDateIcons() {
// constants
var imageWidth = 150; // width and height must be the same
var dayTextSize = 36; // text size on maximum image width
var yearTextSize = 23; // text size on maximum image width
var yearLineHeigh = 70;
//
var allImages = document.getElementsByTagName("img");
var allDayTexts = document.getElementsByClassName("day");
var allYearTexts = document.getElementsByClassName("year");
var j = 0;
for (var i = 0; i < allImages.length; i++) {
if (allImages[i].alt === "News Icon") {
allDayTexts[j].style.fontSize = (allImages[i].width/imageWidth) * dayTextSize + "px";
allYearTexts[j].style.fontSize = (allImages[i].width/imageWidth) * yearTextSize + "px";
allYearTexts[j].style.lineHeight = (allImages[i].width/imageWidth) * yearLineHeigh + "px";
j++;
}
}
}
CSS:
.datePictureHolder {
position: relative;
display: inline-block;
}
.datePictureText {
position: absolute;
left: 0;
top: 5%;
width: 100%;
text-align: center;
color: white;
}
.datePictureText .year {
font-size: 23px;
line-height: 70px;
}
.datePictureText .day {
font-size: 36px;
font-weight: bold;
}
.img-responsive {
display: block;
max-width: 100%;
height: auto;
}
erreichen, ehrlich zu sein, ich Ich denke, du könntest das nur mit CSS erreichen. https://css-tricks.com/viewport-sized-typography/ – Luke
versuchen Sie Medienabfrage oder em. – Prabhakaran
@Luke, was Sie vorschlagen, ist die Schriftgröße basierend auf View-Port zu ändern. Das Bild wird nicht so skaliert. – tilenslo