Přejít k navigační liště

Zdroják » Zprávičky » Firefox 4 přinese podporu CSS calc()

Firefox 4 přinese podporu CSS calc()

Zprávičky Webdesign

Článek popisuje funkci calc(), zavedenou v CSS3. Tato funkce zatím není k dispozici v žádné vývojové větvi Firefoxu, ale na její implementaci se pracuje.

Firefox bude podporovat CSS hodnotu calc() (viz specifikace), která umožňuje vyjádřit hodnoty rozměrů pomocí aritmetických výrazů. To znamená, že pomocí této funkce můžete definovat rozměry DIVů, velikosti okrajů, šířku rámečků atd.

Zde je příklad layoutu, který je velmi těžké navrhnout bez  calc():

/*
* Dva zarovnané DIVy, oddělené 1em okrajem
*/
#a {
  width:75%;
  margin-right: 1em;
}
#b {
  width: -moz-calc(25% - 1em);
}

Dalčí příklad ukazuje, jak zajistit, že textové pole nebude větší než rodičovský element:

input {
  padding:2px;
  border:1px solid black;
  display:block;
  width: -moz-calc(100% - 2 * 3px);
}

Velmi zajímavá možnost, kterou calc() nabízí, je kombinace různých jednotek v jednom výrazu:

width: -moz-calc(3px + 50%/3 - 3em + 1rem);

Současná implementace podporuje operátory +, -, *, /, mod, minmax.

V plánu je rovněž podpora funkcí min() a max(), které mohou být použity např. takto:

div {
  height: -moz-min(36pt, 2em);
  width: -moz-max(50%, 18px);
}

Další podrobnosti naleznete na následujících stránkách:

Článek je překladem textu Firefox 4: CSS3 calc() z webu Mozilla Hacks. Tento text je k dispozici pod licencí Creative Commons BY-SA 3.

Komentáře

Odebírat
Upozornit na
guest
9 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
Zobrazit všechny komentáře
jo

Hm, vypadá to dobře.

mamlasek

ve specifikaci, na kterou je ve zpravicce odkaz, ale neni nikde zminka o „-moz-calc()“ … kdy sakra prestanou s tim -moz*, -webkit* ? pokud je to dle specifikace, proc to proste neni „calc()“ ?!
takovahle featura je pak naprosto k ho* … webkit si udela svuj calc, ktery bude mit jine parametry, a pro IE budeme mit zase nejaky ten „filter()“ … vysledkem bude nevalidni cssko, ktere se bude muset stejne pro kazdy prohlizec upravovat zvlast… takze – cim si pomuzeme?

Aleš Roubíček

Specifikace je ve stádiu Working Draft, takže chování calc není zdaleka finální. Prot ty vendor prefixy.

MCZ

Ono u těch nových implementací, které ještě nejsou „prověřeny“ nebo jejichž specifikace nemusí být úplně finální, to prefixování má docela smysl.
Přinejmenším u webkitu pak dochází po čase k přejmenování na obecný název (v nových verzích Chrome funguje -webkit-border-radius i border-radius).
Je to také mnohem lepší, než přístup Opery, která když se k nějaké implementaci CSS3 konečně dobelhá, použije standardní název a implementaci nedotáhne dokonce (viz tento bug http://www.ubervu.com/conversations/blog.attrakt.se/2010/04/annoying-opera-css3-bug-input-border.html , který v současné době stále není opraven), což použitelnost obecného pojmenování (tj. „border-radius“) samozřejmě sráží.

Rado

Prvy aj druhy priklad sa da pomocou box-sizing: border-box riesit uz teraz a netreba cakat.
V prvom staci definovat neviditelny ramcek o sirke 1em
V druhom jednoducho staci nastavit border-box a sirku 100%
:)

pas

Ano. Užitečnější by bylo, kdyby se deklarativně v CSS šlo ve výpočtu odkázat na aktuální rozměry nějakého jiného konkrétního boxu… Nechystá se to?

juraj

Dávno to existuje v podobe expression(). Škoda, že tieto vychytávky Internet Explorera sa zvyknú ignorovať.

pas

No, to není úplně ono, to je mix CSS a JavaScriptu, je to tudíž závislé na JS a navíc neefektivní z hlediska výkonu. Lepší je pak použít čistý JS.
No možná to, co si představuju, je nesmysl, nevím… inspiruju se Flexem, ovšem tam se deklarativní zápis nakonec přeloží do ActionScriptu, takže možná je rozumnější zaměřit se na JS frameworky a nekomplikovat CSS…

VfB

protože to funguje v jednom jediném prohlížeči?

Přístupnost není jen o splnění norem: nový pohled na inkluzivní design

Přístupnost a inkluze možná nepatří mezi nejžhavější témata digitálního světa – dokud o nich nezačne mluvit Vitaly Friedman. Na WebExpo 2024 předvedl, že inkluzivní design není jen o splněných checkboxech, ale hlavně o lidech. S energií sobě vlastní obrátil zažité přístupy naruby a ukázal, že skutečně přístupný web je nejen možný, ale i nezbytný.

Efektivnější vývoj UI nebo API: Co si odnést z WebExpo 2025?

Různé
Komentáře: 0
Jak snadno implementovat moderní uživatelské rozhraní? Které funkce brzdí rychlost vašeho webu? A kdy raději sami přibrzdit, abychom využitím AI nepřekročili etické principy? Debatu aktuálních dev témat rozdmýchá sedmnáctý ročník technologické konference WebExpo, která proběhne v Praze od 28. do 30. května. Který talk či workshop si rozhodně nenechat ujít? Toto je náš redakční výběr z vývojářských hroznů.

Zapřáhněte AI jako nikdy předtím. Květnová konference WebExpo přivítá hvězdy technologického světa

Od 28. do 30. května 2025 promění pražský Palác Lucerna na tři dny technologická konference WebExpo. Na programu je více než 80 přednášek a workshopů od expertů z celého světa. WebExpo tradičně propojuje vývojáře, designéry, marketéry i byznysové lídry a nabízí praktické dovednosti, strategické myšlení a přináší nejnovější trendy nejen v oblasti AI.