JS-Plugin Dropdowntabs

HTML

JavaScript

CSS

Demo

<!DOCTYPE html>
<html>
<head>
	<title>Dropdowntabs</title>
	<link rel="stylesheet" type="text/css" href="ddtabs.css" media="screen" />
	<script src="ddtabs.js"></script>
	<script type="text/javascript" language="JavaScript">
		window.onload = function() {
			var tabgroup = new Dropdowntabs({openFlag:true,openTab:0,closeFlag:true});
		}
	</script>
</head>
<body>
	<div id="ddtabs">
		<div class="tabhead">Tabhead 1</div>
		<div class="tabcontent">
			<p>Text Tab 1</p>
		</div>
		<div class="tabhead">Tabhead 2</div>
		<div class="tabcontent">
			<p>Text Tab 2</p>
		</div>
		<div class="tabhead">Tabhead 3</div>
		<div class="tabcontent">
			<p>Text Tab 3</p>
		</div>
	</div>
</body>
</html>          
/* RaWi-JS-Plugin:	Dropdown-Tabs (animierte Version)
	*	JS-File:					ddtabs.js
	*	CSS-File:				ddtabs.min.css
*/
(function() {
	// Constructor
	this.Dropdowntabs = function() {
		// Globale Plugin-Element-Referenz
		this.dropdowntabs = null;
		// Vars
		this.tabcontentArray = new Array();
		this.tabcontentheightArray = new Array();
		// Option-Defaults
		var defaults = {
			idTabs:			'ddtabs',					// ID-Dropdown-Tabs
			cHeadClosed:	'tabhead',					// Klasse Tab-Head geschlossen
			cHeadOpen:		'tabhead current',	// Klasse Tab-Head offen
			cTabcontent:	'tabcontent',			// Klasse Tab-Content-Div
			openFlag:		false,							// Flag zum öffnen eines Tabs beim Aufruf der Seite
			openTab:			0,									// Nummer des zu öffnenden Tabs (0 bis X)
			closeFlag:		true								// Offene Tabs schließen (true) oder offen lassen (false)
		}
		// Übernahme der Option-Defaults bzw. der Argumente der Seite
		if (arguments[0] && typeof arguments[0] === "object") {
			this.options = extendDefaults(defaults, arguments[0]);
		}
		// Dropdowntabs-Div
		this.dropdowntabs = document.getElementById(this.options.idTabs);
		// Array der Tab-Heads
		this.tabHeadArray = this.dropdowntabs.querySelectorAll('[class='+this.options.cHeadClosed+']');
		// EventListener zu den Tab-Heads hinzufügen
		for (var i = 0; i < this.tabHeadArray.length; i++) {
			this.tabHeadArray[i].addEventListener('click', this.handleClick.bind(this,i));
		}
		// Array der Tab-Content-Divs
		this.tabcontentArray = this.dropdowntabs.querySelectorAll('[class='+this.options.cTabcontent+']');
		// Höhe der Tab-Content-Divs ermitteln und dann auf Null stellen
		for (var i = 0; i < this.tabcontentArray.length; i++) {
			var rect = this.tabcontentArray[i].getBoundingClientRect();
			this.tabcontentheightArray[i] = rect.height;
			this.tabcontentArray[i].style.height = '0px';
		}
		// openFlag === true -> entsprechenden Tab öffnen
		if (this.options.openFlag === true) this.openTab(this.options.openTab);
	}
	// ---------------
	// Plugin-Methoden
	// ---------------
	// Tab öffnen
	Dropdowntabs.prototype.openTab = function(tabnumber) {
		this.tabHeadArray[tabnumber].className = this.options.cHeadOpen;
		this.tabcontentArray[tabnumber].style.height = this.tabcontentheightArray[tabnumber] + 'px';
	}
	// Tab schließen
	Dropdowntabs.prototype.closeTab = function(tabnumber) {
		this.tabHeadArray[tabnumber].className = this.options.cHeadClosed;
		this.tabcontentArray[tabnumber].style.height = '0px';
	}
	// Funktion handleClick
	Dropdowntabs.prototype.handleClick = function(tabnumber,event) {
		// Bereits offene Tabs schließen wenn closeFlag === true
		if (this.options.closeFlag === true) {
			for (var i = 0; i < this.tabHeadArray.length; i++) {
				// wenn ein anderer Tab offen, dann schließen
				if (this.tabHeadArray[i].className == this.options.cHeadOpen && tabnumber != i) {
					this.closeTab(i);
				}
			}
		}
		// Angeklickten Tab öffnen/schließen
		if (this.tabcontentArray[tabnumber].style.height == '0px') {
			// Tab ist geschlossen -> öffnen
			this.openTab(tabnumber);
		} else {
			// Tab ist offen -> schließen
			this.closeTab(tabnumber);
		}
	}
	// ------------------------------
	// Option defaults implementieren
	// ------------------------------
	function extendDefaults(source, properties) {
		var property;
		for (property in properties) {
			if (properties.hasOwnProperty(property)) {
				source[property] = properties[property];
			}
		}
		return source;
	}
}());
/* Styles Dropdowntabs */
.tabhead, .tabhead.current {
	background:#e0e0e0;
	font-weight:bold;
	color:#000;
	display:block;
	box-sizing:border-box;
	cursor:pointer;
	-webkit-transition:all .3s ease;
	-moz-transition:all .3s ease;
	-ms-transition:all .3s ease;
	-o-transition:all .3s ease;
	transition:all .3s ease;
}
.tabhead:after {
	content:'';
	position:relative;
	float:right;
	transform:rotate(-135deg);
}
.tabhead:hover { color:#fd8f00; }
.tabhead.current { color:#2472b9; }
.tabhead.current:after {
	content:'';
	position:relative;
	float:right;
	transform:rotate(45deg)
}
.tabhead.current:hover { color:#fd8f00; }
.tabcontent {
	display:block;
	overflow:hidden;
	-webkit-transition:height .3s ease;
	-moz-transition:height .3s ease;
	-ms-transition:height .3s ease;
	-o-transition:height .3s ease;
	transition:height .3s ease;
}
/* Values */
#ddtabs {
	width:75%;
	margin:45px auto 0px auto; 
}
.tabhead, .tabhead.current {
	font-size:24px;
	margin:0;
	padding:14px 0px 16px 35px;
	-webkit-border-radius:10px;
	-moz-border-radius:10px;
	-o-border-radius:10px;
	border-radius:10px;
}
.tabhead:after {
	width:14px;
	height:14px;
	top:5px;
	right:35px;
	border-top:3px solid #777;
	border-left:3px solid #777;
}
.tabhead.current:after {
	width:14px;
	height:14px;
	top:12px;
	right:35px;
	border-top:3px solid #777;
	border-left:3px solid #777;
}
.tabcontent {
	width:95%;
	font-size:16px;
	margin:6px auto 20px auto;
}

Dieses Plugin wird auf der Seite Sitemap verwendet.

Dieses Plugin kommt auf der Seite Sitemap zum Einsatz.

Bild JS-Plugin Dropdowntabs

Sorry, aber die Darstellung der Codes dieses Beispiels ist auf kleinen Displays zu unübersichtlich.Sie können sich jedoch die Codes downloaden und das Plugin auf ihrem PC/Laptop/Tablet ausprobieren.