PageSourceSearch

https://marrakechtours.de/index.html

html marrakechtours.de collected 2026-10-06 22:24:25 UTC 43,498 bytes, 638 lines download raw bytes

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&#246;nliche Tour f&#252;r Sie in Marokko. Ob K&#246;nigst&#228;dte, Bergschluchten oder W&#252;stenerlebnisse, wir machen Ihre Tr&#228;ume wahr."> <meta name="keywords" content="marokko, marrakesch, sahara, w&#252;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&#246;nliche Tour f&#252;r Sie in Marokko. Ob K&#246;nigst&#228;dte, Bergschluchten oder W&#252;stenerlebnisse, wir machen Ihre Tr&#228;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&#246;nliche Tour f&#252;r Sie in Marokko. Ob K&#246;nigst&#228;dte, Bergschluchten oder W&#252;stenerlebnisse, wir machen Ihre Tr&#228;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">&#9776; 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&nbsp;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&#252;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="&lt;p&gt;&lt;strong&gt;Edith Kohlbach&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Reisebuchautorin und Marokkokennerin&lt;/p&gt;" 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="&lt;p&gt;&lt;strong&gt;Abdelkhalek&lt;/strong&gt;&amp;nbsp;&lt;br&gt;Inhaber der marokkanischen Agentur und gerne f&#252;r Sie da&lt;/p&gt;" 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>&nbsp;<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="&lt;p&gt;&lt;strong&gt;Hassan&lt;/strong&gt;&lt;br&gt;Unser Top Fahrer ist immer lustig&lt;/p&gt;" 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="&lt;p&gt;&lt;strong&gt;Khalid&lt;br&gt;&lt;/strong&gt;Fahrer und Koch in einem, seine Picknicks sind Spitze&lt;/p&gt;" 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="&lt;p&gt;&lt;strong&gt;Naim&lt;/strong&gt;&lt;br&gt;Auch er ein Spitzen Fahrer&lt;/p&gt;" 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&#252;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.