Hilfe CSS HTML?

1 Antwort

1) Die Bildgröße kannst du via CSS dem umgebenden Container anpassen. Eine vertikale Ausrichtung klappt via Flexbox und align-items.

Beispiel:

Im Markup werden zunächst alle Elemente ihrer Reihenfolge entsprechend in einem nav-Element aufgelistet. Die Bilder liegen in extra Containern, über die Attribute height und width kann der Browser das Seitenverhältnis des jeweiligen Bilds berechnen.

<nav class="navigation">
  <div class="logo">
    <img alt height="643" src="..." width="857">
  </div>
  <ul class="link-list">
    <li><a href="#">Link 1</a></li>
    <li><a href="#">Link 2</a></li>
    <li><a href="#">Link 3</a></li>
  </ul>
  <div class="right-image">
    <img alt="..." height="643" src="..." width="857">
  </div>
</nav>

Die Bildgröße, auf die der Browser ein Bild anschließend skalieren soll, wird via CSS bestimmt. Konkret angegeben wird nur die Containerbreite. Die Bildhöhe wird dynamisch anhand des Seitenverhältnis berechnet.

img {
  height: auto;
  width: 100%;
}

.logo {
  width: 100px;
}

.right-image {
  width: 150px;
}

Das Logo skaliert somit auf eine Pixelgröße von 100 x 75, das rechte Bild auf 150 x 113.

Die Ausrichtung / Positionierung der Elemente wiederum könnte folgendermaßen umgesetzt werden:

.navigation,
.link-list {
  column-gap: 10px;
  display: flex;
}

.link-list {
  align-items: center;
  background: yellow; /* for demo only */
  list-style-type: none;
  margin: 0;
  padding: 0;
}

Das Flexboxlayout positioniert alle Elemente horizontal nebeneinander. Da die Linkliste die Links als separate Kindelemente aufführt, muss sie ebenfalls zur Flexbox werden. Mit align-items werden die Listeneinträge vertikal zentriert.

Die Höhe der Linkliste richtet sich dabei an dem höchsten Bildelement in der Navigation aus. Wenn du das nicht möchtest, gib dem Element eine individuelle Höhe (height).

2) Du kannst entweder relative Pfade bilden oder absolute Pfade, ausgehend vom Rootverzeichnis deiner Webseite.

Das folgende Beispiel geht einmal von so einer Dateistruktur aus:

root
  home
    index.html
    styles
      styles.css
  news
    story1.html
    story2.html
  images
    news
      image1.jpg
      image2.jpg

HTML (root/home/index.html):

<!doctype html>
<head>
  <title>Home</title>
  <meta charset="utf-8">
  <link href="styles/style.css" rel="stylesheet">
</head>
<body>
  <figure>
    <img alt="..." src="../images/news/image1.jpg">
    <figcaption>
      <p>Some text about story 1</p>
      <a href="../news/story1.html">Read more</a>
    </figcaption>
  </figure>
  <figure>
    <img alt="..." src="../images/news/image2.jpg">
    <figcaption>
      <p>Some text about story 2</p>
      <a href="../news/story2.html">Read more</a>
    </figcaption>
  </figure>
</body>

Die CSS-Datei liegt in einem Subverzeichnis. Man kann sie wie angegeben über Verzeichnisname/Dateiname ansteuern. Der Slash steht für den Verzeichniswechsel bzw. für das Öffnen des zuvor angegebenen Verzeichnisses (Suche styles > Öffne > Suche style.css).

In einer Langform könnte man auch ./styles/style.css schreiben. Der Punkt kennzeichnet, dass man vom aktuellen Verzeichnis (in diesem Fall home) aus startet.

Um in ein übergeordnetes Verzeichnis zu wechseln, wird ../ genutzt. Bei ../news/story1.html wechselt man zuerst in das Rootverzeichnis und ausgehend davon dann in den Unterordner news.

Wenn deine Webseite über einen Webserver ausgespielt wird und ein Pfad mit Slash beginnt, liegt der Kontextstart im Rootverzeichnis. Das heißt, auf die story1.html könntest du auch via /news/story1.html zugreifen.

Eine dritte Option, um Pfade anzugeben, wären absolute Adressen. Die würden beispielsweise. den Domainnamen inkludieren (Beispiel.: https://deine-webseite.de/news/story1.html). Im Vergleich zu den zuvor vorgestellten Verzeichnisangaben haben sie allerdings den Nachteil, nicht so flexibel zu sein, denn sollte sich einmal der Stammpfad/der Domainname ändern, müsstest du im gleichen Zug auch alle Pfadangaben anpassen.