關於 CSS

關於 CSS

CSS 筆記

很好用的 UI 調適技巧

只要加上以下程式碼

body *{
 outline: 1px solid red
}

能幫助我們在開發中迅速了解元素所在的位置,還能幫助我們方便地查看任意網站的布局。

參考資料

  1. 很好用的 UI 調適技巧

 


CSS 指定編碼

@charset "UTF-8";

為 css 檔案指定編碼為 UTF-8

CSS 選擇器語法

Selector 選擇器 {
  Attributes 屬性 : Value 設定值
}

Select 選擇器共有三種選擇,分別是 Type 類型選擇器、Class 選擇器和 ID 選擇器,以下是選擇器所對應的 HTML 元素與 Class 標籤

選擇器    元素與標籤
Type       h1 div、p
Class      .box、.header
ID           #top、#move

若需要將多個選擇器使用同一個樣式可以這樣寫:

h1,h2,h3 {
  Attributes : Value
}
#head,.box,div{
 Attributes : Value
}

若限定 A 選擇器裡面的 B 選擇器使用樣式可以這樣寫:

[ 父選擇器 ] [ 子選擇器 ] {
  Attributes 屬性 : Value 設定值
}

li a {
 Attributes : Value
}

限定 li 元素下的所有 a 元素套用樣式


CSS套用在HTML文件中的方式


1.行內套用
2.嵌入套用
3.外部連接套用
4.匯入套用


1.行內套用   我們可以在HTML文件中直接宣告樣式如

<p style="font-family:verdana;font-size:16;>This is font size 16.</p>

2.嵌入套用        
樣式可以嵌入於HTML文件中(通常是在<head>內)

<head>
 <style type="text/css">
  div {
   background-color:#FF0000;
  }
 </style>
</head>

<body>
  <div>
   背景顏色是紅色
   </div>
</body>

3.外部連接套用    
CSS樣式宣告來自另一個檔案中。該檔案通常名稱為.css。在HTML中以下方的程式碼將這個.css檔案連接進來。

<link rel="stylesheet" type="text/css" href="檔案網址.css">

4.匯入套用        
外部的CSS樣式也可以匯入進HTML文件。匯入的做法為利用 @import 這個指令。

<style type="text/css">
<!--
  @import url(網址位置);
-->
</style>

CSS樣式從最高優先權到最低優先權的排名如下


1.內行套用的樣式表
2.嵌入套用的樣式表
3.匯入套用的樣式表
4.外部連接到用的樣式表
5.瀏覽器本身的樣式表


CSS的繼承關係    


在一個 HTML 文件中,標籤之間有所謂的親子關係。舉例來說,<title> 這個標籤一定都是在 <head> 這個標籤之內,所以我們就說 <title> 是 <head> 的子標籤。繼承 (inheritance) 的意思就是說子標籤的樣式會跟父標籤一樣,除非子標籤本身另有自訂的樣式。

<head>
  <title></title>
</head>

Class 選擇器與  ID 選擇器的比較

這兩者最大的不同,是在於 ID 選擇器在一個 HTML 文件中只能被使用一次,
而 Class 選擇器在一個 HTML 文件中可以被使用多次。

建議是盡量用 Class,因為這樣子最靈活 (同一個 HTML 文件可以利用這類的選擇器多次)。


長度單位    

相對單位包括:
px: pixels
em: em
ex: x 字母的高度

絕對單位包括:
in: 吋
cm: 公分
mm: 公厘
pt: points, 1 pt = 1/72 吋
pc: picas, 1 pc = 12 pt
如果沒有註明單位,那預設的單位是 px。


盒子模式 (box model)        


在盒子模式中,內容 (content) 是最內層的部分,接下來依序為留白(padding)、邊框 (border)、以及邊界 (margin)。邊界是用來設定各個元素之間的距離。

邊界 margin
如我們在盒子模式那一頁看到的,邊界 (margin) 是在邊框之外,並且是用來設定各個元素之間的距離。一個盒子有四個邊,所以我們可以對這四個邊逐一設定:
 1. margin-top (上邊界) 
 2. margin-right (右邊界) 
 3. margin-bottom (下邊界) 
 4. margin-left (左邊界)

#container {
  margin-top:5px;         
  margin-left:10%;        
  margin-right:auto;
  margin-bottom:20px;
   border: 1px solid 000000;
}

 <div id="container"></div> //這是邊界的例子。 

一個元素的四個邊邊界可以同時由 margin 屬性設定。它的語法如下:
margin: [ 上面邊界值 ] [右邊界值 ] [下面邊界值 ] [ 左邊界值 ]


邊框 border

1.border-style
2.border-width
3.border-color
4.border-top-, border-left-, border-bottom-, border-right-
5.border

 1. border-style:設定值
指定邊框的樣式。以下的表格列出這個屬性可能有的值,以及每一個值顯現出來的結果。

設定值   solid      實線
              dashed  虛線
              double   雙線
              dotted    點線
              groove   凹線
              ridge      凸線
              inset      嵌入線
              outset    浮出線

 2. border-width:設定值 設定邊框的寬度。可用的值為 thin (薄)、medium (中等)、thick (厚),或是一個數字。
 3. border-color:設定值    設定邊寬的顏色。

 4. border-top-,border-right-,border-bottom-,border-left-
我們可以將方向 (top - 上、bottom - 下、left - 左、right - 右) 和樣式、寬度、及顏色合起來而成為一個屬性。

p {border-top-style:solid; border-bottom-style:dotted;}    //上邊框為實線,下邊框為點線


 5. border    若四邊的邊框屬性都一樣,那我們可以用一個 border 屬性來描述,而不必四個邊都描述一次。
另外,我們可以在同一行一次宣告邊框樣式、邊框寬度、以及邊框顏色。

p {            
  border:#0000FF 5px solid;
}

<p>用一行來宣佈所有邊框的屬性</p>


留白 padding


我們從盒子模式那一頁看到,留白 (padding) 是在內容外,邊框內的部分。
一個盒子有四個邊,所以我們可以對這四個邊的留白逐一設定:
 1. padding-top (上) 
 2. padding-right (右) 
 3. padding-bottom (下) 
 4. padding-left (左)

#container {        
  padding-top:15px;
  padding-right:10px;          
  padding-bottom:30px;    
  padding-left:40px;
  border: 1px solid 000000;
}
<div id="containar"></div> //空間都有設定

    
所有四個邊的留白可以同時由 padding 屬性設定。它的語法如下:
padding: [ 上面留白值 ] [ 右邊留白值 ] [ 下面留白值 ] [ 左邊留白值 ]


 CSS中最常見的背景(background)屬性有以下幾種


 1. background-color
 2. background-image
 3. background-repeat
 4. background-attachment
 5. background-position

1.background-color    用來指定背景的顏色。
    p {background-color:00FF00;}    綠色背景
    p {background-color:rad;}    紅色背景
2.background-image用來指定用什麼圖案來當做背景。
    p {background-images:url(yp.jpg);}    檔案來源 yp.jpg
3.background-repeat:設定值    是用來指定背景圖案重不重複。預設值是 "repeat"
設定值    no-repeat    背景圖案不重複
               repeat-x    背景圖案在 x-方向重複
               repeat-y    背景圖案在 y-方向重複
               repeat    背景圖案在 x- 及 y-方向重複
4.background-attachment:設定值    是用來指定背景圖案是否在螢幕上固定。
設定值    fixed    (當網頁捲動時,背景圖案固定不動)
               scroll    (當網頁捲動時,背景圖案會跟著移動)
               5.background-position:設定值    用來指定背景圖案的位置。它的值可以是:

˙兩個字:第一個字為 [top,center,bottom] 中三選一,而第二個字由 [left,center,right] 中三選一。
˙兩個百分比:第一個百分比為 x-軸的百分比,第二個為 y-軸的百分比。
˙兩個數目:第一個數目為 x-軸的位置,第二個數目為 y-軸的位置。


CSS中設定元素的顏色


 1. 十六進位值
 2. RGB 碼
 3. 顏色名稱

  1.十六進位值:    
{color:#XXXXXX;} //X 為十六進位碼 (從 0 到 9,以及 A 到 F)。
  2.RGB:        
{color:rgb(X,Y,Z); } //X、Y、和 Z 都是介於 0 和 255 之間的數字。 
{color:rgb(X%,Y%,Z%); } //X、Y、和 Z 都是介於 0 和 100 之間的數字。
  3.顏色名稱:    
{color:[顏色名稱];} //十六進位值是一個以六碼 (如果前兩碼、中間兩碼、以及最後兩碼都一樣的話,那也可以以三碼的形式表現。

舉例來說,#FFF 及 #FFFFFF 都是代表白色) 來設定顏色。


CSS中設定自體(font)


 1. font-family
 2. font-size
 3. font-weight
 4. font-style
 5. font-variant

  1.font-family(字體類型)    
p {font-family:標楷體;}    
p {font-family:arial;}

  2.font-size(字體大小)    
下其中之一的值:"xx-large"、 "x-large"、 "large"、 "medium"、 "small"、 "x-small"、和 "xx-small"。

p {font-size:small;}    
p {font-size:9px;}

  3.font-width(字體厚度)    
厚度的設定值可以從 100 到 900 (900 是最厚的)。另外,我們也可以將厚度設定為 bold (厚)、bolder (更厚)、及 normal (正常)。

p {font-width:100;}    
p {font-width:bold;}

  4.font-style(字體是否斜體)    
是用來設定字體是否為斜體字 (italic 或 oblique)。

  5.font-variant        
用來設定文字是不是要以小型大寫 (small caps) 字體顯現。在小型大寫字體中,所有的字母都是大寫,可是字體是比一般大寫來得小。可能的值為 "small-caps" 和 "normal"。來看下面的例子:

span {            
 font-variant:small-caps;
}
<span>initial in small caps</span>AND LATER IN LARGE CAPS.


CSS的鏈結設定    


連接的預設樣式是藍色,且有下劃線。可是,有的時候,我們會想要改變一下這個預設的樣式。這可以透過以下幾個選擇器來達成:

a:link:     設定當連接過去的網頁尚未被看過時,該連接的樣式。
a:visited:     設定當連接過去的網頁已經看過時,該連接的樣式。
a:hover:     設定當滑鼠蓋在連接上面時,該連接的樣式。
a:active:     設定當連接被點擊時,該連接的樣式。

a:link {color:#FF0000; text-decoration:none;}         
a:visited {color:#0000FF; text-decoration:none;} 
a:hover {font-size:20; color:#00FF00; text-decoration:underline;} 
a:active {color:#FF00FF; text-decoration:underline;}

以上樣式的意思為: 
1) 一開始時,連接文字的顏色是紅色。 
2) 一但被連接的頁面有被看過,連接文字顏色就變為藍色。 
3) 當滑鼠蓋在連接上面時,文字大小變為 20,文字顏色變為綠色,而且下劃線會出現。 
4) 當連接被點擊時,文字顏色變為粉紅色,而且下劃線不會消失。


CSS中常見的清單


 1. list-style-type(設定符號)    (行內設定)
 2. list-style-position        (行內設定)
 3. list-style-image
 4. list-style

  1.list-style-type    
設定在清單中,每一條之前的記號要用什麼。最常見的 list-style-type 設定值為:
設定值:    none (沒有)
    disc (全黑圓圈)
    circle (空心圓圈)
    square (正方形)    
    upper-latin (大寫拉丁文)
    lower-latin (小寫拉丁文)
    upper-roman (大寫羅馬文)
    lower-roman (小寫羅馬文)
    upper-alpha (大寫希臘文 )
    lower-alpha (小寫希臘文 )

<ul style="list-style-type:upper-roman;"> 
  <li>項目 1</li> 
  <li>項目 2</li> 
</ul>

  2.list-style-position    讓我們可以決定記號是否應該被視為是文字的一部份,並且由此而決定記號的位置。
這個屬性可能的設定值為 "inside" 及 "outside"。預定值為 "outside"。

<ul style="list-style-position:inside;">
  <li>第一項<br>第一項第二行</li>
  <li>第二行</li>
</ul>

  3.list-style-image    
用來將某個圖案設定為記號。這個屬性的用法為
list-style-image:url([image_url]);
ul {
 list-style-image:url("檔案網址");  
}
<ui>
  <li>第一項利用我自己設定的記號</li>
   <li>第二項利用我自己設定的記號</li>
</ul>

4.list-style    
以上提到的這三個屬性可以被簡化為一個 list-style 屬性。在這裡,屬性的順序並不重要。
ul {
 list-style:url("檔案網址"); none inside;      
}

<ul>
  <li>第一項以捷徑方式列出的清單</li> <li>
第二項以捷徑方式列出的清單</li>
</ul>


CSS表格的設定(table)    


table、th、tr、及 td 這幾個選擇器可以使用許多在這個教學中有提到的 CSS 屬性,例如 文字、字體、邊框、顏色、以及 背景。

  1.border-collapse    基本上,這個屬性可以直接代替 cellspacing=0 的宣告。功能就是無間隙的連接前一個<th>與後一個<th>。


CSS常見的位置設定


 1. position
 2. top
     right
     left
     bottom
 3. overflow
 4. z-index

  1.position
制定出要用哪一類的位置,設定值可以是一下種類:

static (預設值): 這代表元素會被放在預設的地方。如果 position 的值是被設定為 statics 的話,那 top、bottom、left、和 right 的值就都沒有意義了。
absolute: 這代表元素會被放在瀏覽器內的某個位置 (依 top、bottom、left、和 right 的值而定)。當使用者將網頁往下拉時,元素也會跟著改變位置。
relative:這代表元素被放的地方將會與預設的地方有所不同。不同的程度是依照 top、bottom、left、和 right 的值而定。
fixed:這代表元素會被放在瀏覽器內的某個位置 (依 top、bottom、left、和 right 的值而定)。當使用者將網頁往下拉時,元素的位置不會改變。

  2.top, right, bottom, left
位置值可以是長度、百分比、或是 auto。

div {
  background-color:#FF00FF;     
  width:500px;        
  height:60px;
}
p {
  position:relative;
  top:10px;
  left:50px;
}
<div>
 <p>舉例文字</p>
</div>

  3.overflow    
是用來設定當內容放不下時的處理方式。可能的值包括:
設定值    visible: 內容完全呈現,不管放得下放不下。
    hidden: 放不下的內容就不顯示出來。
    scroll: 無論內容放得下放不下,都加入上下捲軸及左右捲軸的功能。
    auto: 當內容放不下時,加上捲軸的功能。

  4.z-index        
用來決定元素重疊的順序。換言之,當兩個元素有重疊的情況時,
z-index 值將會決定哪一個元素在上面。z-index 值比較大個元素會被放在上面。
        例如:    #radblock {        <div id="redblock"></div> 
              z-index:1;        <div id="pinkblock"></div>
              position:absolute;        可見,粉紅色方塊 (pinkblock) 的 z-index 
              weidth:80px;        值 (2) 比紅色方塊 (redblock) 的 z-index 
              height:100px;        值 (1) 高,因此粉紅色方塊在上面。
              top:20px;
              left:20px;
              border:1px solid #FFF;
              background-color:#FF00FF;
            }
            #pinkblock {
              z-index:2;
              position:absolute;
              width:100px;
              height:80px;
              top:50px;
              left:50px;
              border:1px solid #FFF;
              background-color:#FF00FF;
            }


CSS的文字樣式設定


 1. direction
 2. letter-spacing
 3. line-height
 4. text-align
 5. text-decoration
 6. text-indent
 7. text-transform
 8. word-spacing

  1.direction    
是用來設定文字的方向。可能的值為 'ltr' 及 'rtl'。
p {        
direction:ltr;    
}
<p>LTR方向</p> //左邊對齊

p {        
  direction:rtl;    
}
<p>RTL方向</p> //右邊對齊

  2.letter-spacing    設定每一個字母之間的空間。
p {        
  letter-spacing:8px;
}
<p>8px between letters</p>

  3.line-height    
是用來設定每一行之間的間距。
p {        
  line-height:40px;
}
<p>第一行和第二行之間<br>相隔40px。</p>

  4.text-align    
設定文字是如何對齊。
設定值    left:     靠左對齊
    right:    靠右對齊
    center:     向中間對齊
    justified:     左右對齊

  5.text-decoration    
設定文字上有什麼裝飾。可能的值包括:
設定值    underline:     文字下加上一條線。
    overline:         文字上加上一條線。
    line-through:     文字中間加上一條線劃過去。
    blink:         讓文字閃爍。
  6.text-index    
設定每一段的第一行前面要留多少空間。可設定的值包括百分比以及長度。
p {         
   text-indent:15px;     之後的行數就沒有留任和空間了。
}
<p>這一段第一行的最前面會留 15px 的空間。</p>
            
  7.text-transform    
用來控制大小寫是如何展現的。
設定值    capitalize:每一個字的第一個字母都以大寫顯現,其他的字母則不改變。
    uppercase:所有的字母都以大寫顯現。
    lowercase:所有的字母都以小寫顯現。
    none:大小寫不做任何改變。

  8.word-spacing    
設定每個字與每個字之間的距離。

CSS浮動一個在大型網站常見的格式,就是將文字繞著一個圖案顯現。
float 屬性有三個可能的值:left、right、和 none。來看看以下的例子:

#leftfloat {        
   float:left;        
}
<span id="leftfloat">
  <img src="yp.jpg">
</span>
這個例子是用來顯示 float:left 會如何影響整個頁面的呈現。在這裡,圖案浮動於左邊。


CSS清除    


用來抵銷 float 屬性的作用。
設定值    left:    消除左邊的浮動。
    right:    消除右邊的浮動。
    both:    消除左邊及右邊的浮動。
    none:    不消除任何一邊的浮動。
#leftfloat {     
 float:left;         
}
#clearleft { 
  clear:left; 
}
這個例子<span id="clearleft">展現出 clear:left 能夠抵銷 float 屬性的值。
<span id="leftfloat"><img src="yp.jpg"></span>

在上面的例子中,一但 clear:left 的樣式被用上,float:left 就不再有作用。也就因為這樣,在 clear:left 樣式後的所有文字都是在圖案之下。

CSS滑鼠游標圖案
{ cursor: crosshair; }    十字游標

我們也可以自定游標圖案。自定圖案的語法是:
{ cursor: url(圖案網址); }

參考資料

  1. CSS 樣式

  2. CSS 滑鼠游標圖案