Archive for the 'CSS' Category

Vertical text in non-IE browsers.

Het tonen van verticale tekst via CSS is alleen weggelegd voor IE Browsers middels de volgende CSS3 regels:


writing-mode: tb-rl;
filter: flipv fliph;

Dit is een mooie manier om bijvoorbeeld tabel headers verticaal weer te geven. Maar helaas wordt deze CSS regel tot nu toe alleen toegepast in IE browsers. Om dit ook in non-IE browsers mogelijk te maken, gebruikt men vaak dynamisch gegenereerde images met de gewenste tekst.

Dit werkt natuurlijk ook maar het zorgt wel voor extra belasting op de webserver, tevens is dit lastig te onderhouden. Op zoek naar een betere oplossing, kwam ik een oplossing tegen die gebruik maakt van een statisch svg object met daarin een javascript welke de verticale text zet. Dit is al een betere oplossing alleen het aanroepen van de javascript binnen het svg object is niet erg netjes. Daarnaast moet op elke plek waar je verticale tekst wil gebruiken de svg toevoegen via de <embed> tag.

De oplossing voor dit probleem heb ik gevonden door met behulp van de jQuery SVG plugin deze svg zelf te genereren:


function SetVerticalText() {
    var verticalTexts = $(".verticalText");

    verticalTexts.each(function() {
        var text = $(this).text();
        $(this).text("");

        if (!$.browser.msie) {
            $(this).append("<div class='svgContainer'></div>");
            $(this).find(".svgContainer").svg();
            var svg = $(this).find(".svgContainer").svg('get');
            svg.text(null, -48, 12, text, { transform: 'rotate(270, 50, 50)', 'font-family': 'Arial', 'font-size': '10', 'letter-spacing': '2' });
        }
        else {
            $(this).append("<span class='verticalTextSpan'>" + text + "</span>");
        }
    });
}

Hier bij geef ik alle tekst elementen die ik verticaal wil weergeven de CSS class .verticalText bijvoorbeeld in mijn table headers:


<table cellpadding="0" cellspacing="0" class="statusTable width700" >
<tr>
<td class="labelCell">
NFP-SC
</td>
<td class="verticalText">
Digitaal initieel
</td>
<td class="verticalText">
Digitaal ingediend
</td>
<td class="verticalText">
Papier ingediend
</td>
<td class="verticalText">
Direct afgewezen
</td>
</tr>
</table>

Wanneer ik nu de SetVerticalText() aanroep, wordt er voor alle non-IE browsers een <div class=’svgContainer’></div> toegevoegd. Vervolgens wordt er middels de jQuery SVG plugin een svg object aangemaakt met daarin de verticale tekst.

Voor IE-browsers wordt er een <span class=’verticalTextSpan’></span> tag toegevoegd met daarin de verticale tekst.

Een demo van deze techniek.

svgDemo Source (73)

Scalable CSS buttons

Meeschalende CSS buttons, het blijft een leuke uitdaging om dit voor elkaar te krijgen. De mooiste techniek die ik tot nu toe ben tegengekomen is deze van David’s Kitchen.

Hierin worden buttons en links met de .btn class via jQuery vervangen xhtml valide markup. Deze nieuwe  markup wordt vervolgens op gemaakt via een aantal CSS regels.

Het mooie van deze techniek is behalve dat de knoppen meeschalen met de tekst, de kleuren van de knop niet in de achtergrond image worden gezet maar gewoon via CSS classes. De kleur van de knoppen kan zo dus makkelijk worden aangepast.

CSS Sprites artikel

apple.jpg

Op Smashing magazine staat een artikel over CSS sprites. Er wordt uitgelegd wat CSS Sprites zijn en welk probleem het oplost en hoe je het kan toepassen. Een goed artikel dus!!

Css-based forms

 

logo.gif

Het maken van goede en overzichtelijke formulieren vaak een tijdrovende klus. Smashing Magazine heeft een aantal formulieren op een rijtje gezet die je hierbij kunnen helpen. De formulieren voldoen aan een of meer van de volgende eisen:

  • accessible
  • xhtml compliant
  • css-based

IE overflow bug

ie-7-bug1.jpgIk heb vandaag eindelijk een oplossing gevonden voor die irritante overflow bug in IE. Deze bug houdt in dat er een horizontale scrollbar wordt getoond terwijl deze helemaal niet nodig is:

overflow.png

Josh Stodola heeft de oplossing door een IE specifieke tag toe tevoegen :

Gradient text in css

 Gradients zijn tegenwoordig meer regel dan uitzondering, het is alleen jammer dat je elke keer een plaatje moet maken om dit effect te bewerkstelligen. Of toch niet?

WebdesignerWall laat zien hoe dit ook kan met behulp van css.

IE6 div height

ie-7-bug1.jpgHet zetten van de div height in IE6 is niet zo simpel als je zou denken. Ik wilde een dunne lijn maken mbv een div met een hoogte van 1px :


div.footerBar
{
    background: #FF6600;
    width: 100%;
    height: 1px;
}

Dit is voldoende voor firefox en IE 7. Helaas kreeg ik in IE 6 een lelijke dikke balk. Dit is op te lossen door overflow:hidden toe te voegen:


div.footerBar
{
    background: #FF6600;
    width: 100%;
    height: 1px;
    overflow:hidden;
}

Een nettere oplossing is zoals Wilbert al zei, gewoon een hr tag gebruiken met de volgende css:


hr
{
   border:0;
   height:1px;
   color:red;
   background:red;
} 

Piclens op superdopey.nl

Ik ben van het weekend druk bezig geweest om de geweldige plugin piclens te implementeren op mijn website. Pic lens is een plugin voor Firefox en Internet explorer waarmee je foto’s in 3d kan bekijken. Kijk hier voor het resultaat, let wel even op dat je plugin ook daadwerkijk installeert.

Gebruikte technieken:

  • Piclens plugin
  • PHP
  • Flickr API
  • HTML/CSS

8 Web Design Mistakes That Developers Make

Hier is een leuk maar o zo waar artikel over webdesign door developers

crazy_developer.jpg

IE6 Layer bug

Ik kwam vandaag de bekende en vervelende IE6 layer bug tegen. Door deze bug worden controls die onder een floating layer div liggen erboven getoond. Dit is op te lossen door een iets groter iframe te plaatsen onder de floating div.


<span class="sc2"><a href="http://december.com/html/4/element/style.html"><span class="kw2"><style></span></a></span>

.ajaxPreloaderContainer
{
border: solid 1px #cccccc;
background-color: #FAFAFA;
color: #333333;
z-index:119;
width: 200px;
height: 100px;
position: absolute;
top: 45%;
left: 45%;
}

.ajaxPreloader
{
width: 200px;
text-align: center;
position: absolute;
top: 30%;
}

.preventShineAjaxPreloader
{
width: 202px;
height: 102px;
position: absolute;
top: 45%;
left: 45%;
background-color:#cecece;
}
<span class="sc2"><span class="kw2"></style></span></span>

<span class="sc2"><a href="http://december.com/html/4/element/iframe.html"><span class="kw2"><iframe</span></a> <span class="kw3">class</span>=<span class="st0">"preventShineAjaxPreloader"</span> <span class="kw3">frameborder</span>=<span class="st0">"0"</span><span class="kw2">></span></span><span class="sc2"><span class="kw2"></iframe></span></span>
<span class="sc2"><a href="http://december.com/html/4/element/div.html"><span class="kw2"><div</span></a> <span class="kw3">class</span>=<span class="st0">"ajaxPreloaderContainer"</span><span class="kw2">></span></span>
<span class="sc2"><a href="http://december.com/html/4/element/div.html"><span class="kw2"><div</span></a> <span class="kw3">class</span>=<span class="st0">"ajaxPreloader"</span><span class="kw2">></span></span>
<span class="sc2"><asp:Image runat=<span class="st0">"server"</span> <span class="kw3">ID</span>=<span class="st0">"preloadImage"</span> ImageUrl=<span class="st0">"~/Web/Styles/sk123_nl/images/bamas/ajax-loader.gif"</span> /<span class="kw2">></span></span><span class="sc2"><a href="http://december.com/html/4/element/br.html"><span class="kw2"><br</span></a> /<span class="kw2">></span></span>
Data wordt opgehaald
<span class="sc2"><span class="kw2"></div></span></span>
<span class="sc2"><span class="kw2"></div></span></span>