一文搞定 換行、(硬)回車、軟回車的區別
Windows系統中打開txt文檔時,最下面的“Windows(CRLF)”是什么提示呢?
和這個問題有關概念的一個應用場景是:當你需要在不同操作系統平臺(例如Unix和Windows)之間切換時,尤其是由一平臺生成的文檔在另一平臺查看時,就必須搞清楚 回車”(Carriage Return, CR)和“換行”(Line Feed, LF)這兩個概念之間的區別。
Windows平臺中輸入“Enter”輸入幾個符號?他們具體是什么?
為回答這個問題,從下面的實驗開始。
在Windows下創建一個txt文檔,輸入'123456'六個數字并“回車\enter”,
保存后,查看屬性,占8個字節,即輸入了八個字符,則剛才的“回車/enter”一定占了兩個字節!
這兩個字節是啥呢?
用UltraEdit軟件打開該文件,查看這是個符號的十六進制,可得:第一個符號的ASCII碼為31(十六進制),對于的符號為為數字'1';…;第七個符號的ASCII碼為 0D(十六進制),對應的符號為CR(回車);最后一個字符即第八個符號的ASCII碼為 0A(十六進制),對應的符號為LF (換行)。
結論:Windows下處理回車的效果是:回車換行,即兩個字符(\r\n ).
Windows平臺下,C語言中輸出‘\n’到txt文檔時,輸出的是一個字符還是兩個呢?
答案是:兩個字符\r\n.
在Windows系統下運行下面兩個程序:
程序一:
#include <stdio.h>
void main( )
{
FILE *fp;
if((fp=fopen("test.txt","w"))==NULL) {
printf("Open the test.txt file error\n");
}
for(int i=0;i<10;i++){
fprintf(fp,"test\n");
}
fclose(fp);
}
程序二:
#include <stdio.h>
void main( )
{
FILE *fp;
if((fp=fopen("test.bin","wb"))==NULL) {
printf("Open the test.bin file error\n");
}
for(int i=0;i<10;i++){
fprintf(fp,"test\n");
}
fclose(fp);
}
程序一輸出文件test.txt的大小是60字節,程序二輸出文件大小是50字節,用記事本打開程序一的輸出沒有什么問題,每行一個test. 打開程序二的輸出文件test.bin時發現所有的test連成一行,test之間是一個黑色方框符號分隔。用UltraEdit-32以16進制編輯模式打開test.bin可以查看到黑色方框符號就是0A也就是\n,打開test.txt則會發現換行是\r\n,這就是兩個文件大小相差10字節的原因。Unix類系統用戶打開windows中的文件就會遇到這種苦惱。
為什么會有這種區別呢?
由于Unix系統是基于C語言編寫的,C語言中使用\n表示換行,而在實際的文件中換行符號需要同操作系統一致,所以當我們在C中使用fopen打開一個文本文件時流實現了實際換行符與C中\n之間的轉換。在Windows中當用fopen打開文本文件,然后從中讀到\r\n時流會轉換為\n,而當我們往文件中寫入\n時流會轉換為\r\n。程序一是打開文本文件,程序二打開的是二進制文件,因為流只對文本文件進行換行表示的轉換,以二進制模式打開流不會做任何處理。所以當你以二進制模式打開一個文本文件時將產生錯亂,你必須親自將\r\n解釋為\n,同樣的問題也會出現在以文本模式打開二進制文件的情況.這也解釋了為什么Unix類系統中的文件不區分文本文件和二進制文件的原因。
軟回車 硬回車的區別
硬回車:enter
作用:換行的同時分隔段落;
在word中敲擊Enter鍵產生的那個彎曲的小箭頭,占兩個字節。如下圖所示:
軟回車: Shift + Enter
作用:換行,但是并不換段,即前后兩段文字在 Word 中屬于同一“段”。在應用格式時能看出明顯區別,體會到這一點。
軟回車只占一個字節,在word中是一個向下的箭頭。符如下圖所示:
當我們需要將從網頁上找到資料復制粘貼到word文檔中時,經常看到軟回車符號,這是因為軟回車在網頁設計中具有舉足輕重的地位的:
軟回車能使前后兩行的行間距大幅度縮小,因為它不是段落標記,要和法定的段落標記——硬回車區別出來。硬回車的html代碼是<p>..</p>,段落的內容就夾在里面,而軟回車的代碼很精悍:<br>。因此在網頁中想用到軟回車,只需切換到代碼頁面,鍵入軟回車的代碼即可。
小結:
最后,本篇筆記開始的那個問題就很明確了:“Windows(CRLF)”是編輯器對Windows系統下,“回車”操作符等效為“\r\n”的一個提示。其實,在windows系統中的很多編輯環境中都有很多類似的提示,你能發現哪些呢?歡迎在評論區補充...
節、分區和分割線
這些標記用于將頁面分成多個部分。熟練地掌握這些標記將意味著構建出具有良好的結構和布局的頁面,使其更加友好和易于閱讀。
分區 - <div> </div>
div標記定義了HTML文件中的一個部分或分區。它通常包含需要組合在一起的標題、段落、表格或其他元素。通過設置<div class="">與css一起使用來設置網頁某個部分的顯示。
段落 - <p> </p>
p標記用來定義文本的段落,就像你在書中看到的那樣,一旦文本達到屏幕邊緣就會自動折到下一行。當另一個<p>標記用于開始下一個段落時,瀏覽器將在段落之間添加一些空白。p標記具有以下屬性:
- align="" - 段落中文本的對齊方式:left, center or right
- width="" - 段落將占據頁面的固定寬度或百分比,默認為100%
內聯 - <span> </span>
span標記用于將內聯元素組合在一起,例如句子中的幾個單詞,以便僅對這些單詞應用css樣式。span標記可以在div和p標記中使用,因為它不會創建新的塊。
換行 - <br>
br標記相當于一個回車符,用于在新行開始文本。一行中的多個<br>標記將在網頁上創建一個很大的垂直空間。
水平分隔線 - <hr>
hr標記通常被稱為HTML行分隔符標記,創建一條通常用于視覺上分隔頁面的水平線。它具有以下屬性:
- width="" - 線條將占用固定寬度,默認100%寬度
- color="" - 線條顏色
- noshade - 取消3D外觀,創建一條平的實線分隔線
不換行 - <nobr> </nobr>
出于某種原因,你希望文本在一條直線上繼續,而不是在屏幕的邊緣換行,可以使用nobr。注意:這將迫使用戶向右滾動以查看行的其余部分,這是一種糟糕的設計。
例子
下面是以上標記的示例:
瀏覽器顯示內容如下所示:
本標簽: 32
- <html></html>,創建一個HTML文檔;
- <head></head>,設置文檔標題和其它在網頁中不顯示的信息;
- <title></title>,設置文檔的標題;
- <h1></h1>,最大的標題;
- <pre></pre>,預先格式化文本;
- <u></u>,下劃線
- <b></b>,黑體字;
- <i></i>,斜體字;
- <tt></tt>,打字機風格的字體;
- <cite></cite>,引用,通常是斜體;
- <em></em>,強調文本(通常是斜體加黑體);
- <strong></strong>,加重文本(通常是斜體加黑體);
- <font,size="",color=""></font>,設置字體大小從1到7,顏色使用名字或RGB的十六進制值;
- <BASEFONT></BASEFONT>,基準字體標記;
- <big></big>,字體加大;
- <SMALL></SMALL>,字體縮小;
- <STRIKE></STRIKE>,加刪除線;
- <CODE></CODE>,程式碼;
- <KBD></KBD>,鍵盤字;
- <SAMP></SAMP>,范例;
- <VAR></VAR>,變量;
- <BLOCKQUOTE></BLOCKQUOTE>,向右縮排;
- <DFN></DFN>,述語定義;
- <ADDRESS></ADDRESS>,地址標記;
- <sup></SUP>,上標字;
- <SUB></SUB>,下標字;
- <xmp>...</xmp>固定寬度字體(在文件中空白、換行、定位功能有效)
- <plaintext>...</plaintext>固定寬度字體(不執行標記符號);
- <listing>...</listing>,固定寬度小字體;
- <font,color=00ff00>...</font>字體顏色;
- <font,size=1>...</font>最小字體;
- <font,style,='font-size:100,px'>...</font>無限增大.
格式標簽: 16
- <p></p>,創建一個段落;
- <p,align="">,將段落按左、中、右對齊;
- <br>,換行,插入一個回車換行符;
- <blockquote></blockquote>,從兩邊縮進文本;
- <dl></dl>,列表標簽,定義列表;
- <dt>,定義列表標題;
- <dd>,定義列表內容;
例:
<dl>
<dt>標題1</dt>
<dd>內容11</dd>
<dd>內容12</dd>
<dt>標題2</dt>
<dd>內容21</dd>
<dd>內容22</dd>
</dl>
- <ol></ol>,列表標簽,定義一個標有數字的列表;
- <ul></ul>,列表標簽,定義一個標有圓點的列表;
- <li>,放在每個列表項之前; 放在<ol></ol>之間則每個列表項加上一個數字,放在<ul></ul>之間則每個列表項加上一個圓點;
- <div,align=""></div>,分區標簽,用來排版大塊HTML段落,也用于格式化表;
- <MENU>,選項清單;
- <DIR>,目錄清單;
- <nobr></nobr>,強行不換行;
- <hr,size='9',width='80%',color='ff0000'>水平線(設定寬度);
- <center></center>,水平居中.
鏈接標簽: 7
- <a,href="URL"></a>,創建超文本鏈接;
- <a,href="mailtEMAIL">
- </a>,創建自動發送電子郵件的鏈接;
- <a,name="name"></a>,創建位于文檔內部的書簽;
- <a,href="#name"></a>,創建指向位于文檔內部書簽的鏈接;
- <BASE>,文檔中不能被該站點辨識的其它所有鏈接源的URL;
- <LINK>,定義一個鏈接和源之間的相互關系;
鏈接標簽注解:
target="...",決定鏈接源在什么地方顯示(用戶自定義的名字,_blank,_parent,_self,_top);
rel="...",發送鏈接的類型;
rev="...",保存鏈接的類型;
accesskey="...",指定該元素的熱鍵;
shape="...",允許我們使用已定義的形狀定義客戶端的圖形鏡像(default,rect,circle,poly);
coord="...",使用像素或者長度百分比來定義形狀的尺寸;
tabindex="...",使用定義過的tabindex元素設置在各個元素之間的焦點獲取順序(使用tab鍵使元素獲得焦點).
表格標簽: 21
- <table></table>,創建一個表格;
- <tr></tr>,表格中的每一行;
- <td></td>,表格中一行中的每一個格子;
- <th></th>,設置表格頭:通常是黑體居中文字;
- <table,cellspacing="">,設置表格格子之間空間的大小;
- <table,border="">,設置邊框的寬度;
- <table,cellpadding="">,設置表格格子邊框與其內部內容之間空間的大小;
- <table,width="">,設置表格的寬度.用絕對像素值或總寬度的百分比;
- <table,align="">,設置表格格子的水平對齊方式(left,center,right,justify);
- <tr,align="">,設置表格格子的水平對齊方式(left,center,right,justify);
- <tr,valign="">,設置表格格子的垂直對齊方式(baseline,bottom,middle,top);
- <td,colspan="">,設置一個表格格子跨占的列數(缺省值為1);
- <td,rowspan="">,設置一個表格格子跨占的行數(缺省值為1);
- <td,nowrap>,禁止表格格子內的內容自動斷行;
- <CAPTION></CAPTION>,表格的標題;
- <COLGROUP></COLGROUP>,定義多個列為一組列;
- <TABLE></TABLE>,創建一個表格;
- <THEAD></THEAD>,定義表格的頁眉;
- <COL>,定義一個列組中的列,以便對它們能夠同時設置有關屬性;
- <TBODY></TBODY>,定義一個表格的實體;
- <TFOOT></TFOOT>,定義一個表格的頁腳;
表單標簽: 18
- <form></form>,創建表單;
action="...",接收數據的服務器的URL;
method="...",HTTP的方法(get,,post),其中get是被反對使用的;
enctype="...",指定MIME(Internet媒體類型);
onsubmit="...",當提交表單時發生的內部事件;
noreset="...",在重新設置表單時發生的內部事件;
target="...",決定把內容顯示在什么地方(_blank,_parent,_self,_top)
- <select,multiple,name="name",size=""></select>,創建滾動菜單,size設置在需要滾動前可以看到的表單項數目;
- <option>,設置每個表單項的內容;
- <select,name="name"></select>,創建下拉菜單;
- <textarea,name="name",cols=40,rows=8></textarea>,創建一個文本框區域,列的數目設置寬度,行的數目設置高度;
- <input,type="checkbox",name="name">,創建一個復選框,文字在標簽后面;
- <input,type="radio",name="name",value="">,創建一個單選框,文字在標志后面;
- <input,type=text,name="foo",size=20>,創建一個單行文本輸入區域,size設置以字符串的寬度;
- <input,type="submit",value="name">,創建提交(submit)按鈕;
- <input,type="image",border=0,name="name",src="name.gif">,創建一個使用圖象的提交(submit)按鈕;
- <input,type="reset">,創建重置(reset)按鈕;
- <BUTTON></BUTTON>,創建一個按鈕;
disabled="...",把按鈕的狀態設置為不能;
name="...",按鈕的控制名,value="...",按鈕的值;
type="...",按鈕的類型(button,,submit,,reset);
- <FIELDSET></FIELDSET>,把相互關聯的控件組合成一組;
- <ISINDEX>,提示用戶輸入;
- <LABEL></LABEL>,為一個控件提供標簽;
- <LEGEND></LEGEND>,為FIELDSET元素指定一標題;
- <SELECT></SELECT>,為用戶做選擇創建各個選項;
- <TEXTAREA></TEXTAREA>,創建一個允許用戶多行輸入的區域.
表單標簽注解:
type="...",用于輸入控件的類型(text,password,checkbox,radio,submit,reset,file,hidden,image,button);
name="...",控件的控制名(要求是除了submit和reset之外的任何名字);
value="...",控件的初始值;
checked="...",把一個單選鈕設置為選中的狀態;
disabled="...",把控件的狀態設置為不能使用;
readonly="...",只對輸入密碼的文本框使用;
size="...",表示以像素為單位的除了文本框和密碼框控件之外的其它控件的寬度,它是用來指定字符的數目;
src="...",一個圖像控件的URL;
maxlength="...",指定可以輸入的最多的字符數目;
alt="...",另外一種文本描述;
usemap="...",到客戶端圖形鏡像的URL;
align="...",被反對.控制對齊方式(left,,center,,right,,justify);
tabindex="...",通過定義的tabindex值確定在不同元素之間獲得焦點的順序;
onfocus="...",當元素獲得焦點時發生的事件;
onblur="...",當元素失去焦點時發生的事件;
onselect="...",當元素被選中時發生的事件;
onchang="...",當元素狀態被改變時發生的事件;
accept="...",允許上載的文件類型.
幀標簽(框架標簽): 27
- <frameset></frameset>,放在一個幀文檔的<body>標簽之前,也可以嵌在其他幀文檔中;
- <frameset,rows="value,value">,定義一個幀內的行數,可用像素值或高度百分比;
- <frameset,cols="value,value">,定義一個幀內的列數,可用像素值或寬度百分比;
- <frame>,定義一個幀內的單一窗或窗區域;
- <noframes></noframes>,定義在不支持幀的瀏覽器中顯示什么提示;
- <frame,src="URL">,規定幀內顯示的HTML文檔;
- <frame,name="name">,命名幀或區域以便別的幀可以指向它;
- <frame,marginwidth="">,定義幀左右邊緣的空白大小,必須大于等于1;
- <frame,marginheight="">,定義幀上下邊緣的空白大小,必須大于等于1;
- <frame,scrolling="">,設置幀是否有滾動欄,其值可以是"yes","no",或"auto";
- <frame,noresize>,禁止用戶調整一個幀的大小;
- <IFRAME></IFRAME>,創建一個內聯的幀;
scr="...",定義在幀中顯示的內容的來源;
frameborder="...",定義幀之間的邊界(0或1);
align="...",被反對,控制對齊方式(left,,center,,right,,justify);
height="...",幀的高度,width="..."幀的寬度;
- <marquee>...</marquee>,普通卷動;
- <marquee,behavior=slide>...</marquee>,滑動;
- <marquee,behavior=scroll>...</marquee>,預設卷動;
- <marquee,behavior=alternate>...</marquee>,來回卷動;
- <marquee,direction=down>...</marquee>,向下卷動;
- <marquee,direction=up>...</marquee>,向上卷動;
- <marquee,direction=right></marquee>,向右卷動;
- <marquee,direction='left'></marquee>,向左卷動;
- <marquee,loop=2>...</marquee>,卷動次數;
- <marquee,width=180>...</marquee>,設定寬度;
- <marquee,height=30>...</marquee>,設定高度;
- <marquee,bgcolor=FF0000>...</marquee>,設定背景顏色;
- <marquee,scrollamount=30>...</marquee>,設定卷動距離;
- <marquee,scrolldelay=300>...</marquee>,設定卷動時間;
- <img,src="">,插入圖片,參數有:width="寬",alt="說明文字",height="高",boder="邊框".
文檔整體屬性標簽: 10
- <body,bgcolor="">,設置背景顏色.使用名字或RGB的十六進制值;
- <body,background="">,設置背景圖片;
- <body,bgsound="">,設置背景音樂;
- <body,bgproperties="fixed">,固定背景圖片(IE適用);
- <body,text="">,設置文本顏色.使用名字或RGB的十六進制值;
- <body,link="">,設置鏈接顏色.使用名,字或RGB的十六進制值;
- <body,vlink="">,設置已使用的鏈接的顏色.使用名字或RGB的十六進制值;
- <body,alink="">,設置正在被擊中的鏈接的顏色.使用名字或RGB的十六進制值;
- <body,topmargin="">,設置頁面的上邊距;
- <body,leftmargin="">,設置頁面的左邊距.