Christian Heilmann

You are currently browsing the archives for the General category.

Archive for the ‘General’ Category

Pure mouse independent CSS popups?

Monday, January 31st, 2005

A lot of people cherish the pure CSS popups technique published by Eric Meyer in the long long ago.

The only problem with these is that they are not accessible. While screen readers and browsers without CSS happily display the texts, users without a mouse have no chance to get to the content of the spans embedded in the links.

What we can do though is use Javascript to check if a mouse is available, and make our CSS dependent on a class set to the body if that is the case:

CSS:

body.mouseenabled a span{
position:absolute;
left:-999em;
}

body.mouseenabled a:hover{
color:#fff;
}

body.mouseenabled a:hover span{
position:relative;
left:0;
}


Javascript

window.onload=function()
{

if(!document.getElementById || !document.createElement){return;}
document.body.onmousemove=function()
{

if(!/bmouseenabledb/.test(document.body.className))
{

this.className+=this.className?' mouseenabled':'mousenabled';
}

}
}

See it in action here.

Benefits:

  • Keyboard accessible

Drawbacks:

  • The popups are visible until the user moves the mouse.
  • Visitors need Javascript enabled to see the effect.

Lynx users are hackers!

Friday, January 28th, 2005

Boing Boing: Jailed for using a nonstandard browser

Three cheers for that admin.

Beachwalkers

Thursday, January 27th, 2005

Got an email with videos of two odd contraptions. I have no idea what these things are, but I want one.

Email spam protection idea

Thursday, January 27th, 2005

After a rather interesting discussion on how to obfuscate emails on the frontend – me pointing out that most techniques are rather inaccessible and make spam the problem of the visitor – I came up with the following idea:

What if you set up your email links by linking to a page:

The PHP page then checks the referrer page and compares it with its own host IP, gets the email from a database or other mean of storage and sends back a ‘mailto:’ header:

header('Location:mailto:'.$email);

Wouldn’t that be a quite safe solution for the problem?

  • Note: Of course a web form is the best option as it does not need an email client tool.

Blogs away!

Thursday, January 27th, 2005

Even though I haven’t come around to creating my template yet, I think it is time to start the blog, after all it is so much easier to design it when content is already available.