mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 26.04.2024 02:42 Benutzername: Passwort: Auto-Login

Thema: angeklickter DIV container hervorgehoben (unerwünscht) ! vom 23.03.2012


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Allgemeines - Nonprint -> angeklickter DIV container hervorgehoben (unerwünscht) !
Seite: Zurück  1, 2, 3, 4, 5
Autor Nachricht
elagil
Threadersteller

Dabei seit: 21.03.2012
Ort: -
Alter: -
Geschlecht: -
Verfasst Sa 31.03.2012 21:02
Titel

Antworten mit Zitat Zum Seitenanfang

gut das überfordert mich ein wenig, ich schau mir das mal genauer an Grins ... danke für die vielen hinweise Lächel
  View user's profile Private Nachricht senden
elagil
Threadersteller

Dabei seit: 21.03.2012
Ort: -
Alter: -
Geschlecht: -
Verfasst Sa 31.03.2012 23:44
Titel

Antworten mit Zitat Zum Seitenanfang

zwischenzeitlich habe ich etwas anderes gemacht... je mehr man lernt, desto mehr will man einbauen Grins

der #main container soll mit der seite skalieren. die menüleiste links soll immer gleich breit bleiben, das seitenverhältnis des zielcontainers auf der rechten soll immer gleich bleiben. dabei sollen die abstände von den seiten des fensters einstellbar sein. das hier ist rausgekommen:

Code:
<script type="text/javascript">
   

$(window).resize(function(){
   
   var
      breite_menu = 220,
      scrollbalken = 6,
      breite_scroll = breite_menu - scrollbalken,
      rand = 50

   
main_center(document.getElementById("main"));
   
function main_center (div)
{
   
   var
      hoehe_fenster = parseInt(window.innerHeight),
      breite_fenster = parseInt(window.innerWidth),
      hoehe_div = parseInt(div.offsetHeight),
      breite_div = parseInt(div.offsetWidth);
      
   if( (hoehe_div + rand) < hoehe_fenster)
   {
      div.style.left = "50%";
      div.style.width = breite_fenster - rand + "px";
      div.style.marginLeft = "-" + breite_div/2 +"px";
      div.style.height = (breite_div - breite_scroll) / 1.6 + "px";
      div.style.top = "50%";
      div.style.marginTop = "-" + hoehe_div/2 + "px";
   }
   
   else
   {
      div.style.top = "50%";
      div.style.height = hoehe_fenster - rand + "px";
      div.style.marginTop = "-" + hoehe_div/2 +"px";
      div.style.width = breite_scroll + hoehe_div * 1.6 + "px";
      div.style.left = "50%";
      div.style.marginLeft = "-" + breite_div/2 + "px";
   }
   
ziel_align(document.getElementById("ziel"));
   
function ziel_align (div)
{
   var hoehe_div = parseInt(div.offsetHeight);
   
      div.style.height = "100%";
      div.style.width = hoehe_div * 1.6 + "px";
      div.style.left = breite_scroll + "px"
}
         
}
})

   
</script>


beim verändern der größe des fensters "springt" das ein bisschen heftig. allgemein passen die größen nicht so richtig..

außerdem will ich natürlich, dass diese funktion nicht nur beim herumziehen des fensters genutzt wird, sondern schon beim laden des dokumentes. das ist an sich kein problem wenn ich die funktion doppelt aufschreibe (einmal im .resize befehl und einmal bei document.ready) ich würde aber gern auf sie verweisen..

hier nochmal der link zur seite online: Klick!
  View user's profile Private Nachricht senden
Anzeige
Anzeige
elagil
Threadersteller

Dabei seit: 21.03.2012
Ort: -
Alter: -
Geschlecht: -
Verfasst So 01.04.2012 00:40
Titel

Antworten mit Zitat Zum Seitenanfang

ah kleine änderungen: ich habe mal bei jeder bedingung die vormals beeinflussten größen auf auto zurückgesetzt und es wird endlich flüssig.. ansonsten habe ich weniger abhängigkeiten von variablen erzeugt, damit die geschwindigkeit höher wird (?)

Code:
$(window).resize(function(){
   
   var
      breite_menu = 220,
      scrollbalken = 6,
      breite_scroll = breite_menu - scrollbalken,
      rand = 50

   
main_center(document.getElementById("main"));
   
function main_center (div)
{
   
   var
      hoehe_fenster = parseInt(window.innerHeight),
      breite_fenster = parseInt(window.innerWidth),
      hoehe_div = parseInt(div.offsetHeight),
      breite_div = parseInt(div.offsetWidth);
   
   if( (hoehe_div + rand) < hoehe_fenster)
   {
      div.style.bottom = "auto";
      div.style.width = "auto";
      
      div.style.left = rand/2 + "px";
      div.style.right = rand/2 +"px";
      div.style.height = (breite_div - breite_scroll) / 1.6 + "px";
      div.style.top = (hoehe_fenster - hoehe_div)/2 + "px"
   }
   
   else
   {
      div.style.right = "auto";
      div.style.height = "auto";
      
      div.style.top = rand/2 + "px";
      div.style.bottom = rand/2 + "px";
      div.style.width = breite_scroll + hoehe_div * 1.6 + "px";
      div.style.left = (breite_fenster - breite_div)/2 + "px"
   }
   
ziel_align(document.getElementById("ziel"));
   
function ziel_align (div)
{
   var hoehe_div = parseInt(div.offsetHeight);
   
      div.style.height = "100%";
      div.style.left = breite_scroll + "px";
      div.style.right = 0 + "px"
}
         
}
})
  View user's profile Private Nachricht senden
bacon

Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst So 01.04.2012 03:59
Titel

Antworten mit Zitat Zum Seitenanfang

+1: Du wandelst deutlich über dem Niveau des durchschnittlichen MGI-Users, denn Du bist in der Lage, Deinen Quelltext ordentlich und lesbar zu strukturieren.

-1: Wasn jetzt die Frage? Und warum möchtest Du auf Teufel komm raus die Ausmaße Deiner Containerelemente via Javascript bestimmen!??
  View user's profile Private Nachricht senden
elagil
Threadersteller

Dabei seit: 21.03.2012
Ort: -
Alter: -
Geschlecht: -
Verfasst So 01.04.2012 11:02
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
Und warum möchtest Du auf Teufel komm raus die Ausmaße Deiner Containerelemente via Javascript bestimmen!??


ich dachte mir das geht nicht anders?.. über javascript läuft das im moment einfach nicht gut, die if-bedingung ist unzuverlässig und es kommt mir auch so vor, als würde sie logisch nicht einwandfrei arbeiten.

die frage ist noch die selbe wie oben: wie zentriere ich am besten einen container horizontal und vertikal, der folgende eigenschaften erfüllt:

-er ist gedanklich in zwei teile zu teilen
-der linke teil hat eine bestimmbare breite, die höhe skaliert mit der seite
-der rechte teil hat ein festes seitenverhältnis, skaliert aber mit der größe der seite
-die linke und rechte seite sollen immer gleich hoch sein *zwinker*

wie soll ich das denn mit css machen?
  View user's profile Private Nachricht senden
elagil
Threadersteller

Dabei seit: 21.03.2012
Ort: -
Alter: -
Geschlecht: -
Verfasst So 01.04.2012 11:54
Titel

Antworten mit Zitat Zum Seitenanfang

@ sahnemuh: ich hab den code mal ein bisschen durchgeschaut, ich glaube da waren ein paar kleinigkeiten nicht richtig..

Code:
if(istLadenSichtbar==true)
            { // wenn laden sichtbar, führe den rest der funktion nicht aus.
                 return false;
                 }


statt

Code:
if(istLadenSichtbar()) { // wenn laden sichtbar, führe den rest der funktion nicht aus.
                 return false;
              }


istLadenSichtbar ist ja keine Funktion mehr?

so wie das script jetzt ist läuft es, allerdings erscheint bei klick auf den rechten container erst wieder das selbe bild, erst beim zweiten klick das neue... ich kann da nichts falsches finden

jetziger code:

Code:
(function(){
   
   var pfad          = "images/stuhlbilder/",
        menuitem       = false,
        seite          = 0, // seite beginnt wieder bei 0, siehe unten.
        seiteMax      = 6, // letzte seite: wieder an einer zentralen stelle um es ggf. überall einfach ändern zu können
        bilderSpeicher   = {}, // dient als speicher welche bilder schon geladen wurden. dazu später mehr.
         $menu          = $('.menu'),
         $container       = $('#klickflaeche'),
         $ziel          = $('#ziel'),
        $laden          = $("#laden"),
        $start          = $("#start");
      
      
   
    $menu
       .on('click',function(ev)
               {
         
                 ev.preventDefault();
            
                 if(istLadenSichtbar==true)
            {
                 return false;
                 }
         
              menuitem = $menu.index($(this));
              seite = 0; 
               var bildPfad = pfad + menuitem + "/" + seite + ".jpg";
               ladeBild(bildPfad);
           });
         
         
         

   $container
       .on('click',function(){
                if(istLadenSichtbar==true || menuitem==false)
            { 
                 return false;
                 }
 
                  if(seite >= seiteMax){
                     seite    =   0
                  };
             
                zeigeLaden();
                var    bildPfad = pfad + menuitem + "/" + seite + ".jpg";
               ladeBild(bildPfad);

            seite = seite+1;
             
         });
     
      var istLadenSichtbar = function()
      { // gibt zurück ob laden sichtbar ist oder nicht
        return $laden.is(":hidden");
      }
   
    var zeigeLaden = function()
   { // zeigt den "laden" layer
      $ziel.hide();
      $laden.show();
    }
   
    var zeigeZiel = function(neu) { // zeigt den "ziel" bereich
      $laden.hide();
      $ziel.fadeIn("fast");
    }
    var ladeBild = function(bildPfad) {
        zeigeLaden();
      
      $start
           .attr("src",bildPfad);
                if(!bilderSpeicher.hasOwnProperty(bildPfad))
               { // bilder müssen nur neu geladen werden, wenn sie nicht schon mal geladen wurden (caching!)
               bilderSpeicher[bildPfad] = bildPfad; // bild existierte noch nicht im "zwischenspeicher" -> Hinzufügen
            
               $start
                  .load(zeigeZiel); // führe nach dem laden die funktion zeigeZiel aus
            }
            
            else
            {
               zeigeZiel(); // das bild wurde schon mal geladen: also müssen wir es eigentlich nur noch anzeigen.
               }
               
    }     
       
})();
  View user's profile Private Nachricht senden
elagil
Threadersteller

Dabei seit: 21.03.2012
Ort: -
Alter: -
Geschlecht: -
Verfasst So 01.04.2012 15:57
Titel

Antworten mit Zitat Zum Seitenanfang

probleme wurden beseitigt...er soll natürlich schon vor dem öffnen des nächsten bildes hochzählen! sonst öffnet er ja zweimal "0.jpg"...

der erste stuhl hat nicht funktioniert, der index "0" wird von der funktion if (menuitem == false) bzw. if (!menuitem) aussortiert! ich habe also den index immer um 1 erhöht und meine ordner entsprechend umbenannt...

Code:
(function(){
   
   var pfad          = "images/stuhlbilder/",
        menuindex       = 0,
      menuitem       = 0,
        seite          = 0, // seite beginnt wieder bei 0, siehe unten.
        seiteMax      = 6, // letzte seite: wieder an einer zentralen stelle um es ggf. überall einfach ändern zu können
        bilderSpeicher   = {}, // dient als speicher welche bilder schon geladen wurden. dazu später mehr.
         $menu          = $('.menu'),
         $container       = $('#klickflaeche'),
         $ziel          = $('#ziel'),
        $laden          = $("#laden"),
        $start          = $("#start");
      
      
   
    $menu
       .on('click',function(ev)
               {
         
                 ev.preventDefault();
            
                 if(istLadenSichtbar==true)
            {
                 return false;
                 }
         
              menuindex = $menu.index($(this));
           menuitem = menuindex + 1
              seite = 0;
               var bildPfad = pfad + menuitem + "/" + seite + ".jpg";
               ladeBild(bildPfad);
           });
         
         
         

   $container
       .on('click',function(){
                if(istLadenSichtbar==true || menuitem == 0)
            { 
                 return false;
                 }
 
                  if(seite >= seiteMax){
                     seite    =   0
                  };
             
            seite = seite+1;
             
                zeigeLaden();
                var    bildPfad = pfad + menuitem + "/" + seite + ".jpg";
               ladeBild(bildPfad);
             
         });
     
      var istLadenSichtbar = function()
      { // gibt zurück ob laden sichtbar ist oder nicht
        return $laden.is(":hidden");
      }
   
    var zeigeLaden = function()
   { // zeigt den "laden" layer
      $ziel.hide();
      $laden.show();
    }
   
    var zeigeZiel = function(neu) { // zeigt den "ziel" bereich
      $laden.hide();
      $ziel.fadeIn("fast");
    }
    var ladeBild = function(bildPfad) {
        zeigeLaden();
      
      $start
           .attr("src",bildPfad);
                if(!bilderSpeicher.hasOwnProperty(bildPfad))
               { // bilder müssen nur neu geladen werden, wenn sie nicht schon mal geladen wurden (caching!)
               bilderSpeicher[bildPfad] = bildPfad; // bild existierte noch nicht im "zwischenspeicher" -> Hinzufügen
            
               $start
                  .load(zeigeZiel); // führe nach dem laden die funktion zeigeZiel aus
            }
            
            else
            {
               zeigeZiel(); // das bild wurde schon mal geladen: also müssen wir es eigentlich nur noch anzeigen.
               }
               
    }     
       
})();


damit wäre der code geklärt, bleibt noch die frage zur skalierung der divs *zwinker*

Zitat:
wie zentriere ich am besten einen container horizontal und vertikal, der folgende eigenschaften erfüllt:

-er ist gedanklich in zwei teile zu teilen
-der linke teil hat eine bestimmbare breite, die höhe skaliert mit der seite
-der rechte teil hat ein festes seitenverhältnis, skaliert aber mit der größe der seite
-die linke und rechte seite sollen immer gleich hoch sein

wie soll ich das denn mit css machen?


danke für alles bisherige Lächel
  View user's profile Private Nachricht senden
elagil
Threadersteller

Dabei seit: 21.03.2012
Ort: -
Alter: -
Geschlecht: -
Verfasst So 01.04.2012 16:56
Titel

Antworten mit Zitat Zum Seitenanfang

ich habe meine anforderungen ein wenig geändert ^^

der container soll einfach nur 2,2 mal so breit wie hoch sein und von jedem rand zu jeder zeit mindestens 30 pixel entfernt sein...
  View user's profile Private Nachricht senden
 
Ähnliche Themen 3D-Würfel unerwünscht!
DIV Container bei Mouseover über DIV Container anzeigen
DIV-Container soll anderen DIV-Container verdrängen
CSS: Container im Container Vertikal zentrieren
Variabler Div-Container bis zum mittigen Div-Container
CSS - was ist ein div-container?
Neues Thema eröffnen   Neue Antwort erstellen Seite: Zurück  1, 2, 3, 4, 5
MGi Foren-Übersicht -> Allgemeines - Nonprint


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.