1<!DOCTYPE HTML> <html prefix="og: https://ogp.me/ns#" class="no-js responsivelayout supportsbreakout" lang="de" data-zpdebug="false" data-ptr="" data-pagename="marrakechtours"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Wir organisieren die ganz spezielle, persönliche Tour für Sie in Marokko. Ob Königstädte, Bergschluchten oder Wüstenerlebnisse, wir machen Ihre Träume wahr."> <meta name="keywords" content="marokko, marrakesch, sahara, wüste, biwak, trekking, chegaga, chebbi"> <meta name="generator" content="Zeta Producer 17.2.4.0, ZP17X, 06.08.2026 11:59:48"> <meta name="robots" content="index, follow"> <title>Individuelle Touren in Marokko</title> <meta property="og:type" content="website"> <meta property="og:title" content="Individuelle Touren in Marokko"> <meta property="og:description" content="Wir organisieren die ganz spezielle, persönliche Tour für Sie in Marokko. Ob Königstädte, Bergschluchten oder Wüstenerlebnisse, wir machen Ihre Träume wahr."> <meta property="og:url" content="http://www.marrakechtours.de/index.html"> <meta property="twitter:card" content="summary_large_image"> <meta property="twitter:title" content="Individuelle Touren in Marokko"> <meta property="twitter:description" content="Wir organisieren die ganz spezielle, persönliche Tour für Sie in Marokko. Ob Königstädte, Bergschluchten oder Wüstenerlebnisse, wir machen Ihre Träume wahr.">
1<script> 2 document.documentElement.className = document.documentElement.className.replace(/no-js/g, 'js'); 3 </script>
3
3<script src="assets/customconsentservices.js"></script>
3 <link rel="stylesheet" href="assets/bundle.css?v=639259330218251232"> <link rel="stylesheet" href="assets/bundle-print.css?v=639238018985001128" media="print">
3<script src="assets/bundle.js?v=639259330218471523"></script>
3 <link rel="canonical" href="http://www.marrakechtours.de/"> <link rel="preload" href="assets/fonts/fontawesome-webfont.woff2?v=4.7.0" as="font" type="font/woff2" crossorigin> <style>@media(prefers-reduced-motion:no-preference){@view-transition{navigation:auto;}::view-transition-group(root){animation: none;}}</style> <style> 4/* Slider, die als erstes Element auf der Seite benötigen andere Abstände und SchriftgröÃen etc. */ 5.topslider .zpRow.zpwSlider{ 6 margin-top: 0 !important; 7} 8.topslider .zpRow.zpwSlider .zpRowInner{ 9 padding-top: 0; 10} 11.topslider .zp13sliderWidget .zp13slider-caption{ 12 font-size: 1.2em; 13} 14.topslider .zp13sliderWidget .zp13slider-caption h1, 15.topslider .zp13sliderWidget .zp13slider-caption h2, 16.topslider .zp13sliderWidget .zp13slider-caption h3 { 17 font-size: 3em; 18 margin-bottom: .3em; 19} 20 21/*Ãnderung der Hintergrundfarbe des Footers. 22#footer ist der Container mit den Links und dem Copyright Text. 23#totop ist der Container mit dem ^ Zeichen, das einen an den Anfang der Seite bringt. 24color beschreibt die Schriftfarbe, 25background-color die Hintergrundfarbe 26*/ 27#search, 28#footer, 29#totop { 30 color: #e7e7e7; 31 background-color: #3e3d3d; 32} 33 34 35/*Ãnderung der Farbe des ^ Zeichens im Footer.
36#totop a ist das ^ Zeichen. 37#totop a:hover beschreibt den Zustand, wenn die Maus über dem Zeichen "schwebt" 38*/ 39#totop a { 40 color: #e7e7e7; 41} 42#totop a:hover { 43 color: #F39C12; 44} 45</style>
45<script> 46 // if after 1000ms we haven't got webfonts, show the user something, a FOUT is better than nothing 47 // http://kevindew.me/post/47052453532/a-fallback-for-when-google-web-font-loader-fails 48 setTimeout(function() { 49 // you can have the webfont.js cached but still have no classes fire and you will have a window.WebFontConfig object 50 if ( ! ("WebFont" in window)) { 51 // non wfl loader class name because their events could still fire 52 document.getElementsByTagName("html")[0].className += " wf-fail"; 53 } 54 }, 1000); 55 56 WebFontConfig = { 57 custom: { 58 families: [ 'Open+Sans:300,400,600' ], 59 urls: ['media/fonts/zp-webfonts.css?v=1372823782'] 60 } 61 }; 62 </script>
62
62<script src="assets/js/webfont/1.6.28/webfont-local.js"></script>
62 <link class="zpfaviconmeta" rel="shortcut icon" type="image/x-icon" href="assets/ansicht_logo_blau.gif?v=2021070601"> <style> 63.zp13sliderWidget{--mobile-height: 75vw;}.zp13sliderWidget.burns[data-article-id="1910"] ul.zp13slider > li.zp13slider-active-slide img{animation-duration: 8000ms !important;}.zp13sliderWidget[data-article-id="1910"] .zp13slider-direction-nav a{color: #ffffff !important;text-shadow: 1px 0px 0 #000000 !important;}.zp13sliderWidget[data-article-id="1910"] .zp13slider-control-nav li a:before{background-color: #ffffff;box-shadow: 0 0 2px 1px #000000 !important;}.zp13sliderWidget[data-article-id="1910"] .zp13slider-control-nav li a.zp13slider-active:before,.zp13sliderWidget[data-article-id="1910"] .zp13slider-control-nav li a:hover:before{border-color: #ffffff !important;background-color: transparent;} 64</style><style id="zple_container_137"> 65#container_137{background-color: #7696E7 !important;} 66</style><style id="zple_container_138"> 67#container_138{background-color: #F4F4F4 !important;} 68</style><style> 69#a1876.zpwButton , #a1876.zpwButton p{text-align: right;} 70#a1876.zpwButton a.button{border-color: #FFFFFF !important;} 71#a1876.zpwButton a.button:hover{background: rgba(255, 255, 255, 0.24) !important;} 72#a1876.zpwButton a.button:hover{border-color: #FFFFFF !important;} 73 74</style><style id="zple_container_140"> 75#container_140{background-color: #F39C12 !important;} 76</style> </head> <body data-pageid="603" id="flat-responsive" class="notouch haswebdescription hasfixednav"> <a href="#zpMainContent" class="zp-skiplink">Zum Hauptinhalt springen</a> <a id="top"></a> <div id="header"> <div id="webdescription"> <div id="logo"><a href="index.html"><img src="assets/ansicht_logo_blau.jpg" width="200" height="100" alt="www.marrakechtours.de"></a></div> <div id="webtext"> <div id="webname"><a href="index.html">www.marrakechtours.de</a></div> <div id="slogan">Ausflüge ab Marrakesch und individuelle Touren in Marokko</div> </div> </div> <div id="nav"> <ul class="zpmarkactive default submenu touchhovermenu clickhovermenu out" data-trianglemode="true" role="menu"><li class="logo"><a href="index.html"><img src="assets/ansicht_logo_blau.jpg" width="200" height="100" alt="index.html"></a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" class="active" href="index.html" data-isredirected="false">marrakechtours</a></li><li class="zpnodefaults haschilds" role="presentation"><a role="menuitem" aria-haspopup="true" aria-expanded="false" href="touren.html" data-isredirected="false">Touren</a><ul role="menu"><li class="zpnodefaults" role="presentation"><a role="menuitem" href="schnuppertour.html" data-isredirected="false">Schnuppertour</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="erg-chegaga-erleben.html" data-isredirected="false">Erg Chegaga erleben</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="chegaga-for-boys.html" data-isredirected="false">Chegaga for Boys</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="berge-und-wueste.html" data-isredirected="false">Berge und Wüste</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="erg-chebbi-ab-marrakech.html" data-isredirected="false">Erg Chebbi ab Marrakech</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="erg-chebbi-ab-fes.html" data-isredirected="false">Erg Chebbi ab Fes</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="trekking.html" data-isredirected="false">Kameltrekking und Bergwandern</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="kochkurs.html" data-isredirected="false">Kochkurs</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="toubkal-trekking.html" data-isredirected="false">Toubkal-Trekking</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="familientour.html" data-isredirected="false">Familientour</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="filmtour.html" data-isredirected="false">Filmtour</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="pilotentour.html" data-isredirected="false">
76Pilotentour</a></li></ul></li><li class="zpnodefaults haschilds" role="presentation"><a role="menuitem" aria-haspopup="true" aria-expanded="false" href="infos.html" data-isredirected="false">Infos</a><ul role="menu"><li class="zpnodefaults" role="presentation"><a role="menuitem" href="ablauf.html" data-isredirected="false">Ablauf</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="biwak.html" data-isredirected="false">Biwak</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="fahrer-fahrzeuge-01.html" data-isredirected="false">Fahrer/Fahrzeuge</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="hammam.html" data-isredirected="false">Hammam</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="reiseliteratur.html" data-isredirected="false">Reiseliteratur</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="riad.html" data-isredirected="false">Riad</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="tadelakt.html" data-isredirected="false">Tadelakt</a></li></ul></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="kontakt.html" data-isredirected="false">Kontakt</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="https://marokko-luxusreisen.com/" data-isredirected="true" target="_blank" rel="noopener" aria-label="Open link in new tab/window">Luxusreisen</a></li><li class="zpnodefaults" role="presentation"><a role="menuitem" href="impressum.html" data-isredirected="false">Impressum</a></li><li class="overflownonly"><a href="#" id="mobilenavtoggle" class="tabletonly toggle" aria-label="Menü ein-/ausblenden">☰ Menü</a></li></ul>
76<script> 77 $z(document).ready(function(){ 78 // run only (in output), if above script loaded/executed and thus defined zp_navmenu 79 // disable JS cached menu for now 80 if ( typeof(DISABLEDFORNOW_zp_navmenu) !== "undefined" && "false" !== 'true' ){ 81 function markActiveInMenu(menuString, zproot=""){ 82 var $menuString = $z('<div/>').html(menuString); // converts menuString into a jQuery object 83 var zproot = $menuString.find('ul.zpmarkactive').attr('data-zproot') || ""; 84 if ( zproot !== "" ){ 85 zproot = new URL(zproot).pathname; 86 // add trailing slash to url, only if it is missing (important if site isn't published into web-root) 87 if (zproot.substr(-1) !== '/'){ 88 zproot += '/'; 89 } 90 } 91 92 var ptr = $z("html").attr("data-ptr") || ""; 93 var urlOfCurrentPage = document.location.pathname.replace("/external-preview/", ""); 94 // if current page is empty because user just typed in domain into the browser-location or no filename is given (i.e. only a diretory) , get it from the canonical 95 if ( urlOfCurrentPage == "" || urlOfCurrentPage.substr(-1) == "/" ){ 96 if ( $z('link[rel="canonical"]').attr("href") ){ 97 // get filename out of canonical href 98 urlOfCurrentPage = new URL($z('link[rel="canonical"]').attr("href")).pathname; 99 } 100 else{ 101 // assume index.html as a fallback if no canonical exists 102 urlOfCurrentPage = "index.html"; 103 } 104 } 105 // replace zproot in case project is published to a subfolder 106 urlOfCurrentPage = urlOfCurrentPage.replace(zproot, ""); 107 108 var searchPattern = 'href="' + urlOfCurrentPage + '" data-isredirected="false"' ; 109 // set regex and escape some special chars which are used for regex syntax 110 var re = new RegExp(escapeRegExp(searchPattern),"gi"); 111 //debug.log(`urlOfCurrentPage: ${urlOfCurrentPage} zproot: ${zproot} menuString: ${menuString}`); 112 menuString = menuString.replace(re, 'class="active" ' + searchPattern); 113 //debug.log(`menuString replaced: ${menuString}`) 114 // prefix urls (not beginning with *:// or // with path to root, so nested pages work 115 menuString = menuString.replace(/href="(?!\w*:\/\/|\/\/)/gi, "href=\"" + ptr); 116 117 return menuString; 118 } 119 function escapeRegExp(str) { 120 return str.replace(/([.*+?^!:${}()|\[\]\/\\])/g, "\\$1"); 121 } 122 $z('ul.zpmarkactive').replaceWith(markActiveInMenu(zp_navmenu)); 123 $z('ul.zpmarkactive li:has(a.active)').addClass('active'); 124 $z('ul.zpmarkactive').removeClass("zpmarkactive"); 125 } 126 else{ 127 // we find the active page's a-tag and then walk upwards the dom marking the respective parent li as active/open 128 $z('ul.zpmarkactive.default li a.active').parents('li').each(function(index){ 129 var that = this; 130 // do not add open class to immediate parent li 131 if ( index > 0 ){ 132 $z(that).addClass('open'); 133 } 134 $z(that).addClass('active'); 135 //$z(that).find('> a').addClass('active'); 136 }); 137 $z("ul.zpmarkactive.default").removeClass("zpmarkactive"); 138 } 139 }); 140</script>
140 </div> </div> <div id="content" class="main"> <div id="zpMainContent" role="main" class="zparea zpgrid " data-numcolumns="" data-areaname="Standard" data-pageid="603"> <div id="container_136" class="zpContainer first zpBreakout topslider" data-zpeleel="container" data-zpleid="136"> <div class="zpRow standard alertbanner " data-row-id="486"> <div class="zpColumn odd zpColumnWidth1 c12 first last" style="" data-column-id="588"> <div class="zpColumnItem"> <div id="a2146" data-article-id="2146" data-zpleid="2146" class="articlearea zpwInfo-Banner">
140<script> 141 var theBanner = '\ 142 <div class="alertbanner fall content top left " id="alertbanner2146" style="background-color: rgba(29, 130, 18, 0.9); color: #FFFFFF; max-width: none; ">\ 143 <a id="close" class="close" title="SchlieÃen / Close" href="#off" style="border: 1px solid #FFFFFF;">â</a>\ 144 <p><em>Um unsere Website für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Website stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung.</em></p><p><a class="button close" href=""><span class="dmy">OK</span></a></p>\ 145 </div>'; 146 147 $z(document).ready(function () { 148 var hideAfterClose = true; 149 150 if( !hideAfterClose || document.cookie.indexOf('hidealertbanner1=1') == -1 ){ 151 // delete duplicate banners i.e. caused by animated rows/containers 152 $z("#alertbanner2146").remove(); 153 //append banner to document 154 $z("body").prepend(theBanner); 155 //console.log("alertbanner prepended!",theBanner); 156 } 157 158 $z("#alertbanner2146 a.close").on("click", function(e){ 159 $z("#alertbanner2146").addClass("off"); 160 var date = new Date(); 161 date.setTime(date.getTime()+(365*24*60*60*1000)); // expire cookievalidity days from today 162 var expires = ";expires="+date.toUTCString(); 163 if ( hideAfterClose ){ 164 document.cookie = 'hidealertbanner1=1' + expires + '; path=/'; 165 } 166 document.cookie = 'zp_consent_denied=false' + expires + '; path=/'; 167 console.log("Hideafterclose: " + hideAfterClose); 168 if ( hideAfterClose ){ 169 document.location.reload(); 170 } 171 e.preventDefault(); 172 return false; 173 }); 174 175 $z("#alertbanner2146 a.deny").on("click", function(e){ 176 $z("#alertbanner2146").addClass("off"); 177 var date = new Date(); 178 date.setTime(date.getTime()+(365*24*60*60*1000)); // expire cookievalidity days from today 179 var expires = ";expires="+date.toUTCString(); 180 document.cookie = 'zp_consent_denied=true' + expires + '; path=/'; 181 if ( hideAfterClose ){ 182 document.location.reload(); 183 } 184 e.preventDefault(); 185 return false; 186 }); 187 }); 188 </script>
188 </div> </div> <div class="zpColumnItem"> <div id="a1910" data-article-id="1910" data-zpleid="1910" class="articlearea zpwSlider zp13sliderWidget mobilecutoff mobilecaptionbelow zpBreakout captionmiddle defaultbg topslider"> <div class="zp13slider-container"> <ul class="zp13slider"> <li> <img class="zpfocal" src="media/images/dusud_biwak_lux_1-large.jpg" data-focus-x="50" data-focus-y="50" data-image-w="1638" data-image-h="910" width="1638" height="910" alt="" style="border-radius: 0;"> <div class="zp13slider-caption" style=" color: #ffffff; text-shadow: 1px 1px 0 #000000;"> <h2 style="font-size: ; color: #ffffff">Unvergessliche Wüstenerlebnisse</h2> <p><strong>Speziell: </strong>Individuell für Sie zusammengestellt<br><strong>Verlässlich</strong>: Unsere Fahrer sind Spitze<br><strong>Genau</strong>: Genauso, wie Sie es wollen</p> <p><a class="button" href="kontakt.html"><span class="dmy">Jetzt Ihre Wünsche anmelden!</span></a></p> </div> </li> <li> <img loading="lazy" class="zpfocal" src="media/images/dar_tazi_2-large.jpg" data-focus-x="50" data-focus-y="50" data-image-w="2048" data-image-h="1536" width="2048" height="1536" alt="" style="border-radius: 0;"> <div class="zp13slider-caption" style=" color: #ffffff; text-shadow: 1px 1px 0 #000000;"> <h2 style="font-size: ; color: #ffffff">So fürstlich können Sie wohnen!</h2> <p>Der Traum vom Orient wird wahr!</p> </div> </li> <li> <img loading="lazy" class="zpfocal" src="media/images/khenifra_fantasia_11-large.jpg" data-focus-x="50" data-focus-y="50" data-image-w="2048" data-image-h="1536" width="2048" height="1536" alt="" style="border-radius: 0;"> <div class="zp13slider-caption" style=" color: #ffffff; text-shadow: 1px 1px 0 #000000;"> <h2 style="font-size: ; color: #ffffff">Marokko ist ein Paradies auf Erden</h2> <p>mit angenehmem Klima, unberührten Stränden, herrlichen Landschaften, uralten Traditionen und historischen Monumenten.</p> </div> </li> </ul> </div> </div> </div>
188<script> 189 function zpsFixFlexsliderHeight() { 190 // Set fixed height based on the tallest slide to avoid jumping 0f content below the slider 191 // https://github.com/woocommerce/FlexSlider/issues/174#issuecomment-12529436 192 $z('.zpwSlider ').each(function(){ 193 var sliderHeight = 0; 194 $z(this).find('.zp13slider > li').each(function(){ 195 slideHeight = $(this).height(); 196 if (sliderHeight < slideHeight) { 197 sliderHeight = slideHeight; 198 } 199 }); 200 if ( sliderHeight !== 0 ){ 201 $z(this).find('.zp13slider-viewport, ul.zp13slider').css({'height' : sliderHeight}); 202 } 203 }); 204 } 205 $z(window).on("load resize", zpdebounce(500, function(event) { 206 zpsFixFlexsliderHeight(); 207 })); 208 209 $z(document).ready(function() { 210 zpsFixFlexsliderHeight(); 211 212 var useCssAnimation = false; 213 214 var autoplay = 1; 215 if ( $z("body").hasClass("zpreducemotion") && 'fade' !== 'fade' ){ // don't allow moving animations 216 autoplay = false; 217 } 218 var directionNav = true; 219 220 // handle focus point 221 222 function handlefocal(){ 223 var minScreenWidth = 640; // breakpoint mobil 224 225 if ( $z('[data-article-id="1910"]').hasClass("mobilecutoff") && $z(document).width() > minScreenWidth && !$z('[data-article-id="1910"]').hasClass("desktopcutoff") ){ 226 $z('img.zpfocal').css("object-position", ""); 227 return; 228 } 229 230 $z('img.zpfocal').each(function(){ 231 var that = $z(this); 232 // math taken from https://css-tricks.com/focusing-background-image-precise-location-percentages/ 233 iw = that.width(); // bounding box width of scaled responsive image 234 ih = that.height(); // bounding box height of scaled responsive image 235 inw = parseInt(that.attr("data-image-w")) || 0; // bgimage original width 236 inh = parseInt(that.attr("data-image-h")) || 0; // bgimage original height 237 ifx = parseInt(that.attr("data-focus-x")) || 50; // desired focus point X as percentage from original image 238 ify = parseInt(that.attr("data-focus-y")) || 50; // desired focus point X as percentage from original image 239 240 /* 241 Da wir in diesem Anwendungsfall ausschlieÃlich "object-fit: cover" nutzen, wird ein Bild 242 grundsätzlich nur rechts/links ODER oben/unten beschnitten. Daher ermitteln wir zunächst das Seitenverhältnis 243 um dann den entsprechenden Skalierungsfaktor basierend auf Breite oder Höhe zu ermitteln. 244 */ 245 246 scaleH = ih / inh; 247 zW = parseFloat( (inw * scaleH) / iw ); // horizontal factor for focus as bg-position 248 bgx = ( (ifx - 50) * zW/(zW-1) + 50 ); 249 250 scaleW = iw / inw; 251 zH = parseFloat( (inh * scaleW) / ih ); // vertical factor for focus as bg-position 252 bgy = ( (ify - 50) * zH/(zH-1) + 50 ) 253 254 //console.log("ifx: " + ifx + " / ify: " + ify + " / scaleH: " + scaleH + "/ scaleW: " + scaleW + " / zW: " + zW + " / zH: " + zH + " / bgx = " + bgx + " / bgy: " + bgy + " / this.width(): "+ that.width() ); 255 256 is = this.src + ":\n"; 257 258 // auf min. 0 und max. 100 limitieren 259 scaledFocusX = parseInt(bgx); 260 if ( scaledFocusX > 100 ){ 261 scaledFocusX = 100; 262 } 263 if ( scaledFocusX < 0 ){ 264 scaledFocusX = 0; 265 } 266 scaledFocusY = parseInt(bgy); 267 if ( scaledFocusY > 100 ){ 268 scaledFocusY = 100; 269 } 270 if ( scaledFocusY < 0 ){ 271 scaledFocusY = 0; 272 } 273 274 that.css("object-position", scaledFocusX + "% " + scaledFocusY + "%"); 275 }); 276 } 277 278 // dynamically set controls position. Needed when caption-position is "below" 279 function placeControls(el){ 280 var currentSlide = el.data('flexslider').currentSlide; 281 var imageHeight = el.find(".zp13slider > li.zp13slider-active-slide img").first().height(); 282 283 if ( el.parent().hasClass("captionbelow") || (el.parent().hasClass("mobilecaptionbelow") && $z(document).width() <= 640) ){ 284 // if caption is below, we need js to vertically center the nav buttons as the container is image-height+cption-height and 285 // positioning via css doesn't work as usual 286 // debug.log("Dirction Nav position set for: ", el); 287 el.find(".zp13slider-direction-nav").css("top", imageHeight/2); 288 el.find(".zp13slider-control-nav").css("bottom", "auto").css("top", imageHeight-29); 289 } 290 else{ 291 el.find(".zp13slider-direction-nav").css("top", ""); 292 el.find(".zp13slider-control-nav").css("bottom", "").css("top", ""); 293 } 294 } 295 296 // init flexslider after 1st image has loaded, so have dimensions as quickly as possible without having to wait too long on window loaded or such and can start right with doc ready 297 $z('[data-article-id="1910"] ul.zp13slider li img').first().one("load", function(){ 298 $z('[data-article-id="1910"] .zp13slider-container').flexslider({ 299 useCSS: useCssAnimation, 300 touch: true, 301 itemMargin: 0, 302 animation: 'fade', 303 animationSpeed: 600, 304 namespace: 'zp13slider-', 305 selector: '.zp13slider > li', 306 controlsContainer: '[data-article-id="1910"].zp13sliderWidget .zp13slider-container', 307 multipleKeyboard: true,
308 slideshow: autoplay, 309 slideshowSpeed: 8000, 310 directionNav: true, 311 controlNav: true, 312 randomize: false, 313 314 pauseOnHover: true, 315 pauseOnAction: false, 316 smoothHeight: true, 317 start: function(el){ 318 focalImages(); 319 $z('[data-article-id="1910"] .zp13slider-container').addClass('zpstarted'); 320 321 322 placeControls(el); 323 324 }, 325 326 after: function(el){ 327 placeControls(el) 328 }, 329 330 prevText: "zurück", 331 nextText: "weiter" 332 }); 333 }).each(function() { 334 if(this.complete) { 335 //debug.log("Slider trigger load"); 336 $z(this).trigger('load'); 337 } 338 }); // .each() is to work around a browser bugs which don't fire load() for cached images http://stackoverflow.com/a/3877079 339 340 // make sure the slider is properly resized when the window is resized (400ms after window.resize ended) 341 $z('[data-article-id="1910"] .zp13slider-container').on('resize',function(event){ 342 // prevents slider.trigger("resize") from causing a windows.resize event again which looped 343 event.stopPropagation(); 344 }); 345 var sliderTimeout1910 = null; 346 $z(window).on("resize", function(event) { 347 clearTimeout(sliderTimeout1910); 348 sliderTimeout1910 = setTimeout(function() { 349 //handlefocal(); 350 var slider = $z('[data-article-id="1910"] .zp13slider-container').data('flexslider'); 351 if ( slider ){ // if slider contains only one image, slider will be undefined 352 $z(slider).css('height', ''); 353 slider.trigger("resize"); 354 355 placeControls(slider); 356 357 } 358 clearTimeout(sliderTimeout1910); 359 }, 400); 360 361 }); 362 363 // smooth scroll to anchors 364 $z('[data-article-id="1910"] ul.zp13slider > li > a.zpnolayoutlinkstyles').on("click", function(e){ 365 if ( document.location.pathname == this.pathname && $z(this.hash).length ){ // if current page contains anchor 366 e.preventDefault(); 367 $z('html,body').animate({ 368 scrollTop: $z(this.hash).offset().top - (parseInt($z("html").css("scroll-padding-top")) || parseInt($z("body").css("padding-top"))) 369 }, 500); 370 window.location.hash = this.hash; 371 } 372 }); 373 374 $z(window).off('load.zpSliderLoad'); 375 $z(window).on('load.zpSliderLoad', function(){ 376 // if the url includes an anchor, scriol to it after a slight delay when all assets are loaded 377 // needed because while this widget loads its images, the scroll position changes 378 setTimeout(function() { 379 hash = document.location.hash; 380 if (hash !=="") { 381 var element_to_scroll_to = $z(hash)[0]; 382 element_to_scroll_to.scrollIntoView(); 383 } 384 }, 110); 385 }); 386 387 // pause slideshow if slider is invisible 388 if ( autoplay ){ 389 // pause slideshow if slider is not in viewport 390 var zpheaderObserver = new IntersectionObserver(function(entries, observer){ 391 entries.forEach(function(entry) { 392 if ( entry.isIntersecting ){ 393 debug.log("IntersectionObserver. Header-Element became visible: ", entry.target); 394 $z(entry.target).flexslider("pause"); // because "play" will pause a runing slideshow ;-) 395 $z(entry.target).flexslider("play"); 396 } 397 else{ 398 debug.log("IntersectionObserver. Header-Element became invisible: ", entry.target); 399 $z(entry.target).flexslider("pause"); 400 } 401 }); 402 }, {rootMargin: '0px', threshold: 0}); 403 setTimeout(function() { 404 var el = $z('[data-article-id="1910"] .zp13slider-container'); 405 debug.log("IntersectionObserver. observing: ", el[0]); 406 zpheaderObserver.observe(el[0]); 407 }, 2000); 408 } 409 }); 410 </script>
410 </div> </div> </div> <div id="container_137" class="zpContainer styled zpBreakout " data-zpeleel="container" data-zpleid="137"> <div class="zpRow standard " data-row-id="452"> <div class="zpColumn odd zpColumnWidth3 c5 first" style="" data-column-id="544"> <div class="zpColumnItem"> <div id="a1871" data-article-id="1871" data-zpleid="1871" class="articlearea zpwText"> <h2 data-zpfieldname="headline">Persönlich für Sie zusammengestellt</h2> <p>mobilunterwegs ist ein kleiner Reisebuchverlag, der sich speziell mit Literatur über Marokko beschäftigt. </p> <p>Die Autorin Edith Kohlbach kennt das Land durch fast 40 Jahre intensive Reisen sehr gut und bietet die Organisation von Reisen durch Marokko an. Es werden keine Gruppen zusammengestellt, sondern individuell durchgeführte Touren ab zwei Personen. Sie haben einen Geländewagen mit einheimischem Fahrer für sich alleine und werden auf den Lieblingsrouten der Autorin durchs Land gefahren. Sie brauchen sich nicht ums Fahren zu kümmern, sondern können anhalten lassen, wo immer Sie wollen, um die wunderschöne Landschaft zu betrachten und Ihre Fotos zu schieÃen. Und der Fahrer ist zugleich Ihr Führer, der Ihnen Land und Leute erklärt. Und manchmal sogar ein leckeres Picknick zubereitet.</p> </div> </div> </div> <div class="zpColumn zpSpacer zpColumnWidth3 c2" style="" data-column-id="598"> <div class="zpColumnItem"> <div id="a1922" data-article-id="1922" data-zpleid="1922" class="articlearea zpwSpacer"> </div> </div> </div> <div class="zpColumn even zpColumnWidth3 c5 last" style="" data-column-id="589"> <div class="zpColumnItem"> <div id="a1911" data-article-id="1911" data-zpleid="1911" class="articlearea zpwText"> <h2 data-zpfieldname="headline">Der Weg ist das Ziel!</h2> <p>Wer Deutschland besucht und vielleicht München, Köln und Hamburg sehen will, nimmt den ICE oder die Autobahn und fährt schnell von Punkt A nach B, um dort in aller Ruhe die Sehenswürdigkeiten zu genieÃen. So sollte man jedoch keine Marokko-Reise planen. In Marokko ist der Weg das Ziel. Die Landschaften sind so wunderschön, wechseln ständig, dazwischen uralte Bergdörfer, braunrote Lehm-Kasbahs mit geometrischen Mustern verziert und malerische, traditionell gekleidete Menschen, die ihren täglichen Pflichten nachgehen. Man fühlt sich in eine Welt von vor hunderten von Jahren versetzt. Deshalb sollte man unbedingt ein
410wenig Zeit für eine Rundfahrt einplanen und auch bedenken, dass die engen, kurvigen StraÃen nicht mehr als 50 â 60 km pro Stunde erlauben.</p> </div> </div> </div> </div> </div> <div id="container_138" class="zpContainer styled zpBreakout " data-zpeleel="container" data-zpleid="138"> <div class="zpRow standard " data-row-id="449"> <div class="zpColumn odd zpColumnWidth1 c12 first last" style="" data-column-id="540"> <div class="zpColumnItem"> <div id="a1867" data-article-id="1867" data-zpleid="1867" class="articlearea zpwText"> <h2 style="text-align:left;" data-zpfieldname="headline">Wir sind für Sie da</h2> <p>vor und während der Reise</p> </div> </div> <div class="zpColumnItem"> <div id="a1868" data-article-id="1868" data-zpleid="1868" class="articlearea zpwCarousel zp13carouselWidget captiononhover"> <div class="zp13carousel-container"> <ul class="zp13carousel"> <li> <a class="fancybox zpnolayoutlinkstyles" href="media/images/edith-03a-large.jpg" data-htmltitle="<p><strong>Edith Kohlbach</strong></p> <p>Reisebuchautorin und Marokkokennerin</p>" data-fancybox-group="g1868"> <img class="limitsvg" src="media/images/thumbnails/edith-03a-350x600.jpg" width="350" height="600" title="" alt=""> <div class="zp13carousel-caption"> <span style=""> <p><strong>Edith Kohlbach</strong></p> <p>Reisebuchautorin und Marokkokennerin</p> </span> </div> </a> </li> <li> <a class="fancybox zpnolayoutlinkstyles" href="media/images/abdou_4-large.jpg" data-htmltitle="<p><strong>Abdelkhalek</strong>&nbsp;<br>Inhaber der marokkanischen Agentur und gerne für Sie da</p>" data-fancybox-group="g1868"> <img loading="lazy" class="limitsvg" src="media/images/thumbnails/abdou_4-350x600.jpg" width="350" height="600" title="" alt=""> <div class="zp13carousel-caption"> <span style=""> <p><strong>Abdelkhalek</strong> <br>Inhaber der marokkanischen Agentur und gerne für Sie da</p> </span> </div> </a> </li> <li> <a class="fancybox zpnolayoutlinkstyles" href="media/images/hassan_03-large.jpg" data-htmltitle="<p><strong>Hassan</strong><br>Unser Top Fahrer ist immer lustig</p>" data-fancybox-group="g1868"> <img loading="lazy" class="limitsvg" src="media/images/thumbnails/hassan_03-350x600.jpg" width="350" height="600" title="" alt=""> <div class="zp13carousel-caption"> <span style=""> <p><strong>Hassan</strong><br>Unser Top Fahrer ist immer lustig</p> </span> </div> </a> </li> <li> <a class="fancybox zpnolayoutlinkstyles" href="media/images/khalid-large.jpg" data-htmltitle="<p><strong>Khalid<br></strong>Fahrer und Koch in einem, seine Picknicks sind Spitze</p>" data-fancybox-group="g1868"> <img loading="lazy" class="limitsvg" src="media/images/thumbnails/khalid-350x600.jpg" width="350" height="600" title="" alt=""> <div class="zp13carousel-caption"> <span style=""> <p><strong>Khalid<br></strong>Fahrer und Koch in einem, seine Picknicks sind Spitze</p> </span> </div> </a> </li> <li> <a class="fancybox zpnolayoutlinkstyles" href="media/images/naim2-large.jpg" data-htmltitle="<p><strong>Naim</strong><br>Auch er ein Spitzen Fahrer</p>" data-fancybox-group="g1868"> <img loading="lazy" class="limitsvg" src="media/images/thumbnails/naim2-350x600.jpg" width="350" height="600" title="" alt=""> <div class="zp13carousel-caption"> <span style=""> <p><strong>Naim</strong><br>Auch er ein Spitzen Fahrer</p> </span> </div> </a> </li> </ul> </div> </div> </div>
410<script> 411 $z(document).ready(function() { 412 // dynamically calculate the maxItems depending on browser width and minimum image width, so that the carousel will not show cut off images 413 var maxItems = 4; 414 var itemsFit = Math.floor($z('#a1868 .zp13carousel-container').width() / 150); 415 if ( itemsFit < 4 && itemsFit !== 0){ 416 maxItems = itemsFit; 417 } 418 var useCssAnimation = false; 419 420 var autoplay = 1; 421 if ( $z("body").hasClass("zpreducemotion") ){ 422 autoplay = false; 423 } 424 425 // init flexslider after 1st image has loaded, so have dimensions as quickly as possible without having to wait too long on window loaded or such and can start right with doc ready 426 $z('[data-article-id="1868"] ul.zp13carousel li img').first().one("load", function(){ 427 $z('[data-article-id="1868"] .zp13carousel-container').flexslider({ 428 useCSS: useCssAnimation, 429 touch: true, 430 itemWidth: 150, 431 itemMargin: 0, 432 minItems: 2, 433 maxItems: maxItems, 434 move: 1, 435 mousewheel: false, 436 animation: 'slide', 437 animationLoop: true, 438 namespace: 'zp13carousel-', 439 selector: '.zp13carousel > li', 440 controlsContainer: '[data-article-id="1868"].zp13carousel', 441 multipleKeyboard: true, 442 slideshow: autoplay, 443 slideshowSpeed: 8000, 444 directionNav: true, 445 controlNav: false, 446 447 pauseOnHover: true, 448 smoothHeight: false, 449 prevText: "zurück", 450 nextText: "weiter", 451 start: function(){ 452 // if the url includes an anchor, scroll to it after a slight delay 453 // needed because while this widget loads its images, the scroll position changes 454 hash = document.location.hash; 455 if (hash !=="") { 456 var element_to_scroll_to = $z(hash)[0]; 457 if ( element_to_scroll_to.scrollIntoViewIfNeeded ){ 458 debug.log("Carousel scroll to anchor if needed " + hash); 459 element_to_scroll_to.scrollIntoViewIfNeeded(); 460 } 461 else{ 462 debug.log("Carousel scroll to anchor " + hash); 463 element_to_scroll_to.scrollIntoView(); 464 } 465 } 466 } 467 }); 468 }).each(function() { 469 if(this.complete) $z(this).trigger('load'); 470 }); // .each() is to work around a browser bugs which don't fire load() for cached images http://stackoverflow.com/a/3877079 471 472 // make sure the slider is properly resized when the window is resized (400ms after window.resize ended) 473 $z('[data-article-id="1868"] .zp13carousel-container').on('resize',function(event){ 474 // prevents slider.resize() from causing a windows.resize event again which looped 475 event.stopPropagation(); 476 }); 477 var sliderTimeout1868 = null; 478 $z(window).on("resize", function(event) { 479 clearTimeout(sliderTimeout1868); 480 sliderTimeout1868 = setTimeout(function() { 481 var slider = $z('[data-article-id="1868"] .zp13carousel-container').data('flexslider'); 482 if ( slider ){ // if slider contains only one image, slider will be undefined 483 slider.trigger('resize'); 484 } 485 clearTimeout(sliderTimeout1868); 486 }, 400); 487 488 }); 489 490 // add class to next prev links to avoid layout styles to be applied to these links 491 $z('[data-article-id="1868"] .zp13carousel-direction-nav a').addClass("zpnolayoutlinkstyles"); 492 }); 493 494 $z('[data-article-id="1868"] .fancybox').fancybox({ 495 'hideOnContentClick': true, 496 'padding': 0, //Space between FancyBox wrapper and content 497 'margin': 30, //Space between viewport and FancyBox wrapper 498 'cyclic' : true, 499 'changeSpeed' : 0, 500 'speedIn' : 300, 501 'speedOut' : 300, 502 'transitionIn' : "elastic", 503 'transitionOut' : "elastic", 504 'easingIn' : 'easeOutCubic', 505 'easingOut' : 'easeInCubic', 506 'titleShow' : true, 507 'showNavArrows' : true, 508 'overlayColor' : "black", 509 'overlayOpacity': 0.85, 510 'titlePosition' : "over", 511 'titleFormat' : function(title, currentArray, currentIndex) { 512 var title = $z('[data-article-id="1868"] .fancybox').eq(currentIndex).data("htmltitle"); 513 return '<span id="fancybox-title-over" class="zp13carousel">' + title + '</span>'; 514 } 515 516 }); 517 </script>
517 </div> </div> </div> <div id="container_140" class="zpContainer last styled zpBreakout " data-zpeleel="container" data-zpleid="140"> <div class="zpRow standard " data-row-id="648"> <div class="zpColumn odd zpColumnWidth1 c12 first last" style="" data-column-id="830"> </div> </div> <div class="zpRow standard " data-row-id="455"> <div class="zpColumn odd zpColumnWidth2 c7 first" style="" data-column-id="549"> <div class="zpColumnItem"> <div id="a1875" data-article-id="1875" data-zpleid="1875" class="articlearea zpwText"> <h2 style="color: #FFFFFF; " data-zpfieldname="headline">Sie wollen Marokko ganz persönlich erleben?</h2> </div> </div> </div> <div class="zpColumn even zpColumnWidth2 c5 last" style="" data-column-id="551"> <div class="zpColumnItem"> <div id="a1876" data-article-id="1876" data-zpleid="1876" class="articlearea zpwButton"> <p> <a href="kontakt.html" role="button" class="button"> <span>Jetzt kostenlos Beraten lassen!</span> </a> </p> </div> </div> </div> </div> </div> </div> </div> <div id="footer" role="contentinfo" class="container"> <div id="xmenu" class=""> <a class="xmenulink" href="index.html">Startseite</a> <a class="xmenulink" href="kontakt.html">Kontakt</a> <a class="xmenulink" href="impressum.html">Impressum</a> <a class="xmenulink" href="impressum-01.html">Datenschutz</a> </div> <div id="copyright"> © 2019-26 mobilunterwegs </div> </div> <div id="totop" class="container noprint"> <a href="#top" class="zpSO-Uplink-Flat zpnolayoutlinkstyles" title="Nach oben"><span class="zp-sronly">Nach oben</span></a> </div>
517<script> 518 function setoverflown(s){ 519 var retcode = false; 520 if ( ($z("#nav").length && $z("#nav").is(":hover")) || ! $z("#nav > ul > li").length ){ 521 // mouse is over nav, which opens submenues and might cause the overflow 522 // OR empty nav - needed because for IE an empty #nav == overflown() 523 return false; 524 } 525 526 $z("#nav > ul").removeClass("overflown"); 527 if ( $z("#nav:not(.on) > ul").overflown() ){ 528 // nav is already overflown by 1st-Level Menu entries (too many entries) 529 $z("#nav > ul").addClass("overflown"); 530 retcode = true; 531 } 532 else{ 533 // on non touch devices, check if nav would be overflown horizontally if all submenues are visible (i.e. too many submenues expanding to the right) 534 $z("#nav > ul ul:not(.nocalcoverflow)").css("display", "block"); 535 if ( $z("#nav:not(.on) > ul").overflown("x") ){ 536 $z("#nav > ul").addClass("overflown"); 537 retcode = true; 538 } 539 $z("#nav > ul ul:not(.nocalcoverflow)").css("display", ""); 540 541 // if the previous check didn't already match, check if one of the submenus is higher than the available space in the window because the nav is fixed and wouldn't scroll 542 if ( !retcode && $z("#nav.fixed").length ){ 543 $z("#nav.fixed > ul ul:not(.nocalcoverflow)").css("display", "block"); 544 $z("#nav.fixed > ul ul:not(.nocalcoverflow)").each(function(){ 545 var eltop = $z(this).offset().top - $(window).scrollTop(); // gets the effective top position relative to the window 546 if ( (eltop + $(this).innerHeight()) > $z(window).innerHeight() ){ 547 // submenu doesn't fit on screen and would be cut off 548 $z("#nav.fixed > ul").addClass("overflown"); 549 retcode = true; 550 $z("#nav.fixed > ul ul:not(.nocalcoverflow)").css("display", ""); 551 // exit the each loop early 552 return false; 553 } 554 }); 555 $z("#nav.fixed > ul ul:not(.nocalcoverflow)").css("display", ""); 556 } 557 } 558 559 // see if we need to scale to the logo to fit besides the mobile menu-button 560 var availspace = $z("#nav > ul").width() - $z("#nav > ul > li.overflownonly").width(); 561 $z("#nav > ul > li.logo").css("max-width", availspace + "px"); 562 563 return retcode; 564 } 565 566 function stickyNav(topoffset){ 567 // make navigations menu sticky when scrolling the menu past the top of the window 568 var scrolltop = $z("body").scrollTop() || (document.documentElement && document.documentElement.scrollTop) || 0; 569 570 if ( !$z("#nav ul ul:visible").length && scrolltop - topoffset >= 0){ 571 $z("body").addClass("padded"); 572 $z("#nav").addClass("fixed"); 573 } 574 else{ 575 $z("body").removeClass("padded"); 576 $z("#nav").removeClass("fixed"); 577 } 578 // with a little delay, check if the menu gets overflown (i.e. because we're also displaying the logo in the nav now 579 setTimeout(function(){setoverflown();}, 100); 580 } 581 // globals 582 var navOffset; 583 584 $z(document).ready(function(){ 585 // smooth scroll the layout specific go to top link 586 $z("a.zpSO-Uplink-Flat").on("click", function(e){ 587 e.preventDefault(); 588 if ( $z(this.hash).length ){ 589 $z('html,body').animate({ 590 scrollTop: $z(this.hash).offset().top - parseInt($z("body").css("padding-top")) 591 }, 500); 592 window.location.hash = this.hash; 593 } 594 }); 595 596 // switches the Mobile Navigation-Menu on/off, when "Menu" link is clicked. 597 $z("a#mobilenavtoggle").on("click", function(e){ 598 e.preventDefault(); 599 $z("#nav").toggleClass("on"); 600 setoverflown(); 601 }); 602 603 setoverflown(); 604 var resizeTimeout = null; 605 $z(window).on("resize", zpthrottle(100, function(event) { 606 var event = event || window.event; 607 if ( event && $z(event.target.nodeType).length == 0 ){// enable window.resize only for the window object (resizing elements might also trigger window.resize) which doesn't have a nodeType 608 setoverflown(); 609 } 610 })); 611 612 if ( "false" == "false" && ("true" == "true" || "false" == "true") ){ 613 navOffset = $z("#nav:not(.fixed)").offset().top; 614 setTimeout(function(){stickyNav(navOffset);}, 100); 615 } 616 <!-- if ( page.attribute("showHeader") ) --> 617 }); 618 619 $z(window).on('load', function(){ 620 setTimeout(function(){setoverflown();}, 500); 621 622 if ( "false" == "false" && ("true" == "true" || "false" == "true") ){ 623 if ( $z("#nav:not(.fixed)").length ){ 624 navOffset = $z("#nav:not(.fixed)").offset().top; 625 } 626 setTimeout(function(){stickyNav(navOffset);}, 500); 627 $z(window).on("scroll", zpthrottle(100, function(event) { 628 stickyNav(navOffset); 629 })); 630 } 631 632 }); 633 </script>
633 634<!-- 635* Layout: Flat Responsive by StS 636* $Id: default.html 2026-04-10 18:32:57 +0200 Uwe Keim a95b6b83c478364f018c347927d59cc63dec433f $ 637--> 638 </body> </html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.