Hallo,
ich möchte rechts ausserhalb der Webseite einen Banner positionieren, der aber an der gleichen Position stehen bleibt, wenn die Bildschirmauflösung veränder wird.
Muster hier: http://www.roevenich-immobilien.de/test.htm
Meine derzeitige CSS-Anweisung bei einer Bildschirmauflöung von 1920x1080:
Hallo Klaus,
wenn ich das richtig sehe, hast du es auf der genannten Site schon (teils) gelöst, mit „fixed“.
Die Probleme:
Banner entfernt sich vom Inhaltsbereich bei zunehmender Fensterbreite
Banner schiebt sich über den Inhalt bei kleiner Fensterbreite
Die „fixed“-Positionierung ist mit der automatischen Zentrierung nicht vereinbar, jedenfalls nicht allein auf css-Basis ohne Javascript.
Lösung ohne auto-Zentrierung:
* der Div „eurokaution-rechts“ kann entfallen.
* width aus der body-Def. raus
* alles außer „eurokaution“ in einen Div mit width 760
* alles komplett in einen weiteren Div mit width 1080
* „eurokaution“ mit left 770 statt right.
Lösung mit auto-Zentrierung und Javascript: bei jeder Änderung der Fensterbreite die neue Breite ermitteln, und die left-Positionierung von „eurokaution“ neu bestimmen:
newLeftPos = 760 + 10 + (windowWidth - 760)/2
empfehlenswert ist das nicht. „eurokaution“ würde bei Fensteränderungen erkennbar „zittern“, weil die Position permanent nachkorrigiert wird.
die Auflösung spielt keine Rolle, du machst die Website nicht für deinen Bildschirm, sondern für die breite Masse, die alle verschiedene Bildschirmauflösungen haben.
Zudem sind deine Informationen kärglich. Bei relative Anordnung orientiert sich das Element an das Elternelement. Also muss man wissen wo dein Banner verzeichnet wurde. Ein Link zu deiner Website wäre zielführender .
Dein Banner kann nicht zwei ID haben, entscheide dich welche von den zwei du nehmen möchtest.
Hallo Thorn,
erstmal Danke, Du hast es richtig erkannt.
Eurokaution-rechts habe ich entfernt, war nicht nötig.
Wenn ich den Rest aber richtig verstehe, ist eine automatische Positionierung ohne Java nicht möglich und mit Java nicht empfehlenswert.
Welche Lösung gibt es noch?
Bitte Klaus , aber ich kann dir schlecht helfen, bei so wenig Infos. Sende ein Link, dann kann ich schauen, woran es liegt, dass das nicht klappt. Wahrschenlich hat das Element irgendeine andere Anweisung geerbt und deshalb funktioniert das nicht.
hm, vielleicht fällt einem wahren CSS-Künstler noch was ein, das ich nicht kenne
Ich persönlich empfehle dir, auf die auto-Zentrierung zu verzichten: ist nicht mehr modern, speziell wg. der zunehmenden Verbreitung mobiler Geräte, auf denen das mangels Platz gar keinen Sinn hat. Im Unterschied zu einer Javascriptlösung sehr einfach zu machen, und eben nicht javascript-abhängig.
Ein weiterer Denkansatz: auf das „fixed“ verzichten, und stattdessen einen „normalen“ Banner nehmen, der mitscrollt. „fixed“ wird hauptsächlich für Kopf/Fußzeilen verwendet, die einen Zweck (Navigation, Information) erfüllen und bei denen die permanente Sichtbarkeit einen Usability-Gewinn darstellt. Ein „fixed“ Element, das nur der Werbung dient, könnte als aufdringlich empfunden werden.
Hallo Thomas,
mach mal bitte einen konkreten Lösungsvorschlag mit Quelltext, den ich als Laie auch umsetzen könnten. Danke im Voraus und Guten Rutsch ins neue Jahr.
hm, vielleicht fällt einem wahren CSS-Künstler noch was ein,
das ich nicht kenne
Ich persönlich empfehle dir, auf die auto-Zentrierung zu
Nochmal,
was hälst du von eine Script in dem ich die Bildschirmauflöung abfrage und danach ein entsprechender Container aufgerufen wird. Wenn das eine Lösung wäre, wie könnte der Schrift und der Container ausehen?
Danke im Voraus.
Gruss
Da war ich etwas zu schnell, hier nochmal korrigiert:
Was hälst du von einem Script in dem ich die Bildschirmauflöung abfrage und danach ein entsprechender Container aufgerufen wird. Wenn das eine Lösung wäre, wie könnte der Script und der Container ausehen?
Danke im Voraus.
„eurokaution“ wird erst beim Laden der Seite per Javascript positioniert und sichtbar gemacht, daher hat es im CSS keine left-Position:
#eurokaution {
position: fixed;
top: 180px;
}
… und im HTML vergibst du das style-Attribut zum Verstecken:
Ebenfalls im HTML bekommt das body-Tag zwei Event-Handler:
Und am Ende vom HTML, vor dem schließenden body-Tag, das Javascript:
var bodyWidth = 820;
var adLayer = null;
function setLayerPos() {
var leftPos = Math.floor((window.innerWidth - bodyWidth)/2) + bodyWidth + 10;
adLayer.style.left = leftPos + "px";
}
function startLayerPos() {
adLayer = document.getElementById('eurokaution');
setLayerPos();
adLayer.style.visibility = "visible";
}
Darin muss die Variable bodyWidth passen zu der Breite, die du per CSS definiert hast.
Ich würde ein deutlich schmaleres Werbebanner verwenden, dann muss das Fenster nicht so riesenbreit sein, bevor man den Banner überhaupt vollständig sieht.
Hallo Thorn,
uff, das ist ja eine Menge, mal sehen, ob ich das hinkriege. Hast Du vieleicht einen Skype-Anschluss, weil ich im Ausland sitze. Wenn ja, schicke mir diesen bitte über [email protected].
Einstweilen vielen Dank für Deine Mühe.
Gruss
Hallo Thorn,
wie ich befürchtet habe, habe ich scheinbar Fehler gemacht. Die Formatierung ist komplett hin.Schau noch mal bitte in den Quellcode. Danke.
Gruss
Du hast alles an die korrekten Positionen kopiert, dabei aber leider immer die Formatierungszeichen
und
mit kopiert die müssen überall raus (CSS und HTML). Am Besten löscht du immer die ganze Zeile, denn zumindest in der CSS-Datei „vpage3.css“ ist vor dem ersten
Hallo Thorn,
damit hatte ich jetzt nicht mehr gerechnet und es schon aufgegeben. Ich habe zwar versucht, alles wieder herzustellen, dabei ist aber wahrscheinlich wieder etwas schief gelaufen. Hast Du Interesse daran, mich via Skype und Teamviewer gegen Bezahlung ein bischen Nachhilfe in CSS zu geben? Wenn ja, wie kommen wir zusammen.