Warum nicht die idealste Art? Kommt halt immer drauf an, was "der Laie" befüllen können soll. Wenn er einfach den Inhalt der einzelnen Elemente bearbeiten können soll, kannst Du es ganz normal über die vorhandenen Module lösen. Hier ist mal was zum "spielen" (basiert auf
). Die "parts" brauchst Du nur noch durch Module ersetzen
Code: Alles auswählen
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Scrolling to anchors</title>
<style type="text/css">
body {
font-family: arial, helvetica, sans-serif;
}
div.box_main {
width: 60%;
margin-left: auto;
margin-right: auto;
margin-top: 1%;
}
div.box_jumpers {
position: fixed;
background-color: #999999;
}
div.part {
border: 1px solid #777777;
padding: 1%;
background-color: #9f9f9f;
margin-bottom: 2em;
margin-top: 5em;
overflow: hidden;
}
div.margin_bottom {
margin-bottom: 50%;
}
span.jumper {
padding-left: 1%;
padding-right: 1%;
background-color: #111111;
border: 1px solid #111111;
color: #ffffff;
margin: 1em;
display: block;
}
span.jumper:hover {
background-color: #ffffff;
color: #111111;
cursor:pointer;
}
</style>
<script type='text/javascript'>
var array_part_ids=new Array("part_01","part_02","part_03","part_04","part_05","part_06");
var var_vertical_correction_additional_change=20;
function getPosition(element)
/* der Aufruf dieser Funktion ermittelt die absoluten Koordinaten
des Objekts element */
{
var elem=element,tagname="",x=0,y=0;
/* solange elem ein Objekt ist und die Eigenschaft offsetTop enthaelt
wird diese Schleife fuer das Element und all seine Offset-Eltern ausgefuehrt */
while ((typeof(elem)=="object")&&(typeof(elem.tagName)!="undefined"))
{
y+=elem.offsetTop; /* Offset des jeweiligen Elements addieren */
x+=elem.offsetLeft; /* Offset des jeweiligen Elements addieren */
tagname=elem.tagName.toUpperCase(); /* tag-Name ermitteln, Grossbuchstaben */
/* wenn beim Body-tag angekommen elem fuer Abbruch auf 0 setzen */
if (tagname=="BODY")
elem=0;
/* wenn elem ein Objekt ist und offsetParent enthaelt
Offset-Elternelement ermitteln */
if (typeof(elem)=="object")
if (typeof(elem.offsetParent)=="object")
elem=elem.offsetParent;
}
/* Objekt mit x und y zurueckgeben */
position=new Object();
position.x=x;
position.y=y;
return position;
}
function alertPosition(elementId)
/* gibt eine Meldung mit x und y des zu elementId gehoerenden Elements aus */
{
var a,element;
/* Element-Objekt zur ID ermitteln */
element=document.getElementById(elementId);
/* Position bestimmen und melden */
a=getPosition(element);
//window.alert("Position "+elementId+": ("+a.x+","+a.y+")");
}
var array_positions=new Array('0');
function getPositions()
{
var a,element;
array_part_ids.forEach(function(elementId)
{
element=document.getElementById(elementId);
a=getPosition(element);
//window.alert("Position x y "+elementId+": ("+a.x+","+a.y+")");
array_positions.push(a.y-var_vertical_correction_additional_change);
});
//document.getElementById('infos').innerHTML=array_positions;
}
window.onload=function(){
window.smoothScrollTo = (function () {
var timer, start, factor;
return function (target, duration) {
var offset = window.pageYOffset,
delta = target - window.pageYOffset; // Y-offset difference
//alert('offset: '+offset+' delta: '+delta);
duration = duration || 1000; // default 1 sec animation
start = Date.now(); // get start time
factor = 0;
if( timer ) {
clearInterval(timer); // stop any running animations
}
function step() {
var y;
factor = (Date.now() - start) / duration; // get interpolation factor
if( factor >= 1 ) {
clearInterval(timer); // stop animation
factor = 1; // clip to max 1.0
}
y = factor * delta + offset;
window.scrollBy(0, y - window.pageYOffset);
}
timer = setInterval(step, 10);
return timer;
};
}());
}
function change_jumpers(part_id)
{
array_part_ids.forEach(function(elementId)
{
if(part_id!=elementId)
{
//alert('part_id ungleich elementID '+part_id+' '+elementId);
document.getElementById('jumper_'+elementId).style.backgroundColor="#111111";
document.getElementById('jumper_'+elementId).style.color="#ffffff";
}
else
{
//alert('part_id identisch elementID '+part_id+' '+elementId);
document.getElementById('jumper_'+part_id).style.backgroundColor="#ffffff";
document.getElementById('jumper_'+part_id).style.color="#111111";
}
});
}
function additional_effects(part_id) {
if(part_id=="part_01")
{
document.body.style.backgroundColor="red";
}
if(part_id=="part_02")
{
document.body.style.backgroundColor="blue";
}
if(part_id=="part_03")
{
document.body.style.backgroundColor="white";
}
if(part_id=="part_04")
{
document.body.style.backgroundColor="yellow";
}
if(part_id=="part_05")
{
document.body.style.backgroundColor="green";
}
if(part_id=="part_06")
{
document.body.style.backgroundColor="lime";
}
if(part_id=="back_to_top")
{
document.body.style.backgroundColor="white";
}
change_jumpers(part_id);
document.body.style.transition="2s";
}
window.onscroll = scroll;
function scroll () {
//alert(window.pageYOffset);
if(window.pageYOffset<array_positions[2])
{
document.body.style.backgroundColor="red";
change_jumpers('part_01');
}
if(window.pageYOffset>array_positions[2]&&window.pageYOffset<array_positions[3])
{
document.body.style.backgroundColor="blue";
change_jumpers('part_02');
}
if(window.pageYOffset>array_positions[3]&&window.pageYOffset<array_positions[4])
{
document.body.style.backgroundColor="white";
change_jumpers('part_03');
}
if(window.pageYOffset>array_positions[4]&&window.pageYOffset<array_positions[5])
{
document.body.style.backgroundColor="yellow";
change_jumpers('part_04');
}
if(window.pageYOffset>array_positions[5]&&window.pageYOffset<array_positions[6])
{
document.body.style.backgroundColor="green";
change_jumpers('part_05');
}
if(window.pageYOffset>array_positions[6])
{
document.body.style.backgroundColor="lime";
change_jumpers('part_06');
}
if(window.pageYOffset==0)
{
document.body.style.backgroundColor="white";
change_jumpers('back_to_top');
}
document.body.style.transition="1s";
}
</script>
</head>
<body>
<div class="box_jumpers">
<span class="jumper" id="jumper_part_01" onclick="smoothScrollTo(document.getElementById('part_01').offsetTop);additional_effects('part_01')">part one</span>
<span class="jumper" id="jumper_part_02" onclick="smoothScrollTo(document.getElementById('part_02').offsetTop);additional_effects('part_02')">part two</span>
<span class="jumper" id="jumper_part_03" onclick="smoothScrollTo(document.getElementById('part_03').offsetTop);additional_effects('part_03')">part three</span>
<span class="jumper" id="jumper_part_04" onclick="smoothScrollTo(document.getElementById('part_04').offsetTop);additional_effects('part_04')">part four</span>
<span class="jumper" id="jumper_part_05" onclick="smoothScrollTo(document.getElementById('part_05').offsetTop);additional_effects('part_05')">part five</span>
<span class="jumper" id="jumper_part_06" onclick="smoothScrollTo(document.getElementById('part_06').offsetTop);additional_effects('part_06')">part six</span>
</div>
<div class="box_main">
<div id="infos"></div>
<div class="part" id="part_01">
<h1>Part one - red</h1>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<span class="jumper" onclick="smoothScrollTo(document.getElementById('part_02').offsetTop);additional_effects('part_02')">part two</span>
</div>
<div class="part" id="part_02">
<span class="jumper" onclick="smoothScrollTo(document.getElementById('part_01').offsetTop);additional_effects('part_01')">part one</span>
<h1>Part two - blue</h1>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<span class="jumper" onclick="smoothScrollTo(document.getElementById('part_03').offsetTop);additional_effects('part_03')">part three</span>
</div>
<div class="part" id="part_03">
<span class="jumper" onclick="smoothScrollTo(document.getElementById('part_02').offsetTop);additional_effects('part_02')">part two</span>
<h1>Part three - white</h1>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<span class="jumper" onclick="smoothScrollTo(document.getElementById('part_04').offsetTop);additional_effects('part_04')">part four</span>
</div>
<div class="part" id="part_04">
<span class="jumper" onclick="smoothScrollTo(document.getElementById('part_03').offsetTop);additional_effects('part_03')">part three</span>
<h1>Part four - yellow</h1>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<span class="jumper" onclick="smoothScrollTo(document.getElementById('part_05').offsetTop);additional_effects('part_05')">part five</span>
</div>
<div class="part" id="part_05">
<span class="jumper" onclick="smoothScrollTo(document.getElementById('part_04').offsetTop);additional_effects('part_04')">part four</span>
<h1>Part five - green</h1>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<span class="jumper" onclick="smoothScrollTo(document.getElementById('part_06').offsetTop);additional_effects('part_06')">part six</span>
</div>
<div class="part" id="part_06">
<span class="jumper" onclick="smoothScrollTo(document.getElementById('part_05').offsetTop);additional_effects('part_05')">part five</span>
<h1>Part six - lime</h1>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<span class="jumper" onclick="smoothScrollTo(document.getElementById('part_01').offsetTop);additional_effects('part_01')">part one</span>
</div>
</div>
<span class="jumper" onclick="smoothScrollTo(0, 500);additional_effects('back_to_top')">back to top</span>
<div class="margin_bottom">
</div>
<script type="text/javascript">
getPositions();
</script>
</body>
</html>