人人添人人妻人人爽夜欢视av,亚洲综合色无码,久久人妻夜夜做天天爽 http://www.mxio.cn 傳播先進設計理念 推動原創設計發展 Mon, 14 Nov 2011 01:51:00 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.9.1 瀑布流布局淺析 http://www.mxio.cn/29313.html http://www.mxio.cn/29313.html#respond Mon, 14 Nov 2011 01:51:00 +0000

簡介

如果你經常網上沖浪,這樣參差不齊的多欄布局,是不是很眼熟啊?

類似的布局,似乎一夜之間出現在國內外大大小小的網站上,比如 Pinterest (貌似是最早使用這種布局的網站了),Mark之蘑菇街點點網,以及淘寶最新上線的“哇哦” 等等,倒是很流行哈~ 在淘寶即將上線的眾多產品中,你還會大量看到這樣的形式呢。

這種布局適合于小數據塊,每個數據塊內容相近且沒有側重。通常,隨著頁面滾動條向下滾動,這種布局還會不斷加載數據塊并附加至當前尾部。所以,我們給這樣的布局起了一個形象的名字 ― 瀑布流式布局

幾種實現方式

隨著越來越多設計師愛用這種布局,我們作為前端,要盡可能滿足視覺/交互設計師的需求。所以,我們整理了下這種布局的幾種實現方式,有三種:

1) 傳統多列浮動。即 蘑菇街和哇哦 采用的方式,如下圖所示:

  • 各列固定寬度,并且左浮動;
  • 一列中的數據塊為一組,列中的每個數據塊依次排列即可;
  • 更多數據加載時,需要分別插入到不同的列上;
  • 線上例子

優點:

  • 布局簡單,應該說沒啥特別的難點;
  • 不用明確知道數據塊高度,當數據塊中有圖片時,就不需要指定圖片高度。

缺點:

  • 列數固定,擴展不易,當瀏覽器窗口大小變化時,只能固定的x列,如果要添加一列,很難調整數據塊的排列;
  • 滾動加載更多數據時,還要指定插入到第幾列中,還是不方便。

2) CSS3 定義。W3C 中有講述關于多列布局的文檔,排列出來的樣子:

  • 由 chrome/ff 瀏覽器直接渲染出來,可以指定容器的列個數,列間距,列中間邊框,列寬度來實現;
    #container {        -webkit-column-count: 5;        /*-webkit-column-gap: 10px;        -webkit-column-rule: 5px solid #333;        -webkit-column-width: 210px;*/        -moz-column-count: 5;        /*-moz-column-gap: 20px;        -moz-column-rule: 5px solid #333;        -moz-column-width: 210px;*/        column-count: 5;        /*column-gap: 10px;        column-rule: 5px solid #333;        column-width: 210px;*/    }
  • column-count 為列數; column-gap 為每列間隔距離; column-rule 為間隔邊線大小; column-width 為每列寬度; 當只設置 column-width 時,瀏覽器窗口小于一列寬度時,列中內容自動隱藏; 當只設置 column-count 時,平均計算每列寬度,列內內容超出則隱藏; 都設了 column-count 和column-width,瀏覽器會根據 count 計算寬度和 width 比較,取大的那個值作為每列寬度,然后當窗口縮小時,width 的值為每列最小寬度。這邊其實很簡單,簡易自己嘗試下,詳細可參考 https://developer.mozilla.org/en/CSS3_Columns 中的說明。
  • 線上例子

優點:

  • 直接 CSS 定義,最方便了;
  • 擴展方便,直接往容器里添加內容即可。

缺點:

  • 只有高級瀏覽器中才能使用;
  • 還有一個缺點,他的數據塊排列是從上到下排列到一定高度后,再把剩余元素依次添加到下一列,這個本質上就不一樣了;
  • 鑒于這兩個主要缺點,注定了該方法只能局限于高端瀏覽器,而且,更適合于文字多欄排列。

3) 絕對定位。即 Pinterest ,Mark之,KISSY 采用的方式:

  • 可謂是最優的一種方案,方便添加數據內容,窗口變化,列數/數據塊都會自動調整;
  • 線上例子

缺點:

  • 需要實現知道數據塊高度,如果其中包含圖片,需要知道圖片高度;
  • JS 動態計算數據塊位置,當窗口縮放頻繁,可能會狂耗性能。

KISSY.Waterfall 實現思路

KISSY 的 Waterfall 組件主要包含兩個部分,一個是對現有數據塊進行排列計算各自所在的位置; 二是下拉滾動時,觸發加載數據操作,并把數據添加到目標容器中。

1) 數據塊排列,算法步驟簡述下:

  • 初始化時,對容器中已有數據塊元素進行第一次計算,需要用戶給定: a,容器元素 ― 以此獲取容器總寬度; b,列寬度; c,最小列數; 最終列數取的是容器寬度/列寬度和最小列數的最大值,這樣保證了,當窗口很小時,仍然出現最小列數的數據;
  • 獲得列數后,需要保存每個列的當前高度,這樣在添加每個數據塊時,才知道起始高度是多少;
  • 依次取容器中的所有數據塊,先尋找當前高度最小的某列,之后根據列序號,確定數據塊的left,top值,left 為所在列的序號乘以列寬,top 為所在列的當前高度,最后更新所在列的當前高度加上這個數據塊元素的高度,至此,插入一個元素結束;
  • 當所有元素插入完畢后,調整容器的高度為各列最大的高度值,結束依次調整;
  • 性能效率上的注意點: a,如果當前正在調整中,又觸發了 resize 事件,需要將上次調整暫停后執行這次調整(見 timedChunk 函數); b,resize 觸發會很頻繁,可以將回調函數緩存一段時候后執行,即當這段時間內多次觸發了resize事件,但回調函數只會執行一次(見 S.buffer 函數)
  • 感興趣的可以參見源碼

2) 異步加載數據,前面講的是如何對容器中已有元素進行排列,但很多情況下,還需要不斷加載新數據塊,為此專門設計了一個獨立的模塊 KISSY.Waterfall.Loader,其實這個功能就更簡單了,僅包含兩個步驟:

  • 綁定滾動事件,并確定預加載線高度值,即滾動到哪個高度后,需要去加載數據,其實這個就是列的最小高度值,這樣當前滾動值和最小高度值比較一下即可判斷出來,是否要觸發加載數據;
  • 加載數據,為了不對數據源做太多限制,完全由使用者自己決定數據源從哪邊獲取和其格式,這樣更好的方便用戶使用。為此,該組件只提供一個load(success,end) 接口,怎樣load 由用戶自己去定義,而其中的 success/end,分別給出如何添加新數據(suceess 即同 addItems)/如何停止加載的接口。這樣真是太方便了~~
  • 感興趣的可以參見源碼

KISSY.Waterfall 示例和文檔

看到這邊,是不是很想試用一下~~ 嗯嗯,這里給出一些相關學習資料和示例,以供參考:

源文:http://ued.taobao.com/blog/2011/09/14/waterfall/

]]>
http://www.mxio.cn/29313.html/feed 0
CSS經典技巧十則 http://www.mxio.cn/29312.html http://www.mxio.cn/29312.html#respond Mon, 14 Nov 2011 01:49:00 +0000

1.CSS字體屬性簡寫規則一般用CSS設定字體屬性是這樣做的:

font-weight:bold;
font-style:italic;
font-varient:small-caps;
font-size:1em;
line-height:1.5em;
font-family:verdana,sans-serif;

但也可以把它們全部寫到一行上去:

font: bold italic small-caps 1em/1.5em verdana,sans-serif;

真不錯!只有一點要提醒的:這種簡寫方法只有在同時指定font-size和font-family屬性時才起作用。而且,如果你沒有設定font-weight, font-style, 以及 font-varient ,他們會使用缺省值,這點要記上。

2. 同時使用兩個類

一般只能給一個元素設定一個類(Class),但這并不意味著不能用兩個。事實上,你可以這樣:

<p class=”text side”>…</p>

同時給P元素兩個類,中間用空格格開,這樣所有text和side兩個類的屬性都會加到P元素上來。如果它們兩個類中的屬性有沖突的話,后設置的起作用,即在CSS文件中放在后面的類的屬性起作用。

補充:對于一個ID,不能這樣寫<p id=”text side”>…</p>也不能這樣寫

3. CSS border的缺省值

通常可以設定邊界的顏色,寬度和風格,如:

border: 3px solid #000

這位把邊界顯示成3像素寬,黑色,實線。但實際上這里只需要指定風格即可。

如果只指定了風格,其他屬性就會使用缺省值。一般地,Border的寬度缺省是medium,一般等于3到4個像素;缺省的顏色是其中文字的顏色。如果這個值正好合適的話,就不用設那么多了。

4. CSS用于文檔打印

許多網站上都有一個針對打印的版本,但實際上這并不需要,因為可以用CSS來設定打印風格。

也就是說,可以為頁面指定兩個CSS文件,一個用于屏幕顯示,一個用于打印:

<link type=”text/css” rel=”stylesheet” href=”stylesheet.css” media=”screen” />

<link type=”text/css” rel=”stylesheet” href=”printstyle.css” media=”print” />

第1行就是顯示,第2行是打印,注意其中的media屬性。

但應該在打印CSS中寫什么東西呢?你可以按設計普通CSS的方法來設定它。設計的同時就可以把這個CSS設成顯示CSS來檢查它的效果。也許你會使用 display: none 這個命令來關掉一些裝飾圖片,再關掉一些導航按鈕。要想了解更多,可以看“打印差異”這一篇。

5. 圖片替換技巧

一般都建議用標準的HTML來顯示文字,而不要使用圖片,這樣不但快,也更具可讀性。但如果你想用一些特殊字體時,就只能用圖片了。

比如你想整個賣東西的圖標,你就用了這個圖片:

<h1><img src=”widget-image.gif” alt=”Buy widgets” /></h1>

這當然可以,但對搜索引擎來說,和正常文字相比,它們對alt里面的替換文字幾乎沒有興趣這是因為許多設計者在這里放許多關鍵詞來騙搜索引擎。所以方法應該是這樣的:

<h1>Buy widgets</h1>

但這樣就沒有特殊字體了。要想達到同樣效果,可以這樣設計CSS:

h1 { background: url(widget-image.gif) no-repeat; height: image height text-indent: -2000px }

注意把image height換成真的圖片的高度。這里,圖片會當作背景顯示出來,而真正的文字由于設定了-2000像素這個縮進,它們會出現在屏幕左邊2000點的地方,就看不見了。但這對于關閉圖片的人來說,可能全部看不到了,這點要注意。

6. CSS box模型的另一種調整技巧

這個Box模型的調整主要是針對IE6之前的IE瀏覽器的,它們把邊界寬度和空白都算在元素寬度上。比如:

#box { width: 100px; border: 5px; padding: 20px }

這樣調用它:

<div id=”box”>…</div>

這時盒子的全寬應該是150點,這在除IE6之前的IE瀏覽器之外的所有瀏覽器上都是正確的。但在IE5這樣的瀏覽器上,它的全寬仍是100點。可以用以前人發明的Box調整方法來處理這種差異。

但用CSS也可以達到同樣的目的,讓它們顯示效果一致。

#box { width: 150px } #box div { border: 5px; padding: 20px }

這樣調用:

<div id=”box”><div>…</div></div>

這樣,不管什么瀏覽器,寬度都是150點了。

7. 塊元素居中對齊

如果想做個固定寬度的網頁并且想讓網頁水平居中的話,通常是這樣:

#content { width: 700px; margin: 0 auto }

你會使用 <div id=”content”> 來圍上所有元素。這很簡單,但不夠好,IE6之前版本會顯示不出這種效果。改CSS如下:

body { text-align: center } #content { text-align: left; width: 700px; margin: 0 auto }

這會把網頁內容都居中,所以在Content中又加入了:text-align: left 。

8. 用CSS來處理垂直對齊

垂直對齊用表格可以很方便地實現,設定表格單元 vertical-align: middle 就可以了。但對CSS來說這沒用。如果你想設定一個導航條是2em高,而想讓導航文字垂直居中的話,設定這個屬性是沒用的。

CSS方法是什么呢?對了,把這些文字的行高設為 2em:line-height: 2em ,這就可以了。

9. CSS在容器內定位

CSS的一個好處是可以把一個元素任意定位,在一個容器內也可以。比如對這個容器:

#container { position: relative }

這樣容器內所有的元素都會相對定位,可以這樣用:

<div id=”container”><div id=”navigation”>…</div></div>

如果想定位到距左30點,距上5點,可以這樣:

#navigation { position: absolute; left: 30px; top: 5px }

當然,你還可以這樣:

margin: 5px 0 0 30px

注意4個數字的順序是:上、右、下、左。當然,有時候定位的方法而不是邊距的方法更好些。

10. 直通到屏幕底部的背景色

在垂直方向是進行控制是CSS所不能的。如果你想讓導航欄和內容欄一樣直通到頁面底部,用表格是很方便的,但如果只用這樣的CSS:

#navigation { background: blue; width: 150px }

較短的導航條是不會直通到底部的,半路內容結束時它就結束了。該怎么辦呢?

不幸的是,只能采用欺騙的手段了,給這較短的一欄加上個背景圖,寬度和欄寬一樣,并讓它的顏色和設定的背景色一樣。

body { background: url(blue-image.gif) 0 0 repeat-y }

此時不能用em做單位,因為那樣的話,一旦讀者改變了字體大小,這個花招就會露餡,只能使用px。

]]>
http://www.mxio.cn/29312.html/feed 0
主站蜘蛛池模板: 中文在线√天堂| 亚洲真人无码永久在线| 18成禁人视频免费| 久久免费观看午夜成人网站| 国产精品大片中文字幕| 久久国产精品久久久久久| 久久亚洲精品无码爱剪辑| 蜜芽久久人人超碰爱香蕉| 亚洲国产精华液网站w| 男人激烈吮乳吃奶视频免费 | 精品少妇人妻av免费久久久| 色综合色欲色综合色综合色乛| 黄色免费在线网址| 国产肥白大熟妇bbbb视频| 久久精品国产99国产精2020丨| 国产精品精品一区二区三| 国产免费又爽又色又粗视频| 亚洲麻豆av成本人无码网站| 大香伊蕉在人线国产最新2005| 狠狠色噜噜狠狠狠狠色综合久av | 少妇spa推油被扣高潮| 亚洲码欧洲码一二三四五| 欧美老妇交乱视频在线观看| 婷婷伊人五月尤物| 亚洲AVAV天堂AV在线网阿V| 国产线播放免费人成视频播放| 久久精品国产亚洲欧美成人| 亚洲+成人+国产| 人人爱天天做夜夜爽| 亚洲精品欧美精品日韩精品| 亚洲欧美综合中文| 日本大胆欧美人术艺术动态| 插b内射18免费视频| 手机真实国产乱子伦对白视频 | 视频一区视频二区卡通动漫| 精品国产欧美一区二区| 极品少妇高潮到爽| 亚洲精品一区二区区别| 任我爽精品视频在线观看| 天天躁日日躁狠狠躁性色avq| 永久免费AV无码网站YY|