Also Mann muss nur nach links oder rechts scrollen.
Das ist das was ich sagte und das ist ein absolutes no-go bei Code.
Also Mann muss nur nach links oder rechts scrollen.
Das ist das was ich sagte und das ist ein absolutes no-go bei Code.
Da kann ich sicher das Ein oder Andere zu sagen. Ein Foren-Update wird lang ersehnt das stimmt, insbesondere wenn man sich die Bot-Geschwader ansieht, regelmäßig werden tausende Benutzer gelöscht weil es sich nur um Werbung handelt. Leider fehlt die Zeit vorn und hinten, das Alles liegt in Axels Hand, auch wenn es mittlerweile Moderatoren gibt die das Forum verwalten, hat den nötigen Zugriff für solch ein Update nur er und Axel hat nicht nur eine riesige Internetpräsenz sondern auch noch seine Seminare außerhalb des WWW, er produziert ständig neuen Content und da bleibt nicht viel übrig um "mal eben" das ganze Forum auf ein anderes System umzustellen, dies ist leider in dem Umfang keine Sache von 20 Minuten.
https://www.html-seminar.de/www.html-seminar.de ist eine äußerst umfangreiche Seite mit mittlerweile etwa 300 Unterseiten. Ich kann nur mutmaßen aber in Anbetracht dessen, dass es innerhalb der letzten Dekade nur ein größeres "Update" für die Seite gab, scheinen es statische Inhalte ohne ein dickes CMS drum herum zu sein. (Lasse mich da gerne belehren)
Inhalt und Design werden natürlich theoretisch strikt voneinander getrennt, jedoch je nach Projektgröße auch nicht immer ganz akkurat, von daher ist es ein gigantischer Aufwand das ganze HTML-Seminar mal eben responsive zu machen. Dazu kommt die generelle Schwierigkeit bei Codeblöcken. Auf schmalen Displays lassen sich diese einfach nicht so gut darstellen, es wird immer zu horizontalem Scrollen kommen und das nervt tierisch bei Code, die Zusammenhänge zu finden ist dann keine Sache mehr von Augenblicken.
Anzumerken für mobile Endgeräte wäre wohl das PDF eBook, welches das komplette Seminar beinhaltet. Der Haken an der Sache, an dem sich wohl (leider!) die meisten stören werden, ist der Preis. Es handelt sich um das Fair Pay Konzept bei dem der Benutzer den Preis den es ihm Wert ist selbst bestimmen darf, aber bei Geld hört die Freundschaft eben immer auf. Man muss dabei jedoch auch bedenken, dass dieses Geld in erster Linie dazu dient das Seminar zu verbessern und grundsätzlich ist ein solch immenses Angebot an Lehrmaterial in den seltensten Fällen kostenlos.
Ich werde mich jedoch zeitnah mal genauer informieren und meine Erkenntnis hier teilen.
Beiträge zusammengefasst. Wieso muss man eigentlich jedem hier erklären das Doppelposts nicht erwünscht sind?
Jedes registrierte Mitglied muss bei Registration bestätigen, dass es das gelesen und verstanden hat, I'm not amused.
Das kann Canvas:
//Benötigte Funktionen:
function hex2rgb(hex) {
if (hex.charAt(0) == '#')
hex = hex.substring(1, 7);
var re =
{
r: parseInt(hex.substring(0, 2), 16),
g: parseInt(hex.substring(2, 4), 16),
b: parseInt(hex.substring(4, 6), 16)
}
return re;
}
function checkTolerance(c, v, b, t)
{
var t = b / 100 * t;
if(c >= v - t && c <= v + t)
return true;
else
return false;
}
Alles anzeigen
// Canvas:
// Canvas initiieren
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
// Linie einstellen (dem Rubbelfeld nachempfunden).
ctx.lineWidth = 50;
ctx.lineCap = 'round';
ctx.strokeStyle = "#009900";
// Aus dem HEX Wert der Linienfarbe RGB erstellen.
rgb = hex2rgb(ctx.strokeStyle);
// Genauigkeit der Prüfung. 3% Toleranz sorgen im Beispiel
// bereits für ein exaktes Ergebnis.
tolerance = 3;
// 2 Linien Zeichnen, im Rubbelfeld natürlich durch User-Input.
ctx.moveTo(50, 50);
ctx.lineTo(200, 315);
ctx.stroke();
ctx.moveTo(480, 200);
ctx.lineTo(20, 440);
ctx.stroke();
// Das imageData Objekt des Canvas abfragen, im .data Objekt befinden
// sich die Farbwerte für jeden Pixel. Es gelten immer 4 Elemente für 1 Pixel:
// 0: Pixel 1 - Rot
// 1: Pixel 1 - Grün
// 2: Pixel 1 - Blau
// 3: Pixel 1 - Alpha
// 4: Pixel 2 - Rot
// ...
var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
// Gefundene Pixel auf 0 setzen.
var pixel = 0;
// Das Pixel-Array durchlaufen und nur jedes 4. Element einbeziehen.
for (var i = 0; i < imageData.data.length; i += 4) {
// Die Funktion checkTolerance gibt wahr zurück, sollte der erste Parameter
// im Toleranzbereich (4. Parameter) der 2. Parameters (auf Basis des 3. Parameters)
// liegen.
// checkTolerance(45, 50, 100, 10) wird wahr zurückgeben, da 45 über 40
// und unter 60 liegen. Die Grenzen ergeben sich aus:
// 40: 50 - ( 100 / 100 * 10 )
// Basis % Toleranz
// 60: 50 + ( 100 / 100 * 10 )
//
// Diese Funktion ist im Prinzip hinfällig für das Vorhaben Rubbelfeld,
// hier könnte auch einfach geprüft werden ob imageData.data[i+3] (Alpha Wert)
// bei 0 liegt.
if
(
checkTolerance(imageData.data[i], rgb.r, 255, tolerance) &&
checkTolerance(imageData.data[i+1], rgb.g, 255, tolerance) &&
checkTolerance(imageData.data[i+2], rgb.b, 255, tolerance)
)
{
// Pixel im tolerierten Farbbereich gefunden also hochzählen.
pixel++;
}
}
// Die gefundenen Pixel müssen jetzt nur noch in ein Verhältnis gesetzt werden:
dimension = canvas.width * canvas.height;
percentage = pixel * 100 / dimension;
console.log(percentage + "% des Feldes sind bedeckt.");
// (17.974% des Feldes sind bedeckt. )
Alles anzeigen
Jetzt noch prüfen ob mehr als 90% frei gemacht (oder im Beispiel bedeckt) sind und dann den Link aktivieren. Deaktivieren könnte man so:
<a href="verweis.htm" id="canvas_success_link">
<canvas id="canvas" width="500" height="500"></canvas>
</a>
document.getElementById("canvas_success_link").addEventListener("click", function (event)
{
if (percentage < 90)
event.preventDefault();
});
Oder einfach einen Klick auf das Canvas abfangen:
Und dann sagen es wäre ihre Website.
Dafür gibt es ein Urheberrecht. Des weiteren fallen gut geschriebene aber schlecht kopierte Texte dem nicht ganz zurückgebliebenen Benutzer sowieso auf und das ist dann richtig peinlich. Wenn du wirklich schützenswertes geistiges Eigentum anbietest wie gesagt Urheberrecht.
Quellcode schützen ist utopisch, die Konsole weiß alles. Kontextmenü, Tastenkürzel, etc. wie von Nitamud vorgeschlagen manipulieren ist möglich aber kaum effektiv und noch viel weniger benutzerfreundlich.
Chrome Nutzer z.B. drücken F12 und sehen alles aus dem Frontend: DOM-Tree, Netzwerkanalyse, Quellen, Laufzeitanalyse, Ressourcen (z.B. Javascript, CSS, Bilder), die Konsole und noch einiges mehr.
Das hat mich nun doch ein wenig mehr interessiert und ich habe einen Weg gefunden die Mechanik auszuhebeln und das Ganze zum Laufen zu bekommen.
Bei Interesse einfach den Code in die Datei aufnehmen und entsprechende a-Tags mit class="anchor_extended" ausstatten. Alternativ ein beliebiges Element anlegen, die selbe Klasse vergeben und statt href="" data-href="" verwenden. Der Klassenname kann in Zeile 10 angepasst werden.
window.addEventListener("load", function () {
// Falls der Browser nicht automatisch zum gewünschten Element springt
// erledigt das Javascript.
if (window.location.hash)
window.location.href = window.location.hash;
// Die Steuerelemente, welche den Mechanismus auslösen sollen, werden selektiert,
// sie müssen via class="anchor_extended" ausgezeichnet werden.
var anchors = document.getElementsByClassName("anchor_extended");
for (var i = 0; i < anchors.length; i++) {
anchors[i].addEventListener("click", function (event) {
// Prevent the anchor to perform its href-jump.
event.preventDefault();
// Variablen vordefinieren.
var target = {},
current = {}
path = window.location.origin;
// URL und Hash des Ziels extrahieren. Unterschieden wird zwischen a-Tag's dessen href
// ausgelesen wird und anderen Elementen (wie z.B. div), bei denen auf das data-href=""-Attribut
// zugegriffen wird. Für den 2. Fall benötigen wir die eben definierte path-Variable
// welche den absoluten Pfad enthält.
target.href = this.href ? this.href.split("#") : (path + this.dataset.href).split("#");
target.url = target.href.length > 2 ? target.href.slice(0, -1).join("#") : target.href[0];
target.hash = target.href.length > 1 ? target.href[target.href.length - 1] : "";
// URL und Hash der aktuellen Datei.
current.url = window.location.href.split("#").slice(0, -1).join("#");
current.hash = window.location.hash;
if (current.url == target.url)
if (current.hash == target.hash)
// Dateiname und Hash sind identisch, die Seite
// wird lediglich neu geladen.
window.location.reload();
else {
// Der Hash unterscheidet sich, dem location-Objekt
// wird dieser zugeteilt, anschließend wird die Seite
// neu geladen.
window.location.hash = target.hash;
window.location.reload();
}
else
// Der Dateiname unterscheidet sich, $_GET-Daten wurden geändert
// oder eine andere Datei soll aufgerufen werden, es wird lediglich
// auf diese Datei verwiesen.
window.location.href = this.href;
});
}
});
Alles anzeigen
Das deckt nun sehr viele Fälle ab, sicherlich nicht alle aber es reicht wohl als Denkanstoß.
Das Geheimnis sind einfache und doppelte Anführungszeichen:
$zahl = 5;
print "Die gegebene Zahl ist $zahl.";
// Ausgabe: Die gegebene Zahl ist 5.
print 'Die gegebene Zahl ist $zahl.';
// Ausgabe: Die gegebene Zahl ist $zahl.
Alles anzeigen
In doppelten Anführungszeichen werden Variablen interpretiert, in einfachen nicht, hier wird alles als Klartext behandelt. Du erkennst es auch am Syntax Highlighting hier im Forum, in den doppelten Anführungszeichen ist $zahl blau hervorgehoben, genau wie bei der Definition 2 Zeilen höher. In den einfachen Anführungszeichen ist $zahl rot.
Das Problem ist ganz einfach erklärt: Die Funktionsweise von Sprungmarken prüft ob die aufgerufene Url (bis auf alles hinter #) die gleiche ist wie die aktuelle.
datei.php unterscheidet sich von datei.php?aktion=abgesendet, also wird die Seite neu geladen und die Sprungmarke angepeilt.
Nun ist die Adresszeile jedoch mit datei.php?aktion=abgesendet#sprungmarke gefüllt, rufen wir also datei.php?aktion=abgesendet#sprungmarke auf wird nur die Sprungmarke angepeilt ohne die Seite neu zu laden, denn nichts würde sich ändern.
Spontan fällt mir als Lösung nur ein den Aufruf dynamisch zu gestalten, also mit einem Seed zu füllen:
Und dazu PHP:
Dadurch verhinderst du die gleiche URL, ich habe noch einen anderen Lösungsansatz, muss jedoch erst ein mal zum Barbier.
Das ist aber ein schönes Tutorial... Bitte Präfix nur benutzen wenn auch sinnvoll!
Desweiteren: Bitte hier lesen
Forum dankt.
Die Frage stand meines Erachtens jetzt gar nicht im Raum. Ich war nur verwundert um die Funktionsweise Javascripts.
Ja an so etwas ähnliches habe ich auch gedacht. Interessant zu erwähnen ist übrigens auch Folgendes:
Ich habe aus Neugier den Code in eine Schleife verpackt und 20 Iterationen gemessen, die erste dauerte immer entsprechend der Tabelle 2 Beiträge höher, die restlichen 19 waren immer um die 0,001 Sekunden, also offenbar gecached.
Ganz meine Worte, nur etwas ausführlicher formuliert ![]()
Nehmen wir mal an jemand befragt Google zu einem bestimmten Thema und bekommt einige Foren angeboten, wo eine ähnliche Frage gestellt wurde. In mindestens 50% aller Fälle wird in diesen Foren als einzige Antwort "Google doch" vorhanden sein, das nennt man dann letztendlich wohl Stack Overflow...
Der Rest bietet dann meist Verweise auf Dokumentationen oder Ähnliches, welche meiner Meinung nach oft auch nicht anfängerfreundlich geschrieben sind. Das wird man hier nicht finden denn solche Antworten werden von uns relativ streng moderiert. Dazu muss man aber sagen, das es nicht wirklich oft dazu kommt. Vereinzelt findet man solche Beiträge wohl auch aber meist auch auf lächerliche Fragen, vielleicht Suche ich da nachher mal was raus wenn mir langweilig ist.
Ich denke auch, dass man hier als Anfänger recht gut aufgehoben ist. Wenn man etwas mehr Erfahrung hat braucht man oft auch keine direkte Hilfe mehr sondern es reicht wirklich ein Blick in die Dokumentationen.
Geflamet wird woanders ![]()
Das "Weiter so" gebe ich gerne zurück, du leistest schließlich auch einen großen Teil.
Keine Ursache, dafür sind wir hier. Wenn noch Fragen auftauchen einfach raus damit.
Im Verhältnis zu anderen Foren sind wir auch nicht sonderlich gut besucht. Das Forum ist zum Support der Seminare gedacht und die meisten Benutzer sieht man nach 1-2 Beiträgen mit Fragen nie wieder. Natürlich haben wir Stammbenutzer, diese sind in der Regel die, welche den anderen helfen. Aber auch da kann ich mangelndes Interesse an solch einem Bereich im Forum nicht verübeln.
Der Umgangston, das Niveau und die Ziele in diesem Forum unterscheiden sich allgemein teilweise recht deutlich von anderen. Was man sich da teilweise für Müll antun muss ist schon krass. Ich möchte keine Namen nennen und kann auch nichts wirklich Aktuelles berichten aber die Vergangenheit zeigt mir, in anderen Foren gibt es zu viel Müll.
Auch wir haben hin und wieder Probleme mit Benutzern die sich nicht ganz konform verhalten, das gucken wir uns genau 3 Tage an und dann holen wir den Besen heraus und fegen in die Auslagerungs- oder Mülltonne.
Natürlich soll dieser Bereich gerne benutzt, dafür ist er ja da, aber der Fokus liegt im Allgemeinen halt eher auf fachlichen Diskussionen, Fragen, Bockwurst. Der Benutzer bestimmt letztendlich den Inhalt.
Und keine Sorge, schwarzer Humor ist wie Essen... hat nicht jeder.
Darum habe ich geschrieben was ich mit minimalem Impressum meine, dein Name und deine E-Mailadresse fallen wohl eher nicht unter "Impressum" sondern eher unter "Kontakt". Wie ein Impressum auszusehen hat ist im TMG §5 vorgegeben. Das gilt zwar nicht für private Anwendung, sollte jedoch als Leitfaden genutzt werden DENN wenn wir es machen dann natürlich auch richtig.
Alles was über "minimal" hinaus geht sind Angaben zur eventuell vorhandenen Gesellschaft also Rechtsform, Kapital, Bevollmächtigte, Steueridentifikationsnummer, Informationen über Liquidation bei Aktien- und Kommanditgesellschaften bzw. GmbH & Co. KG oder anderen Gesellschaften mbH, Handelsregister, und so weiter.
P.S.: Da stellt man die angezeigte Anzahl an Beiträgen pro Seite schon auf das Maximum von 40 und muss jetzt trotzdem blättern, nun habe ich keine Lust mehr ![]()
Ich habe das nun ein mal etwas ausprobiert und das Ergebnis schockiert mich auf eine Art und Weise die ich nicht für möglich hielt ![]()
Ich habe eine Variable 10.000 mal hochzählen lassen:
Im ersten Fall habe ich die Befehle direkt hintereinander geschrieben (abgesehen von einem Leerzeichen):
Im zweiten Fall habe ich auf jeden Befehl 4 Leerzeilen folgen lassen, somit kam ich auf insgesamt 50.000 Zeilen:
Das Ergebnis ist deutlich anders als erwartet ausgefallen. Die Variante mit je 4 Leerzeilen ist im Durchschnitt satte 24% schneller als der dicke Einzeiler, welcher mit 52% kleinerer Dateigröße jedoch besser bei der Übertragung abschneidet:
+--------------+-------------------------------------------------------------------------------+---------+----------+
| no. of lines | 10 iterations, result in seconds | average | filesize |
+--------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+---------+----------+
| 50.000 | 0.021 | 0.025 | 0.022 | 0.023 | 0.026 | 0.020 | 0.020 | 0.024 | 0.022 | 0.024 | ø 0,022 | 166 KB |
+--------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+---------+----------+
| 1 | 0.030 | 0.031 | 0.026 | 0.032 | 0.024 | 0.030 | 0.026 | 0.029 | 0.030 | 0.031 | ø 0,029 | 78.1 KB |
+--------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+---------+----------+
Das kam wohl nicht ganz rüber.
Ob du ein Impressum brauchst oder nicht, hängt nicht von Klauseln ab die du (eventuell!) angeben musst. In den AGB's des Spiels steht nichts dergleichen, also musst du auch nichts Spezielles angeben.
Ob du ein Impressum brauchst oder nicht, entscheidet sich weiterhin so wie ich es in einem Beitrag in diesem Thread (weiter oben) ausführlich beschrieben habe.
Ich kam lediglich auf diese Idee, da ich eben schon Erfahrungen in dem Bereich gemacht habe, dass Drittanbieter-Websites eventuell besondere Angaben machen müssen (Namensnennung, etc.).
Wie bereits erwähnt, macht ein Impressum eigentlich fast immer Sinn. Genauer kann ich/man das erst sagen wenn der Inhalt der Seite klar definiert wurde, im besten Fall schon vorhanden ist.
Mögliche Faktoren sind da:
Ist pauschal wirklich unmöglich zu sagen, jedoch machst du garantiert nichts verkehrt wenn du ein minimales Impressum (Name, Anschrift, E-Mail Adresse od. Telefonnummer) anlegst.
Wenn du Inhalte dritter verlinkst musst du dich explizit von diesen Inhalten distanzieren, das macht die OnlineFussballManager GmbH z.B. auch in ihren AGB:
(§7) 8. Die OFM GmbH distanziert sich ausdrücklich von den Inhalten sämtlicher externer
Webseiten, welche durch Links über die Seiten des Spiels oder des Forums erreichbar
sind. Der OFM übernimmt für diese Inhalte und Seiten keinerlei Haftung.
Das Stichwort hier ist "Disclaimer" (Fachsprache für Haftungsausschluss), da kann und möchte ich an dieser Stelle nichts Ausführliches zu sagen.
Dieses Konstrukt 'else if' gibt es nicht in JS.
Nach dieser Aussage ging ich davon aus, du meintest es funktioniere nicht. ![]()
Es ist genau anders herum, "else if" simuliert nicht "elseif" sondern "elseif" simuliert "else if", das Keyword "elseif" habe ich bisher nur bei PHP angetroffen.
Und ja, natürlich ist es (wie bereits erwähnt) nur die Kurzform ohne Klammer:
Dies...
...entspricht dem:
Bei der Dateigröße liegt es im Sonderfall Web-Entwicklung eigentlich nur an der Übertragung zum Nutzer, dass man an ihr spart. Dafür gibt es allerdings auch Software die vorab unwichtige Leerzeichen und -zeilen entfernt. Einem Interpreter ist das Wurst, der erkennt nicht Zeilen sondern Befehle. (Was nicht bedeutet das eine Zeile mehr die selbe Zeit beansprucht wie eine weniger, das ist aber lächerlich gering
)
Dieses Konstrukt 'else if' gibt es nicht in JS.
Sehr wohl gibt es dieses Konstrukt, es ist das Äquivalent zu PHP's elseif und findet Anwendung in beispielsweise C, C#, C++, Java und anderen Programmiersprachen.
Die Funktionalität lässt sich hier feststellen: Codepen:gbVPGz
Ergibt sich auch daraus, dass die Klammern { } optional sind, wenn nur ein Befehl folgt, also in diesem Fall if als ein Befehl nach else.
Umbrüche vor Befehlsblöcken sind halt Geschmackssache. Ich finde das ist auch immer abhängig von der Sprache. In C#, C++ und Java arbeite ich gerne mit Absätzen vor der Klammer, in Javascript eher weniger, in Zukunft aber wohl wieder mehr denn ich finde das absolut förderlich für die Lesbarkeit; Wenn ich den Beginn und das Ende eines Blockes in der selben Spalte habe, kann ich die Klasse/Funktion/Kontrollstruktur wesentlich schneller von anderen abgrenzen, als wenn die beiden in verschiedenen Spalten stehen.
Es bleibt Geschmackssache, dem Interpreter wäre es auch recht wenn alles in einer Zeile stünde und Befehle nur durch das Semikolon getrennt würden. Für die Lesbarkeit und die Präsentation im Forum sind beide Wege (Mit oder ohne Umbruch vor der {-Klammer) geeignet. Code in die Länge ziehen ist doch kein Problem, wenn man die Dinge wunderbar voneinander unterscheiden kann.
Oder ist @wolf's Monitor zu klein? ![]()
In der Tat, die Schriftart eignet sich überhaupt nicht für Texte, eventuell solltest du diese auf die Überschrift beschränken.
Deine Überschriften sind nicht gegliedert, versuche es mal so:
h1 - Einzigartige Phrase, welche den Inhalt der gesamten Seite (samt Unterseiten, also das oberste Thema) beschreibt, bei dir z.B. "Deutscher Adler", einfach ein Schlagwort unter dem man dich bei Google auf dem ersten Platz finden soll. Diese Überschrift sollte einmalig und somit auf allen Unterseiten genau ein mal vorkommen, jedes mal identisch.
h2 - Die Überschrift der Unterseite, z.B. "Startseite" für die Startseite, "Forum" für ein Forum, etc. Jede Unterseite sollte ihre einzigartige h2-Überschrift bekommen
h3 - Zum Beispiel als Überschrift für einzelne Textsegmente, z.B. "Herzlich Willkommen" gefolgt von einem Begrüßungstext.
h4 - Zum Beispiel Dinge die Elemente anzeigen, welche unabhängig vom Inhalt der Seite sind, zum Beispiel ein Zufallsbild in einer Sidebar.
Durch eine strukturierte Gliederung der Überschriften macht man es dem Benutzer und den Suchmaschinen deutlich leichter. Barrierefreiheit für Blinde, Macht der Gewohnheit, Struktur ist ALLES!
In deinem CSS bin ich auf eine amüsante Zeile gestoßen:
Das ist sicher ein netter Gedanke, jedoch macht es mehr Sinn z.B. das Menü grundsätzlich einzublenden und erst ab einer Breite von kleiner oder gleich Wert X auszublenden:
nav.nav {
display: block;
}
@media screen and (max-width:750px) {
nav.nav {
display: none;
}
}
Alles anzeigen
Du hast in deinen Texten sehr viele Rechtschreibfehler, es ist immer ratsam jemanden Korrektur lesen zu lassen, wenn man selbst etwas unsicher ist.
Deine Seite ist selbst bei nur 147px Breite noch brauchbar, abgesehen von word-breaking (try ­), was aber nicht ganz so relevant ist denn diese Breite ist utopisch klein. Das zeugt von sauberem responsive Design, schafft nicht jeder!
Der Copyright-Vermerk im footer ist niedlich, jedoch gibt es im deutschen Recht kein Copyright, schon gar nicht ohne Angaben wer du überhaupt bist, BaumHausen finde ich auf der deutschen Karte nicht, den Baumweg Nummer 8 gibt es zwar, jedoch nur in der Stadt zu der auch die angegebene Postleitzahl passt
Das ist nicht ganz so erlaubt und auch wenn es sich nur um eine Testseite handelt die vermutlich 3 Leute anschauen sollte man bei der Wahrheit bleiben oder andere Wege finden wenn man keine persönlichen Daten angeben möchte ![]()
Dazu passt gerade sehr gut unser Impressum-Thema hier im Forum.
Jopo als Nickname ist in Ordnung, in doppelter Ausführung als vollständiger Name aber nicht so ganz.
Rein optisch finde ich die Seite langweilig. Sie ist zwar einigermaßen strukturiert (nicht der Code, nur das Sichtbare), aber an sich nur Grau auf noch mehr Grau, daran ändert auch ein orangefarbener Balken unter einigen Boxen nicht viel.
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.