Head First HTML與CSS閱讀筆記(二)


上一篇Head First HTML與CSS閱讀筆記(一)中總結了《Head First HTML與CSS》前9章的知識點,本篇則會將剩下的10~15章內容進行總結,具體如下所示。

div與Span

此元素應該是HTML中使用頻度最高的元素之一,div將屬於一個邏輯區的元素包含起來;

如果添加div有助於將頁面分解為邏輯區,保證結構清晰並便於指定樣式,則應該使用div,否則,過多的div只會讓頁面更加復雜,不應濫用;

width屬性指定元素內容區的寬度,不包括內邊距,邊框和外邊距的寬度;

整個元素寬度 = 內容區寬度 + 兩側內邊距寬度 + 兩側邊框寬度 + 兩側外邊距寬度;

塊元素默認的寬度是“auto”,允許內容填滿可用的全部空間,一般不用指定元素的高度,默認為auto;

text-align只能在塊元素上設置,對塊元素中所有內聯內容對其;

CSS子孫選擇器:注意#id h2與#id>h2的區別,后者是直接子元素,前者則是#id下的所有子孫h2元素;

line-height屬性值可直接使用數字表示,如:

#elixirs {
  line-height: 1;
}

表示#elixirs <div>中的個元素行高是其自己字體大小的1倍;

一些屬性的簡寫形式:

background: white url(image/coll.png) repeat-x;
border: #007e7e solid thin;
font: font-style font-variant font-weight font-size/line-height font-family;
如:
font: small/1.6em Verdana, Helvetica, sans-serif;

偽類

a元素的幾種狀態:link, visited, hover, focus(焦點在此鏈接上時), active(第一次單擊鏈接時),偽類舉例:

#elixirs a:link {
  color: #007e7e;
}

#elixirs a:visited {
  color: #333333;
}

偽類還有很多,如first-child,last-child等,偽類會根據元素的狀態來指定元素的樣式;

nth-child偽類,狀態是一個元素相對於它的兄弟元素的數字順序;

p:nth-child(even) {          //偶數
  background-color: red;
}

p:nth-child(odd) {            //奇數
  background-color: green;
}

p:nth-child(2n) {
  background-color: red;
}

p:nth-child(2n+1) {
  background-color: green;
}

層疊

在所有樣式表中,最優先的是作者的樣式表,其次是讀者的樣式表,最后才是瀏覽器的樣式表,如果讀者在樣式表的一個屬性聲明最后加上“!important”就可覆蓋作者的樣式;

布局與定位

並排放置兩個內聯元素時,兩元素的外邊距不會折疊,上下放置兩個塊元素時,會把他們共同的外邊距折疊折疊在一起,折疊的外邊距高度就是最大的外邊距高度;

即使一個元素嵌套在另一個元素內,如果外面元素沒設置邊框,這兩個外邊距也會折疊;

流體布局

擴展瀏覽器窗口時,頁面中的內容會擴展以適應頁面;

浮動float

浮動一個元素步驟:

1. 指定一個標識(id);
2. 指定一個寬度,所有浮動元素都必須有一個寬度;
3. 使用float: right/left是元素浮動;

浮動元素會被從正常流中刪除,但是在對內聯元素定位時,會考慮浮動元素的邊界,會圍繞着浮動元素;

浮動一個元素時,如果希望它在某個元素的后面,就要移動浮動元素的HTML,讓它緊挨着放在那個元素的下面;

設置兩欄布局的話,可以采用右側邊欄浮動,左側主內容區使用margin-right指定距右側的距離,如邊欄總寬度330px,則設置margin-right: 330px;

使用了浮動,下面的元素則會上移,可能會出現重疊的問題,應使用clear屬性,clear會要求當元素流入頁面時,在這個元素的左邊,右邊或兩邊不允許有浮動內容,如:clear: right/left/both;

浮動元素的外邊距不會折疊;

浮動布局適合在一個文本段落中浮動圖像,讓文本圍繞着這個圖像;

缺點:必須把需要浮動的<div>移到其父元素之下最前面位置,另外,無法創建兩個高度相同的列;

凍結布局

當用戶調整屏幕大小時,設計仍能保持原樣,指定頁面的總寬度,調整瀏覽器大小,寬度不會變化;

凝膠布局

凝膠布局會鎖定頁面中內容區的寬度,但會將它在瀏覽器中居中,使用margin: 0 auto;

很多博客網站采用此種布局;

缺點:內容不會擴展來填滿整個瀏覽器窗口;

絕對定位

使用position屬性制定這個元素要絕對定位,例如:

#sidebar {
  position: absolute;
  top: 100px;
  right: 200px;
  width: 280px;
}

一個元素絕對定位時,瀏覽器會將它從正常流中完全刪除,然后將它放在top和right屬性指定的位置上,並且流中的元素不會將其內聯內容圍繞在一個絕對定位的元素周圍;

絕對定位可以分層放置,一個元素可以放在另一個絕對定位元素上面,每個定位元素(絕對定位,相對定位,固定定位)都有一個名為z-index的屬性,z-index值越大,越方在上面;

可以對任何元素指定絕對位置,包括塊元素和內聯元素;

position屬性有static(默認值),absolute,fixed(固定定位,固定元素永遠也不會移動),relative(相對定位會讓元素正常流入頁面,在頁面上顯示之前要進行偏移);

相對定位元素仍在正常流中(還在它原本的位置上),然后按照指定的量偏移,可以使用top、left,bottom,right偏移元素,它是相對於其外圍包含的元素來定位的;

絕對定位是相對於離它最近的父元素來定位的,可以將一個<div>放在另一個<div>中,對外圍<div>使用相對定位,然后用絕對定位指定內部<div>的位置,這樣就能相對於父<div>定位了,即一個絕對定位元素嵌套在另一個定位元素中,這個元素就會相對外包含元素定位;

固定定位

#coupon {
  position: fixed;
  top: 300px;
  left: -90px;
}
固定定位元素是相對瀏覽器的位置不會變動,而不是頁面;

表格布局

表格布局結構也比較簡單,如下所示:

首先,創建一個<div>表示整個表格,行和列要嵌套在這個<div>中;
然后,對表格中的每一行創建一個<div>,包含行的內容;
最后,在行中,對於每一列,只需要一個塊元素作為該列內容;

<div id="tableContainer">
  <div id="tableRow">
    <div id="main">
      ...
    </div>
    <div id="sidebar">
      ...
    </div>
  </div>
</div>

div#tableContainer {
  display: table;
  border-spacing: 10px; //指定表格中單元格之間的邊框間距,可看做常規元素的外邊距
}

div#tableRow {
  display: table-row;
}

#main {
  display: table-cell;
verticle-align: top;
width: 500px; //控制列寬度 } #sidebar { display: table-cell;
verticle-align: top/middle/bottom; }

border-spacing和外邊距創建的空間不會折疊;

建立多欄布局,且內容欄是均勻的,表格布局就比較適合;

HTML5標記

<section>與<article>的區別?

使用<section> 可以把相關內容分組在一起,<article>包含獨立內容,如一個新聞報道,一個博客帖子或者一個簡短的報告;要組織相關的內容就是用<section>,而對於獨立的內容,則使用<article>;

<time>元素負責在頁面中增加日期或時間,datetime屬性用來指定一個日期或時間,如果元素內容沒有采用官方Internet日期/時間格式來寫,就必須有datetime屬性;

<time datetime="2015-01-31">1/31/2015</time>

在<section>、<article>、<aside>元素中也可以是用<header>和<footer>元素,可以把一些元素組合起來放在首部或尾部;

導航使用<nav>元素,導航內容一般使用列表來構建;

<video>元素使用

<video controls autoplay width="512" height="288" src="video/test.mp4" poster="images/test.png">
</video>

controls屬性使播放器提供一些控制視頻音頻播放的組件;
autoplay屬性,一旦頁面加載,視頻就會自動播放;
poster屬性,提供一個可選的海報圖像,視頻未播放時就顯示這個圖像;
loop屬性,布爾屬性,如果有loop,視頻結束播放后會自動重新開始播放視頻;
preload屬性,preload屬性通常用來細粒度的控制視頻如何加載,來實現優化,值為"none"表示用戶在真正播放視頻之前不下載,"metadata"表示下載視頻元數據,但不下載視頻內容;

<video>元素可以對每一種視頻格式分別使用一個<source>元素,提供一組視頻,讓瀏覽器選擇其支持的第一種格式,如下:

<video controls autoplay width="512" height="288">
  <source src="video/tweetsip.mp4">
  <source src="video/tweetsip.webm">
  <source src="video/tweetsip.ogv">
  <p>Sorry, your browser doesn't support the video element</p>
</video>

<mark>元素用於突出顯示某些文本;

<audio>包含聲音內容;

<canvas>在頁面中顯示用JS繪制的圖像和動畫;

<progress>顯示任務的完成進度;

<meter>顯示某個范圍的度量;

表格與列表

<caption>元素指定表格標題,默認顯示在表格上方,想將標題移動到表格下方,可在css中使用caption-side: bottom來改變;

不能單獨地設置各個單元格的“外邊距”,而要使用border-spacing為所有單元格設置一個共同的間距;

border-collapse屬性用來折疊邊框,使單元格之間沒有邊框間距,如下所示:

table {
  border: thin solid black;
  caption-side: bottom;
  border-collapse: collapse;
}

可以使用rowspan屬性指定一個表格數據單元格占多少行,然后從這個單元格所跨越的其他行中刪除相應的表格數據元素;

使用colspan屬性指定跨多列,跨多列時,需要刪除同一行中的表格數據元素;

嵌套表格也很簡單,只需要把另一個<table>元素放在一個<td>中即可;

列表的主要屬性是list-style-type,disc是默認值,其他值還包括circle,square,none(會刪除所有列表標記);

定制標記

list-style-image屬性允許為列表設置標記圖像;

li {
  list-style-image: url(image/backpack.gif);
  padding: 5px;
}

list-style-position控制列表上的文本回繞,屬性設為"inside"文本會在標記下回繞,設為"outside"文本會在文本下回繞;

HTML表單

 表單里可以有什么?

<input type="text" name="fullname" placeholder="Buckaroo Banzai" required> //文本輸入
<input type="submit"> //提交按鈕
<input type="radio" name="hotornot" id="hot" value="hot" checked>
<label for="hot">hot</label>
<input type="radio" name="hotornot" id="not" value="not">
<label for="not">not</label>
<input type="checkbox" name="spice" value="Salt" checked> <input type="checkbox" name="spice" value="Pepper"> <input type="checkbox" name="spice" value="Garlic"> <textarea name="comments" rows="10" cols="48"> xxxx </textarea> <select name="characters"> <option value="Buckaroo">Buckaroo</option> <option value="Tommy">Tommy</option> <option value="Penny">Penny</option> </select> <input type="number" min="0" max="20"> //限制只能輸入數字 <input type="range" min="0" max="20" step="5"> //范圍輸入,顯示為滑動條 <input type="color"> //顏色輸入 <input type="date"> //日期輸入 <input type="email"> //email輸入 <input type="tel"> //電話號碼輸入 <input type="url"> //URL輸入 email、tel、url都是text的變體,在移動設備上會顯示不同的定制鍵盤;
<input type="password" name="secret">
<input type="file" name="doc"> //文件輸入
多選菜單
<select name="characters" multiple>
<option value="Buck">Buckaroo</option>
....
</select>

CSS選擇器

偽元素

偽元素可以用來選擇元素的某些部分,如:first-letter偽元素用來選擇一個塊元素中文本的第一個字母;:first-line偽元素用來選擇段落的第一行;

p:first-letter {
  font-size: 3em;
}

屬性選擇器

根據屬性值來選擇元素;

img[width] {border: black thin solid;}
img[height="300"] {border: red thin solid;}
img[alt~="flowers"] {border: #ccc thin solid;} //alt屬性包含“flowers”的所有圖像;

按兄弟選擇

h1+p {
  font-style: italic;
}
選擇所有緊跟在<h1>元素后面的p元素;

結合選擇器

div#greentea > blockquote p:first-line {
  font-style: italic;
}

開發商特定的CSS屬性

div#box {
  transform: rotate(45deg);  //通用屬性,旋轉45度
  -webkit-transform: rotate(45deg);  //Safari,Chrome
  -moz-transform: rotate(45deg);  //mozilla
  -o-transform: rotate(45deg);  //Opera
  -ms-transform: rotate(45deg);  //IE
}

CSS變換和過渡

transition屬性,使元素在規定時間內變換到新狀態;

#box {
  position: absolute;
  top: 100px;
  left: 100px;
  width: 200px;
  height: 20px;
  transition: transform 2s;
  -webkit-transition: -webkit-transform 2s;
  -moz-transition: -moz-transform 2s;
  -o-transition: -o-transform 2s;
}

#box:hover {
  transform: rotate(45deg);
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -o-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM