1. 程式人生 > >CSS 的基礎知識1

CSS 的基礎知識1

前端知識記錄

這兩天看了前端css的部分內容,真心讓我難受,太多的屬性記不住,唉!!所以才想著把筆記記錄一下,方便以後用到查看。

CSS 指的是層疊樣式表,定義了如何顯示html屬性,樣式通常存儲到樣式表中。
外部樣式表通常存儲在css文件中:多個樣式可層疊為一個。

css的基礎語法:

css規則是由兩個主要部分組成:選擇器,以及一條或多條聲明。
選擇器一般是需要改變樣式的html元素:每個聲明由一個屬性和一個值組成。屬性是希望設置的樣式屬性,每個屬性有一個值,屬性和值用冒號分開。
h1 {color :red;font-size:14px;} ----------將h1元素內的文字顏色定義為紅色,同時字體大小設置為14px

屬性值除了英文表示外,還可以使用16進制表示
當使用RGB百分比時,當值為0時,也需要寫百分號,其他情況不需要。
p {color:rgb(100%,0%,0%);}

**如果值為若幹個單詞,需要加引號:
p{font-family:"sans serif";}

**多重聲明:就是有幾個聲明,如下所示:

p{
text-align:center; ------每行只描述一個屬性,增加樣式的可讀性
color :black;
font-family: arial;
}

css 高級語法:

選擇器的分組:對選擇器進行分組,使被分組的選擇器分享相同的聲明,用逗號分開選擇器。例如:
        h1,h2,h3,h4,h5,h6{
                color:green;
            }

**css派生選擇器是通過根據元素在其位置的上下文關系來定義樣式的。

**id選擇器
id選擇器是為標有特定id的html元素指定特定的樣式,id選擇器以#定義
#red {color:red;}
#green {color :green;}

id選擇器和派生選擇器的關系:
1.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;
   }
    此時,sidebar中的p和h2有別與其他地方的此標簽元素。該位置的標簽元素做了特殊處理。

2.id選擇器單獨使用:
#sidebar {
border:1px dotted #000;
padding :10px;
}

**類選擇器
類選擇器是以 點號顯示的:
.center {text-align:center;}
***類名的第一個字符不能為數字

類選擇器也可以用作派生選擇器:
.fancy td {
color:#f60;
background:#666;
}

**屬性選擇器
對帶有指定屬性的html元素設置樣式,不僅限與class和id屬性
1.屬性選擇器:
[title]
{
color:red;
}
2.屬性和值選擇器:
[title=hw]
{
border:5px solid blue;
}

3.屬性和值選擇器 ----多個值 title 中只要包含hello字符就設置樣式

[title ~=hello] {color :red;}  

    [lang | =en] {color:red;}

***設置表單的樣式,屬性選擇器在不帶class和id的表單設置樣式很有用
input[type="text"]
{
width:150px;
display:block;
margin-bottom:10px;
background-color:yellow;
font-family:Verdana,Arial;
}

input[type="button"]
     {
        width:120px;
        margin-left:35px;
        display:block;
        font-family:Verdana,Arial;
     }

css樣式的創建:插入css樣式的方法有三種:
1.外部樣式表:
當樣式需要應用與許多的頁面時,采用外部樣式表
<link rel="stylesheet" type="text/css" href="mystyle.css"/>
-----從外部引用一個css文件的樣式聲明來格式文檔

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

3.內聯樣式:(慎用)
當樣式需要在一個元素上應用一次時可以采用,但是慎用,因為表現和內容混雜在一起,內聯樣式容易損失掉樣式表的許多優勢
<p style="color: sienna; margin-left: 20px">
This is a paragraph
</p>
4.多重樣式:
如果某些屬性在不同的樣式表中被同樣的選擇器定義,那麽屬性值將從更具體的樣式表中被繼承過來

外部樣式表:
h3{
color:red;
text-align:left;
font-size:8pt;
}

內部樣式表:
h3 {
text-align: right;
font-size: 20pt;
}

 color: red; 
 ext-align: right; 
 font-size: 20pt;

***當外部和內部樣式表都有共同的屬性時,顏色屬性被繼承於外部樣式表,而文字排列和字體尺寸會被內部樣式表中的規則取代


css的背景:

可以應用純色作為背景,也可以使用背景圖像創建相當復雜的效果

使用background-color 屬性數字背景色,可以接收任何合法的顏色值

p {
background-color:green;
}

background-color 不能被繼承,默認值是transparent 透明的意思

背景圖像:
將圖像放入背景中,使用background-image 屬性,默認值為none,表示沒有放任何圖像

**如果需要設置一個背景圖像,必須為這個屬性設置一個url值:
body {background-image: url(/i/eg_bg_04.gif);}
background-image 不能被繼承,所有的背景屬性都不能被繼承

背景重復:
如果需要在頁面上對背景圖像進行平鋪,可使用background-repeat屬性
repeat屬性導致圖像在水平垂直方向上平鋪,repeat-x和repeat-y分別導致圖像只在水平和垂直方向上重復,no-repeat 不允許圖像在任何方向上平鋪

默認背景圖像從一個元素的左上角開始:
body
{
background-image: url(/i/eg_bg_03.gif);
background-repeat: repeat-y;
}

背景定位:
利用 background-position 屬性改變圖像在背景中的位置
body
{
background-image:url(‘/i/eg_bg_03.gif‘);
background-repeat:no-repeat;
background-position:center;
}

關鍵字:top、bottom、left、right和center以及使用長度值,如100px、5cm

關鍵字通常會成對出現,如果只出現一個關鍵字,則另一個是center

背景關聯:
如果文檔比較長,當文檔向下滾動時,背景圖像也會滾動,當文檔滾動超過圖像的位置時,圖像消失。
background-attachment屬性防止這種滾動,通過這個屬性,可以聲明圖像相對於可視區是固定的(fixed)。
body
{
background-image:url(/i/eg_bg_02.gif);
background-repeat:no-repeat;
background-attachment:fixed
}

background-attachment 屬性的默認值是scroll 。默認情況下,背景隨著文檔滾動

**css的背景屬性:
background                   背景屬性設置在一個聲明中

background-attachment 背景圖像是否固定或者隨著頁面的其余部分滾動
background-color 設置元素的背景顏色
background-image 把圖像設置為背景
background-position 設置背景圖像的起始位置
background-repeat 設置背景圖像是否及如何重復

css文本

css的文本屬性是對文本的外觀進行操作,如改變顏色、大小、字符的縮進等

縮進文本:
text-indent 屬性
p {text-indent :5em;}
一般來說,該屬性可以為所有塊級元素應用,但是無法應用與行內元素,圖像之類的替換元素也無法應用該屬性。
不過,如果一個塊級元素的首行中有一個圖像,則會隨著該行的其余文本移動。
如果想把一個行內元素的第一行“縮進”,可以用左內邊距或外邊距創造這種效果

使用負值: 可以實現“懸掛縮進”,即第一行懸掛在元素中余下部分的左邊
p {text-indent:-5em;}
如果對一個段落設置了負值,那麽首行的某些文本可能會超出瀏覽器窗口的左邊界,為了避免該問題,需要再設置一個外邊距或一些內邊距:
p {text-indent:-5em; padding-left:5em;}

使用百分比值:
百分數相對於縮進元素父元素的寬度。如果縮進了20%,其父元素寬度也會縮進20%
div {width:500px;}
p {text-indent:20%;}
<div>
<p>this is a paragragh</p>
</div>
繼承:text-index可以被繼承
div#outer {width: 500px;}
div#inner {text-indent: 10%;}
p {width: 200px;}
<div id="outer">
<div id="inner">some text. some text. some text.
<p>this is a paragragh.</p>
</div>
</div>

***水平對齊:

text-align屬性
屬性值:left、right、center
<CENTER>不僅影響文本,還會把整個元素居中,text-align 不會控制元素的對齊,只會影響內部內容
justify 是兩端對齊方式屬性

***字(單詞)間隔
word-spacing 屬性可以改變字之間的標準間隔,默認值是normal 與0 一樣的含義
word-spacing 屬性接受一個正長度值或負長度值。如果提供一個正長度值,那麽字之間的間隔就會增加,反之,則拉近

p.spread {word-spacing: 30px;}
p.tight {word-spacing: -0.5em;}
<p class="spread">
This is a paragraph. The spaces between words will be increased.
</p>
<p class="tight">
This is a paragraph. The spaces between words will be decreased.
</p>

letter-spacing 屬性是字母間隔,是數字和字母之間的間隔
h1 {letter-spacing: -0.5em}
h4 {letter-spacing: 20px}
<h1>This is header 1</h1>
<h4>This is header 4</h4>

***字符轉換:
text-transform 屬性 處理文本的大小寫
屬性值:none ---無任何操作
uppercase ---全大寫
lowercase --全小寫
capitalize ---只對每個單詞的首字母大寫
h1 {text-transform: uppercase} ---對h1元素的內容全大寫

***文本裝飾:
text-decoration 屬性 ------它的值會替換而不是累積
屬性值: none --去掉本來的裝飾,恢復默認
underline --對元素加下劃線
overline ---在文本的頂端畫一個上劃線
line-through 在文本中間畫個貫穿線
blink ----讓文本閃爍

    可以結合多種裝飾使用;例如:
     a:link a:visited {text-decoration: underline overline;}   --超鏈接既有下劃線,又有上劃線

***處理空白符:
white-space 屬性 可以處理字之間和文本行之間的空白符的方式

<p>This paragraph has many
spaces in it.</p>

p {white-space: normal;}

***當 white-space 屬性設置為 normal 時,會合並所有的空白符,並忽略換行符

屬性值:
pre ----瀏覽器不會合並空白符,也不會忽略換行符
nowrap -----防止元素中的文本換行,除非使用了一個 br 元素
pre-wrap ----瀏覽器不僅會保留空白符並保留換行符,還允許自動換行
pre-line ----瀏覽器會保留換行符,並允許自動換行,但是會合並空白符(和pre-wrap的區別)

***文本方向:
direction 屬性影響塊級元素中文本的書寫方向、表中列布局的方向、內容水平填充元素框的方向、以及兩端對齊元素中最後一行的位置
對於行內元素,只有當unicode-bidi 屬性設置為embed或bidi-override 時才會應用direction 屬性
屬性值:ltr和rtl ;;;默認值是ltr,顯示從左到右文本。rtl是從右往左顯示

css文本屬性:

    color               設置文本顏色
        direction           設置文本方向。
        line-height         設置行高。
        letter-spacing      設置字符間距。
        text-align          對齊元素中的文本。
        text-decoration     向文本添加修飾。
        text-indent         縮進元素中文本的首行。
        text-shadow         設置文本陰影。CSS2 包含該屬性,但是 CSS2.1 沒有保留該屬性。
        text-transform      控制元素中的字母。
        unicode-bidi        設置文本方向。
        white-space         設置元素中空白的處理方式。
        word-spacing        設置字間距。

css字體
定義了文本中字體的大小、粗細、風格等
font-family 屬性定義文本的字體

   body {font-family: sans-serif;}

font-style 屬性 ---設置斜體文本
屬性值:normal ---文本正常顯示
italic --文本斜體顯示
oblique --文本傾斜顯示

字體變形:
font-variant 屬性 設定小型大寫字母 ---不同大小的大寫字母

                             p {font-variant:small-caps;}

字體加粗:
font-weight 屬性設置文本的粗細
屬性值:bold 粗體

p.normal {font-weight:normal;}
p.thick {font-weight:bold;}
p.thicker {font-weight:900;}

字體大小:
font-size 設置文本的大小

***如果您沒有規定字體大小,普通文本(比如段落)的默認大小是 16 像素 (16px=1em)

css字體屬性:
font 簡寫屬性。作用是把所有針對字體的屬性設置在一個聲明中。
font-family 設置字體系列。
font-size 設置字體的尺寸。
font-size-adjust 當首選字體不可用時,對替換字體進行智能縮放。(CSS2.1 已刪除該屬性。)
font-stretch 對字體進行水平拉伸。(CSS2.1 已刪除該屬性。)
font-style 設置字體風格。
font-variant 以小型大寫字體或者正常字體顯示文本。
font-weight 設置字體的粗細。


css鏈接:
鏈接的四種狀態:
a:link - 普通的、未被訪問的鏈接
a:visited - 用戶已訪問的鏈接
a:hover - 鼠標指針位於鏈接的上方
a:active - 鏈接被點擊的時刻

規則:

a:hover 必須位於 a:link 和 a:visited 之後
a:active 必須位於 a:hover 之後

text-decoration 屬性大多用於去掉鏈接中的下劃線

background-color 屬性規定鏈接的背景色


css列表:

css列表屬性允許放置、改變列表項的標誌,或者將圖像作為列表項標誌

列表類型:影響列表的樣式,最簡單的方法是改變其標誌類型

修改列表項的標誌類型:list-style-type屬性
   ul {list-style-type : square}

列表項圖像:
對各標誌使用圖像:list-style-image屬性

ul li {list-style-image : url(xxx.gif)}

列表標誌位置:list-style-position屬性

簡化列表樣式:

list-style屬性
li {list-style : url(example.gif) square inside}

list-style 的值可以按任何順序列出,而且這些值都可以忽略。只要提供了一個值,其它的就會填入其默認值

css的列表屬性(list):
list-style 簡寫屬性。用於把所有用於列表的屬性設置於一個聲明中。
list-style-image 將圖象設置為列表項標誌。
list-style-position 設置列表中列表項標誌的位置。
list-style-type 設置列表項標誌的類型。

css表格
改善表格的外觀

表格邊框:
border屬性
table, th, td
{
border: 1px solid blue;
}
如果需要把表格顯示為單線條邊框,請使用 border-collapse 屬性

折疊邊框:
border-collapse 屬性將表格邊框折疊為單一邊框
table
{
border-collapse:collapse;
}

table,th, td
{
border: 1px solid black;
}
***如果沒有規定 !DOCTYPE,border-collapse 屬性可能會引起意想不到的錯誤

表格的寬度和高度:

width和height ---寬度和高度

table
{
width:100%;
}

th
{
height:50px;
}

表格的文本對齊:
text-align 和 vertical-align 屬性設置表格中文本的對齊方式

text-align 是水平對齊
vertical-align 是垂直對齊

表格的內邊距:
控制表格中內容和邊框的距離,為td和th設置padding屬性:

td
{
padding:15px;
}

表格的顏色:

table, td, th
{
border:1px solid green;
}

th
{
background-color:green; --背景顏色
color:white;
}

css Table屬性:

border-collapse 設置是否把表格邊框合並為單一的邊框。
border-spacing 設置分隔單元格邊框的距離。
caption-side 設置表格標題的位置。
empty-cells 設置是否顯示表格中的空單元格。
table-layout 設置顯示單元、行和列的算法。


css輪廓:
輪廓outline 是繪制於元素周圍的一條線,位於邊框邊緣的外圍,可起到突出元素的作用。css outline 屬性規定元素輪廓
的樣式、顏色、寬度

css 邊框屬性:
outline 在一個聲明中設置所有的輪廓屬性。
outline-color 設置輪廓的顏色。
outline-style 設置輪廓的樣式。
outline-width 設置輪廓的寬度。


css框模型
css框模型規定了元素框 處理元素的內容、內邊距、邊框和外邊距的方式

border     邊框

margin 外邊距
padding 內邊距
element 元素

元素框的最內部分是實際的內容,直接包圍內容的是內邊距。內邊距呈現了元素的背景

內邊距的邊緣是邊框。邊框以外是外邊距,外邊距默認是透明的,不會遮擋其後的任何元素。

背景是由內容和內邊距以及邊框組成的區域;內邊距、邊框和外邊距是可選的,默認是零。可以通過設置內外邊距為零來覆蓋瀏覽器樣式

* {
    margin: 0;
    padding: 0;
    }       

在css中,width和height是指元素內容的寬度和高度,增加內外邊距和邊框不會影響內容的尺寸,但是會增加元素框的總尺寸

內邊距、邊框和外邊距可以應用於一個元素的所有邊,也可以應用於單獨的邊

外邊距可以是負值,而且在很多情況下都要使用負值的外邊距

邊框內的空白是內邊距,邊框外的空白是外邊距

1.css 內邊距

內邊距是邊框內的空白部分,即元素內容到邊框之間的空白部分,使用padding屬性,可以接受長度值和百分比值,但是不能是負值

h1 {padding: 10px;} ---為h1所有邊設置10px的內邊距

也可以按照上、右、下、左的順序分別設置內邊距

  h1 {padding: 10px 0.25em 2ex 20%;}   ----簡寫規則

單邊內邊距的屬性:
padding-top
padding-right
padding-bottom
padding-left
padding 作用是在一個聲明中設置元素的所內邊距屬性

h1 {
padding-top: 10px;
padding-right: 0.25em;
padding-bottom: 2ex;
padding-left: 20%;
}

內邊距可以設置百分比值,並且這個百分比值是根據其父元素的width計算的。同時改變

****上下內邊距與左右內邊距一致;即上下內邊距的百分數會相對於父元素寬度設置,而不是相對於高度

css邊框
元素的邊框是圍繞元素內容和內邊距的一條或多條線
可以設置元素邊框的樣式、寬度和顏色

border-style屬性定義了10個不同的非inherit 樣式;包括none

定義一個圖片:
a:link img {border-style: outset;}

為一個邊框定義多種樣式:
p.aside {border-style: solid dotted dashed double;}

定義單邊樣式:

p {border-style: solid solid solid none;} 《=====》 p {border-style: solid; border-left-style: none;}

邊框的寬度:
border-width 屬性指定
指定寬度有兩種方法:
1.指定長度值;2.使用關鍵字,thin、medium(默認)和thick

p {border-style: solid; border-width: 5px;}


p {border-style: solid; border-width: thick;}

定義單邊寬度:
按照上右下左的順序設置元素各邊邊框:
p {border-style: solid; border-width: 15px 5px 15px 5px;}
或者簡寫:
p {border-style: solid; border-width: 15px 5px;}

可以通過下面屬性設置邊框各邊寬度:
border-top-width
border-right-width
border-bottom-width
border-left-width

邊框寬度設置值:
none ---無邊框
solid
outset
***當屬性值border-style設置為none時,即沒有邊框,所以之前不管你定義的是什麽,都會消失。包括任何樣式
由於 border-style 的默認值是 none,如果沒有聲明樣式,就相當於 border-style: none。因此,如果您希望邊框出現,就必須聲明一個邊框樣式

邊框的顏色:
border-color屬性設置
它一次可以最多接收4個顏色值,如果小於四個,則值賦值會起作用

邊框顏色默認是元素本身的前景色,如果沒有為邊框聲明顏色,將與元素的文本顏色相同。如果元素沒有任何文本,
則它的邊框顏色是其父元素的文本顏色,這個父元素可能是body、div等

定義單邊顏色:--和定義寬度屬性一樣
border-top-color
border-right-color
border-bottom-color
border-left-color

透明邊框:
border-color:transparent ---創建不可見邊框

css外邊距
圍繞著元素邊框的空白區域是外邊距
設置外邊距使用margin屬性,該屬性可以接受任何長度單位,百分數值甚至負值

margin 可以設置auto,更常見的是為外邊距設置長度值

h1 {margin : 0.25in;}

內邊距屬性值設置百分比值也是相對應父元素的width計算的。

使用值賦值的規則:

如果缺少左外邊距的值,則使用右外邊距的值。
如果缺少下外邊距的值,則使用上外邊距的值。
如果缺少右外邊距的值,則使用上外邊距的值。

單邊外邊距屬性:
margin-top
margin-right
margin-bottom
margin-left
margin 在一個聲明中設置所有外邊距屬性

css 外邊距合並
外邊距合並指當兩個垂直外邊距相遇時,他們將形成一個外邊距。合並之後的外邊距的高度等於兩個發生合並的外邊距的高度較大者


css定位:

css定位屬性允許你對元素進行定位

使用display 屬性改變生成框的類型。display=block 可以讓行內元素表現的像塊級元素一樣。
display=none 讓生成的元素根本沒有框

當把一些文本添加到一個塊級元素的開頭,即使沒有把文本定義為段落,也會當作段落來對待

<div>
some text ------------------無名塊框
<p>Some more text.</p>
</div>

ss 定位機制:普通流、浮動、絕對定位

所有框都在普通流中定位。

css position 屬性:
static 元素框正常生成。塊級元素生成一個矩形框,作為文檔流的一部分,行內元素則會創建一個或多個行框,置於其父元素中

relative 元素框偏移某個距離。元素仍保持其未定位前的形狀,它原本所占的空間仍保留 ---相對定位

absolute 元素框從文檔流完全刪除,並相對於其包含塊定位;包含塊可能是文檔中的另一個元素或者是初始包含塊。元素原先在正常文檔流中所占的空間會關閉,
就好像元素原來不存在一樣。元素定位後生成一個塊級框,而不論原來它在正常流中生成何種類型的框 --絕對定位

fixed 元素框的表現類似於將 position 設置為 absolute,不過其包含塊是視窗本身 ---固定定位

css定位屬性:

position 把元素放置到一個靜態的、相對的、絕對的、或固定的位置中。
top 定義了一個定位元素的上外邊距邊界與其包含塊上邊界之間的偏移。
right 定義了定位元素右外邊距邊界與其包含塊右邊界之間的偏移。
bottom 定義了定位元素下外邊距邊界與其包含塊下邊界之間的偏移。
left 定義了定位元素左外邊距邊界與其包含塊左邊界之間的偏移。
overflow 設置當元素的內容溢出其區域時發生的事情。
clip 設置元素的形狀。元素被剪入這個形狀之中,然後顯示出來。
vertical-align 設置元素的垂直對齊方式。
z-index 設置元素的堆疊順序。

css 相對定位:

設置為相對定位的元素框會偏移某個距離。元素仍然保持其未定位前的形狀,它原本所占的空間仍保留。

*****在使用相對定位時,無論是否進行移動,元素仍然占據原來的空間。因此,移動元素會導致它覆蓋其它框

css 絕對定位:
設置為絕對定位的元素框從文檔流完全刪除,並相對於其包含塊定位,包含塊可能是文檔中的另一個元素或者是初始包含塊。
元素原先在正常文檔流中所占的空間會關閉,就好像該元素原來不存在一樣。元素定位後生成一個塊級框,而不論原來它在正常流中生成何種類型的框。

css絕對定位使元素與文檔流無關,因此不占據空間

***相對定位是相對於元素在文檔中的初始位置,而絕對定位是相對於最近的已定位祖先元素,如果不存在祖先元素,那麽相對於最初的包含塊

css 浮動:

浮動的框可以向左或向右移動,直到它的外邊緣碰到包含框或另一個浮動框的邊框為止。

由於浮動框不在文檔的普通流中,所以文檔的普通流中的塊框表現得就像浮動框不存在一樣

float 屬性

行框和清理

要想阻止行框圍繞浮動框,需要對該框應用 clear 屬性
屬性值:left、right、both和none
表示框的哪些邊不應該挨著浮動框

CSS 的基礎知識1