1. 程式人生 > >JavaWeb基礎總結之CSS

JavaWeb基礎總結之CSS

CSS 概述

  • CSS 指層疊樣式表 (Cascading Style Sheets)
  • 樣式定義如何顯示 HTML 元素
  • 樣式通常儲存在樣式表中
  • 把樣式新增到 HTML 4.0 中,是為了解決內容與表現分離的問題
  • 外部樣式表可以極大提高工作效率
  • 外部樣式表通常儲存在 CSS 檔案中
  • 多個樣式定義可層疊為一

CSS 規則由兩個主要的部分構成:選擇器,以及一條或多條宣告。

selector {declaration1; declaration2; ... declarationN }

選擇器的分組:

你可以對選擇器進行分組,這樣,被分組的選擇器就可以分享相同的宣告。用逗號將需要分組的選擇器分開。在下面的例子中,我們對所有的標題元素進行了分組。所有的標題元素都是綠色的。

h1,h2,h3,h4,h5,h6 {
  color: green;
  }

樣式繼承及其問題:

在父元素中定義了樣式,其子元素是預設繼承的,此時如果子元素想要使用自己的樣式,只需要重寫子元素的樣式即可。

Css的選擇器:

(1)派生選擇器

通過依據元素在其位置的上下文關係來定義樣式,你可以使標記更加簡潔派生選擇器允許你根據文件的上下文關係來確定某個標籤的樣式。通過合理地使用派生選擇器,我們可以使 HTML 程式碼變得更加整潔。比方說,你希望列表中的 strong 元素變為斜體字,而不是通常的粗體字,可以這樣定義一個派生選擇器:

li strong {
    font-style: italic;
    font-weight: normal;
  }

(2)id 選擇器

id 選擇器可以為標有特定 id 的 HTML 元素指定特定的樣式。id 選擇器以 "#" 來定義。

#red {color:red;}
#green {color:green;}
<p id="red">這個段落是紅色。</p>
<p id="green">這個段落是綠色。</p>

id選擇器除了單獨的使用,還能建立派生選擇器使用。

#sidebar p {
	font-style: italic;
	text-align: right;
	margin-top: 0.5em;
	}

#sidebar h2 {
	font-size: 1em;
	font-weight: normal;
	font-style: italic;
	margin: 0;
	line-height: 1.5;
	text-align: right;
	}

在這裡,與頁面中的其他 p 元素明顯不同的是,sidebar 內的 p 元素得到了特殊的處理,同時,與頁面中其他所有 h2 元素明顯不同的是,sidebar 中的 h2 元素也得到了不同的特殊處理。

(3)CSS 類選擇器

.center {text-align: center}

和 id 一樣,class 也可被用作派生選擇器:

.fancy td {
	color: #f60;
	background: #666;
	}

(4)屬性選擇器

對帶有指定屬性的 HTML 元素設定樣式。可以為擁有指定屬性的 HTML 元素設定樣式,而不僅限於 class 和 id 屬性。註釋:只有在規定了 !DOCTYPE 時,IE7 和 IE8 才支援屬性選擇器。在 IE6 及更低的版本中,不支援屬性選擇。

下面的例子為帶有 title 屬性的所有元素設定樣式:

[title]
{
color:red;
}

下面的例子為 title="W3School" 的所有元素設定樣式:

[title=W3School]
{
border:5px solid blue;
}

屬性和值選擇器 - 多個值:

<head>
<style type="text/css">
[title~=hello]
{
color:red;
} 
</style>
</head>

<body>
<h1>可以應用樣式:</h1>
<h2 title="hello world">Hello world</h2>
<p title="student hello">Hello W3School students!</h1>
<hr />

總結:屬性選擇器在為不帶有 class 或 id 的表單設定樣式時特別有用。

當讀到一個樣式表時,瀏覽器會根據它來格式化 HTML 文件。插入樣式表的方法有三種:

外部樣式表:

<head>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
</head>

內部樣式表:

<head>
<style type="text/css">
  hr {color: sienna;}
  p {margin-left: 20px;}
  body {background-image: url("images/back40.gif");}
</style>
</head>

內聯樣式:

<p style="color: sienna; margin-left: 20px">
This is a paragraph
</p>

Css常見的一些屬性:

 padding(內邊距): 屬性定義元素邊框與元素內容之間的空白區域。

h1 元素的各邊都有 10 畫素的內邊距:

h1 {padding: 10px;}

也可以按照上、右、下、左的順序分別設定各邊的內邊距,各邊均可以使用不同的單位或百分比值:

h1 {padding: 10px 0.25em 2ex 20%;}

margin(外邊距):圍繞在元素邊框的空白區域是外邊距。設定外邊距會在元素外建立額外的“空白”。設定外邊距的最簡單的方法就是使用 margin 屬性,這個屬性接受任何長度單位、百分數值甚至負值。

h1 {margin : 0.25in;}

margin的格式和padding設定一樣:

margin: top right bottom left

CSS position 屬性

absolute

生成絕對定位的元素,相對於 static 定位以外的第一個父元素進行定位。

元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進行規定。

fixed

生成絕對定位的元素,相對於瀏覽器視窗進行定位。

元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進行規定。

relative

生成相對定位的元素,相對於其正常位置進行定位。

因此,"left:20" 會向元素的 LEFT 位置新增 20 畫素。

static 預設值。沒有定位,元素出現在正常的流中(忽略 top, bottom, left, right 或者 z-index 宣告)。
inherit 規定應該從父元素繼承 position 屬性的值。

position:absolute;將div從文件流中拖出。漂浮在上空。許多的網站上的漂浮著的廣告都是使用absolute定位。

position:relative:不會從文件六中拖出去,就是在二維空間裡面進行位置的改變,就是不會漂浮在上空。

圖片簽名:就是在圖片上顯示文字,用position:absolute就可以。

最後再總結一點常見的問答題:

(1)html中有一種呼叫css的方式@import url(div.css)這種方式一般不使用,共四種其他三種用過,css優先順序自上而下從外到內的優先順序是從低到高,類似於是函式重寫的感覺。

(2)css的四種選擇器:標籤選擇器,類選擇器,ID選擇器,偽類選擇器

(3)優先順序:盒子模型:div+css。

(4)關於更為細節的知識點,詳見css參考手冊


注:以上文章僅是個人學習過程總結,若有不當之處,望不吝賜教。