來(lái)源
http://paranimage.com/css-float-attribute/
什么是CSS Float?
float 是 css 的定位屬性。在傳統(tǒng)的印刷布局中,文本可以按照需要圍繞圖片。一般把這種方式稱為“文本環(huán)繞”。在網(wǎng)頁(yè)設(shè)計(jì)中,應(yīng)用了CSS的float屬性的頁(yè)面元素就像在印刷布局里面的被文字包圍的圖片一樣。浮動(dòng)的元素仍然是網(wǎng)頁(yè)流的一部分。這與使用絕對(duì) 定位的頁(yè)面元素相比是一個(gè)明顯的不同。絕對(duì)定位的頁(yè)面元素被從網(wǎng)頁(yè)流里面移除了,就像印刷布局里面的文本框被設(shè)置為無(wú)視頁(yè)面環(huán)繞一樣。絕對(duì)定位的元素不會(huì) 影響其它元素,其它元素也不會(huì)影響它,無(wú)論它是否和其它元素挨著。
像這樣在一個(gè)元素上用CSS設(shè)置浮動(dòng):
#sidebar { float: right; }
fload屬性有四個(gè)可用的值:Left 和Right 分別浮動(dòng)元素到各自的方向,None (默認(rèn)的) 使元素不浮動(dòng),Inherit 將會(huì)從父級(jí)元素獲取float值。
Float的用處
除了簡(jiǎn)單的在圖片周圍包圍文字,浮動(dòng)可用于創(chuàng)建全部網(wǎng)頁(yè)布局。

Float對(duì)小型的布局同樣有用。例如頁(yè)面中的這個(gè)小區(qū)域。如果我們?cè)谖覀兊男☆^像圖片上使用Float,當(dāng)調(diào)整圖片大小的時(shí)候,盒子里面的文字也將自動(dòng)調(diào)整位置:

同樣的布局可以通過(guò)在外容器使用相對(duì)定位,然后在頭像上使用絕對(duì)定位來(lái)實(shí)現(xiàn)。這種方式中,文本不會(huì)受頭像圖片大小的影響,不會(huì)隨頭像圖片的大小而有相應(yīng)變化。

清除Float
清除(clear)是浮動(dòng)(float)的相關(guān)屬性.一個(gè)設(shè)置了清除Float的元素不會(huì)如浮動(dòng)所設(shè)置的一樣,向上移動(dòng)到Float元素的邊界,而是會(huì)忽視浮動(dòng)向下移動(dòng)。如下,一圖頂千言。

上例中,側(cè)欄向右浮動(dòng),并且短于主內(nèi)容區(qū)域。頁(yè)腳(footer)于是按浮動(dòng)所要求的向上跳到了可能的空間。要解決這個(gè)問(wèn)題,可以在頁(yè)腳(footer)上清除浮動(dòng),以使頁(yè)腳(footer)待在浮動(dòng)元素的下面。

清除(clear)也有4個(gè)可能值。最常用的是 both,清楚左右兩邊的浮動(dòng)。left 和 right 只能清楚一個(gè)方向的浮動(dòng)。none 是默認(rèn)值,只在需要移除已指定的清除值時(shí)用到。inherit 應(yīng)該時(shí)第五個(gè)值,不過(guò)很奇怪的是 IE 不支持(這個(gè)不奇怪吧,IE 從來(lái)都這么特立獨(dú)行吧 -糖伴西紅柿注)。只清除左邊或右邊的浮動(dòng),實(shí)際中很少見,不過(guò)絕對(duì)有他們的用處。

偉大的塌陷
使用浮動(dòng)(float)的一個(gè)比較疑惑的事情是他們?cè)趺从绊懓麄兊母冈氐摹H绻冈刂话?dòng)元素,那么它的高度就會(huì)塌縮為零。如果父元素不包含任何的可見背景,這個(gè)問(wèn)題會(huì)很難被注意到,但是這是一個(gè)很重要的問(wèn)題。

塌陷的直觀對(duì)立面更不好,看看下面的情況:

當(dāng)上面的塊級(jí)元素自動(dòng)擴(kuò)展以適應(yīng)浮動(dòng)元素時(shí),段落間的文本流中會(huì)出現(xiàn)非自然的空白換行,而且沒(méi)有有效的方法來(lái)修正這個(gè)問(wèn)題。對(duì)于這種情況,設(shè)計(jì)師的抱怨會(huì)更甚于對(duì)塌陷的抱怨(沒(méi)理解,不是設(shè)計(jì)完成之后才會(huì)進(jìn)行頁(yè)面編碼嗎?- 糖伴西紅柿)。
為了防止怪異的布局和跨瀏覽器的問(wèn)題,塌陷問(wèn)題幾乎總是被要處理的。我們?cè)谌萜髦械母?dòng)元素之后,容器結(jié)束之前來(lái)清除浮動(dòng)。
清除浮動(dòng)的技術(shù)
如果你很明確的知道接下來(lái)的元素會(huì)是什么,可以使用 clear:both; 來(lái)清除浮動(dòng)。這個(gè)方法很不錯(cuò),它不需要 hack,不添加額外的元素也使得它有良好的語(yǔ)義性。當(dāng)然事情并不是都可以這樣解決的,工具箱中還是需要另外幾個(gè)清除浮動(dòng)的工具。
空div方法從字面來(lái)看,是一個(gè)空的 div。
。有時(shí)可能會(huì)用
或者一些其他元素,但是 div 是最常用的,因?yàn)樗鼪](méi)有瀏覽器默認(rèn)樣式;沒(méi)有特殊功能,而且一般不會(huì)被 css 樣式化。這個(gè)方法因?yàn)橹皇菫榱吮憩F(xiàn),對(duì)頁(yè)面沒(méi)有上下文涵義而被純語(yǔ)義論者嘲笑。誠(chéng)然,從嚴(yán)格的角度來(lái)說(shuō)他們是對(duì)的,但是這個(gè)方法有效而且沒(méi)有任何傷害。
overflow 方法在父元素上設(shè)置 overflow 這個(gè) css 屬性。如果父元素的這個(gè)屬性設(shè)置為 auto 或者 hidden,父元素就會(huì)擴(kuò)展以包含浮動(dòng)。這個(gè)方法有著較好的語(yǔ)義性,因?yàn)樗恍枰~外元素。但是,如果需要增加一個(gè)新的 div 來(lái)使用這個(gè)方法,其實(shí)就和空 div 方法一樣沒(méi)有語(yǔ)義了。而且要記住,overflow 屬性不是為了清除浮動(dòng)而定義的。要小心不要覆蓋住內(nèi)容或者觸發(fā)了不需要的滾動(dòng)條。
簡(jiǎn)單清除方法使用了一個(gè)聰明的 css 偽選擇符(:after)來(lái)清除浮動(dòng)。比起在父元素上設(shè)置 overflow,只需要給它增加一個(gè)額外的類似于”clearfix”的類。這個(gè)類使用如下 css:
.clearfix:after {
content: ".";
visibility: hidden;
display: block;
height: 0;
clear: both;
}
這會(huì)在清除浮動(dòng)的父元素之后應(yīng)用一點(diǎn)看不見的內(nèi)容。這不是全部?jī)?nèi)容,還需要一些額外的代碼來(lái)適應(yīng)那些老舊的瀏覽器。
不同的情況需要不同的浮動(dòng)清除方法。以一個(gè)具有不同樣式塊的網(wǎng)格為例。

為了從視覺上較好的把相似的塊聯(lián)系起來(lái),需要在必要的地方開啟新行,這里是顏色改變的地方。如果每個(gè)顏色組都有一個(gè)父元素的話,我們可以使用 overflow 或者 簡(jiǎn)單清除方法。或者,在每組之間用一個(gè)空div方法。額外的 div 之前并不存在,可以自己試試來(lái)看看哪個(gè)方法好。

浮動(dòng)的問(wèn)題
浮動(dòng)因脆弱而飽受詬病。大多數(shù)的脆弱性來(lái)自于 IE6 及其一系列的浮動(dòng)相關(guān) bug。因?yàn)樵絹?lái)越多的設(shè)計(jì)師不再支持 IE6 了,你也可以不關(guān)注它了。不過(guò)對(duì)于那些要關(guān)注的人來(lái)說(shuō),這里有些大概。
推倒是浮動(dòng)元素內(nèi)的元素(大多是圖片)比浮動(dòng)元素本身寬造成的現(xiàn)象。大多數(shù)的瀏覽器會(huì)在浮動(dòng)之外渲染圖片,但是不會(huì)有伸出來(lái)的部分影響其他布局。IE 會(huì)擴(kuò)展浮動(dòng)來(lái)包含圖片,精彩大幅度地影響布局。一個(gè)普遍的例子是突破伸出主內(nèi)容之外把側(cè)欄推到下面。
快速修正:確保不是圖片造成這種情況,使用 overflow:hidden 來(lái)切除多余的部分。
雙倍邊距bug處理 IE6 時(shí),另一個(gè)需要記住的事情是,如果在和浮動(dòng)方向相同的方向上設(shè)置外邊距(margin),會(huì)引發(fā)雙倍邊距。快速修正:給浮動(dòng)設(shè)置 display:inline; 而且不用擔(dān)心,它依然是塊級(jí)元素。
3像素間距是指挨著浮動(dòng)元素的文本會(huì)神奇的被踢出去3像素,好像浮動(dòng)元素的周圍有一個(gè)奇怪的力場(chǎng)一樣。快速修正:在受影響的文本上設(shè)置寬度或高度。
IE7 中,底邊距 bug是當(dāng)浮動(dòng)父元素有浮動(dòng)子元素時(shí),這些子元素的底邊距會(huì)被父元素忽略掉。快速修正:用父元素的底內(nèi)補(bǔ)白(padding)代替。
來(lái)源:
http://www.cnblogs.com/gsk99/archive/2011/06/14/2080573.htmloracle 截取字符(substr),檢索字符位置(instr) case when then else end語(yǔ)句使用 收藏
常用函數(shù):substr和instr
1.SUBSTR(string,start_position,[length])
求子字符串,返回字符串
解釋:string 元字符串
start_position 開始位置(從0開始)
length 可選項(xiàng),子字符串的個(gè)數(shù)
For example:
substr("ABCDEFG", 0); //返回:ABCDEFG,截取所有字符
substr("ABCDEFG", 2); //返回:CDEFG,截取從C開始之后所有字符
substr("ABCDEFG", 0, 3);
//返回:ABC,截取從A開始3個(gè)字符
substr("ABCDEFG", 0, 100);
//返回:ABCDEFG,100雖然超出預(yù)處理的字符串最長(zhǎng)度,但不會(huì)影響返回結(jié)果,系統(tǒng)按預(yù)處理字符串最大數(shù)量返回。
substr("ABCDEFG",
0, -3); //返回:EFG,注意參數(shù)-3,為負(fù)值時(shí)表示從尾部開始算起,字符串排列位置不變。
2.INSTR(string,subString,position,ocurrence)查找字符串位置
解釋:string:源字符串
subString:要查找的子字符串
position:查找的開始位置
ocurrence:源字符串中第幾次出現(xiàn)的子字符串
For example:
INSTR('CORPORATE FLOOR','OR', 3,
2)中,源字符串為'CORPORATE FLOOR', 目標(biāo)字符串為'OR',起始位置為3,取第2個(gè)匹配項(xiàng)的位置;返回結(jié)果為 14 '
來(lái)源:
http://www.cr173.com/html/13126_1.html
jquery中對(duì) iframe的操作
我們先看一下 JQUERY中的對(duì)像 contents() 的幫助文件
contents()
概述
查找匹配元素內(nèi)部所有的子節(jié)點(diǎn)(包括文本節(jié)點(diǎn))。如果元素是一個(gè)iframe,則查找文檔內(nèi)容
示例
描述:
查找所有文本節(jié)點(diǎn)并加粗
HTML
代碼:
<p>Hello <a >John</a>, how are
you doing?</p>jQuery
代碼:
$("p").contents().not("[nodeType=1]").wrap("<b/>");結(jié)果:
<p><b>Hello</b>
<a >John</a>, <b>how are you
doing?</b></p>描述:
往一個(gè)空框架中加些內(nèi)容
HTML 代碼:
<iframe
src="/index-blank.html" width="300" height="100"></iframe>jQuery
代碼:
$("iframe").contents().find("body")
.append("I'm in an iframe!");
去掉iframe 的邊界 frameborder="0"
1 內(nèi)容里有兩個(gè)ifame
<iframe id="leftiframe"...</iframe>
<iframe
id="mainiframe..</iframe>
leftiframe中jQuery改變mainiframe的src代碼:
$("#mainframe",parent.document.body).attr("src","
2 如果內(nèi)容里面有一個(gè)ID為mainiframe的ifame
<iframe
id="mainifame"...></ifame>
ifame包含一個(gè)someID
<div
id="someID">you want to get this content</div>
得到someID的內(nèi)容
$("#mainiframe").contents().find("someID").html()html 或者
$("#mainiframe").contains().find("someID").text()值
2 如上面所示
leftiframe中的jQuery操作mainiframe的內(nèi)容someID的內(nèi)容
$("#mainframe",parent.document.body).contents().find("someID").html()或者
$("#mainframe",parent.document.body).contents().find("someID").val()
Jquery獲取到 iframe 所屬的父窗口的里面的id為xuan的 標(biāo)簽的
$(window.parent.document).find("#xuan").html(x);//
//js創(chuàng)建 元素 并追加到 父元素的 Iframe中的 元素中的dom操作問(wèn)題:
詳見鏈接:http://www.cssrain.cn/?p=1376
iframe中直接調(diào)用父窗口中的方法:假設(shè)父窗口有個(gè)add的方法
self.parent.add();
===============================================================
IE和Firefox對(duì)iframe document對(duì)象的差異性
在IE6、IE7中,我們可以使用document.frames[ID].document來(lái)訪問(wèn)iframe子窗口中的document對(duì)象,可是這是不符合W3C標(biāo)準(zhǔn)的寫法,也是IE下獨(dú)有的方法,在Firefox下卻不可以使用,F(xiàn)irefox下使用的是符合W3C標(biāo)準(zhǔn)的document.getElementById(ID).contentDocument方法,今天我在寫實(shí)例的時(shí)候,通過(guò)IE8進(jìn)行測(cè)試,IE8也是使用的符合W3C標(biāo)準(zhǔn)的
document.getElementById(ID).contentDocument 方法。所以我們可以寫一個(gè)在IE和Firefox下通用的獲取iframe
document對(duì)象的函數(shù)—getIFrameDOM:
functiongetIFrameDOM(id){returndocument.getElementById(id).contentDocument||document.frames[id].document;}
P.S.:如果我們要獲取iframe的window對(duì)象,而不是document對(duì)象,可以使用document.getElementById(ID).contentWindow的方法。這樣我們就可以使用子窗口中的window對(duì)象了,比如子窗口中的函數(shù)。
在子窗口使用父窗口的函數(shù),獲取父窗口document對(duì)象
在子窗口中,我們可以通過(guò)parent就可以獲得父窗口的window對(duì)象,如果假如我們?cè)诟复翱谟幸粋€(gè)函數(shù)為getIFrameDOM,我們可以通過(guò)parent.getIFrameDOM來(lái)調(diào)用,同理我們使用parent.document就可以在子窗口中訪問(wèn)父窗口的document對(duì)象了。
使用JavaScript進(jìn)行iframe的DOM操作實(shí)例
首先,我們?cè)诟复翱谥幸雰蓚€(gè)iframe子窗口,ID分別為wIframeA、wIframeB,地址分別為:a.html、b.html。
父窗口主要HTML代碼如下:
<div id="pHello" style="margin:10px
auto;width:360px;height:30px;">此處可通過(guò)iframeB的JavaScript函數(shù),來(lái)替換哦~</div>
<iframe id="wIframeA" name="myiframeA" src="a.html" scrolling="no"
frameborder="0"></iframe> <iframe id="wIframeB" name="myiframeB"
src="b.html" scrolling="no" frameborder="0"></iframe>
在子窗口A、B中我放了一個(gè)ID為hello的P,以方便我們進(jìn)行DOM操作演示,子窗口A、B的主要HTML代碼如下:
<p id="hello">Hello World!</p>
1、在iframe中,父窗口操作子窗口的DOM
建好了父窗口跟子窗口,這樣我們可以在父窗口中,通過(guò)以下iframeA()函數(shù)來(lái)把子窗口A更換P的背景顏色為紅色:
functioniframeA(){//給子窗口A改變ID為hello的背景色vara=getIFrameDOM("wIframeA");a.getElementById('hello').style.background="red";}functiongetIFrameDOM(id){//兼容IE、Firefox的iframe
DOM獲取函數(shù)returndocument.getElementById(id).contentDocument||document.frames[id].document;}
2、在iframe中,子窗口操作父窗口的DOM
在子窗口中,我們可以方便的進(jìn)行父窗口DOM操作,只需要在DOM操作之前添加亦歌parent對(duì)象的方法就可以啦,如:在上面的子窗口B中,我們可以使用下面的代碼把,父窗口中ID為“pHello”的內(nèi)容給替換掉:
-------------------
3、在iframe中,子窗口A操作子窗口B的DOM
既然子窗口可以操作父窗口的window對(duì)象和document對(duì)象,那么子窗口也可以操作另外的子窗口的DOM啦~斷橋殘雪在子窗口B中可以直接使用parent直接調(diào)用父窗口中的getIFrameDOM函數(shù)獲得子窗口A的document對(duì)象,這樣要修改子窗口A的內(nèi)容就很簡(jiǎn)單啦,如以下的代碼:
vara=parent.getIFrameDOM("wIframeA");
===================================================================================
一個(gè)iframe高度自動(dòng)變化的問(wèn)題搞了我半天,網(wǎng)上找了下資料,不是很好,結(jié)合了一下jquery(版本1.3.2),4行代碼即可,完美兼容IE、Firefox、Opera、Safari、Google
Chrome,js如下:
function heightSet(thisFrame){
if($.browser.mozilla || $.browser.msie){
bodyHeight
=window.frames["thisFrameName"].document.body.scrollHeight;
}else{
bodyHeight
=thisFrame.contentWindow.document.documentElement.scrollHeight;
//這行可代替上一行,這樣heightSet函數(shù)的參數(shù)可以省略了
//bodyHeight =
document.getElementById("thisFrameId").contentWindow.document.documentElement.scrollHeight;
}
document.getElementById("thisFrameId").height=bodyHeight;
}
<iframe id="mainFrame" name="mainFrame" frameborder="0"
scrolling="no" src=""onload="heightSet(this)">
</iframe>
引用
this關(guān)鍵字在各種瀏覽器似乎有不同的意思,FF和IE必須要通過(guò)iframe的名字去得到內(nèi)部頁(yè)面高度,而其他瀏覽器則可以用this或ID
引用
都在說(shuō)一個(gè)異步的問(wèn)題,如果你ajax用得特別多,但又不想每次都去設(shè)置,那動(dòng)態(tài)改變iframe肯定達(dá)不到你的代碼清潔要求,沒(méi)辦法,要么你就脫離iframe。我只能說(shuō)說(shuō)一般處理方式,畢竟ajax或動(dòng)態(tài)表單在一般應(yīng)用中只占小數(shù)比例,異步請(qǐng)求后只需在后面加上:
parent.window.heightSet();
CSS定義字體行間距 line-height:xxpx;
CSS定義字體間距
下面我們講述一下CSS的文本屬性,還是先來(lái)看一下文本屬性的詳細(xì)列表:
屬性 | 屬性含義 | 屬性值 |
Word-spacing | 定義了各個(gè)單詞之間的間距 | Normal<length>必須以長(zhǎng)度為單位 |
Letter-spacing | 定義了每個(gè)字母之間的間距 | 同上 |
Text-decoration | 定義文字的“裝飾”樣式 | None|underline|overline| line-through|blink |
Vertical-align | 定義了元素在垂直方向 上的位置 | Baseline|sub|super|top|text-top|middle|bottom|text-bottom <percentage> |
text-transform | 使文本轉(zhuǎn)換為其它形式 | Capitalize|uppercase|lowercase|none |
Text-align | 定義了文字的對(duì)齊方式 | Left|right|center|justify |
Text-indent | 定義了文本的首行的縮進(jìn)方式 | <length>|<percentage> |
Line-height | 定義了文本的行高 | Normal|<unmber>|<length>| <percentage> |
我們可以從表中看到在這里可以定義文本的文字間距、字母間距、裝飾、對(duì)齊方式、縮進(jìn)方式和行高等屬性。
舉個(gè)例子來(lái)看看吧:
CODE:
<p style="letter-spacing:5px;text-align:justify;text-indent: 4em;line-height:17pt">我們看到經(jīng)過(guò)文本屬性處理的文本字與字之間多了間距,行與行之間多了行高,對(duì)齊方式變成了兩端對(duì)齊,并且段首又多縮進(jìn)了兩格。</p>
letter-spacing設(shè)置了字間距為5px,其中5px為一個(gè)長(zhǎng)度單位;text-align設(shè)置了對(duì)齊方式為兩端對(duì)齊;indent設(shè)置了縮進(jìn)格為4em;line-height設(shè)置了行高為17pt
從上面的例子,我們可以看出利用CSS的文本屬性可以方便的對(duì)頁(yè)面中的文本進(jìn)行排版。
來(lái)源:
http://www.cnblogs.com/binaryworms/archive/2010/03/25/1695339.html
HTML小技巧將table邊框改為細(xì)線
HTML制作新手在用TABLE表格時(shí),會(huì)碰到如何改變邊線粗線,因?yàn)槟J(rèn)的TABLE邊線設(shè)置即使是1px 是很粗的。因此會(huì)使用其他一些方法來(lái)制作出細(xì)線邊框,這里介紹一種利用CSS來(lái)實(shí)現(xiàn)細(xì)線的方法,很有效,而且兼容所有瀏覽器。
細(xì)線表格如果單純?cè)O(shè)置邊框,很難保證瀏覽器兼容。常見的做法是利用 CSS2 的 "border-collapse:collapse;" 屬性合并表格邊框;并對(duì) table 元素設(shè)置左邊框和上邊框,對(duì) th 和 td 元素設(shè)置右邊框和下邊框。
HTML:
<table> <tr> <th>table head (row1, col1)</th> <th>table head (row1, col2)</th> <th>table head (row1, col3)</th> </tr> <tr> <td>table data (row1, col1)</td> <td>table data (row1, col2)</td> <td>table data (row1, col3)</td> </tr> <tr> <td>table data (row2, col1)</td> <td>table data (row2, col2)</td> <td>table data (row2, col3)</td> </tr>
</table>
CSS:
table{border-collapse:collapse;border-spacing:0;border-left:1px solid #888;border-top:1px solid #888;background:#efefef;}
th,td{border-right:1px solid #888;border-bottom:1px solid #888;padding:5px 15px;}
th{font-weight:bold;background:#ccc;}
來(lái)源:
http://zhidao.baidu.com/question/263160712.html
css排版時(shí)出現(xiàn):里面的div設(shè)置margin-top值時(shí)外面div會(huì)向下移動(dòng)相應(yīng)距離這是為什么 請(qǐng)哪位高手幫幫忙
<body>
<div class="logon">
<div class="log_bk">
</div>
</div>
</body>
body { margin:0 auto; padding:0px; background:#0A76B0;}
#logon{ background:url(../images/logon-bk.jpg) no-repeat left top;
height:865px; width:1251px;}
.log_bk{ background:url(../images/01.png) no-repeat left top; height:380px;
height:270px; margin:300px 0 180px 460px;}
因?yàn)楸尘笆菆D案所以要設(shè)置高度,我把#logon的背景定位在頂部也不行。
滿意回答 設(shè)置logon的padding: 1px
因?yàn)閘ogon和log_bk垂直方向的margin合并了,如果設(shè)置了logon的padding為1px就可以避免margin合并。
追問(wèn)
好了,剛才把padding值加到里面的div了,不過(guò)兩個(gè)div的margin值為什么會(huì)合并呢?
回答
恩,剛才我寫錯(cuò)了,寫成里面的了。。
這個(gè)是css標(biāo)準(zhǔn)規(guī)定的,垂直方向的margin會(huì)合并。
比如你有很多段落,margin是10px,其實(shí)第一段上面的margin和最后一段下面的margin是10px,且段與段之間的margin也是10px,css標(biāo)準(zhǔn)就是為了保持這個(gè)margin一致才規(guī)定垂直方向margin要合并。
margin合并時(shí)會(huì)取最大的那個(gè)margin,所以合并后logon的margin-top也成了300px了。
來(lái)源
http://www.qianduan.net/css-to-achieve-the-vertical-center-of-the-five-kinds-of-methods.html
利用 CSS 來(lái)實(shí)現(xiàn)對(duì)象的垂直居中有許多不同的方法,比較難的是選擇那個(gè)正確的方法。我下面說(shuō)明一下我看到的好的方法和怎么來(lái)創(chuàng)建一個(gè)好的居中網(wǎng)站。
使用 CSS 實(shí)現(xiàn)垂直居中并不容易。有些方法在一些瀏覽器中無(wú)效。下面我們看一下使對(duì)象垂直集中的5種不同方法,以及它們各自的優(yōu)缺點(diǎn)。(可以看看測(cè)試頁(yè)面,有簡(jiǎn)短解釋。)

方法一
這個(gè)方法把一些 div 的顯示方式設(shè)置為表格,因此我們可以使用表格的 vertical-align property 屬性。
<div id="wrapper">
<div id="cell">
<div class="content">
Content goes here</div>
</div>
</div>
#wrapper {display:table;}
#cell {display:table-cell; vertical-align:middle;}
優(yōu)點(diǎn):
content 可以動(dòng)態(tài)改變高度(不需在 CSS 中定義)。當(dāng) wrapper 里沒(méi)有足夠空間時(shí), content 不會(huì)被截?cái)?/p>
缺點(diǎn):
Internet Explorer(甚至 IE8 beta)中無(wú)效,許多嵌套標(biāo)簽(其實(shí)沒(méi)那么糟糕,另一個(gè)專題)
方法二:
這個(gè)方法使用絕對(duì)定位的 div,把它的 top 設(shè)置為 50%,top margin 設(shè)置為負(fù)的 content 高度。這意味著對(duì)象必須在 CSS 中指定固定的高度。
因?yàn)橛泄潭ǜ叨龋蛟S你想給 content 指定 overflow:auto,這樣如果 content 太多的話,就會(huì)出現(xiàn)滾動(dòng)條,以免content 溢出。
<div class="content">
Content goes here</div>
#content {
position:absolute;
top:50%;
height:240px;
margin-top:-120px; /* negative half of the height */
}
優(yōu)點(diǎn):
適用于所有瀏覽器
不需要嵌套標(biāo)簽
缺點(diǎn):
沒(méi)有足夠空間時(shí),content 會(huì)消失(類似div 在 body 內(nèi),當(dāng)用戶縮小瀏覽器窗口,滾動(dòng)條不出現(xiàn)的情況)
方法三
這種方法,在 content 元素外插入一個(gè) div。設(shè)置此 div height:50%; margin-bottom:-contentheight;。
content 清除浮動(dòng),并顯示在中間。
<div id="floater"></div>
<div id="content">
Content here
</div>
#floater {float:left; height:50%; margin-bottom:-120px;}
#content {clear:both; height:240px; position:relative;}
優(yōu)點(diǎn):
適用于所有瀏覽器
沒(méi)有足夠空間時(shí)(例如:窗口縮小) content 不會(huì)被截?cái)啵瑵L動(dòng)條出現(xiàn)
缺點(diǎn):
唯一我能想到的就是需要額外的空元素了(也沒(méi)那么糟,又是另外一個(gè)話題)
方法四
這個(gè)方法使用了一個(gè) position:absolute,有固定寬度和高度的 div。這個(gè) div 被設(shè)置為 top:0; bottom:0;。但是因?yàn)樗泄潭ǜ叨龋鋵?shí)并不能和上下都間距為 0,因此 margin:auto; 會(huì)使它居中。使用 margin:auto;使塊級(jí)元素垂直居中是很簡(jiǎn)單的。
<div id="content">
Content here</div>
#content {
position:absolute;
top:0;
bottom:0;
left:0;
right:0;
margin:auto;
height:240px;
width:70%;
}
優(yōu)點(diǎn):
簡(jiǎn)單
缺點(diǎn):
IE(IE8 beta)中無(wú)效
無(wú)足夠空間時(shí),content 被截?cái)啵遣粫?huì)有滾動(dòng)條出現(xiàn)
方法五
這個(gè)方法只能將單行文本置中。只需要簡(jiǎn)單地把 line-height 設(shè)置為那個(gè)對(duì)象的 height 值就可以使文本居中了。
<div id="content">
Content here</div>
#content {height:100px; line-height:100px;}
優(yōu)點(diǎn):
適用于所有瀏覽器
無(wú)足夠空間時(shí)不會(huì)被截?cái)?/p>
缺點(diǎn):
只對(duì)文本有效(塊級(jí)元素?zé)o效)
多行時(shí),斷詞比較糟糕
這個(gè)方法在小元素上非常有用,例如使按鈕文本或者單行文本居中。
哪個(gè)方法?
我最喜歡的是方法三,缺點(diǎn)不多。因?yàn)?content 會(huì)清除浮動(dòng),所以可以在它上面放置別的元素,并且當(dāng)窗口縮放時(shí),
居中的 content 不會(huì)把另外的元素蓋住。看例子。
<div id="top">
<h1>Title</h1>
</div>
<div id="content">
Content Here</div>
#floater {float:left; height:50%; margin-bottom:-120px;}
#top {float:right; width:100%; text-align:center;}
#content {clear:both; height:240px; position:relative;}
現(xiàn)在你知道是怎么回事了,現(xiàn)在我們開始創(chuàng)建一個(gè)簡(jiǎn)單但是有趣的網(wǎng)站。最終的樣子是這樣的:

步驟一
以語(yǔ)義化標(biāo)簽開始是很好的。下面是我們的頁(yè)面構(gòu)成:
#floater/*把 content 置中*/
#contred/*centre 盒*/
#side
#logo
#nav/*無(wú)序列表*/
#content
#bottom/*放置版權(quán)等*/
這是我用到的 xhtml 代碼:
A Centred Company
<div id="centered">
<div id="side">
<div id="logo">
<strong><span>A</span> Company</strong></div>
<ul id="nav">
<li><a href="#">Home</a></li>
<li><a href="#">Products</a></li>
<li><a href="#">Blog</a></li>
<li><a href="#">Contact</a></li>
<li><a href="#">About</a></li>
</ul>
</div>
<div id="content">
<h1>Page Title</h1>
Holisticly re-engineer value-added outsourcing after process-centric collaboration and idea-sharing.
Energistically simplify impactful niche markets via enabled imperatives.
Holisticly predominate premium innovation after compelling scenarios.
Seamlessly recaptiualize high standards in human capital with leading-edge manufactured products.
Distinctively syndicate standards compliant schemas before robust vortals.
Uniquely recaptiualize leveraged web-readiness vis-a-vis out-of-the-box information.
<h2>Heading 2</h2>
Efficiently embrace customized web-readiness rather than customer directed processes.
Assertively grow cross-platform imperatives vis-a-vis proactive technologies.
Conveniently empower multidisciplinary meta-services without enterprise-wide interfaces.
Conveniently streamline competitive strategic theme areas with focused e-markets.
Phosfluorescently syndicate world-class communities vis-a-vis value-added markets.
Appropriately reinvent holistic services before robust e-services.</div>
</div>
<div id="bottom">
Copyright notice goes here</div>
步驟二:
現(xiàn)在我們開始用一些基本的 CSS 來(lái)給頁(yè)面添加樣式。把以下代碼放入在我們的 html 頁(yè)面頂部被引入的 style.css。
html, body {
margin:0; padding:0;
height:100%;
}
body {
background:url('page_bg.jpg') 50% 50% no-repeat #FC3;
font-family:Georgia, Times, serifs;
}
#floater {
position:relative; float:left;
height:50%; margin-bottom:-200px;
width:1px;
}
#centered {
position:relative; clear:left;
height:400px; width:80%; max-width:800px; min-width:400px;
margin:0 auto;
background:#fff;
border:4px solid #666;
}
#bottom {
position:absolute;
bottom:0; right:0;
}
#nav {
position:absolute; left:0; top:0; bottom:0; right:70%;
padding:20px; margin:10px;
}
#content {
position:absolute; left:30%; right:0; top:0; bottom:0;
overflow:auto; height:340px;
padding:20px; margin:10px;
}
在我們能夠把 content 垂直居中之前, body 和 html 應(yīng)該被拉伸到 100% 的高度。由于 height
在 padding 和 margin 之內(nèi),所以我們要把它們?cè)O(shè)成 0 以防止因?yàn)楹苄〉?margin 出現(xiàn)滾動(dòng)條。
floater 的 margin-bottom 是 content 高度(400px)的一半, -200px。
現(xiàn)在可以看到一下效果:

#centred 的寬度為 80%。這可以市網(wǎng)頁(yè)隨著顯示器的大小而變化。一般稱作流體布局。設(shè)置 min-width 和
max-width 以避免網(wǎng)頁(yè)過(guò)大或者過(guò)小。 但是 IE 不支持 min/max-width。顯然可以用固定寬度來(lái)代替。
因?yàn)?#centred 是相對(duì)定位的,在它里面我們可以用絕對(duì)定位來(lái)定位元素。設(shè)置 #content 的 overflow:auto;
以避免滾動(dòng)條的出現(xiàn)。IE 不怎么喜歡 overflow:auto; 除非我們指定高度(不是 top 和 bottom 的定位,也不是 %)
因此我們給它指定高度。
步驟三
最后要做的就是再添加點(diǎn)樣式,讓頁(yè)面好看點(diǎn)。從目錄開始吧。
#nav ul {
list-style:none;
padding:0; margin:20px 0 0 0; text-indent:0;
}
#nav li {
padding:0; margin:3px;
}
#nav li a {
display:block; background-color:#e8e8e8;
padding:7px; margin:0;
text-decoration:none; color:#000;
border-bottom:1px solid #bbb;
text-align:right;
}
#nav li a::after {
content:'»'; color:#aaa; font-weight:bold;
display:inline; float:right;
margin:0 2px 0 5px;
}
#nav li a:hover, #nav li a:focus {
background:#f8f8f8;
border-bottom-color:#777;
}
#nav li a:hover::after {
margin:0 0 0 7px; color:#f93;
}
#nav li a:active {
padding:8px 7px 6px 7px;
}
需要注意的是 #centred 的圓角。 CSS3 中,應(yīng)該有 border-radius 屬性來(lái)設(shè)定圓角的半徑(可參考 CSS3之旅: border-radius(圓角) – 糖伴西紅柿)。現(xiàn)在的
流行的瀏覽器都還不支持,除非用 -moz(Molilla Firefox) 或者 -webit(Safari/Webkit) 前綴.

兼容性注意事項(xiàng)
如你所想,IE 是唯一添麻煩的瀏覽器。
#floater 必須指定寬度,否則在任意版本 IE 中,它都啥也不干
IE 6 中目錄被周圍太多的空間打斷
IE 8 有多余空間(作者遺漏)
更多的想法
利用居中的網(wǎng)頁(yè)可以做很多有意思的事情。我在重新設(shè)計(jì) SWFObject Generator 2.0 (使用 SWFObject2.0 生成代碼)使用了這個(gè)想法。這里有另外的一個(gè)想法。
資料
以下是我參考的一些資料,推薦閱讀。
Understanding vertical-align, or “How (Not) To Vertically Center Content”
Vertical centering using CSS
Vertical Centering in CSS
糖伴西紅柿說(shuō):
水平居中經(jīng)常用,其實(shí)垂直居中也很有用的。平時(shí)用的最多的應(yīng)該是方法五了,算是個(gè)小技巧吧。
來(lái)源:http://www.cnblogs.com/yangzhixiao/archive/2011/07/22/2113731.html
代碼如下<MARQUEE>滾動(dòng)文字</MARQUEE>
<marquee style="WIDTH: 388px; HEIGHT: 200px" scrollamount="2" direction="up" >
< div align="left" ><br />
< /div >
< center ><font face="黑體" color="#008000" size="4" ></font ></center >
< div align="left" ><br />
< /div >
< center >
< p ><font color="#ff6600" size="4" >滾動(dòng)文字</font ></p >
< p ><font color="#ff4500" size="4" >滾動(dòng)文字</font ></p >
< p ><font color="#ff3300" size="4" >滾動(dòng)文字</font ><br />
< br />
< /p >
< /marquee >
marquee 參數(shù):
BGColor:滾動(dòng)文本框的背景顏色。
Direction:滾動(dòng)方向設(shè)置,可選擇Left、Right、up和down。
scrolldelay:每輪滾動(dòng)之間的延遲時(shí)間,越大越慢。
scrollamount:一次滾動(dòng)總的時(shí)間量,數(shù)字越小滾動(dòng)越慢。
Behaviour:滾動(dòng)的方式設(shè)置,三種取值:Scroll(循環(huán)滾動(dòng)) lide(單次滾動(dòng))、Alternate(來(lái)回滾動(dòng))。
Align:文字的對(duì)齊方式設(shè)置。可選擇Middle(居中)、Bottom(居下)還是Top(居上)。
Width:滾動(dòng)文本框的寬度,輸入一個(gè)數(shù)值后從后面的單選框選擇in Pixels(按像素)或是in Percent(按百分比)。
Height:滾動(dòng)文本框的高度,輸入一個(gè)數(shù)值后從后面的單選框選擇in Pixels(按像素)或是in Percent(按百分比)。
loop:滾動(dòng)次數(shù)。默認(rèn)為infinite
hspace、vspace:前后、上下的空行。
滾動(dòng)字幕會(huì)讓很多人感到興奮,特別是第一次使用滾動(dòng)字幕時(shí),會(huì)愛不釋手。滾動(dòng)字幕我也做得不少了,對(duì)它也不會(huì)興奮了,所以現(xiàn)在也用得不多了。有不少朋友常 問(wèn)到這是怎么做的,現(xiàn)在做一個(gè)詳細(xì)的專題,讓你更全面地了解一下。
滾動(dòng)字幕在FrontPage的組件里有,但是FrontPage這個(gè)軟件只能支持單行文字,一出現(xiàn)多行文字它就無(wú)能為力了,而且它只能支持一行滾動(dòng)! (如果出現(xiàn)只能滾動(dòng)一行的情況,解決辦法是把這段代碼嵌入到JavaScript的document.write里面,請(qǐng)看下面例d的詳細(xì)說(shuō) 明)Dreamweaver也只能用編寫HTML代碼的方法。所以強(qiáng)烈建議用記事本打開網(wǎng)頁(yè)源代碼來(lái)編輯。
1.建立第一個(gè)滾動(dòng)字幕。代碼:
<marquee scrollAmount=2 width=300>靚麗風(fēng)景線</marquee>
效果如: 靚麗風(fēng)景線
2.各參數(shù)詳解:
a)scrollAmount。它表示速度,值越大速度越快。如果沒(méi)有它,默認(rèn)為6,建議設(shè)為1~3比較好。
b)width和height,表示滾動(dòng)區(qū)域的大小,width是寬度,height是高度。特別是在做垂直滾動(dòng)的時(shí)候,一定要設(shè)height的值。
c)direction。表示滾動(dòng)的方向,默認(rèn)為從右向左:←←←。可選的值有right、down、up。滾動(dòng)方向分別為:right表示→→→,up 表示↑,down表示↓。
d)scrollDelay,這也是用來(lái)控制速度的,默認(rèn)為90,值越大,速度越慢。通常scrollDelay是不需要設(shè)置的。
e)behavior。用它來(lái)控制屬性,默認(rèn)為循環(huán)滾動(dòng),可選的值有alternate(交替滾動(dòng))、slide(幻燈片效果,指的是滾動(dòng)一次,然后停止 滾動(dòng))
3.實(shí)例:
a)如何給滾動(dòng)字幕加超鏈接?這跟平時(shí)的超鏈接是完全一樣的。只要在文字外面加上<a href=***>和</a>就可以了。如下效果,代碼是<marquee scrollAmount=2 width=300><a href=http://www.cctv.com>中央電視臺(tái)</a></marquee>,點(diǎn)擊中央電視臺(tái)就可以進(jìn)入 了:
中央電視臺(tái)
b)如何制作當(dāng)鼠標(biāo)停留在文字上,文字停止?jié)L動(dòng)?
代碼如:
<marquee scrollAmount=2 width=300 onmouseover=stop() onmouseout=start()>文字內(nèi)容</marquee>
效果如:
文字內(nèi)容
c)交替效果。代碼如:
<marquee scrollAmount=2 width=99 behavior=alternate>文字內(nèi)容</marquee>
效果如:
文字內(nèi)容
d)多行文本向上滾動(dòng)。代碼如:
<marquee scrollAmount=2 width=300 height=160 direction=up>·早晨好啊!<br>·空氣好清新啊<br>·你還好嗎<p>·<a href=http://www.cctv.com>靚麗風(fēng)景線</a></marquee>
效果如:
·早晨好啊!
·空氣好清新啊
·你還好嗎
·靚麗風(fēng)景線
·注意:如果你的網(wǎng)頁(yè)經(jīng)過(guò)了FrontPage編輯,保存之后,只能滾動(dòng)一行,這時(shí)候你發(fā)現(xiàn)你原 來(lái)的代碼順序已經(jīng)變了,My god!解決的辦法是,找出原來(lái)的代碼,把它嵌入到JavaScript的document.write中即可,上述代碼寫為:
<script>document.write('<marquee scrollAmount=2 width=300 height=160 direction=up>·早晨好啊!<br>·空氣好清新啊<br>·你還好嗎 <p>·<a href=http://www.cctv.com>靚麗風(fēng)景線</a></marquee>')< /script>
e)改變滾動(dòng)字幕的顏色?可以用樣式表來(lái)控制。如下效果,代碼是<marquee scrollAmount=2 width=300><a style=color:CC6600>你還好嗎</a></marquee>。
你還好嗎
圖片滾動(dòng)
用<img src=相對(duì)路徑/文件名>的語(yǔ)句。并且要注意圖片名不要中文,要注意區(qū)分英文大小寫。
圖片做超鏈接
用<a href=>和</a>把<img>包圍,并且img必須設(shè)border=0,否則圖片會(huì)出現(xiàn)藍(lán)框。正確的例子如:& lt;a href=http://www.webshu.com><img src=http://www.cnblogs.com/j/01.jpg border=0></a>
其中a href=表示超鏈接,這是最常用的。練習(xí)的方法也很簡(jiǎn)單,就是平時(shí)用FP或DW做網(wǎng)頁(yè)的時(shí)候,要多查看源代碼。
多張圖片排列滾動(dòng)
通常圖片和圖片之間用<br>(回行)或<p style=margin-top:9>(精確調(diào)整圖片間的距離)來(lái)鏈接。也可以把你的圖片先用表格排版,然后把這個(gè)表格的所有語(yǔ)句也加入到 marquee中,讓這個(gè)表格來(lái)滾動(dòng)。
代碼<script>document.write('<marquee scrollAmount=2 width=340 height=160 direction=up onmouseover=stop() onmouseout=start()><a href=http://www.webshu.com><img src=http://www.cnblogs.com/j/01.jpg border=0></a></marquee>')</script>
來(lái)源:
http://m.tkk7.com/jlins-you/archive/2012/06/22/381292.html
json除了可以用于前臺(tái)傳遞,還可用于后臺(tái)之間傳遞。它可以傳遞List,Map,Bean等類型的數(shù)據(jù)。
例如: User u1=new User();
u1.setUsername("zy");
u1.setPassword("123");
User
u2=new
User();
u2.setUsername("msl");
u2.setPassword("456");
List list =
new ArrayList(); //把兩個(gè)對(duì)象放進(jìn)list中
list.add(u1);
list.add(u2);
JSONArray jsonArray = JSONArray.fromObject( list ); //把list放進(jìn)json數(shù)組
Map map = new HashMap();
map.put("message", "111");
map.put("users", jsonArray); //把json數(shù)組做為一個(gè)值放進(jìn)Map中
JSONObject jsonObject =
JSONObject.fromObject(map); //把map放進(jìn)json對(duì)象中
PrintWriter out =
response.getWriter();
out.print(jsonObject); //
傳遞json
傳遞的json格式為:
{"message":"111","users":[{"password":"123","username":"zy"},{"password":"456","username":"msl"}]}
在接收端的java文件中取:
returnJson是從輸入流中得到的json格式的字符串。輸出為:
{"message":"111","users":[{"password":"123","username":"zy"},
{"password":"456","username":"msl"}]}
if(returnJson !=null&& returnJson !=""){
String
strJson = returnJson.replace("?(", "").replace(")", "").replace(";",
"");
if(strJson.startsWith("{")){
JSONObject
jsonObject = JSONObject.fromObject(strJson);
JSONArray jsonArray =
JSONArray.fromObject(jsonObject.get("users"));
for (int i =
0, len = jsonArray.size(); i < len; i++) {
JSONObject jsonUser =
jsonArray.getJSONObject(i);
User vo = (User)JSONObject.toBean(jsonUser,
User.class);
System.out.println(vo.getUsername()+":"+vo.getPassword());
}
}
}
更多信息請(qǐng)查看 java進(jìn)階網(wǎng)http://www.javady.com
來(lái)源 :
http://blog.csdn.net/guanghua2009/article/details/6644272 我想做一個(gè)可以動(dòng)態(tài)添加刪除div的功能。中間遇到一個(gè)問(wèn)題,最后在phpchina問(wèn)答區(qū)版主的熱心幫助下解答了(答案在最后) 使用到的jquery方法和思想就是:事件的綁定和銷毀(unbind),另外還可以使用clone,通過(guò)克隆可以很好的解決這個(gè)問(wèn)題 相關(guān)描述如下
功能:點(diǎn)擊增加,自動(dòng)添加一個(gè)iptdiv 點(diǎn)擊 iptdiv后的 X 自動(dòng)刪除當(dāng)前div
問(wèn)題:默認(rèn)存在的(也就是頁(yè)面加載進(jìn)來(lái)的)的那個(gè)iptdiv 后的 X 點(diǎn)擊有效,可以刪除當(dāng)前 iptdiv 但是 jquery 動(dòng)態(tài)添加進(jìn)的 iptdiv 則點(diǎn)擊沒(méi)有效果。請(qǐng)各位大俠給看看,提供些意見。我要的就是動(dòng)態(tài)添加和刪除div 問(wèn)題代碼如下:
<script type="text/javascript" src="jquery.js"></script>
<body>
<form action="" method="post" enctype="multipart/form-data">
<label>請(qǐng)選擇上傳的圖片</label>
<a href="javascript:addimg()" >增加圖片</a>
<div id="mdiv">
<div >
<input type="file" name="img[]" /><a href="#" name="rmlink">X</a>
</div>
</div>
<input type="submit" name="submit" value="上傳圖片" />
</form>
<script type="text/javascript" >
$(document).ready(function(){
$("a[name=rmlink]").click(function(){
$(this).parent().remove();
})
})
function addimg(){
$("#mdiv").append('<div ><input type="file" name="img[]" /><a href="#" name="rmlink">X</a></div>');
}
</script>
用jquery方法的綁定偵聽和銷毀來(lái)解決動(dòng)態(tài)div的增加刪除:
正確代碼:
<script type="text/javascript" >
$(document).ready(function(){
bindListener();
})
function addimg(){
$("#mdiv").append('<div ><input type="file" name="img[]" /><a href="#" name="rmlink">X</a></div>');
// 為新元素節(jié)點(diǎn)添加事件偵聽器
bindListener();
}
// 用來(lái)綁定事件(使用unbind避免重復(fù)綁定)
function bindListener(){
$("a[name=rmlink]").unbind().click(function(){
$(this).parent().remove();
})
}
</script>
這中間就是存在一個(gè)事件綁定的過(guò)程,如果沒(méi)有的話通過(guò)js加進(jìn)來(lái)的div內(nèi)不事件并不會(huì)被執(zhí)行,添加了偵聽事件功能后才能正確運(yùn)行
用jquery的clone方法來(lái)解決動(dòng)態(tài)div的增加刪除:
這里還有更好的寫法,我做了些許的修改,也許弄巧成拙了。但是功能實(shí)現(xiàn)了,更多的請(qǐng)參考phpchina論壇的幫助:http://bbs.phpchina.com/viewthread.php?tid=180911&extra=&page=1
<body>
<div style="display:none;">
<!--clone div start-->
<div >
<input type="file" name="img[]" /><a href="#" name="rmlink">X</a>
</div>
</div>
<!--clone div end-->
<form action="dowater.php" method="post" enctype="multipart/form-data">
<label>請(qǐng)選擇上傳的圖片</label>
<a href="#" id="addimg" >增加圖片</a>
<div id="mdiv">
<div >
<input type="file" name="img[]" /><a href="#" name="rmlink">X</a>
</div>
</div>
<input type="submit" name="submit" value="上傳圖片" />
</form>
<script type="text/javascript" >
var temp;
$(document).ready(function(){
temp = $(".iptdiv:first");
$("a[name=rmlink]").click(function(){
$(this).parent().remove();
})
$("#addimg").click(function(){
temp.clone(true).appendTo($("#mdiv"));
})
})
</script>
</body>