Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste
img, Höhe=konstant, Breite=variabel
#1
Hallo,

ich will in einem Posting viele Bilder einbinden, die unterschiedliche Höhen haben, und sie mit einer einheitlichen Höhe darstellen, wobei die Bildseitenverhältnisse unverändert bleiben sollen. Das heißt, in den img-Befehlen der Form
[ img=BreitexHöhe]Bildadresse[/img]
müsste ich überall die gleiche Bildhöhe, also eine Zahl, eingeben, während die Bildbreiten variabel sein sollen, also keine konkreten Zahlen.
Wie setze ich das mit dem img-Befehl um?

LG
Zitieren
#2
Wenn die gewünschte Höhe für alle "IMG"-MyBB-Codes gelten soll, kannst du dich der CSS-Klasse "mycode_img" bedienen.

Definiere in der global.css diese Klasse mit einer entsprechenden Höhe:
Code:
.mycode_img {
height: 150px;
/* oder */
max-height: 150px;
}

[ETS]
MyBB + innovative Themes:
NokiaPort.de Forum Nokia-Traditionsforum seit 2006.
Live Escape Game Forum Diskussionsplattform für Escape-Rooms.
Unlösbares Problem, Dilemma? -> das Nötel Smile
Zitieren
#3
Danke für den Vorschlag. Leider soll die fixe Höhe nicht für sämtliche, mittels [img] eingebundenen Bilder gelten. Ich habe auch schon einen neuen MyCode-Befehl (also Ersetzung durch html-Code) definiert. Funktioniert gut, allerdings nur solang jedes der Bilder dieselbe Dateiendung hat. Mein MyCode hatte diese Form:
Das zu Ersetzende:
Code:
__(.*?).gif
Soll ersetzt werden durch:
Code:
<img src="https://.....$1.gif" height="80">
Und in ähnlicher Weise dann auch für andere Bildformate. [Eine Definition des zu Ersetzenden mittels
Code:
__(.*?).(.3)
mit
Code:
<img src="https://.....$1.$2" height="80">
hat nicht funktioniert, warum auch immer.]

Diese MyCode-Befehle funktionieren allerdings nur dann ordnungsgemäß, wenn im betrachteten Posting nur eine einzige Art von Bilddateierweiterung vorkommt. Sobald unterschiedliche Dateiendungen im Spiel sind, kommen eigenartige "Verschachtelungen" zu Stande, wie wenn er z.B. ein
Code:
__Bild1.gif
durch ein
Code:
<img src="https://.....$1.jpg" height="80">
ersetzen wollte und dann vom __ beginnend bis zu einem .jpg sucht und dann das
Code:
__Bild1.gif TEXT __Bild2.jpg
ersetzt, anstatt eine Ersetzung für
Code:
__Bild1.gif
und eine für
Code:
__Bild2.jpg
zu machen. Bin diesem Problem dann in der Weise begegnet, dass ich die mit __ beginnenden Befehle umformuliert habe in
Code:
_g_(.*?).gif
und
Code:
_j_(.*?).jpg
sodass es von Anfang des Befehls an klar ist, welche Ersetzung zum Einsatz kommen soll. Aber es hat das ursprüngliche "Verschachtelungsproblem" nicht gelöst. Ich verstehe nicht warum.
Zitieren
#4
Dein MyCode könnte in etwa so aussehen:

Code:
\[my_img\](.*?)\[/my_img\]

Ersetzung:

Code:
<img style=width:300px; height:auto;" src="$1" alt="Image" />
Zitieren
#5
Danke! Es funktioniert nun, mit gewissen Einschränkungen. Ich habe das zu Ersetzende allerdings weiterhin mit
Code:
_g_(.*?).gif
usw. definiert (es sind Smileys und ich will den Code möglichst minimalistisch halten), aber den Ersatz durch
Code:
<img style="width:auto; height:80px;" src="$1.gif" />
definiert.

Beim img-Befehl ist mir jedoch aufgefallen, dass MyBB zumindest die Bildbreite als Konstante definieren lässt: mit dem Befehl [img=80x80] haben alle Bildbreiten 80px und die Höhen werden unter Beibehaltung des jeweiligen Bildseitenverhältnisses angepasst. Vielleicht könnte man die konstanten Bildhöhen erreichen, indem man den img-Befehl umdefiniert, sodass die erste der beiden Zahlen die Bildhöhe angibt statt der Bildbreite? Wo wird der img-Befehl definiert in MyBB?
Zitieren
#6
(29.06.2021, 19:36)masi1234 schrieb: Beim img-Befehl ist mir jedoch aufgefallen, dass MyBB zumindest die Bildbreite als Konstante definieren lässt:

Das kann ich so nicht unterschreiben. Wenn du width auf auto setzt, dann wird die Breite anhand der definierten Höhe skaliert. Anderenfalls würde es Verzerrungen geben.
Selbst wenn in deiner CSS-Datei etwas anderes definiert ist, müsste der Inlinestyle dies überschreiben.
Es sei denn du arbeitest irgendwo mit !important.
Zitieren
#7
Ich habe es falsch ausgedrückt mit "definieren lässt". Als ich mit dem normalen [img=BreitexHöhe]-Befehl herumexperimentiert habe mit Höhen- und Breitenangaben, hat MyBB immer nur die Breite gelten lassen, das natürliche Seitenverhältnis des Bildes beibehalten und meine Höhenangabe quasi ignoriert. Eine Abweichung vom natürlichen Seitenverhältnis des Bildes hat MyBB nicht zugelassen.
Zitieren
#8
(30.06.2021, 11:45)masi1234 schrieb: hat MyBB immer nur die Breite gelten lassen, das natürliche Seitenverhältnis des Bildes beibehalten und meine Höhenangabe quasi ignoriert. Eine Abweichung vom natürlichen Seitenverhältnis des Bildes hat MyBB nicht zugelassen.

Dann muss irgendeine CSS-Anweisung deine Definition überschreiben.
Das kann man aus der Ferne nicht beurteilen.
Ich kann bei mir über Inlinestyle die Images unendlich verzerren.
Es ist lediglich ein max-width:100% aktiv.
Zitieren
#9
Also wenn es die Möglichkeit gibt, die "BreitexHöhe"-Angabe im img-Befehl zu überschreiben, wäre das eh ideal für mich. Habe jetzt das global-css durchsucht, aber außer dem ".scaleimages img {max-width: 100%;}" gibt's dort nichts.
Btw, der Grund warum mir der originale img-Befehl lieber ist, als mein eigens definiertes MyCode mit html-Ersetzung, ist, dass meine eigenen MyCodes durch den Wortfilter nicht mit Sicherheit bzw nicht überall ersetzt werden, wie wenn nicht der Wortfilter vor der MyCode-Ersetzung angewendet würde, sondern der Wortfilter und die MyCode-Ersetzung mit einander um die Wette laufen würden und je nach dem welcher der beiden meinen eigens definierten MyCode im Posting erreicht, der ersetzt ihn.

Also wenn ich den [img=BreitexHöhe]-Befehl (z.B. mittels CSS-Anweisung) manipulieren könnte, wäre es am besten. Die Frage wäre, wo ich diese CSS-Anweisung eingeben müsste. Und wenn also in der BreitexHöhe-Angabe nur die angegeben Höhe gelten während die Breite entsprechend dem natürlichen Bildseitenverhältnis angepasst werden soll, würde dann der nötige CSS-Code so aussehen: ".scaleimages img {width:auto;}" ?
Zitieren
#10
(01.07.2021, 09:40)masi1234 schrieb: Also wenn ich den [img=BreitexHöhe]-Befehl (z.B. mittels CSS-Anweisung) manipulieren könnte,

Das ist bereits eine CSS-Anweisung und zwar Inlinestyle.
Normalerweise hat Inlinestyle auch die höchste Priorität.
Warum das bei dir nicht funktioniert, kann ich aus der Ferne (ohne Link) nicht sehen.
Bei mir funktioniert es problemlos.
Zitieren