• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Parallax Scrolling Hintergrund + Safari Problem

Eisbergsalat

Neues Mitglied
Hi

mein Problem sieht wie folgt aus: Es funtioniert alles wunderbar. Nur nicht in Safari. Der Teil der Seite ist mit einem Hintergrundbild hinterlegt welches fest positioniert ist. Unter IExplorer 11, Chrome, Firefox wird das auch ohne Probleme dargestellt, nur unter Safari habe ich kein Hintergrundbild, sondern nur die Hintergrundfarbe. Weiß jemand woran das liegen könnte. Ich hab mich auch schon dumm und dämlich gesucht im netz und keine antwort dafür gefunden.

Hier der HTML5 Code für das Problem.
HTML:
   <section id="shows">

      <div class="text-container">
         <div class="row">
            <div class="two columns header-col">
               <h1><span>Auftritte</span></h1>
            </div>

            <div class="ten columns flex-container">
               <div class="flexslider">
                  <ul class="slides">

                     <li>
                        <blockquote>
                           <p>19. Februar 2015
                           <br>Das Fest der Feste - Die Party geht weiter
                           <br>Dresden - Messe Dresden
                           </p>
                           <cite>Wolf</cite>
                        </blockquote>
                     </li> <!-- slide ends -->

                     <li>
                        <blockquote>
                           <p>
                           <br>08. März 2015
                           <br>Die Große Schlager Star Parade
                           </p>
                           <cite>Wolf</cite>
                        </blockquote>
                     </li> <!-- slide ends -->

                     <li>
                        <blockquote>
                           <p>19. April 2015
                           <br>Die große Schlager-Starparade München
                           <br>
                           </p>
                           <cite>Wolf</cite>
                        </blockquote>
                     </li> <!-- slide ends -->

                  </ul>
               </div>  <!-- div.flexslider ends -->
            </div>  <!-- div.flex-container ends -->
         </div>  <!-- row ends -->
       </div>  <!-- text-container ends -->
   </section>  <!-- shows Section End-->

Dass ist der CSS eintrag für #shows
Code:
#shows {
   background: #1F1F1F url(../images/testimonials-bg.jpg) no-repeat center center;
   background-size: cover !important;
    -webkit-background-size: cover !important;
   background-attachment: fixed;
  
   position: relative;
   min-height: 200px;
   width: 100%;
   overflow: hidden;
}
#shows .text-container {
   padding-top: 96px;
   padding-bottom: 66px;
}
#shows h1 {
   font: 18px/24px 'opensans-bold', sans-serif;  
   text-transform: uppercase;
   letter-spacing: 3px;
   color: #fff;
}
#shows h1 span { display: none; }
#shows .header-col { padding-top: 9px; }
#shows .header-col h1:before {
   font-family: 'FontAwesome';
   content: "\f10d";
    padding-right: 10px;
    font-size: 72px;
   line-height: 72px;
   text-align: left;
   float: left;
   color: #fff;
}

/*    Blockquotes */
#shows blockquote {
   margin: 0 0px 30px 0px;
   padding-left: 0;
   position: relative;
   text-shadow: 0px 1px 3px rgba(0, 0, 0, 1);
}
#shows blockquote:before { content: none; }
#shows blockquote p {
   font-family: 'librebaskerville-italic', serif;
   padding: 0;
   font-size: 24px;
   line-height: 48px;
   color: #fff
}
#shows blockquote cite {
   display: block;
   font-size: 12px;
   font-style: normal;
   line-height: 18px;
   color: #fff;
}
#shows blockquote cite:before { content: "\2014 \0020"; }
#shows blockquote cite a,
#shows blockquote cite a:visited { color: #8B9798; border: none }

Und hier ist der Code für den Slider
Code:
/* Flex Slider
/* ------------------------------------------------------------------ */

/* Reset */
.flexslider a:active,
.flexslider a:focus  { outline: none; }
.slides,
.flex-control-nav,
.flex-direction-nav { margin: 0; padding: 0; list-style: none; }
.slides li { margin: 0; padding: 0;}

/* Necessary Styles */
.flexslider {
   position: relative;
   zoom: 1;
   margin: 0;
   padding: 0;
}
.flexslider .slides { zoom: 1; }
.flexslider .slides > li { position: relative; }

/* Hide the slides before the JS is loaded. Avoids image jumping */
.flexslider .slides > li { display: none; -webkit-backface-visibility: hidden; }
/* Suggested container for slide animation setups. Can replace this with your own */
.flex-container { zoom: 1; position: relative; }

/* Clearfix for .slides */
.slides:before,
.slides:after {
   content: " ";
   display: table;
}
.slides:after {
   clear: both;
}

/* No JavaScript Fallback */
/* If you are not using another script, such as Modernizr, make sure you
* include js that eliminates this class on page load */
.no-js .slides > li:first-child { display: block; }

/* Slider Styles */
.slides { zoom: 1; }
.slides > li {
   /*margin-right: 5px; */
   overflow: hidden;
}

/* Control Nav */
.flex-control-nav {
    width: 100%;
    position: absolute;
    bottom: -20px;
    text-align: left;
}
.flex-control-nav li {
    margin: 0 6px;
    display: inline-block;
    zoom: 1;
    *display: inline;
}
.flex-control-paging li a {
    width: 12px;
    height: 12px;
    display: block;
    background: #ddd;
    background: rgba(255, 255, 255, .3);
    cursor: pointer;
    text-indent: -9999px;
    -webkit-border-radius: 20px;
    -moz-border-radius: 20px;
    -o-border-radius: 20px;
    border-radius: 20px;
    box-shadow: inset 0 0 3px rgba(255, 255, 255, .3);
}
.flex-control-paging li a:hover {
    background: #CCC;
    background: rgba(255, 255, 255, .7);
}
.flex-control-paging li a.flex-active {
    background: #fff;
    background: rgba(255, 255, 255, .9);
    cursor: default;
}

ich bin noch neuling und hoffe das sich jemand dazu herablässt mir zu helfen.. :)

Danke
 
Werbung:
Wenn du den Windows-Safari meinst, ignoriere ihn. Die letzte Version ist schon ziemlich alt und es wird keine neue geben. Kein Mensch benutzt deshalb Safari auf Windows.

Anmerkung: Die Ladezeiten der Seite sind unterirdisch. Wenn du so ein Layout umsetzt, musst du eine Form von Lazyload verwenden. Außerdem die Seite erst einfaden, wenn das obere Hintergrundbild geladen ist. Ich konnte gerade den langsamen Aufbau des Bildes genießen und hab mich gleich 10 Jahre jünger gefühlt ;)
 
Werbung:
^^ ... ja, das ist noch ein Problem an dem ich jetzt arbeiten werde. Danke dir erstmal für den Safari Tip, hab mich jetzt auch auf Chrome, Firefox und IExplorer geeinigt...der rest kann evtl. wenn ich fertig bin angepasst werden.

kannst du mir zufällig sagen wie ich die erste Seite als erstes nach dem aufruf der site "einfaden" lasse. mach ich das auch mit Lazyload? Werd mir das PlugIn mal genauer betrachten jetzt.
 
Wenn die Seite aufgerufen wird, verbirgst du sie erstmal mit einem Blender (Ajax-Loadgraphik o.ä.). Im Hintergrund lädst du währenddessen alle Graphiken, die du für den oberen Bereich brauchst. Wenn die geladen sind, blendest du die Seite ein. Das kann in etwa so aussehen:

Code:
window.onload = function(){
    var imageUrls = new Array(
        'images/IMG_0017-stk_00.jpg',
        'images/IMG_0017-stk_01.jpg',
        usw...
    );

    var imagesLoaded = 0;
    for(var i = 0, l = imageUrls.length; i<l;++i){
        imageObjects[i] = new Image();
        imageObjects[i].onload = function(){
            imagesLoaded++;
            if(imagesLoaded == imageUrls.length){
                imagesReady(); //Funktion, die ausgeführt wird, wenn alle Bilder in der Liste geladen sind.
            }
        }
        imageObjects[i].src = imageUrls[i];
    }
};

Im Anschluss lädst du dann den restlichen Content der Seite. Lazyload ist dabei die Premiumversion und nicht zwingend notwendig, wenn die Reihenfolge des Ladens der Bilder der Anzeigereihenfolge entspricht.
 
danke erstmal. allerdings habe ich dazu leider noch viele fragen....wie gesagt, ich bin ein ziemlicher anfänger und hänge bisher bestimmt 2 monate an der seite.
ich habe versucht nur den lazyloader zu nutzen, allerdings habe ich nach einbinden der jquery.lazyload.min.js, einfügen der funktion in den head-bereich und umtaggen des src attritbuts der bilder unterhalb der startseite kein Ergebnis erzeugen können. schlimmer noch, alle grafiken waren weg. also versuch ich das so zu machen wie du das sagtest.

1) wenn ich bei google "blender html" oder "blender css" eingebe, bekomm ich nur antworten zu 3d-anwendungen...was genau meinst du damit? ein iFrame? ein großes bild mit der ladefunktion in der mitte?
2) wie setze ich ein blender über die seite? die ladegrafik hab ich.
3) der blender soll ja nicht nach einer gewissen zeit, sondern nach dem laden der grafiken automatisch verschwinden. wie stell ich das an?
4) wie verbinde ich den
5) welche bilder setz ich, jetzt bin ich bei deinem code, vor dem "usw..." ein?

ich bin dabei es zu verstehen, jedoch passiert das relativ langsam....aber es passiert. und ich will das verstehen!!
 
Werbung:
ich bin dabei es zu verstehen, jedoch passiert das relativ langsam....aber es passiert. und ich will das verstehen!!
Na, dann macht es auch Spaß, zu helfen :)
1) wenn ich bei google "blender html" oder "blender css" eingebe, bekomm ich nur antworten zu 3d-anwendungen...was genau meinst du damit? ein iFrame? ein großes bild mit der ladefunktion in der mitte?
Mit Blender meine ich einfach ein 100% x 100% großes Div, das mit position:fixed die ganze Seite verdeckt, bis der darunter liegende Content fertig erstellt ist. Üblicherweise enthält der eine animierte Gifgraphik wie z.B. http://www.mytreedb.com/uploads/mytreedb/loader/ajax_loader_blue_512.gif.
wie setze ich ein blender über die seite?
Wie gesagt, einfach ein fixes Div mit genügend hohem z-index um den Rest der Seite zu verbergen.
der blender soll ja nicht nach einer gewissen zeit, sondern nach dem laden der grafiken automatisch verschwinden. wie stell ich das an?
Die Funktion die ich weiter oben gepostet habe, ruft eine andere Funktion auf und zwar genau dann, wenn alle Bilder geladen sind. In dieser schaltest du den Blender einfach ab, mit display:none zum Beispiel.
5) welche bilder setz ich, jetzt bin ich bei deinem code, vor dem "usw..." ein?
Na alle die, die direkt nach dem Aufrufen der Seite zu sehen sein sollen.
 
Hi,
ich war das wochenende über nicht da und konnte leider nicht weiterarbeiten. Ich hab mir jetzt versucht nen container zu machen der das fenster ausfüllt und ein loading symbol in der mitte hat. sieht bei mir so aus:
Code:
header .blender {
    width: 100%;
    height: 100%;
    background-color: #E9E9E9;
    background-image:url(../images/ajax-loader-blue.gif);
    background-position: center;
    position: fixed;
    top: auto;
    bottom: 0px;
    right: 0px;
    left: auto;
    z-index: 3;
}

jedoch tut sich nichts bei mir. ich hab die box gleich im header aufgerufen mit
HTML:
<div header-blender>
      <!-- hier kommt deine Funktion rein  -->
</div>

er zeigt jedoch nicht mal den blender an.....hilfe



wenn ich das sonst richtig verstanden habe, habe ich, wenn das blener-fenster funktioniert die Funktion von dir dort einzufügen wo ich jetzt den vermerk dazu gemacht habe. richtig?
dann habe ich, wenn die Seite aufgerufen wird ein hellgraues hintergrundbild mit der lade-grafik. und erst wenn im hintergrund alles geladen ist, verschwindet das fenster. Wozu hab ich dann in der Funktion die möglichkeit angaben über die zu ladenden grafiken beim aufrufen der seite zu machen?

Die Funktion die ich weiter oben gepostet habe, ruft eine andere Funktion auf und zwar genau dann, wenn alle Bilder geladen sind. In dieser schaltest du den Blender einfach ab, mit display:none zum Beispiel.
wo soll ich den blender denn mit, zum Beispiel display:none, abschalten.

tut mir wirklich leid, aber ich raff es einfach nicht. :(
 
Zuletzt bearbeitet:
Du hast den HTML-Code falsch angegeben. Wenn Du die o.g. Eigenschaften im Browser sehen willst, dann wäre z.B. ein Konstrukt wie

HTML:
<head><div class="blender">...</div></header>

korrekt. Da dir das nicht bewusst ist würde ich dir dringend anraten nochmal die CSS- und HTML-Grundlagen anzuschauen.
 
Werbung:
Da muss ich threadi zustimmen.
header .blender {
und
  • <div header-blender>
  • <!-- hier kommt deine Funktion rein -->
ist nicht nur syntaktisch falsch, sondern hat auch nichts miteinander zu tun. Warum, recherchierst du bitte selbst nach, das sind notwendige Grundlagen.

wenn ich das sonst richtig verstanden habe, habe ich, wenn das blener-fenster funktioniert die Funktion von dir dort einzufügen wo ich jetzt den vermerk dazu gemacht habe. richtig?
Nö.
Die Javascript Funktion kann irgendwo hin, am besten aber in eine Datei, die im Head deiner Seite aufgerufen wird.

Wozu hab ich dann in der Funktion die möglichkeit angaben über die zu ladenden grafiken beim aufrufen der seite zu machen?
Die Frage versteh ich nicht. Natürlich kannst du alternativ auch deinen html- und css code parsen um alle bilder automatisch zu finden. Wenn du es gern etwas komplizierter hättest.

wo soll ich den blender denn mit, zum Beispiel display:none, abschalten.
Auch so eine Frage, die eigentlich beantwortet ist. Schau dir nochmal meine Beispielfunktion an. Wenn du es nicht verstehst, dann schau dir nochmal intensiv die JS Grundlagen an.
 
Zurück
Oben