2009年9月1日 星期二

MID ,小筆電,智慧型手機(五)電信業者被邊緣化

專屬作業系統外加專屬終端的綑綁是關鍵的一步。


◎iPhone與Kindle的共通點


Apple 的智慧型手機iPhone以及Amazon的電子書閱讀器Kindle有什麼共通的地方?從硬體上來講,兩者沒有太大關係,從應用面來講,兩者的應用也不盡相同。兩者的使用族群或有重疊,但沒人會認為兩者在重疊的使用人口中是處於互相競爭與互相替代的地位。
Apple 的iPhone之所以成功,在於它重演了iPod的故事:首先推出一台在操作介面與功能上創新的終端,其次內建的軟體可以與他的線上商店結合以購買音樂(在iPhone上則是到App Store 購買應用軟體),購買音樂或軟體時,是透過Apple 自己的金流結帳。
這個從硬體到軟體到服務到金流一手包辦的模式,從iPod開始一直上演到iPhone。上述四者的強硬綑綁,對下游的終端用戶造成了極強的黏性,對上游的業者則形成了強硬的談判能力。iPhone的成功造成了 電信業者的邊緣化,因為上述四者,電信業者絲毫插不上手。


以往,在手機上提供應用或者服務的業者,都被電信業者掐住了咽喉:金流及資訊流。手機使用者不透過電信業者的入口是無法或很難接觸到這些服務,而服務提供者透過電信業者收費也最便利。Apple 異軍突起,最終改變了這個生態。


而Amazon的Kindle呢?所有的電子書內容要從Amazon網路書店下載到專屬閱讀器,下載過程是透過3G電信業者的無線網絡,每個月的3G月費Amazon自己吸收了。雖然電信業者每個月能從這些讀者身上賺取幾十塊錢美金的月費,然而,也就是僅能夠賺取這點費用罷了。

◎電信業者被邊緣化


電信業者一直以來都是基礎服務的提供者,靠流量賺取費用,不論是語音還是數據通信。從網際網路世代以來,電信業者越來越發現自己必須要從「靠流量賺錢」轉型成「靠服務賺錢」。電信業者很難得的開始不斷的談什麼是殺手應用,就是這種壓力的驅策。


在上述iPhone或者Kindle的例子裡,電信業賺取的都是流量費用而不是服務費用。簡單來說,Amazon的網路書店不管賣出再多電子書,跟電信業者都無關;Apple 的應用商城App Store 不管賣出再多手機軟體,跟電信業者一樣無關。


此外,手機大廠Nokia 也開始了自己的網路服務計畫。其中,諾基亞試圖在手機上面建立付款機制,以後用手機付款可以不透過電信業者的金流。更別提Nokia 以及Google都在仿效Apple 想推出自己的手機應用商城。電信業者持續的被邊緣化,怎能不憂心?


以電腦為終端的網際網路,發展十多年下來,讓固網電信業者變成了只能靠著對ADSL不斷殺價競爭的基礎服務供應商。網際網路服務例如 Google或者網路遊戲儘管很賺錢,卻跟電信業者沒有太大關係。這讓無線電信業者感覺到警惕,更不希望類似的事情重演。
綜觀這些年的發展可以發現,透過專屬作業系統外加專屬終端的綑綁是關鍵的一步,其中專屬終端可以自己開發,例如Apple 與Nokia ,或開放標準然後授權製造商生產,例如Google。這件事情的競爭門檻拉到了非常高的層級,高到。。。其實電信業者可以自己做?

◎電信業者的優勢:銷售力

是的,都說了關鍵在於專屬作業系統以及專屬終端。這兩樣電信業者都不見得有,但電信業者一直都有個無敵的殺手:銷售量。任何手機製造商想獲得電信業者在手機銷售上的大力支持,很少有不乖乖聽話的,特別是面對類似中國移動這種全球最大的電信業者。

中國移動與Google合作研發了基於Android 的手機作業系統OMS ,推出自有Ophone手機平台,並說服部分手機製造商加入這個陣營,順勢推出自有手機應用商城App Store 。先不論這個建立在TD-SCDMA系統上的手機可能還是有訊號覆蓋不佳的問題外,其餘一切看來如此強大。
台灣的遠傳電信試圖要推出自有規格的電子書閱讀器,另一家電信業者中華電信則試圖將所有的智慧型手機當成是電子書的閱讀終端。同樣的電子書市場,不同的業者有不同的進入策略。然而相同的是,沒有人喜歡被在新興的應用中被邊緣化。


與以往不同的是,這將是一場運營商以及其他各方的博弈,戰場已不若以往,不是運營商可以獨自主導,其餘參戰者勝算也在逐步提高中。以Nokia 而論,當消費者指名要購買的時候,電信業者的門市不會不賣。Apple 與Google也各有死忠的用戶,以及線上服務的廣大人口。
長期來看,電信業者的壟斷優勢會質漸喪失,在各式新興應用的領域中如果能奮起直追,也能佔有一席之地。但其他的業者也逐漸強大,關鍵還在於誰能夠提供用戶從手機硬體到作業系統到應用商城到金流,以及能將上述四者以良好的使用者體驗串接起來。

(文:黃紹麟)
文章提供BAYSTARS DESIGN網頁設計公司

2009年8月31日 星期一

Photoshop的圖片縮放技巧







因為看見網友寫的FW(Fireworks )的縮放技巧,考慮到大家肯定用PS的情況多些,所以寫了一個PS版本的縮放圖片技巧。




01、首先打開PS CS3 擴展版本.其他的版本也可以,不過推薦PS CS3.後面我會說下CS3的好處。操作是:圖像-圖像大小




02、彈出的圖像對話框中,會出現"重定圖像像素"的下拉列表,打開他,可以看見很多東東,這些就是圖片放大是補充像素,或者圖片縮小去掉像素的算法。以前的PS版本中這裡看起來非常難懂,現在每種方法後面都有了中文註解他的用途,這就是CS3的好處。分別舉例來分析下這幾種縮放圖片的算法




03、卡通圖片可以使用臨近的算法縱橫增值法是PS預設的算法,可是它是一種中等質量高壓縮的算法,不推薦使用。最普遍時候的算法就是環迴增值法,它適合與豐富漸變色等各種複雜顏色的圖片。它還有2個更棒的兄弟是環迴增值法-較平滑適合放大圖片、環迴增值法-較銳利適合縮小圖片,一般都愛使用這種格式,銳化度得到一定提高,且圖片壓縮比小,質量高。


文章來自WOWBOX
文章提供BAYSTARS DESIGN網頁設計公司




50款優秀的免費相冊(圖片畫廊)程式收集

譯自:http://net.tutsplus.com原文:50款優秀的免費相冊(圖片畫廊)程序收集
這裡收集了50個非常棒的免費相冊(圖片畫廊)程序,你可以用來直接搭建自己的網絡相冊。這些相冊基於PHP、jQuery、MooTools、Flash以及Ruby on Rails,也有純CSS。

1. Gallery 2
Gallery 2 可能擁有最大的社區,它是網上使用最多的相冊程序之一。
2. Zenphoto
Zenphoto 自我定位為“最簡單、最有用的相冊程序”。基於PHP.
3. Minishowcase
Minishowcase 是一個簡單的小巧的php/javascript 相冊。
4. TripTracker
TripTracker 是一個小的JavaScript相冊,擁有圖片瀏覽和幻燈播放功能。
5. Dynamic Drive CSS Image Gallery
脫離JavaScript, Dynamic Drive CSS相冊完全使用CSS實現。
6. Ajax Photo Gallery
一款免費的基於Ajax的相冊,可以通過一個XML文件展示來自於Picasa的圖片。
7. SimpleViewer
一款免費的基於flash的相冊,同時提供一個可選的高級版本,提供更多可選及個性化功能。
8. Jalbum
Jalbum是一個混合的在線/離線軟件,可用來下載到你的電腦上,並上傳照片到你的位於jalbum.net的相冊空間。
9. Coppermine
類似Gallery 2,Coppermine 是另一款”古老的” PHP 圖片相冊,已經存在很多年了。
10. Plogger
Plogger 是一款PHP 相冊程序,它有一些有用的功能,比如,內置的Ajax圖片編輯,Zip打包上傳圖片,以及允許創建你自己的模板的能力。
11. CSS Play
一個圓滑的多頁相冊,完全由CSS創建。
12. Polaroid Gallery
Polariod Gallery 是一款有趣的Flash程序,可以將你的照片(從XML 文件或Flickr RSS feed) 整理成“寶麗來”。
13. dfGallery
dfGallery 是一款漂亮的免費flash相冊,有可定制模板和一個管理後台部分,基於PHP框架CodeIgniter.
14. (E)2 Photo Gallery
一個使用MooTools創建的優秀的JavaScript相冊。
15. AutoViewer
AutoViewer 將圖片整理到一個Flash相冊中。
16. Smooth Gallery
用MooTools創建的一個小巧的相冊。
17. Satellite
一個相冊程序,允許用戶從他們的Flickr帳號創建可定制的相冊。
18. Hoverbox
Hoverbox 是一個簡單的,輕量級的純CSS相冊。
19. Flash Gallery
就像它的名字表示的那樣,Flash Gallery 是一個簡單的基於XML 和Flash 的相冊,而且比較容易定制。
20. HighSlide JS
HighSlide 允許你使用一些簡單的JS效果很方便的縮放圖片。
21. Pixelpost
Pixelpost在相冊程序上是一個轉折,它可以算是一款很不錯的圖片博客,開源、快速、多語言支持。
22. Script and Style Auto-Generated Photo Gallery
一款漂亮的程序,將一個圖片目錄創建為一個相冊。用PHP 和JavaScript創建。
23. Postcard Viewer
一個Flash程序,獲取圖片,將他們放進明信片中,並重新組合如一個相冊。
24. Andrew Berg’s Flash Photo Browser
一個簡單的Flash動畫圖片瀏覽腳本。簡單但很好玩。
25. Flickr Photo Album for Wordpress
一個wordpress插件,調用Flickr圖片冊和wordpress裡的相冊。
26. Galleria
Galleria 是一個基於jQuery的輕量級相冊。
27. Lightview
一個用來搭建簡單圖片和多媒體畫廊的簡潔的、輕量的方案。
28. Fancy Zoom
Fancy Zoom 是一個JS腳本,允許不用重新加載圖片就能縮放圖片。很酷的效果,有些像LightBox和ThickBox。
29. Imagevue
一個很棒的Flash相冊,提供圖片相冊、幻燈展示和一個後台管理界面。
30. jpGalScroll Photo Gallery
一個使用jQuery創建的簡單的相冊,提供滾動和分頁功能。
31. nextgen gallery
nextgen gallery 是一個強大的wordpress圖片相冊插件,基於jQuery創建,很好很強大,是最著名的wordpress相冊插件之一。
32. Singapore
被稱為“最簡單的大型相冊”,Singapore 是一個輕量、功能強大的相冊。由PHP創建。
33. jQuery Cycle
一個jQuery 插件,讓你可以使用多種不同的效果來循環展示(相冊中的)照片。
34. Imagin
一個flash 圖片相冊,能將照片組織到相冊和子相冊。
35. Phormer
PHP相冊程序,不需要MySQL數據庫,三分鐘安裝。
36. Gullery
Gullery 是一個用Ruby on Rails創建的簡單的相冊。非常適合個人作品集或小型畫廊。
37. 如果使用CakePHP和Flickr創建一個相冊
一個很有意思的教程,講述如果使用PHP框架CakePHP和Flickr創建一個基於網站的相冊。
38. filebrowser
一個小型的PHP 應用,允許你縮略圖片以用於網站上。Lussumo開發。
39. FAlbum
一個基於Wordpress的相冊程序,可以顯示Flickr上的照片和照片集。
40. Slimbox 2
一個小巧的、兼容標準、完全可定制的LightBox照片查看程序,基於jQuery創建。
41. Animated JavaScript Slideshow
一個幻燈相冊腳本,基於JavaScript創建,不大於5kb。
42. iPhotoToGallery
一個iPhoto 插件,可以讓發佈照片到Gallery2變得非常容易。
43. FrogJS Gallery
一個簡單的、不太顯眼的相冊程序,基於LightBox創建,但是通過不同的方式展示照片。
44. 用MooTools創建一個非常棒的相冊
Jared Rhizor在Nettuts發佈的有一個很棒的關於如果使用MooTools創建一個簡單的相冊的教程。
45. Django-based photo gallery tutorial
簡單的介紹如果使用Python框架Django創建一個相冊的教程。
46. Zen Gallery
優美的Flash相冊腳本和工具,可以用來將圖片放到你的網站上去。
47. folderblog
一個免費的,輕量級的PHP程序,在相冊中顯示一個文件夾中的圖片
48. Duh Gallery
另一個簡單的Wordpress 相冊插件。
49. Original Photo Gallery
一組提供客戶端腳本的程序,用來按比例縮放圖片,並將圖片發佈到相冊表單。
50. 使用Flash8搭建動態相冊
指導中級Flash用戶創建一個動態相冊,通過XML加載。


文章來自WOWBOX
文章提供BAYSTARS DESIGN網頁設計公司

25個漂亮而有創意的圖片網站設計

原文:25漂亮而有創意的圖片網站設計譯自:pelfusion
不知道你是否訪問過一些圖片/相冊網站?不知道它們是否令你印象深刻?我們之前曾收集過很多灰常出色的免費相冊程序,他們都可以用來創建一些很酷的網絡相冊。而本文要展示的是一批更加出色的圖片網站,他們都很漂亮,很有創意,相信每個人看完之後,都能感受到很大的視覺衝擊——它們真的太酷了!
1. CirilJazbec
2. Anders Bergh
3. David Lindsey Wade
4. Lee Twondrow
5. Moofe
6. Saso Kos
7. Gabriel Vinci
8. Emmanuel Rouzic
9. Cake Factory
10. Filippa Smedhagen Sund
11. Simon Rasmussen
12. Uli Heckmann
13. Let’s Take Pictures
14. Ego Foto
15. Safandula
16. Brook Pifer
17. Shu Akashi
18. Karin Partin
19. Alessio Pizzicannella
20. Amy Danka
21. Andreescu Gaivoronski
22. Albrecht Gerlach
23. Capsule Creative
24. Sonja Mueller
25. Frieke

文章來自WOWBOX
文章提供BAYSTARS DESIGN網頁設計公司

2009年8月30日 星期日

征服高級CSS選擇器

原文:征服高級CSS選擇器譯自:Taming Advanced CSS SelectorsCSS是對網頁設計師可用的最強大的工具之一。使用它我們可以在幾分鐘內改變一個網站的界面,而不用改變頁面的標籤。但是儘管事實上,我們每個人也都意識到了它是有用的,CSS 選擇器遠未發揮它們的潛力,有的時候我們還趨向於使用過多的和無用的class、id、div、span等把我們的HTML搞的很凌亂。避免讓這些「瘟疫」在你的標籤中傳播並保持其簡潔和語義化的最佳方式,就是使用更複雜的CSS選擇器,它們可以定位於指定的元素而不用使用額外的class或id,而且通過這種方式也可以讓我們的代碼和樣式更加靈活。CSS的優先級在深入研究高級CSS選擇器領域之前,理解CSS優先級是如何工作的是很重要的,這樣我們就知道如何適當的使用我們的選擇器並避免浪費大量的時間來調試一些只要我們注意到優先級的話就很容易被搞定的問題。當我們寫CSS的時候我們必須注意有些選擇器在級聯(cascade)上會高於其它選擇器,我們寫在最後面的選擇器將不一定會覆蓋前面我們寫在同一個元素的樣式。那麼你如何計算指定選擇器的優先級?如果你考慮到將優先級表示為用逗號隔開的四個數字就會相當簡單,比如:1, 1, 1, 1 或0, 2, 0, 11.第一個數字(a)通常就是0,除非在標籤上使用style屬性;2.第二個數字(b)是該選擇器上的id的數量的總和;3.第三個數字(c)是用在該選擇器上的其它屬性選擇器和偽類的總和。這裡包括class (.example) 和屬性選擇器(比如 li[id=red]);4.第四個數字(d)計算元素(就像table、p、div等等)和偽元素(就像:first-line等);5.通用選擇器(*)是0優先級;6.如果兩個選擇器有同樣的優先級,在樣式表中後面的那個起作用。讓我們看幾個例子,這樣或許比較容易理解些:


程序代碼
‧#sidebar h2 — 0, 1, 0, 1‧h2.title — 0, 0, 1, 1‧h2 + p — 0, 0, 0, 2‧#sidebar p:first-line — 0, 1, 0, 2在下面的例子中,第一個將會起作用,因為它比第二個優先級高:


程序代碼
‧#sidebar p#first { color: red; } — 0, 2, 0, 1‧#sidebar p:first-line { color: blue; } — 0, 1, 0, 2至少基本理解優先級是如何工作的是很重要的,但是一些工具比如Firebug,在我們審查指定元素的時候,按照選擇器的優先級列出所有的css選擇器對讓我們知道在指定元素上哪個選擇器是有效的是很有用的。讓你非常容易的看到那個選擇器作用於一個元素上了。有用的文章:‧CSS Specificity: Things You Should Know[url=http://meyerweb.com/eric/css/link-specificity.html]‧Link Specificity¯MeyerWeb[url=http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html]‧CSS: Specificity Wars[url=http://www.w3.org/TR/CSS2/cascade.html]‧Assigning property values, Cascading, and Inheritance—W3C1. 屬性選擇器屬性選擇器(Attribute selector)讓你可以基於屬性來定位一個元素。你可以只指定該元素的某個屬性,這樣所有使用該屬性——而不管它的值——的這個元素都將被定位,也可以更加明確並定位在這些屬性上使用特定值的元素 —— 這就是屬性選擇器展示它們的威力的地方。有6個不同類型的屬性選擇器:‧[att=value]該屬性有指定的確切的值。‧[att~=value]該屬性的值必須是一系列用空格隔開的多個值,(比如,class=」title featured home」),而且這些值中的一個必須是指定的值」value」。‧[att=value]屬性的值就是「value」或者以「value」開始並立即跟上一個「-」字符,也就是「value-」。(比如lang=」zh-cn」)‧[att^=value]該屬性的值以指定值開始。‧[att$=value]該屬性的值包含指定的值(而無論其位置)。‧[att*=value]該屬性的值以指定的值結束比如,如果你想要改變你的博客上的日誌部分元素的背景顏色,你可以使用一個指定每一個class屬性值以「post-」開始的div的屬性選擇器:


程序代碼
div[class="post"] { background-color: #333; }該語句將匹配所有class屬性包含」post」並帶」-」字符的div元素。屬性選擇器的另一個很有用的用處是定位不同類型的input元素。比如,如果你想讓你的文本輸入框使用一個特定的寬度,你可以使用下面的屬性選擇器:


程序代碼
input[type="text"] { width: 200px; }這將匹配所有type屬性值等於「text」的input元素。現在我們可能像為網站上不同的文件類型的鏈接添加不同的圖標,這樣你的網站的訪客就會知道他們將獲得一個圖片、或者PDF文件、或者是一個word文檔等。這就可以使用屬性選擇器來實現:


程序代碼
a[href*=".jpg"] { background: url(jpeg.gif) no-repeat left 50%; padding: 2px 0 2px 20px; }a[href*=".pdf"] { background: url(pdf.gif) no-repeat left 50%; padding: 2px 0 2px 20px; }a[href*=".doc"] { background: url(word.gif) no-repeat left 50%; padding: 2px 0 2px 20px; }在此例中,我們使用了一個定位所有的鏈接(a)的href屬性分別以.jpg,.pdf或.doc結束(*)的屬性選擇器。詳細可查看前端觀察之前的一篇文章《使用CSS選擇器創建個性化鏈接樣式》瀏覽器支持除了Internet Explorer 6,所有的主流瀏覽器都支持屬性選擇器。這意味著,如果你在你的網站上使用了屬性選擇器,你應該確保IE6用戶將仍能獲得一個可用的網站。比如我們的第三個例子,為鏈接添加圖標可以給你的網站帶來另一個級別的可用性,但是如果這些鏈接不顯示任何圖標,該網站仍然還是可用的。2. 子選擇器子選擇器用符號「>」表示。它允許你定位某個元素的第一級子元素。比如,如果你想匹配所有的作為你的網站側欄的div的子元素的h2元素,而不是可能是在div元素內的所有h2元素,也不是div的孫元素(或者更低級別的),你就可以使用下面的選擇器:


程序代碼
div#sidebar > h2 { font-size: 20px; }你當然也可以同時使用子元素和後代元素。比如,如果你想定位只有在body元素的子級div元素內的blockquote元素(比如你想匹配主要的div內的blockquotes,而不是其它部分的:


程序代碼
body > div > div blockquote { margin-left: 30px; }瀏覽器支持和屬性選擇器一樣,子選擇器不被IE6支持。如果你通過這種方式要實現的效果和網站的可用性或總體設計息息相關,你可以考慮使用一個class,或者使用只針對IE6的樣式,但是這將有悖使用子選擇器的目的。3. 兄弟組合有兩類兄弟組合:臨近兄弟組合和普通兄弟組合臨近兄弟組合該選擇器使用加號「+」來鏈接前後兩個選擇器。選擇器中的元素有同一個父親,而且第二個必須緊緊的跟著第一個。臨近兄弟組合可以灰常有用,比如,在處理文字的時候。比如我們想對段落後面的h2標題添加一個頂間距「margin-top」(當然或許你無需為h1標籤後面的h2添加,或者它可能是頁面的第一個元素):

程序代碼
p + h2 { margin-top: 10px; }你甚至可以更加具體,你想定位某個特定的div後面的h2:

程序代碼
div.post p + h2 { margin-top: 10px; }或者你可以搞得更加複雜:頁面的第一個段落的第一行字母顯示為小寫字母。


程序代碼
.post h1 + p:first-line { font-variant: small-caps; }因為可能大部分日誌/文章的第一個段落都會緊緊的在H1標籤的後面。你可以在你的選擇器中借助於h1標籤。普通兄弟組合普通兄弟組合和臨近兄弟組合的工作原理很像,不同的是第二個選擇其無需緊緊跟隨第一個。如果你需要定位所有的某個特定的div裡面並且跟在h1標籤後面的p標籤的話(你可能想要這些p標籤比擬的日誌的標題前面的文字大些),你就可以使用這個選擇器:


程序代碼
.post h1 ~ p { font-size: 13px; }註:這兩個選擇器太像了,所有不是很好理解,可以試一試下面的這個例子:CSS:


程序代碼
p + h2{color:red; } p ~ h2{font-weight:700; }HTML:
程序代碼

咳咳,內容。

標題1

標題2

看看第二個h2的顏色就可以理解了吧?臨近兄弟組合只能匹配第一個選擇器後面的第一個兄弟選擇其,普通兄弟組合則能匹配所有。註:該部分英文原文沒有,是神飛翻譯時自己添加。瀏覽器支持Internet Explorer 6依然不能理解兄弟選擇器,但是,另一種情況,如果你的用戶中只有一小部分是IE6用戶,而且網站的結構不會被破壞或者受到嚴重影響,這是實現很多很酷的效果而無需在你的HTML代碼中添加無用的class或id。4. 偽類動態偽類之所以被稱為動態偽類是因為它們並不存在於HTML中——而是只有當用戶和網站交互的時候才會呈現。有兩類動態偽類:鏈接 和用戶行為。鏈接就是:link 和:visited,而用戶行為包括:hover、:active 和:focus。在本文中提到的css選擇器中,這幾個應該是最常用到的。:link偽類用於鏈接尚未被用戶訪問的時候,而:visited 偽類用於用戶訪問過的鏈接,也就是說它們是相反的。:hover偽類用於用戶移動他們的鼠標在元素上,而尚未觸發或點擊它的時候。:active偽類應用於用戶點擊元素的情況。最後,:focus偽類用於元素成為焦點的時候——最常用於表單元素。你可以在你的樣式表中使用多種用戶行為動態偽類,這樣你就可以,比如,根據用戶的鼠標只是滑過或懸停的時候,為一個輸入框定義不同的背景色:


程序代碼
input:focus { background: #D2D2D2; border: 1px solid #5E5E5E; }input:focus:hover { background: #C7C7C7; }瀏覽器兼容性動態偽類被所有的現代瀏覽器支持,甚至IE6,但是請注意,對於IE系列瀏覽器來說,IE6只允許:hover 偽類應用於鏈接元素(a標籤)而且只有IE8接受:active狀態。:first-child:first-child偽類允許你定位某個元素第一個子元素。比如,如果你想給你的無須列表的第一個li添加一個margin-top,你就可以這樣寫:


程序代碼
ul > li:first-child { margin-top: 10px; }讓我們來看一看另一個例子:比如你想讓你的博客的側欄的H2標籤都有個頂部邊距,以將標題和它們前面的內容區分開來,但是第一個h2不需要,你就可以使用下面的代碼:

程序代碼
#sidebar > h2 { margin-top: 10px; }#sidebar > h2:first-child { margin-top: 0; }瀏覽器兼容性IE6 不支持 :first-child 偽類。根據偽類應用到的設計的不同,它或許不會成為關注的主要問題。比如,如果你使用:first-child 選擇器來移除標題或段落上的頭部或底部的間距,你的佈局在IE6中不會壞掉,它只會看起來有些不同。但是如果你使用:first-child選擇器從一個,比如浮動元素,移除左邊距或右邊距,將會讓你的設計亂掉。語言偽類語言偽類:lang(),允許你匹配一個基於它的語言的元素。你如,你想讓你的網站的某個特定的鏈接根據頁面的語言有不同的背景顏色:


程序代碼
:lang(en) > a#flag { background-image: url(english.gif); }:lang(fr) > a#flag { background-image: url(french.gif); }這個選擇器將會匹配相關的鏈接——如果頁面的語言等於「en」或「fr」,或者以「en」或「fr」開頭並在後面帶個連字符「-」的話。瀏覽器兼容性不幸的是,只有IE瀏覽器中只有IE8支持該選擇器,其它的主要瀏覽器都支持該偽類選擇器。5. CSS 3 偽類:target當你使用錨點(片段標識符 fragment identifier)的時候,比如,http://www.smashingmagazine.com/2009/08/02/bauhaus-ninety-years-of-inspiration/#comments,這「#comments」就是一個片段標識符,你就可以使用:target偽類來控制目標的樣式。舉個例子,比如你有一個很長的使用了很多文字和h2標題的頁面,然後在頁面的頭部有一個對這些標題的索引。如果在點擊索引內的某個鏈接時,相應的標題以某種方式高亮,然後滾動到相應的位置,對讀者就會很有用。很簡單。

程序代碼
h2:target { background: #F2EBD6; }瀏覽器兼容性這一次,IE瀏覽器完全不支持:target偽類,另一個小問題就是Opera 在使用「前進」和後退按鈕時不支持該選擇器。但是其它的各個主流瀏覽器都支持該選擇器。UI元素狀態偽類有些HTML元素有enable 或disabled 狀態(比如,文本輸入框)和 checked 或unchecked 狀態(單選按鈕和復選框)。這些狀態就可以使用:enabled、:disabled 或:checked 偽類來分別定位。那麼你就會想,如果任意一個禁用的(disabled)文本框應該使用淺灰色的背景和虛線邊框:


程序代碼
input:disabled { border:1px dotted #999; background:#F2F2F2; }你也可能會想讓所有選中的復選框有個左邊距(這樣就可以在眾多的復選框中很容易認出來):


程序代碼
input[type=」checkbox」]:checked { margin-left: 15px; }瀏覽器兼容性所有的主流瀏覽器,除了我們常常不報希望的IE系列瀏覽器,都支持UI元素狀態偽類。如果你考慮只是添加附加級別的細節和增強網站的可用性,這個仍然是可以採用的。6. CSS 3 結構偽類:nth-child:nth-child()偽類允許你定位某個父級元素的一個或多個特定的子元素.你可以通過定義它的值為一個整數來定位某個單個子元素:


程序代碼
ul li:nth-child(3) { color: red; }這將會讓ul元素的第三個li元素的文字變成紅色。注意如果在ul裡面有個其它類型的元素(不是li),它也會算作其子元素。你可以使用表達式來定位子元素。比如,下面的表達式將從第四個開始匹配每第三個元素。


程序代碼
ul li:nth-child(3n+4) { color: yellow; }在上面的這個例子中,第一個黃色的li元素將會是第四個。如果也想從第一個開始匹配,你可以使用一個簡單的表達式:


程序代碼
ul li:nth-child(3n) { color: yellow; }這樣的話,第一個黃色的li元素將會是第三個子元素,然後是它後面的每隔第三個。現在想像一下如果你只想匹配列表中的前四個子元素:


程序代碼
ul li:nth-child(-n+4) { color: green; }:nth-child的值同樣也可以被定義為「even」 或「odd」,和「2n」 (第偶數個) 或「2n+1」 (第奇數個)的效果是一樣的。:nth-last-child:nth-last-child偽類基本上和:nth-child偽類的作用相同,但是它從最後一個元素開始算。使用上面的一個例子來看看:


程序代碼
ul li:nth-child(-n+4) { color: green; }不是匹配最前面的四個li元素,該選擇器匹配最後面的四個元素。你同樣可以使用「even」 或「odd」只,同樣與nth-child不同的是,這是從最後面的元素開始算的:


程序代碼
ul li:nth-last-child(odd) { color: grey; }:nth-of-type:nth-of-type偽類和:nth-child也很像,不同的是它只計算選擇器中指定的那個元素。這對定位元素中包含大量不同的元素的情況會很有用。比如,我們想控制一個文本塊中的每隔一個段落,但是我們又想要無視其它元素比如圖片和引用塊:


程序代碼
p:nth-of-type(even) { color: blue; }你也可以使用一些值,就像在:nth-child中使用的一樣。:nth-last-of-type你能猜到它吧?!:nth-last-of-type 偽類可以像前面提到的:nth-last-child一樣使用,但是這次,它將之匹配你在選擇器中指定的元素類型:


程序代碼
ul li:nth-last-of-type(-n+4) { color: green; }我們可以更加的聰明一些,在一個大的塊級選擇器中結合多種這樣的偽類。比如我們想讓文章中的所有的圖片左浮動,除了第一個和最後一個(我們可以假設他們是滿寬的,無須浮動):


程序代碼
.post img:nth-of-type(n+2):nth-last-of-type(n+2) { float: left; }所以在這個選擇器的第一部分,我們從第二個圖片開始定位每一個圖片。在第二部分中,我們定位所有的圖片,除了最後一個。因為這兩個選擇器並非互斥的,我們可以同時使用它們,這樣就可以一下子排除第一個和最後一個元素!:last-child:last-child偽類的作用類似於:first-child 偽類,但是會定位父級元素的最後一個子元素。讓我們假設你不想讓你的日誌的div的最後一個段落也有一個底部邊距:


程序代碼
.post > p:last-child { margin-bottom: 0; }該選擇器將定位class為」post」的元素的最後一個直接子級段落。:first-of-type 和:last-of-type:first-of-type 偽類用於定位一個父級元素下的第一個同類子元素。比如,你可以定位某個特定的div的第一個子級段落(p),並讓其第一行字母大寫:

程序代碼
.post > p:first-of-type:first-line { font-variant: small-caps; }在這個選擇器中,你可以確定你是在只定位class為」post」的元素的直接子級p元素,而且還是匹配第一個子級p元素。:last-of-type偽類與此類似,只是匹配最後一個子元素。nly-child nly-child偽類表示一個元素是它的父級元素的唯一一個子元素。比如說,你有一些盒子(「news」),裡面有一些文字段落,當你有多於一個段落的時候,你想讓文字比只有一個段落的時候小一些:


程序代碼
div.news > p { font-size: 1.2em; }div.news > p:only-child { font-size: 1.5em; }第一個選擇器中,我們定義」news」div的所有子級p元素的字體大小。在第二個中,我們覆蓋之前的字體大小,如果該p元素是「news」 div的唯一子元素的時候,它的字體大小會比較大一些。nly-of-type nly-of-type偽類表示一個元素是它的父級元素的唯一一個相同類型的子元素。這有用什麼用?假設你有一些日誌,每一篇都有個class為」post」的div,他們中的一些有多於一張圖片,但是有些可能就只有一張圖片。你想讓後者中的圖片水平居中,而在其它的有多於一張圖片的日誌中,就將它左浮動。這個需求用這個選擇器就很容易實現:


程序代碼
.post > img { float: left; }.post > img:only-of-type { float: none; margin: auto; }:empty:empty偽類表示一個元素裡面沒有任何內容。這個選擇器可以用很多種用途。比如,你在你的「sidebar」中有若干個盒子,但是不想讓空盒子顯示出來:


程序代碼
#sidebar .box:empty { display: none; }注意,就算」box」div裡面只有一個空格,它也不會被css當作空標籤的,這樣就不能匹配該選擇器了。瀏覽器支持Internet Explorer (直到8.0版本)都不支持結構偽類。Firefox、Safari 和Opera 在其最新版本的瀏覽器中指出這些選擇器。這意味著,使用這些選擇器對網站的可用性和可訪問性是很有用的,或者如果網站的用戶中的大部分是使用IE而且你不想在某些細節上無視他們,最好還是保持使用通用的class和簡單的選擇器來迎合這些選擇器。否則你會被搞瘋的!7. 否定選擇器否定選擇器:not(),可以讓你定位不匹配該選擇器的元素比如,如果你需要定義表單元素中的input元素,但是又不想包括submit類型的input的時候會灰常有用——你想它們有不同的樣式,以看起來像按鈕:


程序代碼
input:not([type="submit"]) { width: 200px; padding: 3px; border: 1px solid #000000; }另一個例子,你想你的日誌的div中的所有段落(p)有比較大的字體,除了表示時間和日期的段落:

程序代碼
.post p:not(.date) { font-size: 13px; }你可以想像這個選擇器能帶給你的潛力了吧,你能夠從你的CSS文件中剝離(剔除)的無用的大量選擇器也被它廣泛支持嗎?瀏覽器支持Internet Explorer在這裡常常是讓我們感到掃興的東西:一點都不支持,甚至在IE8中。這大概意味著這些選擇器將仍不得不等到一些開發者開始不再顧慮將它添加到他們的樣式表中才會普及。8. 偽元素偽元素允許你操作HTML中不是真實存在的元素,比如一個文本塊的第一行或者第一個字母。偽元素在CSS 2.1中就已經存在,但是CSS 3說明書表示他們應該使用雙冒號「::」,以與偽類區分開來。在CSS 2.1中,他們也是使用單個冒號「:」的。瀏覽器會將能夠接受兩種格式,除非這些偽元素只存在於CSS3中。::first-line::first-line偽元素將匹配block、inline-block、table-caption、table-cell等等級別元素的第一行這對在你的文字塊上添加一些微妙的排版細節相當有用,比如,將一片文章的第一行文字改成小寫字母:

程序代碼
h1 + p::first-line { font-variant: small-caps; }如果你專心的閱讀了我們前面的內容,你將會瞭解到上面的語法意味著,緊緊的跟在H1標籤之後(+)的段落會將其第一行文字顯示為小寫字母。你也可以針對相關的div的第一行,而不用針對實際的段落標籤(p):


程序代碼
div.post p::first-line { font-variant: small-caps; }或者更進一步,定位某個特低的div的第一個段落的第一行:
程序代碼
div.post > p:first-child::first-line { font-variant: small-caps; }這裡,「>」符號表示你指定的是post div的直接子級元素,這樣如果段落被包括在第二級div中,它就不會匹配這個選擇器。::first-letter::first-letter偽元素將會匹配一個文本塊的第一個字母,除非在同一行裡面包含一些其它元素,比如圖片。和::first-line偽類一樣,::first-letter通常用於給文本元素添加排版細節,比如下沉字母或首字母。這裡是如何使用::first-letter偽元素創建首字下沉的例子:


程序代碼
p { font-size: 12px; }p::first-letter { font-size: 24px; float: left; }注

意如果你在某些元素中同時使用::first-line 和::first-letter ,::first-letter 屬性將覆蓋從::first-line中繼承下來的某些屬性。如果你不知道W3C規則的話,這個元素有時會產生意想不到的結果:它事實上是使用最長的規則的選擇器!所以如果你計劃使用它的話最好仔細的閱讀一下 (其它選擇器也一樣)。::before 和 ::after::before和::after 偽元素用於在一個元素的前面或後面插入內容,純CSS方法。這些元素將繼承它們將附加的元素的大部分屬性。假設你想在你的頁面中的圖標的描述前面添加文字「Graphic number x:」。你將無需寫文字「Graphic


程序代碼
number」,或者自己手動添加數字:.post { counter-reset: image; }p.description::before { content: "Figure number " counter(image) ": "; counter-increment: image; }


那麼這會產生什麼?首先,我們告訴HTML來創建「image」計數器。比如我們可以添加該屬性到頁面的body。同樣我們也可以給該計數器起任何一個名字,只要你想,只要我們常常使用同樣的名字引用它:自己試試吧!那麼我們想在class為」description」的每一個段落之前添加這一塊內容: 「Figure number 」 — 注意只有我們在引號裡面寫的內容才會被創建到頁面中,所以我們也要添加一個空格!然後,我們就有了counter(image):這將用到我們之前在.post選擇器中定義的屬性。它默認會從數字1開始。下一個屬性在那裡表示計數器知道對於每一個p.description,它需要將image計數器增加1 (counter-increment: image)。它並不像看起來的那麼複雜,而且還會灰常的有用。::before和::after偽元素常常只使用content屬性,來添加一些短語或排版元素,但是這裡我們展示了我們如果以一種更加強大的結合counter-reset和counter-increment屬性的方式來使用它們。有趣的是: ::first-line 和::first-letter 偽元素可以匹配使用::before偽元素生成的內容,如果存在的話。瀏覽器支持如果使用單個冒號的話(比如, :first-letter, 而不是::first-letter),這些偽元素被IE8支持(但是不被IE7或6支持)。但是左右其他的主流瀏覽器都支持這些選擇器。結語乏味的講述終於結束了,現在該你來領悟本文的要義並自己嘗試了: 開始通過創建實驗性的頁面並測試所有的這些選擇器,在有疑問的時候返回這裡並確保總是遵循W3C的規則,但是請不要只是坐在那裡想這些選擇器尚未被完全支持你就無視它們。如果你敢於冒險,或者你不害怕放棄之前的遍地無用和非語義化的class和id,為什麼不嘗試一兩個這些強大的CSS選擇器到你的下一個項目中呢?我們保證你不會回頭的!

參考‧CSS 2 Selectors — W3C‧CSS 3 Selectors Level 3 — W3C‧Comparison of layout engines (Cascading Style Sheets) — Wikipedia‧Generated content, automatic numbering, and lists — W3C擴展資源‧Keeping Your Elements』 Kids in Line with Offspring — A List Apart‧Selectutorial – CSS selectors‧A Look at Some of the New Selectors Introduced in CSS3‧CSS 2.1 selectors, Part 1 and Part 2‧CSS 3 selectors explained‧CSS selectors and pseudo selectors browser compatibility‧10 Useful CSS Properties Not Supported By Internet Explorer‧Styling a Poem with Advanced CSS Selectors關於作者Inayaili de Leon 是一個葡萄牙網頁設計師。她對網頁設計和前端編碼有特別的愛好,而且喜歡漂亮和間接的網站。她居住在倫敦。你可以在Web Designer Notebook看到她的更多文章並follow her on Twitter。


文章來自WOWBOX
文章提供BAYSTARS DESIGN網頁設計公司

國外50多個使用發光效果的網站設計精選

在網站設計中使用發光效果是當下的一個流行趨勢,它常常可以為一個網站帶來一些有趣和漂亮的界面,想要添加一些炫光效果的設計師可以使用Photoshop製作非常有趣的發光效果。儘管之前我們有展示過一些使用發光效果的網站,今天我們將展示更多的此類網站設計,從這些網站中你將會看到不同的實現方式和不同類型的效果。

Design Slurp
Staak
Beautiful 2.0
Levon.co.za
Songkick
Ulrich Egouy
Fred Maya
Pixelpanzer
Rareview
Strutta
Yomenz
Foehn
Iluminasom
AeroFX
Camp Creative Group
Icebrrg
Aurelien Reaut
365 Days of Astronomy
Pixelight Creative
Cosmive
Oakes Design
FMCommunication
Vogue
Drew Wilson
Ciplex
You and I Graphics
Sebcreation
Designed by Dave
James B
OKB
Stuart Anderson
Sugarrhyme
Mozami
Studio 7 Designs
UbicWay
Dreamwire
GCN
Dale Anthony
Elite by Design
45 royale
Sony CES 2009
Enso CMS
CultureShock
Newism
Timmy K
Marcos Xotoko
chopchop
LogoFury
Vodaco Agency
Designphunk
SoSoJuicy
Tim Adler
3AKIS

文章來自WOWBOX
文章提供BAYSTARS DESIGN網頁設計公司

日期垂直排列的兩種技巧

LearningjQuery.com 博客帖子列表的左邊有一個很酷的日期,如圖: 從圖中我們看到,「2009」垂直排列在右側。用Firebug查看元素,文本「2009」出現在html結構之中,本文介紹實現這種效果的兩種方法。一、利用Sprite技術來實現其實現過程已有Chris Coyier 在《Date Display Technique with Sprites》一文中作了詳細介紹,這裡把其實現過程作一個簡單的描述。很顯然,我們不希望每一個日期用一張單獨的圖片,因此,將其整合到一張圖片之上,安排年、月、日在圖片的不同區域,如圖:1、Html頁面中html結構如下:
程序代碼
.postdate容器包含三個區域,分別對應年月日,這樣很好的保證了語義上的完整性。在類似wordpress這樣的CMS系統中,其後端代碼是這樣的:
程序代碼
2、Csscss是sprite真正發揮作用的地方,利用html中的定義的class屬性,讓對應的圖片得以顯示。首先,讓class屬性為.postdate的容器相對定位,這樣包含其中的三個區域就會絕對定位,並使用同一張背景圖片。設置各自的寬度和高度,並將文字移出以顯示背景圖片。然後,定義每個月(12)、每天(31)、每年(按10年計)具體的背景位置,以顯示與其相對應的圖片。
程序代碼
.postdate { position: relative; width: 50px; height: 50px; float: left; } .month, .day, .year { position: absolute; text-indent: -1000em; background-image: url(/wp-content/themes/ljq/images/dates.png); background-repeat: no-repeat; } .month { top: 2px; left: 0; width: 32px; height: 24px;} .day { top: 25px; left: 0; width: 32px; height: 25px;} .year { bottom: 0; right: 0; width: 17px; height: 48px;} .m-01 { background-position: 0 4px;} .m-02 { background-position: 0 -28px;} .m-03 { background-position: 0 -57px;} ... more like this ... .d-01 { background-position: -50px 0;} .d-02 { background-position: -50px -31px;} .d-03 { background-position: -50px -62px;} ... more like this ... .y-2006 { background-position: -150px 0;} .y-2007 { background-position: -150px -50px;} .y-2008 { background-position: -150px -100px;} ... more like this ... 二、利用Text Rotation來實現Jonathan Snook 在他的文章《Text Rotation with CSS》中提到用Text Rotation來實現這種效果。這裡對其作簡要的描述。如今,很多主流的瀏覽器如Webkit和Firefox(從3.5開始)都支持旋轉HTML元素。那麼要使其垂直排列,就可以利用該屬性。但須為每種瀏覽器加上前綴。
程序代碼
-webkit-transform: rotate(-90deg); -moz-transform: rotate(-90deg); 對於IE瀏覽器,可以使用一個稱之為BasicImage 的濾鏡來達到目的,該濾鏡能夠旋轉任何具有layout屬性的元素。但字體較之於使用圖片來說,並不顯得平滑。
程序代碼
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
該濾鏡可以接受四個屬性值0、1、2、3,其對應旋轉的角度分別為0、90、180、270。儘管它還具有mirroring、masking、greyscale 等屬性,但在此對我毫無意義。在Jonathan Snook的這篇文章的留言中,Ashish 提到在IE中使用css的一個屬性writing-mode:tb-rl可以得到同樣的效果,本人做過測試,的確可以使文本垂直排列。但與旋轉文本略有不同,主要體現在文字起始的方向上。另外,本人在IEtest中測試IE8,使用BasicImage好像不能生效。查查示例三、總結對比兩種方法。很明顯,第一種方法無論是瀏覽器支持上還是視覺效果的美觀上都強於第二種,唯一感到不足的是css代碼較長。第二種方法雖不甚完美,但其實現過程並不複雜,不需要任何圖片,但作為一種開拓思路的嘗試也未嘗不可。

文章來自wowbox
文章提供Baystars Design網頁設計公司