27 Oct, 2009

Tekst zoom

Categoriën: Typography | crossbrowser | javascript | tekst

Voor gebruikers die tekst op je website misschien te klein vinden, kun je hun de mogelijkheid geven om via een klik op een link de gehele tekst op je website te vergroten.

HTML

In de <header>

<link rel="stylesheet" type="text/css" href="normaal.css" title="normaal">
<link rel="alternate stylesheet" type="text/css" href="groter.css" title="groter">
<link rel="alternate stylesheet" type="text/css" href="giga.css" title="gigant">
<script type="text/javascript" src="styleswitcher.js"></script>

Style Switcher links

<a title="normaal" onclick="setActiveStyleSheet('normaal'); return false;" href="#">a</a>
<a title="groter" onclick="setActiveStyleSheet('groter'); return false;" href="#">A</a>
<a title="gigantisch" onclick="setActiveStyleSheet('gigant'); return false;" href="#">A+</a>

JavaScript

styleswitcher.js

<![CDATA[
function setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) a.disabled = false;
    }
  }
}
function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}
function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}
function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}
window.onload = function(e) {
  var cookie = readCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
  setActiveStyleSheet(title);
}
window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 365);
}
var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);
]]>

CSS

Normaal

body {
font-size : 1.5em;
background-color : #CCCC33;
}

Groter

body {
font-size : 1.8em;
background-color : #99CC66;
}

Giga

body {
font-size : 2.3em;
background-color : #99CC66;
}

Gerelateerde Snippets

Geen reakties op "Tekst zoom"

Reaktie formulier


Advertenties

Volgende nieuwe Snippet:

  • Momenteel niks gepland.