Antworten auf deine Fragen:
Neues Thema erstellen

Große Verwirrung... DIV-Positionierung mit CSS will nicht hinhauen

Crackp0t

Aktives Mitglied

Ich beschäftige mich jetzt nach 2 Jahren mal wieder mit HTML/CSS (in Verbindung mit JS) und werde an ähnlichen Stellen verrückt wie zu dem Zeitpunkt an dem ich aufgehört habe :rolleyes:

Objekt der HTML-Datei soll eine kleine Galerie auf einer CD sein, die diverse von mir erstellte Bilder anzeigt. Diese sollen zuerst in einer Thumbnail dargestellt werden und auf Wunsch soll z. B. eine größere Version sichtbar oder die entsprechende PSD-Datei angezeigt werden.

Nun habe ich einige Probleme bei der Umsetzung:

Anmerkung: Ich kann nicht davon ausgehen, dass der Betrachter Internetzugang besitzt. Deswegen fallen Ajax-Frameworks aus und PHP ist selbstverständlich auch nicht drin.

1. Der "pic_overlay_box" DIV, indem die größere Bildversion dargestellt werden soll, überlappt nicht den "thumb_box"-DIV. Ich scheine gerade was die DIV-Positionierung angeht noch schwierigkeiten zu haben, wäre deswegen für eine ausführliche Erklärung an dieser Stelle dankbar. Links die nicht zu CSS4You oder SelfHtml führen gehen auch. Gelöst. Danke sokie :)

2. Die JS-Funktion "overlay()" macht zwar den DIV sichtbar, das Verstecken funktioniert aber nicht. Gelöst. Habe bei der IF-Abfrage ein "=" vergessen... Warum sagt mir das keiner? :D

3. Wie kann ich ein Bild in bestmöglicher Größe darstellen, auch wenn ich die Bildschirmauflösung des Betrachters nicht kenne? Gelöst, nochmal ein Dank an sokie.

4. Wie kann ich per JS auf den DIV "main_box" zugreifen um dann eine bestimmten HTML-Code hinein zu schrieben? Ich will den Part "<div id="thumb_box" onclick="overlay()"></div>" nämlich dynamisch schreiben lassen, ohne dass ich meinen JS-Code im ganzen Dokument verstreue.

Hier sind meine Quellcodes:

HTML:
HTML:
<html>
<head>

<link rel="stylesheet" type="text/css" href="style.css">

    <script type="text/javascript">

    function overlay() {
        if (document.getElementById("pic_overlay_box").style.display == "none") {
            document.getElementById("pic_overlay_box").style.display = "block";
        } else {
            document.getElementById("pic_overlay_box").style.display = "none";
        }
    }

    </script>


</head>

<body>

<div id="main_box">

    <div id="thumb_box" onclick="overlay()"></div>

    <div id="pic_overlay_box" style="display: none">

        <div id="big_pic_box" onclick="overlay()">
        </div>

    </div>

</div>

</body>
</html>
CSS:
Code:
body {
    background-color:#505050;
    margin: 0px;
}

#main_box {
    border:1px solid #FFFFFF;
    
    margin:auto;
    height: 98%;
    width: 98%;
    }

#thumb_box {
    border: 1px solid #FFF;
    
    position: relative;
    margin: 10px;
    height: 120px;
    width: 120px;
    float: left;
}
    
#pic_overlay_box {
    border:1px solid #3C3;
    background-image: url("t_back2.png");
        
    position: fixed;
    margin: auto;
    top: 0px;
    width: 98%;
    height: 98%;
    z-index: 9998;
}

#big_pic_box {
    border: 1px solid #FFF;
    background-color: #000;
    
    position: relative;
    margin: auto;
    top: 0px;
    width: 300px;
    height: 99%;
    z-index: 9999;
}
Danke für euro Hilfe :)
 
Zuletzt bearbeitet:

F

foto62

Guest

AW: Große Verwirrung... DIV-Positionierung mit CSS will nicht hinhauen

Positioniere Deine DIV's mal mit position:absolute; oder relative.
 

eytibi

*moep*

AW: Große Verwirrung... DIV-Positionierung mit CSS will nicht hinhauen

Hallo,

zum Ein- und Ausblenden deiner DIVs würde ich
Code:
document.getElementById("pic_overlay_box").style.display = 'none';
bzw.
Code:
document.getElementById("pic_overlay_box").style.display = 'block';
verwenden.
 
F

foto62

Guest

AW: Große Verwirrung... DIV-Positionierung mit CSS will nicht hinhauen

Oder probiers mal damit. Es wird ein Bild 1.jpg benötigt im gleichen Ordner. Bildgröße und Verwendung von thumbs und großen Bildern editierst Du bitte nach Deinem Bedarf

<style type="text/css">

body {background-color:#FFFFff; margin-left:100px;}

#BILD{position:absolute;z-index:2;top:10px;left:150px;visibility:hidden;}

#THM{top:10px;left:10px;z-index:1;visibility:visible;}

</style>

<script type="text/javascript">
<!--
function on () {
if (document.getElementById)
document.getElementById("BILD").style.visibility = "visible";
document.getElementById("THM").style.visibility = "collapse";
}
function off () {
if (document.getElementById)
document.getElementById("BILD").style.visibility = "collapse";
document.getElementById("THM").style.visibility = "visible";
}
//-->
</script>
</head>
<body>
<div id="THM">
<a href= "#" onclick="on()"><img src="1.jpg" width="80px"></a>
</div>
<div id="BILD">
<a href="#" onclick="off()"><img src="1.jpg" width="200px"></a>
</div>
 

Crackp0t

Aktives Mitglied

AW: Große Verwirrung... DIV-Positionierung mit CSS will nicht hinhauen

Positioniere Deine DIV's mal mit position:absolute; oder relative.

Mit welcher Begründung?

Das Attribut "fixed" verhält sich wie "absolute", mit der Ausnahme, dass die Position auf diesen Bereich fixiert bleibt. Das ist bei Overlay-Boxen so gewollt, als auch notwendig, da sie sich wie ein Popup verhalten sollen.

Variationen bei "thumb_box" und "main_box" habe ich bereits probiert, jedoch ohne Erfolg.
 

sokie

Mod | Web

AW: Große Verwirrung... DIV-Positionierung mit CSS will nicht hinhauen

eigentlich macht man heutzutage solche Fummeleien nicht mehr selber (ausser zur persönlichen Erbauung) Frameworks fallen nur dann wegen internetconnectivität aus, wenn man nicht die Scripte mit auf die CD packt.
ich bin grad bei einer ähnlichen Sache, und da ist für mich fancybox die beste Wahl.

ich würde das overlay per display:none verstecken und per display:block einblenden.
Bei display:none ist es wirklich weg(nimmt den Raum nicht mehr ein), wärend es bei visibility nur nicht zu sehen, aber noch da ist.

du kannst schon beim laden der Seite dafür sorgen, dass deine Funktionen da sind, sobald geladen ist, wenn du die funktionen bei window.onload lädst.
Code:
<script type="text/javascript">
window.onload = function(){
  var overlay = document.getElementById("overlay");
  // Overlay ausbleden wenn auf das Overlay geklickt wird
  overlay.onclick = function(){
    this.style.display = "none";
  }
}
</script>
wenn du nicht davon ausgehen musst, dass auch Benutzer mit der Auflösung von 800x600 (der Prozentsatz ist inzwischen sehr gering) die Bilder ansehen wirst du in der Breite um die 900px (dein overlay nimmt ja keine 100% ein!?) und in der Höhe unter 600px bleiben müssen. (für die grosse Zahl der 1024x768 ). Da kann allerdings in der Höhe 600px schon knapp werden ,wenn toolbars noch einen Teil zusätzlich einnehemen.
Code:
[COLOR=#000080]<div id=[COLOR=#0000ff]"pic_overlay_box"[/COLOR] style=[COLOR=#0000ff]"visibility: collapse"[/COLOR]>[/COLOR]
wie gesagt, vielleicht besser display: none und dann aber mit den anderen eigenschaften im <style> css bereich.
 
Zuletzt bearbeitet:

sokie

Mod | Web

AW: Große Verwirrung... DIV-Positionierung mit CSS will nicht hinhauen

zur Position deines Overlays:
ohne eine angabe von top: und left: wird der Bereich an der Stelle angezeigt, an der er im dokumentenfluss auftaucht, das ist bei dir eben nach der thumbsbox.
musst du mal sehen ob du da mit top: 2.5%; dein gewünschtes Ergebnis erreichst, oder ob da eine andere Angabe günstiger ist (ich würde den Overlay 100% setzen und top:0)
 
Zuletzt bearbeitet:

Crackp0t

Aktives Mitglied

AW: Große Verwirrung... DIV-Positionierung mit CSS will nicht hinhauen

Danke, das mit der Top-Positionierung hat mir sehr geholfen.
Aber warum kann ich nicht einfach per onclick()-Event und if Abfrage das Overlay ein- bzw. ausblenden? Was für einen Unterschied gibt es zwischen visibility:collapse; und display:none;? Bei beiden wird kein Platzhalter reserviert, das ist doch das entscheidende, oder?

Ach ja, kann man per JS in Verbindung mit innerWidth und innerHeight Inhalte browsergerecht skalieren? Ein Tutorial dazu wäre klasse!

Ich möchte die Scripts gern selbst schreiben, denn ich mach das nicht nur als Mittel zum Zweck.
 

sokie

Mod | Web

AW: Große Verwirrung... DIV-Positionierung mit CSS will nicht hinhauen

Ach ja, kann man per JS in Verbindung mit innerWidth und innerHeight Inhalte browsergerecht skalieren? Ein Tutorial dazu wäre klasse!

das mit em "skalieren" ist keine gute idee. die abbildungsqualität lässt deutlich nach, wenn man Bilder per width und height im browser verkleinert.
Wenn du so etwas willst, solltest du die Bilder besser in unterschiedlichen Grössen Vorhalten und sicher - per javascript die Fenstergrösse bestimmen und den entsprechenden inhalt bei voller qualität ausgeben.
Die frage ist allerdings wie gross der Unterschied zwischen 1024 und zB 1280 sein kann... musst du sehen, ob sich das lohnt.

in ein anderes Problem wirst du beim Auslesen der Fenstergrössen und der unterschiedlichen Methoden bei den Browsern laufen. (auch hier empfiehlt sich schon wieder ein Framework, dass die Browserunterschiede gleich ausräumt).

Du kannst Xampp ohne Probleme auf einer CD oder einem USB Stick installieren und ausführen!
das ist schön für den Benutzer, der zufällig unter Windows dieses DVD anschaut...
 
Zuletzt bearbeitet:

Crackp0t

Aktives Mitglied

AW: Große Verwirrung... DIV-Positionierung mit CSS will nicht hinhauen

Danke für eure Hilfe, habe meinen ersten Post editiert und eine neue Frage hinzugefügt.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben