PHP HTML: Wieso funktioniert width nicht

obilaner

Lt. Junior Grade
Registriert
Apr. 2011
Beiträge
389
Hallo!

Ich habe seit gestern, bzw seit meinem neuen Modul das ich auf meine Seite integrieren möchte ein Problem mit CSS.

Div Elemente die hintereinander generiert werden, werden nicht relativ gestapelt, sondern sortierten sich alle unter dem ersten Objekt unter - 2 Reihen Übereinander, statt hintereinander.

Mit Grid ist der Fehler nicht mehr da (Relative Objekte kommen nacheinander, wie es soll), jedoch ist es mir nicht möglich innerhalb eines Containers die weite mit witdh zu setzen.

Muss dazu sagen das ich zur Zeit Linux verwende, wobei Chrome und Firefox jeweils unterschiedliche Neigungen zu Anzeigebugs entwickeln. Mal funktionieren Standart HTML Symbole nicht, mal werden bereits gelöschte Bilder noch Stunden später angezeigt, mal aktualisiert etwas nicht, wenn man etwas verändert und man muss die Seite an der ich arbeite komplett schliessen und neu aufrufen damit änderungen angezeigt werden.

Weiss jemand wo ich nachforschen könnte, warum hier das width, bei 'miheadline' ignoriert wird, egal was ich schreibe? Habe es auch ohne die Klasse 'big' probiert, sowie als eigenes HTML Objekt mit Style. Width und Height wird ignoriert. Padding und positionen werden übernommen.

Nachtrag: Bzw kann mir irgendjemand Mittel zur Fehlersuche empfehlen, oder häufig frequentierte Fehlerfindungsquellen?

HTML:
<div id="Meineinhalte">
    <Text class="big miheadline">Meine Module</Text>
    <br><br>
    <div id="micontainer">   
        <div class="quadrat">
            <img src="hardplus.png" width="100%"></img>
        </div>
    </div>
    <br>
    <Text class="big miheadline">Themen</Text>
    <br><br>
    <Text class="medium">Gästebuch</Text>
    <hr><br>
    <div id="micontainer">
        <div class="quadrat"></div>
        <div class="quadrat"></div>
        <div class="quadrat"></div>
    </div>
</div>

<style>

#micontainer{
    position: relative;
    width: 100%;
    grid-gap: 10px;
    display: grid;
    grid-template-columns: 140px 140px 140px;
}

.miheadline{
    position: relative;
    width: 300px;
    padding: 5px;
    background-color: #82abc4;

    border-radius: 8px;
    border: 1px dotted black;

    width: 100%;
}

.quadrat{
    border: 1px solid black;
    height: 140px;
}

#Meineinhalte:hover{
    right: -10px; top: 0px;
}

#Meineinhalte{
    position: absolute;
    height: 100%; width: 500px;

    right: -450px; top: 0px;
    padding: 25px;

    box-sizing: border-box;
    background-color: white;
    border: 1px solid black;

    overflow-y: scroll;
    z-index: 10;
}

</style>
 

Anhänge

  • Bildschirmfoto_2023-10-14_13-13-46.jpg
    Bildschirmfoto_2023-10-14_13-13-46.jpg
    68,3 KB · Aufrufe: 82
Zuletzt bearbeitet:
Als erstes: <Text> ist kein valider Tag. Custom HTML Tags müssen die Form <foo-bar> haben (der Bindestrich ist Pflicht). Nimm da einfach mal ein <div> oder <p> für.

Ansonsten: was sagt denn die Dev Console im Browser? Ich tippe drauf, dass der invalide Tag als inline behandelt wird.
 
Zuletzt bearbeitet:
zenokortin schrieb:
Als erstes: <Text> ist kein valider Tag. Custom HTML Tags müssen die Form <foo-bar> haben. (der Bindestrich ist Pflicht) Nimm da einfach mal ein <div> oder <p> für.

Ansonsten: was sagt denn die Dev Console im Browser.
Hö? Wieso? Benutze das andauernd. Welchen Unterschied macht denn der Bindestrich im Realeinsatz? Bzw was passiert wenn man es so nutzt?

Hmm wonach genau sollte man denn in der DEV Konsole gucken? Ich seh schonmal das das width dort tatsächlich durchgestrichen wird und weiss nicht was es bedeutet ?!
 

Anhänge

  • Bildschirmfoto_2023-10-14_13-46-06.jpg
    Bildschirmfoto_2023-10-14_13-46-06.jpg
    81 KB · Aufrufe: 57
Okay, wer lesen kann ist klar im Vorteil...
Die Dev Console zeigt an Display: Inline würde verhindern das das Objekt Width verwendet.

Jedoch welches Inlay? Die Zeile befindet sich vor dem GRID Container und relativ, innerhalb eines normalen frei positionierten Objektes, mit festgelegten w/h angaben?! oO

Edit: Also ich hab geguckt. In meinem gesamten Projektordner, inklusive aller Dateien wurde nicht einmal das tatsächliche display:inline verwendet. Also ich habe es nicht benutzt. Lediglich in bootstrap und jquery.min (letzteres verwende ich häufig) wurde überhaupt der string'display:inline' gefunden.

Welche Zustände / Konstellationen / Sachen führen noch dazu das ein Objekt eventuell fälschlich als display:inline betrachtet wird?
 

Anhänge

  • Bildschirmfoto_2023-10-14_13-50-19.jpg
    Bildschirmfoto_2023-10-14_13-50-19.jpg
    34,8 KB · Aufrufe: 57
Zuletzt bearbeitet:
Wie wäre es mit:
Display: inline

obilaner schrieb:
das ein Objekt eventuell fälschlich als display:inline
Es ist ja nicht "fälschlich inline". Ist halt ein invalider Tag und damit kein Block-Element wie <div> oder <p>. Inline ist der normale Grundwert und wird bei Block-Elementen mit block überschrieben.

Die <Text> Tags sind nicht in einem Grid-Container! .micontainer ist als Grid definiert.

Nochmal: nimm keine Custom Tags (dafür gibt es Einsatzzwecke, aber nicht hier). Nimm einfach ein <p> oder <div>.
edit: Oder einen höheren <h>, wäre semantisch wohl am besten.
 
Zuletzt bearbeitet:
Oh jetzt hab ich das verstanden. Wusste nicht das es einfach nur das Tag ist, weil ich es schon so oft verwendet habe. Aber jetzt wo ich mich recht erinner hatte ich so ein ähnliches Problem deswegen wohl schonmal.

Danke. noch eine kurze Frage zum Abschluss:

Was meintest du denn jetzt von wegen <foo-bar> wäre ein akzeptables Tag, <Foo> jedoch nicht? wäre ersteres ebenfalls ausschliesslich inline? Und was wäre das defekte Text Tag als 'display:block' deklariert dennoch funktionell gewesen?
 
obilaner schrieb:
Was meintest du denn jetzt von wegen <foo-bar> wäre ein akzeptables Tag, <Foo> jedoch nicht? wäre ersteres ebenfalls ausschliesslich inline?
Alle Custom Tags sind komplett "unformatiert" (am nächsten kommt wohl <span>). Die musst du immer selbst definieren. Inline ist der inhärente Wert für display, also wenn es nicht explizit anderes definiert wird (das meine ich hier mit "unformatiert"). Ein <div> zB. wird explizit als display: block definiert, nur musst du das nicht machen, weil es im HTML Standard schon so vorgegeben wird.

Wie gesagt: nutze keine Custom Tags, das benötigst du nicht.

obilaner schrieb:
Und was wäre das defekte Text Tag als 'display:block' deklariert dennoch funktionell gewesen?
Ja wäre er. Der Tag ist auch nicht defekt, sondern per HTML Definition invalid. Browser sind nur da sehr "weich" und akzeptieren es erst mal.
 
Zuletzt bearbeitet:
Also würdest du für häufige Textfeldaufgaben einfach ein div benutzen? H1-? und <b> sind ebenfalls schon alles vorformatierte Objekte. <Text> klang dementsprechend Sinnvoll. Jedoch für alles gan das man etwas anheften möchte, wie zb Style generell einfach div zu verwenden wäre das nächstgelegene.
 
Man sollte Tags möglichst nach ihrem semantischen Sinn verwenden. <h> sind halt für Überschriften. <p> für Textabsätze. <div> ist ein allg. Container. <b> explizit für bold.
Bei deinem Beispiel wären das schon irgendwie Überschriften, aber auch ein allg. Container wäre ok. <p> wäre vom semantischen her dann schon grenzwertig. Aber am Ende schaut da keiner sooo genau hin, solange es nicht komplett am Sinn vorbei ist. Also sowas wie <span> für Überschriften wäre komplett falsch.

Hier hast du eine Übersicht über alle HTML Elemente.

Es gibt auf YT viele Channels, wo du dir da Tutorials und Infos holen kannst, diesen finde ich zB ziemlich gut.

PS: kleiner Tip noch, nutze statt <br> margins (wobei viele <br> sich schon durch block erledigen, weil das im Gegensatz zu inline einen expliziten Zeilenumbruch beinhaltet).

PPS: #micontainer wird bei dir mehrfach verwendet. Das ist auch invalid. IDs (#) dürfen nur einmal vorhanden sein. Korrekt wäre eine Klasse (.micontainer).
 
Zuletzt bearbeitet: (typo)
  • Gefällt mir
Reaktionen: kim88
Zurück
Oben