• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Probleme mit Anker (& CSS)

Nikut

Neues Mitglied
Hallo!
Ich bin hier jetzt frisch registriert, weil ich mit einem Fehler, der bei mir auftritt nicht zurecht komme.
Ich bastle an einer Übersicht für einen Kurs der Virtuellen Hochschule Bayern. Dabei soll eine juristische Strafrechtsübersicht dargestellt werden. Ich selbst kenne HTML eigentlich nur aus der Schule und den Editoren von Seiten, die ich betreue.
Ich hatte etwas umhergesucht und dabei die Möglichkeit entdeckt mit Ankerverweisen Details zu bestimmten Punkten aufrufen zu lassen. Dabei verwendete ich auch CSS.

CSS:
<style type="text/css">
main {
  position: relative;
}

ul {
  width: 16em;
  list-style-type: none;
  margin: 0;
  padding: 0;
}

ul li {
  padding: .2em 1em;
  background-color: #F1F3F4;
  border: 0.1em solid #3983ab;
  border-style: none solid solid;
  overflow: hidden;
}

ul li:first-child {
  border-style: solid;
}

ul li a {
  float: right;
}

.details {
  position: absolute;
  right: 1em;
  top: 1em;
  background-color: #F1F3F4;
  border: 0.1em solid #3983ab;
  border-radius: 0 8px 8px;
  padding: 1em 1em .2em;
  width: 32em;
  max-height: 23em;
  overflow: auto;
  display: none;
}

.details h1 {
  margin-top: 0;
}

.details:target {
  display: block;
}

.close {
  width: 0;
  heigh: 0;
  border: 0;
  text-shadow: none;
  color: transparent;
}

.close:after {
  position: absolute;
  top: 1em;
  right: 1em;
  content: "X";
  color: white;
  background: #c32e04;
  font: font: bold 1em/150% Georgia, Times, serif;
  border: 0.1em solid #3983ab;
  border-radius: 0 8px 8px;
  display: block;
  text-align: center;
  width: 1.5em;
  height: 1.5em;
  padding: 0.2em 0 0 0em;
}
</style>
HTML:
<body>
<main role="main">
<h2>Das vorsätzlich vollendete Begehungsdelikt</h2>
<ul><h3>Aufbau</h3>
<li>I. Tatbestand <a href="#d1">&emsp;Details&emsp;</a></li>
<li>II. <a href="#d2">&emsp;Details&emsp;</a> Rechtswidrigkeit</li>
<li>III. <a href="#d3">&emsp;Details&emsp;</a> Schuld</li>
<li>IV. pers. Strafausschließungsgründe/ Strafaufhebungsgründe<a href="#d4">&emsp;Details&emsp;</a></li>
<li>V. Strafzumessung<a href="#d5">&emsp;Details&emsp;</a></li>
<li>VI. Strafverfolgungs- voraussetzungen<a href="#d6">&emsp;Details&emsp;</a></li>
<li>VII. Ergebnis</li>
</ul>

<div id="d1" class="details">

<h3>Details zum Tatbestand</h3>
<h4>I. Tatbestand</h4>
1. objektiver Tatbestand  <a href="#d7">&emsp;Details&emsp;</a><br>
a. Täterqualität  <br>
b. taugliches Tatobjekt  <br>
c. Erfolg  <br>
d. Handlung  <br>
e. Kausalität (c-s-q-n-Formel) <br>
[f. objektive Zurechnung]  <br>
  <br>
2. subjektiver Tatbestand  <br>
a. Vorsatz, § 15 StGB  <br>
(P) Irrtümer nach § 16 Abs. 1 S. 1 StGB  <br>
(P) error in persona,  <br>
(P) aberratio ictus  <br>
b. besondere/sonstige subj. Merkmale (bspw. sb.. Mordmerkmale, Zueignung- o. Bereicherungsabsicht)  <br>
3. Tatbestandsannex  <br>
&rarr; objektive Bedingung der Strafbarkeit  <br>
  <br>
<a class="close" id="c1" href="#c1" title="schließen">schließen</a></div>
<div id="d2" class="details">
<h3>Details zur Rechtswidrigkeit</h3>
<p>II. Rechtswidrigkeit <br>
Die Tatbestandsmäßigkeit indiziert die Rechtswidrigkeit – dieses Indiz entfällt, wenn etwaige Rechtfertigungsgründe vorliegen.  <br>
&rarr; objektive Voraussetzungen des RFTG  <br>
&rarr; nach h.M. subj. Rechtfertigungselement  <br>
  (P) Fehlen des sb. RFT-Elements  <br>
  (&rarr;  e.A. Vollendung  a.A. Versuch) <br>
&rarr; ggf. positive Feststellung der RWK bei offenen TB <br>
  z.B. § 240 StGB  <br>
Rechtfertigungsgründe:  <br>
1. Notwehr, § 32 StGB  <br>
2. ggf. zivilrechtliche Rechtfertigungsgründe (§§ 228, 904; §§ 229, 859 BGB)  <br>
3. Notstand, § 34 StGB  <br>
4. rechtfertigende Einwilligung?  <br> § 228 StGB bei  Körperverletzungsdelikten beachten<br>
5. Festnahmerecht, § 127 StPO  <br>
6. Wahrnehmung berechtigter Interessen, § 193 StGB (bei Beleidigungsdelikten).</p>
<a class="close" id="c2" href="#c2" title="schließen">schließen</a></div>

<div id="d3" class="details">

<h3>Details zur Schuld</h3>
<p>III. Schuld  <br>
1. Schuldfähigkeit, §§ 19 – 21 StGB  <br>
2. spezielle Schuldmerkmale  <br>
(bspw. § 315c Abs. 1 StGB; § 225 Abs. 1 StGB)  <br>
3. Entschuldigungsgründe  <br>
a. Notstand, § 35 StGB  <br>
b. übergesetzlicher Notstand (str.)  <br>
c. Notwehrexzess, § 33 StGB  <br>
4. Irrtümer  <br>
a. Verbots-/Erlaubnisirrtum, § 17 StGB  <br>
b. Erlaubnistatbestandsirrtum (h.M.)  <br>
</p>
<a class="close" id="c3" href="#c3" title="schließen">schließen</a></div>

<div id="d4" class="details">

<h3>Details zu persönlichen Strafausschließungs- oder Strafaufhebungsgründen </h3>
<p>IV.  persönliche Strafausschließungs- oder Strafaufhebungsgründe  <br>
&rarr; bspw. Angehörigeneigenschaft, § 258 Abs. 6 StGB, tätige Reue §306e Abs. 2 StGB
</p>
<a class="close" id="c4" href="#c4" title="schließen">schließen</a></div></main>

<div id="d5" class="details">

<h3>Details zur Strafzumessung</h3>
<p>V. Strafzumessung  <br>
&rarr; Regelbeispiele, minder oder besonderes schwere Fälle<br><br>
</p>
<a class="close" id="c5" href="#c5" title="schließen">schließen</a></div>

<div id="d6" class="details">

<h3>Details zu Strafverfolgungsvoraussetzungen</h3>
<p>VI. Strafverfolgungsvoraussetzungen  <br>
&rarr; Strafantrag, Verjährung</p>
<a class="close" id="c6" href="#c6" title="schließen">schließen</a></div>

<div id="d7" class="details">

<h3>Details zur Täterqualität</h3>
<p>a. Täterqualität
&rarr; Allgemeindelikte: jede natürliche Person<br>
&rarr; Sonderdelikte: besondere Anforderungen an die Tätereigenschaft, bspw. Zeugeneigenschaft, § 153 StGB, Amtsträgereigenschaft, § 340 StGB
</p>
<a class="close" id="c7" href="#c7" title="schließen">schließen</a></div>

</main>

</body>

Durch diesen Code entstehen bei Klick auf "Details" kleine Fenster, die auf die verwiesenen Beträge anzeigen. Das funktioniert so weit ganz gut. Allerdings reagieren die letzten beiden Anker (d5 und d6) anders und erscheinen ganz am oberen Rand der Seite, was stört und unpassend ist.
Auch musste ich etwas tricksen mit den Menüpunkten Schuld und Rechtswidrigkeit, da diese unbedingt hinter den Details Anker wollten, damit sie vorne links blieben.

Ich hoffe jemand hat eine Ahnung, wieso die Fenster von d5 und d6 nach oben springen.
D7 ist lediglich ein Versuch noch eine Ebene oben drauf zu legen, da diese weitere Informationen zu den einzelnen Punkten liefert. Alternativ fange ich einfach eine weitere Liste an.
Tricksen musste ich auch beim Link der "Details". Dort habe ich einen Abstand nur generieren können, dass ich diesen in den Link gepackt habe. Gefällt mir bisher nicht. Vielleicht habt ihr auch da Vorschläge und konkrete Verbesserungen.
 
Zuletzt bearbeitet:
Werbung:
Allerdings reagieren die letzten beiden Anker (d5 und d6) anders und erscheinen ganz am oberen Rand der Seite, was stört und unpassend ist.
[...]

Ich hoffe jemand hat eine Ahnung, wieso die Fenster von d5 und d6 nach oben springen.
Die Ursache findet sich in Zeile 79 mit dem frühzeitigen schließen von <main>:
HTML:
<!-- ... -->

<div id="d4" class="details">

<!-- Zeile 79 --> ...</div></main>

<!-- ... -->

<!-- Zeile 105 --> </main>

</body>
 
Hallo Spicelab,

vielen Dank für die Hilfe. Lustigerweise dachte ich, ich hätte das main schonmal entfernt. Da hätte ich noch einmal ganz genau hinschauen müssen.

Hat jemand noch Ideen für die anderen Fragen?
Auch musste ich etwas tricksen mit den Menüpunkten Schuld und Rechtswidrigkeit, da diese unbedingt hinter den Details Anker wollten, damit sie vorne links blieben. [...]
Tricksen musste ich auch beim Link der "Details". Dort habe ich einen Abstand nur generieren können, dass ich diesen in den Link gepackt habe. Gefällt mir bisher nicht. Vielleicht habt ihr auch da Vorschläge und konkrete Verbesserungen.
 
Werbung:
Auch musste ich etwas tricksen mit den Menüpunkten Schuld und Rechtswidrigkeit, da diese unbedingt hinter den Details Anker wollten, damit sie vorne links blieben.
Zwei Möglichkeiten, damit Text und Link nebeneinander erscheinen:

1. Derzeit gewählte Breite von <ul> enstprechend aufstocken.
oder einfach
2. width:16em durch display:inline-block ersetzen.
Tricksen musste ich auch beim Link der "Details". Dort habe ich einen Abstand nur generieren können, dass ich diesen in den Link gepackt habe. Gefällt mir bisher nicht. Vielleicht habt ihr auch da Vorschläge und konkrete Verbesserungen.
Ein Abstand lässt sich mit margin erzielen:
CSS:
ul li a {
  float: right;
  margin:0 10px /* Wert frei gewählt */
}
 
1. Derzeit gewählte Breite von <ul> enstprechend aufstocken.
oder einfach
Dann ziehen Rechtswidrigkeit und Schuld mit. Die kleben da irgendwie dran.

2. width:16em durch display:inline-block ersetzen.
Sieht dann etwas unschön aus, wenn es einfach so groß wie der Bildschirm ist.

Ein Abstand lässt sich mit margin erzielen:
CSS:
ul li a {
  float: right;
  margin:0 10px /* Wert frei gewählt */
}
Da zeigen sich bei mir auch keine Ergebnisse.. :/
 
Werbung:
Kann ich nicht bestätigen.
Mh, jetzt weiß ich wenigstens das es nicht am Code liegt. Habe mir das mal im Html-Dokument angeschaut. Da funktioniert das sogar ohne geänderte Breite. Das muss an Moodle liegen, was ich eigentlich dachte nichts machen dürfte, da ich in den BN-Einstellungen den Editor deaktiviert hatte und im HTML-Format nun arbeiten kann.
Moodle macht sowieso Sachen, die man ihm nicht sagt: Es verknüpft Wörter die bei mir auftauchen mit Einträgen aus einem Definitionen-Verzeichnis.
htmlforum-jpg.4386

Oben sieht man: Mit Margin und leicht größerer Liste meint Moodle es müsse den Punkt Rechtswidrigkeit (übrigens verknüpft mit einem Eintrag^^) in eine andere Zeile packen..

Dann mußt Du wohl mit diesem Umstand leben.
:(
 

Anhänge

  • htmlforum.jpg
    htmlforum.jpg
    76,4 KB · Aufrufe: 39
Das muss an Moodle liegen[...].

Moodle macht sowieso Sachen, die man ihm nicht sagt: Es verknüpft Wörter die bei mir auftauchen mit Einträgen aus einem Definitionen-Verzeichnis.
Mit https://moodle.org/ habe ich keine Erfahrungen.
Oben sieht man: Mit Margin
Der Vollständigkeit halber weise ich darauf hin, dass ich margin anstelle von &emsp; empfohlen hatte.

Dem rechten Schnappschuß zufolge existiert es aber weiterhin in Deinem HTML-Code.
meint Moodle es müsse den Punkt Rechtswidrigkeit (übrigens verknüpft mit einem Eintrag^^) in eine andere Zeile packen..
Da es sich um einen autogenerierten Verweis handelt, greifen hier natürlich die definierten CSS-Regeln für <a> ;)

Lösung: Den Details-Links eine Klasse zuweisen, um den generierten Link davon auszuschließen:
HTML:
<a href="#d1" class="detail">Details</a>
CSS:
ul li a.detail {
  float: right;
  margin:0 10px /* Wert frei gewählt */
}
 
Hallo zusammen,

ich melde mich hier nochmal.
Ich habe eine kurze Frage:
Das CSS beeinflusst Moodle, die Navigationsleiste am linken Rand wird verändert dargestellt, entsprechend den Einflüssen aus dem CSS-Bereich.
Ist es irgendwie möglich den Einfluss des CSS einzugrenzen? Das es nur innerhalb eines bestimmten Abschnittes wirkt? Somit könnte ich dann die Wirkung "einrahmen".
Ich hatte bereits nach Alternativen gesucht. Z.B. bootstrap. Das macht die Arbeit aber leider nicht einfacher. Weder ist es Laienfreundlicher, noch funktionieren diese Buttons einmalig mit mehreren Inhalten (jedenfalls fiel mir das nach meiner Einarbeitung nicht zu).
Deshalb denke ich eher an das Einrahmen des CSS-Code, denn das HTML sollte auch für einen Laien übersichtlicher sein und darin ist viel einfacher einzuarbeiten.

Ich hoffe das wird hier noch nicht als themenfremd gesehen. Es ist nunmal leider noch die gleiche Arbeit... :/
 
Werbung:
Das CSS beeinflusst Moodle, die Navigationsleiste am linken Rand wird verändert dargestellt, entsprechend den Einflüssen aus dem CSS-Bereich.
Naja, das CSS soll ja auch für die linke Navigationsleiste gelten. Zumal Du uns von Beginn an genau dieses CSS präsentiert hast.

Von daher kann ich Dir nicht ganz folgen, warum das Problem plötzlich jetzt auftritt.
Ist es irgendwie möglich den Einfluss des CSS einzugrenzen? Das es nur innerhalb eines bestimmten Abschnittes wirkt?
Ja. Zum Beispiel im Markup mit einem umschliessenden <nav></nav>-Element.

Die betroffenen CSS-Selektoren würden dann mit nav beginnen:
CSS:
nav ... {...}
 
Naja, das CSS soll ja auch für die linke Navigationsleiste gelten. Zumal Du uns von Beginn an genau dieses CSS präsentiert hast.
Naja, es soll für die Navigation des Aufbaus gelten, nicht aber für die Navigation von Moodle für die einzelnen Kurse und dergleichen.

Von daher kann ich Dir nicht ganz folgen, warum das Problem plötzlich jetzt auftritt.
Es trat schon immer leider in Moodle auf. Ich fand es nur nicht wichtig, denn erstmal sollte alles andere laufen.

Ja. Zum Beispiel im Markup mit einem umschliessenden <nav></nav>-Element.
Die betroffenen CSS-Selektoren würden dann mit nav beginnen:
CSS:
nav ... {...}
Das führt schließlich dazu, dass die CSS-Segmente auf einem Moodle-Testserver mit HTML- und CSS-Plugin im Atto-Editor laufen. Vielen Dank!
Die Navigationsleiste ist leider trotzdem betroffen. Eine gewisse Ausstrahlungswirkung ist also dennoch gegeben. :D
 
Falls hier von den Moodle-autogenerierten Links die Rede ist, möchte ich an meinen vorletzten Post (31. März) erinnern, der seinerzeit die Problematik aufgegriffen hatte:
Da es sich um einen autogenerierten Verweis handelt, greifen hier natürlich die definierten CSS-Regeln für <a> ;)

Lösung: Den Details-Links eine Klasse zuweisen, um den generierten Link davon auszuschließen:
HTML:
<a href="#d1" class="detail">Details</a>
CSS:
ul li a.detail {
  float: right;
  margin:0 10px /* Wert frei gewählt */
}
 
Werbung:
Falls hier von den Moodle-autogenerierten Links die Rede ist, möchte ich an meinen vorletzten Post (31. März) erinnern, der seinerzeit die Problematik aufgegriffen hatte:
Nein nein. Diese Links tauchen nun auch nicht mehr auf, was nicht soo problematisch ist. Sie waren ja sogar noch positiv.
Ich packe mal ein Bild hier rein. Dann sollte man sehen können was ich meine. ;)
 

Anhänge

  • beispiel.jpg
    beispiel.jpg
    151,6 KB · Aufrufe: 4
Und wie wäre es damit?
HTML:
<nav>
  <h2>Das vorsätzlich vollendete Begehungsdelikt</h2>
  <ul><h3>Aufbau</h3>
    <li>I. Tatbestand <a href="#d1">&emsp;Details&emsp;</a></li>
    ...
  </ul>
</nav>
CSS:
nav ul {
width: 16em;
list-style-type: none;
margin: 0;
padding: 0;
}

nav ul li {
padding: .2em 1em;
background-color: #F1F3F4;
border: 0.1em solid #3983ab;
border-style: none solid solid;
overflow: hidden;
}

nav ul li:first-child {
border-style: solid;
}

nav ul li a {
float: right;
}
Somit gilt das CSS nur innerhalb des <nav>-Elements.
 
Vielen Dank!
Das sieht schonmal viel viel besser aus.
Lediglich nur noch der obere Teil kriegt das zu spüren...

Edit: zuvor hatte ich schon ein "nav" um alles herum. Das an sich hatte natürlich nicht viel geändert.
Edit2: Vor dem Code mit .details habe ich jetzt aber kein "nav". Soll da noch eins dazu?
 

Anhänge

  • beispiel_2.jpg
    beispiel_2.jpg
    63 KB · Aufrufe: 4
Werbung:
Um weitere Überschneidungen mit der "Moodle-Navigation" zu vermeiden, die offensichtlich auch <nav> verwendet, kannst Du selbstverständlich ein alternatives Element (z.B. <section>) wählen.
HTML:
<section>
  <h2>Das vorsätzlich vollendete Begehungsdelikt</h2>
  <ul><h3>Aufbau</h3>
    <li>I. Tatbestand <a href="#d1">&emsp;Details&emsp;</a></li>
    ...
  </ul>
</section>
CSS:
section ul {
...
}

section ul li {
...
}

section ul li:first-child {
...
}

section ul li a {
...
}
Oder Du spezifizierst die Navigation mit einem ID-Bezeichner, falls in dem Dokument in einem weiteren <section> eine unsortierte Liste folgt.
HTML:
<nav id="delikt">
  <h2>Das vorsätzlich vollendete Begehungsdelikt</h2>
  <ul><h3>Aufbau</h3>
    <li>I. Tatbestand <a href="#d1">&emsp;Details&emsp;</a></li>
    ...
  </ul>
</nav>
CSS:
nav#delikt ul {
...
}

nav#delikt ul li {
...
}

nav#delikt ul li:first-child {
...
}

nav#delikt ul li a {
...
}
 
Zurück
Oben