tanketorsken.dk/2008/08/

Feeds

Forbedring af image-replacement teknik

Når jeg i css skal erstatte noget HTML-tekst med et billede (sker typisk i en menu, eller et logo) bruger jeg Phark image replacement:

<h1><a href="#">Firmanavn</a></h1>
// CSS
h1 {
  width: 120px;
  height: 45px;
  text-indent: -9000px;
}

h1 a:link, h1 a:visited {
  display: block;
  width: 120px;
  height: 45px;
  background: transparent url(logo.png) 0 0 no-repeat;
}

h1 a:hover, h1 a:active {
  background-position: -45px 0;
}

Det er en utrolig nem måde at lave image replacement på og jeg har altid været utrolig tilfreds med metoden. Lige med undtagelse af en enkelt detalje. Når man klikke på et link i Firfox kommer der en stiplet ramme rundt om linket. Men når man i Phark-metoden bruger en stor negativ tekstindrykning, kommer den stiplede linje til at gå hele vejen til venstre side af browser vinduet, hvilket altid har generet mig en god portion. Alligevel er jeg blevet ved med at bruge Phark-metoden da der er negative ting ved alle de alternativer jeg har læst om (som oftest et ekstra overflødigt span-element).
Egentlig havde jeg lært at leve med den grimme stiplede ramme der går hele vejen ud til venstrekanten af browservinduet, men i dag faldt jeg over en løsning, der lader mig bruge Phark-metoden og som samtidig undgår problemet med den stiplede linje. Og det var selvfølgelig tåbelig simpelt. Man skal blot tilføje “overflow:hidden” til link-elementet og så er problemet løst! Jøsses hvor ville jeg gerne have vidst det for halvandet år siden.

Strongly typed, weakly typed, dynamically typed, statically typed?

Af en eller anden grund roder jeg altid rundt i hvad forskellen på de fire begreber i overskriften er, så har kopieret en forklaring fra diveintopython.org:

statically typed language
A language in which types are fixed at compile time. Most statically typed languages enforce this by requiring you to declare all variables with their datatypes before using them. Java and C are statically typed languages.
dynamically typed language
A language in which types are discovered at execution time; the opposite of statically typed. VBScript and Python are dynamically typed, because they figure out what type a variable is when you first assign it a value.
strongly typed language
A language in which types are always enforced. Java and Python are strongly typed. If you have an integer, you can’t treat it like a string without explicitly converting it.
weakly typed language
A language in which types may be ignored; the opposite of strongly typed. VBScript is weakly typed. In VBScript, you can concatenate the string ’12′ and the integer 3 to get the string ’123′, then treat that as the integer 123, all without any explicit conversion.