Notes on using HTML5 input type=search and the placeholder attribute

<input type=search> is one of the HTML5 additions to form input types. In theory you can just replace the old <input type=text> with the new type and browsers continue to work and the site is now more semantic. In practice working with type=search is not that simple.

First thing you probably want to do is to remove Webkit’s default, heavy styling. You do that by these CSS commands:

-webkit-appearance:textfield; -webkit-box-sizing:content-box;

I initially used the former, but after some odd width calculation issues I found out that latter is also needed to actually fully restore familiar type=text behavior.

Placeholder text is another wonderful addition to input elements (not just type=search). This replicates the common behavior of having the search field label within the field itself (until the user focuses the field). You add placeholder text by adding an attribute to the input element like this: placeholder=”search this site”.

To gracefully degrade, use Modernizr to detect a browsers with no support:

jQuery(function($) {
	if (!Modernizr.input.placeholder || navigator.userAgent.match(/opera/i)) {
		$('input[placeholder]').hint();
	}
});

Here I decided to replace native placeholder support on Opera, since there are no styling options for it, yet. The text is always in #7f7f7f, which was not an option, since the background was exactly that color.

To style placeholder text you need these rules:

input[type=search].blur{color:#ddd}
input[type=search]::-webkit-input-placeholder{color:#ddd}
input[type=search]:-moz-placeholder{color:#ddd}

You cannot combine those selectors, since the rule will stop working as expected. .blur is for browsers that do not support native placeholder behavior.

And here is the modified version of the plugin that adds placeholder behavior. To make it more HTML5 friendly, I basically just replaced the use of title attribute with placeholder attribute.

/**
* @author Remy Sharp
* @url http://remysharp.com/2007/01/25/jquery-tutorial-text-box-hints/
* Modified to use placeholder attribute by Aki Björklund, https://akibjorklund.com/
*/
(function ($) {
	$.fn.hint = function (blurClass) {
		if (!blurClass) { 
			blurClass = 'blur';
		}

		return this.each(function () {
			// get jQuery version of 'this'
			var $input = $(this),

			// capture the rest of the variable to allow for reuse
			placeholder = $input.attr('placeholder'),
			$form = $(this.form),
			$win = $(window);

			function remove() {
				if ($input.val() === placeholder && $input.hasClass(blurClass)) {
					$input.val('').removeClass(blurClass);
				}
			}

			// only apply logic if the element has the attribute
			if (placeholder) { 
				// on blur, set value to placeholder attr if text is blank
				$input.blur(function () {
					if (this.value === '') {
						$input.val(placeholder).addClass(blurClass);
					}
				}).focus(remove).blur(); // now change all inputs to placeholder

				// clear the pre-defined text when form is submitted
				$form.submit(remove);
				$win.unload(remove); // handles Firefox's autocomplete
			}
		});
	};
})(jQuery);

W3C brändäsi HTML5:n, puristit itkivät

HTML5HTML5:stä oli muodostunut kansan suussa jotain muuta kuin mitä tiukkaan luettuna HTML5-speksi käsittää. Puristien mielipiteillä ei ole väliä. W3C teki oikein tarttuessaan tilaisuuteen vahvistaa tuota brändiä, joka joka tapauksessa oli jo olemassa. Kun haluaa korostaa eroa, ei ole kovin vaikeaa puhua HTML5-speksistä silloin kun sitä tarkoittaa ja jatkaa puhumista web-teknologioiden toisesta tulemisesta HTML5:na.

Tämän hullun applikaatiohypen aikana maailma tarvitsee yksinäisiä sankareita, jotka pelastavat meidät kaikki pahoilta megakorporaatioilta.

H1: logo, sivut ja ensimmäiset kuukaudet

Tein yritykselleni uudet sivut. Tai pikemminkin sivun:

Ruutukaappaus h1.fi:stä, jossa iso kuva Akista ja vähän tekstiä.

Logon suunnitteli ja kuvan otti Jaana Björklund.

Teknisesti sivu on luonnollisesti HTML5-muotoa, mutta toimii myös antiikkisessa IE:ssä. Sivun koodi on pyritty minimoimaan, gzip on käytössä ja kaikki muut hyvät käytännöt huomioitu. Logo on tehty manuaalisesti SVG:llä. Ainakin minulle yllätyksenä tuli, että jostain syystä selaimet lataavat tarpeettomasti object:lla upotetun SVG-logon varmistuksena olevan img:n viittaaman kuvan. Se ei ole tässä tapauksessa mikään ongelma, mutta mielenkiintoinen juttu sinänsä.

H1 on toistaiseksi yhtä kuin minä, joten sivutkin saavat heijastella sitä. Mitä sitä piilottelemaan, että yritys on pieni. Jos asiakas pelkää ostaa pieneltä toimijalta, ei se ainakaan teeskentelemällä ratkea.

Yrityksen tavoitteena ei varsinaisesti ole kasvaa, vaan ensisijaisesti tuottaa onnellisuutta – niin työntekijöilleen kuin asiakkailleen. Kasvua saa toki tapahtua. Niin käy luonnollisesti, jos löydän ympärilleni lisää samoja arvoja jakavia ihmisiä, sekä asiakkaita, jotka haluavat ostaa meiltä työtä. Tähän mennessä olen ainakin itseni työllistänyt enemmän kuin hyvin, joten jonkinlainen kasvu on todennäköistä.

Ensimmäiset reilu pari kuukautta H1 on toiminut kannattavasti ja tavoitteidensa mukaisesti. Omia, erillisiä toimitiloja sillä ei ole, koska työ tehdään joko asiakkaan tiloissa tai kotitoimistossa. Kotitoimisto on kylläkin toistaiseksi sohvan nurkka; kunnollinen työpiste on vasta suunnitelmissa. Kaikki aikanaan: menestyvä yritys keskittyy tuottavan työn tekemiseen eikä tuollaisiin epäolennaisuuksiin.

Ensimmäiset työtehtävät ovat olleet kaikkea maan ja taivaan välillä. Joitain töitä mainitsekin uusilla sivuilla. Mutta kerrottakoon, etten ainakaan kyllästymään ole päässyt.

Vähitellen on myös alkanut muodostua käsitys siitä, minkälaista työtä haluan yrityksen tekevän. Ideaali asiakas tuntuisi olevan keskisuuri yritys, jolle verkko on tärkeä tai erittäin tärkeä osa liiketoimintaa ja joka haluaa maksimoida verkkopalvelunsa tuoton. Muunkinlaiset asiakkaat toki kelpaavat, erityisesti konsultointityyppisiin asiakassuhteisiin.

Oikeastaan ei kannata rajata mitään vielä tässä vaiheessa. Kaikki on mahdollista.

Supporting New Elements in IE

Päivän hyvä uutinen on, että IE8 ei ole rikkonutkaan tunnettua kiertokeinoa HTML5:n uusien elementtien tyylitettelyn mahdollistamiseksi.

Note that there is a known bug that prevented this from working in IE 8 beta 2, but this has since been resolved in the latest non-public technical preview.

Riippuvuus JavaScriptistä ei silti ole kovin hyvä tilanne HTML5:n yleistymisen kannalta. Jos IE8 ei natiivisti minkä tahansa nimisen elementin tyylittelyä tue, ennustan todella pitkää käyttöönottoaikaa HTML5:lle.

blog.whatwg.org/… →