ÐоддеÑжка ÑÑандаÑÑов в Opera Presto 2.2 и Opera 10 beta
Translated by Vadim Makeev · 10 Jun, 2009
Standards support in Opera Presto 2.2 and Opera 10 beta, written by Chris Mills.
Ðведение
ТолÑко ÑÑо Ð¼Ñ Ð²ÑпÑÑÑили пеÑвÑÑ Ð±ÐµÑÑ Opera 10, коÑоÑÐ°Ñ Ð½Ðµ ÑолÑко вклÑÑÐ°ÐµÑ Ð½ÐµÐºÐ¾ÑоÑÑе оÑлиÑнÑе новÑе возможноÑÑи, но и пÑоÑÑо поÑÑÑÑаÑÑе вÑглÑдиÑ. Ðо ÑÑо ÑÑо знаÑÐ¸Ñ Ð´Ð»Ñ ÑазÑабоÑÑиков? Ð ÑÑÑ Ð±ÐµÑÑ Ð²ÐºÐ»ÑÑена Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑÑÐ¸Ñ Ð´Ð²Ð¸Ð¶ÐºÐ° Opera Presto 2.2, коÑоÑÐ°Ñ Ð¾Ð±ÐµÑпеÑÐ¸Ð²Ð°ÐµÑ Ð»ÑÑÑÑÑ ÑкоÑоÑÑÑ, ÑÑабилÑноÑÑÑ, поддеÑÐ¶ÐºÑ Ð²ÐµÐ±-ÑÑандаÑÑов и многое дÑÑгое. ÐÑа пÑбликаÑÐ¸Ñ Ð¿Ð¾ÑвÑÑена ÑамÑм важнÑм ÑлÑÑÑениÑм в поддеÑжке веб-ÑÑандаÑÑов, ÑÑо бÑли пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð² Opera Presto 2.2 (Ñм. ÑпиÑок пÑедÑдÑÑÐ¸Ñ ÑлÑÑÑений в Presto 2.1). Ðам бÑÐ´ÐµÑ Ð¸Ð½ÑеÑеÑно поÑмоÑÑеÑÑ Ð½Ð° Ñо, ÑÑо Ñ Ð²Ð°Ñ Ð¿Ð¾Ð»ÑÑилоÑÑ ÑделаÑÑ Ñ Ð¸ÑполÑзованием ÑÑÐ¸Ñ Ð½Ð¾Ð²Ñе возможноÑÑей, Ñак ÑÑо дайÑе знаÑÑ Ð² комменÑаÑиÑÑ .
ÐбÑаÑиÑе внимание, ÑÑо Ð´Ð»Ñ Ð¿ÑоÑмоÑÑа пÑимеÑов вам поÑÑебÑеÑÑÑ Ð¿Ð¾ÑледнÑÑ Ð±ÐµÑа Opera 10 или пÑедÑдÑÑÐ°Ñ Ð°Ð»ÑÑа.
Ðглавление:
- ÐнедÑÑннÑе ÑÑиÑÑÑ â веб-ÑипогÑаÑика ÑÑановиÑÑÑ Ð¿ÑоÑе
- ÐолÑпÑозÑаÑÐ½Ð°Ñ Ð¿ÑозÑаÑноÑÑÑ, RGBA и HSLA
- ÐÑбоÑка по ÑелекÑоÑам (Selectors API)
- УлÑÑÑÐµÐ½Ð¸Ñ Ð² SVG
- РазвиÑие Opera Dragonfly
- Acid3 â 100/100!
- ÐаклÑÑение
ÐÑе пÑимеÑÑ ÐºÐ¾Ð´Ð°, иÑполÑзÑемÑе в ÑÑаÑÑе, можно загÑÑзиÑÑ Ð¾ÑделÑно.
ÐлагодаÑноÑÑи: оÑделÑнÑе ÑпаÑибо ÑÑÐ¾Ð¸Ñ ÑказаÑÑ Ð¼Ð¾Ð¸Ð¼ коллегам за оÑлиÑнÑе пÑимеÑÑ Ðº ÑÑаÑÑе: Lachlan Hunt за пÑÐ¸Ð¼ÐµÑ Ð²ÑбоÑки по ÑелекÑоÑам, Andreas Bovens за пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзование внедÑÑннÑÑ ÑÑиÑÑов и David Vest и Erik Dahlström за пÑимеÑÑ SVG.
ÐнедÑÑннÑе ÑÑиÑÑÑ â веб-ÑипогÑаÑика ÑÑановиÑÑÑ Ð¿ÑоÑе
Уже много Ð»ÐµÑ Ð±Ð¾Ð»ÑнÑм вопÑоÑом Ð´Ð»Ñ Ð²ÐµÐ±-дизайнеÑов ÑвлÑеÑÑÑ Ð¾ÑÑÑÑÑÑвие ноÑмалÑнÑÑ ÑÑиÑÑов, коÑоÑÑе можно иÑполÑзоваÑÑ Ð½Ð° ÑайÑÐ°Ñ . ÐеÑ, Ð²Ñ ÐºÐ¾Ð½ÐµÑно можеÑе обÑÑвиÑÑ Ð»Ñбой ÑÑиÑÑ ÑеÑез CSS, но никÑо не гаÑанÑиÑÑÐµÑ Ñого, ÑÑо он ÑÑÑановлен на маÑине полÑзоваÑелÑ. Ðолее Ñого, Ð½Ð°Ð±Ð¾Ñ ÑÑиÑÑов, ÑÑо гаÑанÑиÑованно доÑÑÑÐ¿Ð½Ñ Ð½Ð° оÑновнÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ , ниÑÑожно мал и заÑаÑÑÑÑ Ð¿ÑÐ¸Ñ Ð¾Ð´Ð¸ÑÑÑ Ð¿ÐµÑеÑиÑлÑÑÑ ÑпеÑиÑиÑеÑкие Ð´Ð»Ñ Ð¿Ð»Ð°ÑÑоÑм ÑемейÑÑва ÑÑиÑÑов, а поÑом внимаÑелÑно ÑеÑÑиÑоваÑÑ Ð½Ðµ Ð¿Ð¾ÐµÑ Ð°Ð» ли Ð²Ð°Ñ Ð´Ð¸Ð·Ð°Ð¹Ð½.
Ð ÑÑаÑÑÑÑ, ÑÑа ÑиÑÑаÑÐ¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° измениÑÑÑÑ Ð² ближайÑем бÑдÑÑем благодаÑÑ Ð²Ð½ÐµÐ´ÑÑннÑм ÑÑиÑÑам. СпеÑиÑикаÑÐ¸Ñ Web Fonts в ÑоÑÑаве модÑÐ»Ñ CSS 3 позволÑÐµÑ Ð·Ð°Ð³ÑÑзиÑÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñй Ñайл ÑÑиÑÑа вмеÑÑе Ñо ÑÑÑаниÑей, а заÑем Ñвободно иÑполÑзоваÑÑ ÐµÐ³Ð¾ на ÑайÑе, не опаÑаÑÑÑ, ÑÑо он не ÑÑÑановлен на маÑине полÑзоваÑелÑ. ÐÐ»Ñ Ð·Ð°Ð³ÑÑзки ÑÑиÑÑа вмеÑÑе Ñо ÑÑÑаниÑей нÑжно иÑполÑзоваÑÑ ÑледÑÑÑий ÑинÑакÑиÑ:
@font-face {
font-family: "My font gothic";
src: url("http://www.myweb.com/fonts/myfont.ttf") format("truetype");
}
ÐÑ Ð¾Ð¿Ð¸ÑÑваеÑе Ð²Ð°Ñ ÑпеÑиалÑнÑй ÑÑиÑÑ Ð²Ð½ÑÑÑи блока @font-face (в Ñамом наÑале ÑаблиÑÑ ÑÑилей, пÑежде, Ñем обÑÑвлÑеÑе ÑÑиÑÑÑ), а заÑем обÑаÑаеÑеÑÑ Ðº Ð½ÐµÐ¼Ñ ÐºÐ°Ðº обÑÑно:
p {
font-family: "My font gothic";
...
}
Andreas Ñделал Ð´Ð»Ñ Ð½Ð°Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð½ÐµÐ´ÑÑннÑÑ ÑÑиÑÑов, в коÑоÑом иÑполÑзÑÑÑÑÑ ÑÑиÑÑÑ Forgotten Futurist и Minya Nouvelle. ÐÑкÑойÑе пÑÐ¸Ð¼ÐµÑ Ð² бÑаÑзеÑе, коÑоÑÑй поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð²Ð½ÐµÐ´ÑÑннÑе ÑÑиÑÑÑ Ð¸ Ð²Ñ ÑвидиÑе ÑÑо-Ñо вÑоде ÑиÑÑнка 1.
РиÑÑнок 1: пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð½Ð¸Ñ Ð²Ð½ÐµÐ´ÑÑннÑÑ ÑÑиÑÑов в беÑе Opera 10.
ÐÑÑгие беÑплаÑнÑе ÑÑиÑÑÑ Ð¿ÐµÑеÑиÑÐ»ÐµÐ½Ñ Ð½Ð° ÑÑÑаниÑе Free Font Manifesto и на Larabie Fonts. Ðолее ÑложнÑе пÑимеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ найÑи здеÑÑ: Webfonts demo and test pages.
ÐолÑпÑозÑаÑÐ½Ð°Ñ Ð¿ÑозÑаÑноÑÑÑ, RGBA и HSLA
Opera Presto 2.1 Ñже поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑвойÑÑво opacity из CSS 3, коÑоÑое позволÑÐµÑ Ð»ÐµÐ³ÐºÐ¾ задаваÑÑ ÑлеменÑÑ ÑÑÐ¾Ð²ÐµÐ½Ñ Ð¿ÑозÑаÑноÑÑи â напÑимеÑ: div { opacity: .7; }.
Ðомимо ÑÑого, Opera Presto 2.1 поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ñказание ÑвеÑов пÑи помоÑи RGB и <acronym title="Hue Saturation Lightness">HSL
. HSL-знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑÑ ÑпÑавиÑÑÑÑ Ñ Ð½ÐµÐºÐ¾ÑоÑÑми пÑоблемами RGB, вÑоде неоÑевидноÑÑи пÑи подбоÑе ÑвеÑов (пÑи иÑполÑзовании HSL, еÑли вам нÑжно полÑÑиÑÑ Ð±Ð¾Ð»ÐµÐµ ÑвеÑлÑй Ñон Ñого же ÑвеÑа, пÑоÑÑо ÑвелиÑÑÑе знаÑение ÑÑкоÑÑи) или вÑоде аппаÑаÑнÑÑ ÑложноÑÑей. HSL-знаÑÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°ÑÑÑÑ ÑледÑÑÑим обÑазом:div { background-color: hsl(240, 100%, 50%); }
RGB-знаÑÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°ÑÑÑÑ Ñак:
div { background-color: rgb(255, 0, 0); }
ÐомбинаÑÐ¸Ñ Ð¿ÑозÑаÑноÑÑи, RGB и HSL
Opera Presto 2.2 поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð±Ð¾Ð»ÐµÐµ ÑдаÑнÑй ÑпоÑоб Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¿ÑозÑаÑноÑÑи: дополниÑелÑное ÑеÑвÑÑÑое знаÑение Ð´Ð»Ñ HSL и RGB â алÑÑа-пÑозÑаÑноÑÑÑ. ÐÑо дополниÑелÑное знаÑение можно иÑполÑзоваÑÑ Ð¿Ñи Ñказании ÑвеÑа Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ RGBA и HSLA. Ðак и Ñ
оÑоÑо знакомое нам ÑвойÑÑво opacity, знаÑение пÑозÑаÑноÑÑи в HSLA и RGBA задаÑÑÑÑ Ð² диапазоне Ð¾Ñ Ð½ÑÐ»Ñ Ð´Ð¾ единиÑÑ, где 0 â Ð¿Ð¾Ð»Ð½Ð°Ñ Ð¿ÑозÑаÑноÑÑÑ, а 1 â Ð¿Ð¾Ð»Ð½Ð°Ñ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑÑ.
div { background-color: hsla(240, 100%, 50%, 0.5); }
div { background-color: rgba(255, 0, 0, 0.5); }
ÐÑо пÑоÑÑо ÑанÑаÑÑиÑеÑки Ñдобно Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð¸ÑованнÑÑ
ÑлеменÑов, коÑоÑÑе поÑвлÑÑÑÑÑ Ð¸Ð»Ð¸ иÑÑезаÑÑ Ð¿Ñи помоÑи пÑоÑÑейÑего JavaScript-кода â вам нÑжно измениÑÑ Ð²Ñего одно ÑвойÑÑво ÑеÑез DOM. ÐбÑаÑиÑе внимание и на Ñо, ÑÑо opacity ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¿ÑозÑаÑноÑÑÑ Ð´Ð»Ñ Ñамого ÑлеменÑа и вÑеÑ
его вложеннÑÑ
поÑомков, в Ñо вÑемÑ, как иÑполÑзование HSLA и RGBA позволÑÐµÑ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑ Ð¿ÑозÑаÑноÑÑÑ ÑолÑко ÑÐ°Ð¼Ð¾Ð¼Ñ ÑлеменÑÑ.
ÐÑÑаÑи, Opera Presto 2.2 ÑепеÑÑ Ñакже поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð·Ð½Ð°Ñение color: transparent Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¿ÑозÑаÑного ÑвеÑа Ð´Ð»Ñ ÑекÑÑа.
ÐавайÑе взглÑнем на пÑимеÑÑ, демонÑÑÑиÑÑÑÑие ÑÑи ÑвойÑÑва и ÑазниÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸. Я Ñоздал пÑоÑÑой двÑÑ ÐºÐ¾Ð»Ð¾Ð½Ð¾ÑнÑй новоÑÑной блог, коÑоÑÑй вÑглÑÐ´Ð¸Ñ ÐºÐ°Ðº на ÑиÑÑнке 2.
РиÑÑнок 2: пÑÐ¸Ð¼ÐµÑ Ð½Ð¾Ð²Ð¾ÑÑного блока Ñ Ð¿Ð¾Ð»ÑпÑозÑаÑноÑÑÑÑ Ð² беÑе Opera 10.
Самое инÑеÑеÑное в коде ÑÑого пÑимеÑа â ÑÑо Ñказание пÑозÑаÑноÑÑи Ð´Ð»Ñ Ð±Ð»Ð¾ÐºÐ¾Ð² новоÑÑей, а Ñакже иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑвойÑÑва background-size Ð´Ð»Ñ Ð»ÐµÐ²Ð¾Ð¹ колонки, ÑÑÐ¾Ð±Ñ Ð¸Ð·Ð¾Ð±Ñажение земного ÑаÑа аккÑÑаÑно заполнÑло ÐºÐ¾Ð»Ð¾Ð½ÐºÑ Ð¿Ð¾ вÑей ÑиÑине (ÑÑо ÑвойÑÑво поÑвилоÑÑ ÐµÑÑ Ð² Presto 2.1).
ÐÑежде вÑего, взглÑнем на пÑимеÑ, где иÑполÑзÑеÑÑÑ ÑвойÑÑво opacity. СÑили Ð´Ð»Ñ Ð±Ð»Ð¾ÐºÐ° новоÑÑей Ñ Ð¿ÑоÑÑой пÑозÑаÑноÑÑÑÑ Ð²ÑглÑдÑÑ Ð¿ÑимеÑно Ñак:
.news-item {
background-color: rgb(0, 255, 0);
opacity: 0.4;
}
ÐбÑаÑиÑе внимание, ÑÑо Ñ ÑаÑположил CSS 3 ÑвойÑÑва оÑделÑно Ð¾Ñ Ð±Ð¾Ð»ÐµÐµ пÑоÑÑÑÑ ÑвойÑÑв Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑей понÑÑноÑÑи кода. ÐзглÑниÑе на CSS-Ñайл пеÑвого пÑимеÑа, ÑÑÐ¾Ð±Ñ ÑÑало понÑÑнее о ÑÑм Ñ Ð³Ð¾Ð²Ð¾ÑÑ.
ÐопÑобÑйÑе оÑкÑÑÑÑ Ð¿ÑÐ¸Ð¼ÐµÑ Ñ Ð¾Ð±ÑÑной пÑозÑаÑноÑÑÑÑ Ð¸ немного его повеÑÑеÑÑ. ÐÑÐ¼Ð°Ñ Ð²Ñ ÑÑÐ°Ð·Ñ Ð·Ð°Ð¼ÐµÑиÑе, ÑÑо Ñвиденное оÑлиÑаеÑÑÑ Ð¾Ñ ÑкÑинÑоÑа вÑÑе. ÐÑÑ Ð¿Ð¾ÑомÑ, ÑÑо, как Ñ Ñже говоÑил, знаÑение менÑÑе единиÑÑ Ð´Ð»Ñ ÑвойÑÑва opacity Ð´ÐµÐ»Ð°ÐµÑ Ð¿ÑозÑаÑнÑм не ÑолÑко Ñам ÑлеменÑ, но и вÑеÑ
его поÑомков. РнекоÑоÑÑÑ
ÑлÑÑаÑÑ
в ÑÑом Ð½ÐµÑ Ð½Ð¸Ñего ÑÑÑаÑного, но в данном â ÑÑо не ÑамÑй ÑдаÑнÑй ваÑианÑ, поÑколÑÐºÑ Ð¿Ð¾Ð»ÑпÑозÑаÑнÑй ÑекÑÑ Ð´Ð¾Ð²Ð¾Ð»Ñно ÑÑÑдно ÑиÑаеÑÑÑ.
Ðо Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑделаÑÑ Ð¿ÑозÑаÑнÑм ÑолÑко ÑÐ²ÐµÑ Ñона, задав знаÑение ÑвеÑа RGBA вмеÑÑо RGB и ÑвойÑÑва opacity:
.news-item {
background-color: rgba(0, 255, 0, 0.4);
}
ÐÑо CSS-пÑавило по ÑÑÑи ниÑем не оÑлиÑаеÑÑÑ Ð¾Ñ Ð¿ÑедÑдÑÑего, кÑоме Ñого, ÑÑо ÑолÑко ÑÐ²ÐµÑ Ñона ÑÑал полÑпÑозÑаÑнÑм. Ð ÑекÑÑ Ð¾ÑÑалÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼ и оÑлиÑно ÑиÑабелен. ÐзглÑниÑе на пÑÐ¸Ð¼ÐµÑ Ñ RGBA, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð½ÑÑÑ ÐºÐ°Ðº ÑÑо ÑабоÑаеÑ.
ÐаконеÑ, Ð´Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð¹ оÑÑÑÑноÑÑи, давайÑе взглÑнем на Ñказание Ñого же Ñамого пÑозÑаÑного Ñона, но на ÑÑÐ¾Ñ Ñаз пÑи помоÑи HSLA:
.news-item {
background-color: hsla(120, 100%, 50%, 0.4);
}
Ð ÑÑÐ¾Ñ Ð¶Ðµ HSLA-пÑÐ¸Ð¼ÐµÑ Ð²Ð¶Ð¸Ð²ÑÑ.
ÐÐ°Ð±ÐµÐ³Ð°Ñ Ð²Ð¿ÐµÑÑд, ÑкажÑ, ÑÑо Ñе же ÑоÑмаÑÑ Ð·Ð°Ð´Ð°Ð½Ð¸Ñ ÑвеÑа пÑи помоÑи RGBA и HSLA ÑабоÑаÑÑ Ð¸ в SVG, вне завиÑимоÑÑи Ð¾Ñ Ð¿ÑозÑаÑноÑÑи, заданной пÑи помоÑи fill-opacity и stroke-opacity.
ÐÑбоÑка по ÑелекÑоÑам
СпеÑиÑикаÑÐ¸Ñ Selectors API опÑеделÑÐµÑ DOM API Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ ÑделаÑÑ Ð²ÑбоÑÐºÑ ÑлеменÑов гоÑаздо пÑоÑе.
ÐзглÑнем на пÑÐ¸Ð¼ÐµÑ â ÑÑа ÑÑÑока кода вÑбиÑÐ°ÐµÑ Ð²Ñе ÑлеменÑÑ Ð´Ð¾ÐºÑменÑа Ñ Ð°ÑÑибÑÑом class Ñо знаÑением alert:
document.querySelectorAll(".alert");
СледÑÑÑÐ°Ñ ÑÑÑока вÑбеÑÐµÑ Ð¸Ð· докÑменÑа пеÑвÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ div:
document.querySelector("div");
ÐÑполÑзование Ð¿Ð¾Ñ Ð¾Ð¶ÐµÐ³Ð¾ на CSS ÑинÑакÑиÑа в аÑгÑменÑÐ°Ñ Ðº ÑÑнкÑии, Ð´ÐµÐ»Ð°ÐµÑ Ð²ÑÑ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾ пÑоÑе Ð´Ð»Ñ ÑÐµÑ , кÑо не ÑлиÑком Ñ Ð¾ÑоÑо ÑазбиÑаеÑÑÑ Ð² JavaScript.
Ðак понÑÑно из пÑедÑдÑÑего пÑимеÑа, в Presto 2.2 поддеÑживаÑÑÑÑ Ð´Ð²Ð° новÑÑ
меÑода: querySelector() и querySelectorAll(). ÐеÑвÑй меÑод возвÑаÑÐ°ÐµÑ Ð¿ÐµÑвÑй подÑ
одÑÑий ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð´ÐµÑева, Ñогда как вÑоÑой возвÑаÑÐ°ÐµÑ ÐºÐ¾Ð»Ð»ÐµÐºÑÐ¸Ñ Ð²ÑеÑ
подÑ
одÑÑиÑ
ÑлеменÑов в виде NodeList. ТекÑÑÐ°Ñ ÑпеÑиÑикаÑÐ¸Ñ Ð¾Ð¿ÑеделÑеÑ, ÑÑо ÑÑи меÑÐ¾Ð´Ñ Ð´Ð¾ÑÑÑÐ¿Ð½Ñ Ð´Ð»Ñ Ñзлов Ñипа Document, Element и DocumentFragment, однако, наÑа ÑеализаÑÐ¸Ñ Ð¿Ð¾ÐºÐ° поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑолÑко ÑÐ¸Ð¿Ñ Document и Element.
ÐеÑод querySelector() полезен в ÑеÑ
ÑлÑÑаÑÑ
, когда необÑ
одимо полÑÑиÑÑ ÑолÑко пеÑвÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸ Ñоздан Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ ÑабоÑаÑÑ ÑÑÑекÑивнее, Ñем querySelectorAll() в подобнÑÑ
ÑлÑÑаÑÑ
.
ÐÐ»Ñ Ñого, ÑÑÐ¾Ð±Ñ ÑÑавниÑÑ Ð½Ð°ÑколÑко ÑÑи меÑÐ¾Ð´Ñ ÑÑÑекÑивнее ÑÑадиÑионнÑÑ , давайÑе ÑаÑÑмоÑÑим ÑледÑÑÑий ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ HTML-кода:
<ul id="fruits"> <li><input type="checkbox" name="fruit" value="apples"> Яблоки</li> <li><input type="checkbox" name="fruit" value="oranges"> ÐпелÑÑинÑ</li> <li><input type="checkbox" name="fruit" value="bananas"> ÐананÑ</li> <li><input type="checkbox" name="fruit" value="grapes"> Grapes</li> </ul>
Ð ÑиÑÑаÑии, когда полÑзоваÑÐµÐ»Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ð» ÑоÑмÑ, ÑодеÑжаÑÑÑ ÑÑи ÑекбокÑÑ, веÑоÑÑно, ÑÑо Ð²Ñ Ð·Ð°Ñ Ð¾ÑиÑе полÑÑиÑÑ ÑпиÑок ÑÐµÑ , ÑÑо бÑли оÑмеÑенÑ. ÐÑи иÑполÑзовании ÑÑадиÑионнÑÑ Ð¼ÐµÑодов, поÑÑебÑеÑÑÑ ÑнаÑала полÑÑиÑÑ Ð²Ñе ÑекбокÑÑ, а поÑом ÑекÑÑÑивно пÑойÑиÑÑ Ð¿Ð¾ ним, пÑовеÑÑÑ ÐºÐ°ÐºÐ¸Ðµ из Ð½Ð¸Ñ Ð¾ÑмеÑенÑ.
var fruits = document.getElementById("fruits");
var checkboxes = fruits.getElementsByTagName("input");
var list = [];
for (var i = 0; i < checkboxes.length; i++) {
if (checkboxes.checked) {
list.push(checkboxes);
}
}
ÐÑи иÑполÑзовании нового API, веÑÑ ÐºÐ¾Ð´ ÑмеÑаеÑÑÑ Ð² Ð¾Ð´Ð½Ñ ÑÑÑокÑ!
var list = document.querySelectorAll("#fruits input:checked ");
ÐÑÐ¾Ñ ÐºÐ¾Ð´ возвÑаÑÐ°ÐµÑ ÑпиÑок DOM-ÑлеменÑов, коÑоÑÑй ÑодеÑÐ¶Ð¸Ñ Ð²Ñе ÑекбокÑÑ, коÑоÑÑе бÑли оÑмеÑÐµÐ½Ñ Ð¿Ð¾Ð»ÑзоваÑелем. ÐалÑÑе Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе делаÑÑ Ñ ÑÑим ÑпиÑком вÑÑ, ÑÑо пожелаеÑе.
УлÑÑÑÐµÐ½Ð¸Ñ Ð² SVG
ÐÑÑÑ Ð¿Ð°Ñа ÑлÑÑÑений в поддеÑжке SVG в Opera Presto 2.2 и ÑÑа ÑаÑÑÑ Ð¾Ð¿Ð¸ÑÑÐ²Ð°ÐµÑ Ð¾Ð±Ð°.
СвойÑÑво FPS в SVG
ТепеÑÑ Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑпÑавлÑÑÑ ÑкоÑоÑÑÑÑ (кадÑÑ Ð² ÑекÑндÑ) Ñвоей SVG-анимаÑии пÑи помоÑи JavaScript. ÐÐ»Ñ Ð»Ñбого Ñамого коÑневого ÑлеменÑа svg Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе задаÑÑ ID, вÑбÑаÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¿Ñи помоÑи getElementById, а поÑом ÑвелиÑиÑÑ Ð¸Ð»Ð¸ ÑменÑÑиÑÑ ÐµÐ³Ð¾ targetFps ÑвойÑÑво. РпÑимеÑе, коÑоÑÑй подгоÑовил Ð´Ð»Ñ Ð½Ð°Ñ Eric, ÑледÑÑÑий код вÑÑавлÑÐµÑ Ð² докÑÐ¼ÐµÐ½Ñ Ð´Ð²Ðµ кнопки, коÑоÑÑе позволÑÑÑ ÑвелиÑиваÑÑ Ð¸Ð»Ð¸ ÑменÑÑаÑÑ ÑкоÑоÑÑÑ ÑекÑÑей анимаÑии.
function checkfps()
{
svgElm = document.getElementById("o").contentDocument.documentElement;
setInterval(update, 100);
}
function update()
{
cfps = svgElm.currentFps;
tfps = svgElm.targetFps;
document.getElementById("f").textContent = "currentFps: " + cfps + " targetFps: " + tfps;
}
function incFps() {
svgElm.targetFps++;
}
function decFps() {
svgElm.targetFps--;
}
ÐÑ Ñакже можеÑе полÑÑиÑÑ Ð´Ð¾ÑÑÑп к ÑекÑÑÐµÐ¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÑвойÑÑва currentFps. ÐзглÑниÑе на пÑÐ¸Ð¼ÐµÑ Erikâа, демонÑÑÑиÑÑÑÑий изменение FPS Ð´Ð»Ñ SVG или иÑиÑе его же в аÑÑ
иве Ñо вÑеми пÑимеÑами к ÑÑаÑÑе.
СвойÑÑво targetFps ÑвлÑеÑÑÑ Ð½Ðµ ÑлиÑком ÑоÑнÑм, поÑколÑÐºÑ Ð·Ð°Ð²Ð¸ÑÐ¸Ñ ÐºÐ°Ðº Ð¾Ñ Ð¶ÐµÐ»ÐµÐ·Ð°, Ñак и ÑоÑÑа, но Ñем не менее, оно даÑÑ Ð½ÐµÐºÐ¾ÑоÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÐºÐ¾Ð½ÑÑолиÑоваÑÑ ÑкоÑоÑÑÑ Ð²Ð°Ñей анимаÑии. СÑÐ¾Ð¸Ñ Ñакже понимаÑÑ, ÑÑо ÑÑо ÑвойÑÑво не оÑвеÑÐ°ÐµÑ Ð·Ð° Ñо, как ÑаÑÑо пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¿ÐµÑеÑиÑовка пÑи DOM-манипÑлÑÑиÑÑ
; ÑÑо ÑвойÑÑво влиÑÐµÑ ÑолÑко на Ñвно ÑказаннÑÑ Ð°Ð½Ð¸Ð¼Ð°ÑиÑ.
ÐнедÑÑннÑе ÑÑиÑÑÑ Ð² SVG
РеÑли обÑÑнÑе внедÑÑннÑе ÑÑиÑÑÑ Ð½Ðµ доÑÑаÑоÑно кÑÑÑÑ Ð´Ð»Ñ Ð²Ð°Ñ, Ñо Ð¼Ñ Ñакже добавили поддеÑÐ¶ÐºÑ SVG-ÑÑиÑÑов. ÐÑо Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð²Ð°Ð¼ иÑполÑзоваÑÑ ÑÐ°Ð¹Ð»Ñ ÑÑиÑÑов в ÑоÑмаÑе SVG Ð´Ð»Ñ Ð¾ÑоÑÐ¼Ð»ÐµÐ½Ð¸Ñ ÑекÑÑа (как в HTML, Ñак и в SVG-докÑменÑÐ°Ñ ), пÑÑмо как обÑÑнÑе внедÑÑннÑе ÑÑиÑÑÑ. ÐапÑимеÑ:
@font-face {
font-family: "My SVG font";
src: url("http://www.myweb.com/fonts/myfont.svg#myFont") format("svg");
font-style: normal, italic;
font-weight: 500;
}
ÐзглÑниÑе на пÑÐ¸Ð¼ÐµÑ Ericâа Ñ Ð¸ÑполÑзованием внедÑÑннÑÑ ÑÑиÑÑов в SVG, а заÑем и на Ñам иÑÑ Ð¾Ð´Ð½Ñй код, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð½ÑÑÑ ÐºÐ°Ðº ÑÑо ÑабоÑÐ°ÐµÑ â ÑиÑÑнок 3. ÐÑÑаÑи, UbuntuTitleBold â ÑÑо SVG-ÑÑиÑÑ, Ñогда как оÑÑалÑнÑе â TrueType-ÑÑиÑÑÑ.
РиÑÑнок 3: внедÑÑннÑе SVG-ÑÑиÑÑÑ!
ЧÑÐ¾Ð±Ñ ÑбедиÑÑÑÑ Ð² Ñом, ÑÑо вÑÑ ÑÑо ÑабоÑÐ°ÐµÑ Ð¸ в ÑÑаÑом добÑом HTML, взглÑниÑе на мой модиÑиÑиÑованнÑй пÑÐ¸Ð¼ÐµÑ Ð²Ð½ÐµÐ´ÑÑннÑÑ ÑÑиÑÑов, в коÑоÑом видно, ÑÑо SVG-ÑÑиÑÑ ÑнаÑала ÑпомÑнÑÑ Ð² CSS, а поÑом иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾ÑоÑÐ¼Ð»ÐµÐ½Ð¸Ñ HTML.
SVG-ÑÑиÑÑÑ Ð¾Ð¿Ð¸ÑÐ°Ð½Ñ Ð² SVG-ÑÐ°Ð¹Ð»Ð°Ñ Ñ Ð¸ÑполÑзованием ÑлеменÑов font или font-face, внÑÑÑи коÑоÑÑÑ ÐºÐ°Ð¶Ð´Ñй оÑделÑнÑй Ð³Ð»Ð¸Ñ Ð¿ÑивÑзан к ÑлеменÑÑ glyph. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ ÑлиÑком ÑложнÑм ÑеÑением, но ÑÑо ÑовÑем не Ñак â оÑобенно Ñ ÑÑÑÑом ÑÑÑеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±ÐµÑплаÑной пÑогÑÐ°Ð¼Ð¼Ñ FontForge, коÑоÑÐ°Ñ ÑÐ¼ÐµÐµÑ ÐºÐ¾Ð½Ð²ÐµÑÑиÑоваÑÑ ÑÑиÑÑÑ Ð² ÑамÑе ÑазлиÑнÑе ÑоÑмаÑÑ.
ÐзглÑниÑе на иÑÑ Ð¾Ð´Ð½Ñй код ÑÑиÑÑа UbuntuTitleBold из пÑимеÑа ÐÑика, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð½ÑÑÑ, ÑÑо из ÑÐµÐ±Ñ Ð¿ÑедÑÑавлÑÑÑ SVG-ÑÑиÑÑÑ.
ÐÑÑ Ð¾Ð´Ð½Ð° Ñ Ð¾ÑоÑÐ°Ñ Ð½Ð¾Ð²Ð¾ÑÑÑ Ð¿Ñо SVG-ÑÑиÑÑÑ ÑоÑÑÐ¾Ð¸Ñ Ð² Ñом, ÑÑо пÑи помоÑи DOM можно модиÑиÑиÑоваÑÑ ÑÑиÑÑÑ Ð¿ÑÑмо на клиенÑе â ÑÑо ведÑ, в конÑе конÑов, обÑÑнÑй коÑÑекÑнÑй XML. ÐиÑÑо не меÑÐ°ÐµÑ ÐºÐ¾Ð¼Ñ-Ñо напиÑаÑÑ Ð²ÐµÐ±-пÑиложение, коÑоÑое Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð²Ð°Ð¼ оÑÑедакÑиÑоваÑÑ ÑÑиÑÑ, а поÑом ÑобÑаÑÑ Ð¸Ð· него на ÑеÑвеÑе Ð²Ð°Ñ ÑобÑÑвеннÑй TrueType ÑÑиÑÑ.
РазвиÑие Opera Dragonfly
С ÑÐµÑ Ð¿Ð¾Ñ, как Ð¼Ñ Ð¿Ð¾Ñледний Ñаз пиÑали пÑо Opera Dragonfly на Dev.Opera, Ñ Ð½ÐµÐ³Ð¾ поÑвилоÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво оÑлиÑнÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑей, Ñак ÑÑо Ñ ÐºÐ°ÑегоÑиÑеÑки ÑекомендÑÑ Ð²Ð°Ð¼ познакомиÑÑÑ Ñ Ð½Ð¸Ð¼Ð¸.
- Ðкладка «Network»: ÑабоÑа над ней пока не законÑена, но пеÑвÑй Ñаг в ÐµÑ ÑазвиÑии Ñже позволÑÐµÑ Ð½Ð°Ð±Ð»ÑдаÑÑ Ð·Ð° иÑÑ Ð¾Ð´ÑÑим и Ð²Ñ Ð¾Ð´ÑÑим HTTP-ÑÑаÑиком, ÑÑо оÑÐµÐ½Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ Ð¾Ñладки Ajax-пÑиложений.
- РедакÑиÑование DOM: одна из клÑÑевÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑей ÑÑеÑÑей алÑÑÑ Opera Dragonfly â ÑÑо поддеÑжка ÑедакÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ DOM. ÐÑего ÑÑÑеÑÑвÑÐµÑ Ð´Ð²Ð° Ñежима ÑедакÑиÑованиÑ: пеÑвÑй позволÑÐµÑ ÑедакÑиÑоваÑÑ, добавлÑеÑÑ Ð¸Ð»Ð¸ ÑдалÑÑÑ Ð°ÑÑибÑÑÑ Ð¸ ÑÑагменÑÑ ÑекÑÑа в Ñежиме ÑеалÑного вÑемени. Ðн акÑивиÑÑеÑÑÑ Ð´Ð²Ð¾Ð¹Ð½Ñм кликом на аÑÑибÑÑе, его знаÑении или на ÑÑагменÑе ÑекÑÑа. ÐÑоÑой Ñежим позволÑÐµÑ ÑедакÑиÑоваÑÑ DOM в виде пÑоÑÑого ÑекÑÑа â напÑимеÑ, добавлÑÑÑ Ð² DOM новÑе ÑлеменÑÑ. ÐÑÐ¾Ñ Ñежим акÑивиÑÑеÑÑÑ Ð´Ð²Ð¾Ð¹Ð½Ñм кликом по оÑкÑÑваÑÑÐµÐ¼Ñ Ð¸Ð»Ð¸ закÑÑваÑÑÐµÐ¼Ñ ÑÐµÐ³Ñ ÑлеменÑа. ÐоÑле ÑÑого Ñам ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸ его поÑомки пÑевÑаÑаÑÑÑÑ Ð² пÑоÑÑое ÑекÑÑовое поле. РданнÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑÑÑеÑÑвÑÐµÑ Ð¸Ð·Ð²ÐµÑÑÐ½Ð°Ñ Ð¿Ñоблема Ñ Ð¿ÐµÑвÑм Ñипом ÑедакÑиÑованиÑ, коÑоÑÐ°Ñ Ð½Ðµ позволÑÐµÑ Ð²ÑйÑи из Ñежима ÑедакÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ñле нажаÑÐ¸Ñ Ð²Ð²Ð¾Ð´Ð°. ÐÑа пÑоблема без лиÑнего ÑÑма бÑÐ´ÐµÑ Ð¿Ð¾Ð¿Ñавлена в ÑледÑÑÑÐ¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸ÑÑ .
- ÐбÑие инÑеÑÑейÑнÑе ÑлÑÑÑениÑ: Ð¼Ñ Ñделали множеÑÑво инÑеÑÑейÑнÑÑ ÑлÑÑÑений в Opera Dragonfly, вклÑÑÐ°Ñ ÑпоÑоб, пÑи помоÑи коÑоÑого вÑбиÑаеÑÑÑ ÑÑÑаниÑа Ð´Ð»Ñ Ð¾Ñладки. ТепеÑÑ Ñаб, вÑбÑаннÑй в бÑаÑзеÑе, и ÑвлÑеÑÑÑ ÑÑÑаниÑей Ð´Ð»Ñ Ð¾Ñладки.
ÐоÑледние ÑобÑÑÐ¸Ñ Ð² жизни Opera Dragonfly Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑзнаÑÑ Ð² ÑемаÑиÑеÑком блоге.
Acid 3 â 100/100
ÐеÑа Opera 10 набÑала ÑÑо из ÑÑа возможнÑÑ Ð¾Ñков в ÑеÑÑе Acid 3 â ÑиÑÑнок 4. ÐÑе бÑдÑÑие ÑбоÑки бÑаÑзеÑа бÑдÑÑ Ð¿ÑÐ¾Ñ Ð¾Ð´Ð¸ÑÑ ÑÑÐ¾Ñ ÑеÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ.
РиÑÑнок 4: ÑеÑÑ Acid 3 показÑÐ²Ð°ÐµÑ ÑезÑлÑÑÐ°Ñ Â«ÑÑо из ÑÑа».
ÐаклÑÑение
ÐадеÑÑÑ Ð²Ð°Ð¼ понÑавилÑÑ ÑеÑÑ-дÑайв беÑÑ Opera 10 Ñ Ð½Ð¾Ð²Ñм движком Opera Presto 2.2 внÑÑÑи. СледиÑе за новоÑÑÑми о новÑÑ ÑлÑÑÑениÑÑ Ð¸, пожалÑйÑÑа, не ÑÑеÑнÑйÑеÑÑ Ð´ÐµÐ»Ð¸ÑÑÑÑ Ñ Ð½Ð°Ð¼Ð¸ ваÑими впеÑаÑлениÑми, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð½Ð°Ð¼ ÑделаÑÑ ÑледÑÑÑий Ñелиз наÑÑолÑко Ñ Ð¾ÑоÑим, наÑколÑко ÑÑо вообÑе возможно.
ÐолезнÑе ÑÑÑлки:
- СпиÑок изменений. ÐÐ»Ñ ÑÐµÑ , кÑо инÑеÑеÑÑеÑÑÑ Ð¿Ð¾Ð»Ð½Ñм ÑпиÑком обновлений.
- СÑаÑÑÑ: Opera Presto 2.1 â поддеÑжка веб-ÑÑандаÑÑов в движке Opera. СÑаÑÑÑ Ñ Dev.Opera оÑвеÑаÑÑÐ°Ñ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ Ð²ÐµÐ±-ÑÑандаÑÑов в пÑедÑдÑÑей веÑÑии движка Opera Presto 2.1.
- СÑаÑÑÑ: ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑоÑмаÑа ÑÑÑоки «User Agent». ÐовÑй ÑоÑÐ¼Ð°Ñ ÑÑÑоки «User Agent», поÑвивÑийÑÑ Ð² новой беÑе и оÑÑавÑийÑÑ Ð´Ð»Ñ Ð±ÑдÑÑÐ¸Ñ Ð²ÐµÑÑий, Ð¼Ð¾Ð¶ÐµÑ ÐºÐ¾Ð³Ð¾-Ñо ÑдивиÑÑ. СÑаÑÑÑ ÑаÑÑказÑÐ²Ð°ÐµÑ Ð¾ ÑделаннÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸ÑÑ Ð¸ обÑÑÑнÑÐµÑ Ð¸Ñ Ð¿ÑиÑинÑ.
