css 全稱為“層疊樣式表”
聲明,本文為學習慕課網HTML+CSS中CSS筆記http://www.imooc.com/learn/9;可能存在問題,未來不斷學習修改
組成:
選擇器 {
屬性:值;聲明
}
注釋/** **/
分類:三種
內聯式
css樣式表就是把css代碼直接寫在現有的HTML標簽中
嵌入式
可以把css樣式代碼寫在<style type="text/css"></style>標簽之間。
一般情況下嵌入式css樣式寫在<head></head>之間。
外部式
css代碼寫一個單獨的外部文件中,這個css樣式文件以“.css”為擴展名,
在“head”內(不是在style標簽內)使用link標簽將css樣式文件鏈接到HTML文件內,如下面代碼:
<link href="base.css引用位置" rel="stylesheet" type="text/css" />
優先級:在的相同權值的情況下,內聯式 > 嵌入式 > 外部式;
嵌入式>外部式有一個前提:嵌入式css樣式的位置一定在外部式的后面。
其實總結來說,就是--就近原則(離被設置元素越近優先級別越高)。
不同選擇器:
1.標簽選擇器
html代碼中的標簽。
2.類選擇器
.類選擇器{}
使用 class = "類選擇器名稱" 為標簽設置一個類
3.id選擇器
方式: #選擇器{ }為標簽設置id="ID名稱"
class 和 id 選擇器的區別
相同點:可以應用于任何元素
不同點:
1、ID選擇器只能在文檔中使用一次。與類選擇器不同,在一個HTML文檔中,ID選擇器只能使用一次,
而且僅一次。而類選擇器可以使用多次。
2.可以使用類選擇器詞列表方法為一個元素同時設置多個樣式。
我們可以為一個元素同時設多個樣式,但只可以用類選擇器的方法實現。ID選擇器是不可以的(不能使用 ID 詞列表)。比如:
(span class="stress bigsize")
4.子選擇器
大于符號(>),用于選擇指定標簽元素的第一代子元素
.first > span{color:red;}
5.包含(后代)選擇器
即加入空格,用于選擇指定標簽元素下的后輩元素。如:.first span{color:red;}
比較
子選擇器(child selector)僅是指它的直接后代,或者你可以理解為作用于子元素的第一代后代。
而后代選擇器是作用于所有子后代元素。后代選擇器通過空格來進行選擇,而子選擇器是通過“>”進行選擇。
總結:>作用于元素的第一代后代,空格作用于元素的所有后代。
====
5.通用選擇器
通用選擇器是功能最強大的選擇器,它使用一個(*)號指定,它的作用是匹配html中所有標簽元素
6.偽類選擇符
它允許給html不存在的標簽(標簽的某種狀態)設置樣式
link 未訪問(默認) -- hover 鼠標懸停(鼠標劃過) -- active 鏈接激活(鼠標按下) -- visited 訪問過后(點擊過后)
順序:link visited hover active
a:hover{color:red;}
7.分組選擇符
多個標簽元素設置同一個樣式時,可以使用分組選擇符(,)
h1,span{color:red;}
特性:
1.繼承
CSS的某些樣式是具有繼承性的;繼承是一種規則,它允許樣式不僅應用于某個特定html標簽元素,而且應用于其后代。
2.特殊性:
有的時候我們為同一個元素設置了不同的CSS樣式代碼,那么元素會啟用哪一個CSS樣式呢?
下面是權值的規則:
標簽的權值為1,類選擇符的權值為10,ID選擇符的權值最高為100。
注意:還有一個權值比較特殊--繼承也有權值但很低,有的文獻提出它只有0.1,所以可以理解為繼承的權值最低。
3.層疊:
如果在html文件中對于同一個元素可以有多個css樣式存在并且這多個css樣式具有相同權重值怎么辦?
層疊就是在html文件中對于同一個元素可以有多個css樣式存在,當有相同權重的樣式存在時,
會根據這些css樣式的前后順序來決定,處于最后面的css樣式會被應用。
所以內聯樣式表(標簽內部)> 嵌入樣式表(當前文件中)> 外部樣式表(外部文件中)。
4.重要性:
我們在做網頁代碼的時,有些特殊的情況需要為某些樣式設置具有最高權值,怎么辦?
這時候我們可以使用!important來解決。
p{color:red!important;} //注意:!important要寫在分號的前面
格式化排版
1.字體
font-family;
color
font-weight:bold;//粗體
font-style:italic; //斜體
text-decoration:underline;//下劃線
text-decoration:line-through;//刪除線
2.段落排版
text-indent:2em;//縮進--注意:2em的意思就是文字的2倍大小。
line-height:1.5em; //行間距--(行高)
letter-spacing://中文字間隔、字母間隔設置;字母與字母
word-spacing://單詞間距設置
text-align; //對齊
元素分類
塊元素
設置display:block就是將元素顯示為塊級元素。
塊級元素特點:
1、每個塊級元素都從新的一行開始,并且其后的元素也另起一行。(真霸道,一個塊級元素獨占一行)
2、元素的高度、寬度、行高以及頂和底邊距都可設置。
3、元素寬度在不設置的情況下,是它本身父容器的100%(和父元素的寬度一致),除非設定一個寬度。
內聯元素
塊狀元素也可以通過代碼display:inline將元素設置為內聯元素
內聯元素特點:
1、和其他元素都在一行上;
2、元素的高度、寬度及頂部和底部邊距不可設置;
3、元素的寬度就是它包含的文字或圖片的寬度,不可改變。
內聯塊元素
內聯塊狀元素(inline-block)就是同時具備內聯元素、塊狀元素的特點,代碼display:inline-block就是將元素設置為內聯塊狀元素。
inline-block 元素特點:
1、和其他元素都在一行上;
2、元素的高度、寬度、行高以及頂和底邊距都可設置。
盒模型
什么是盒子模型
打個比喻:中秋節送包裝月餅,里面每一個月餅等同于div,月餅距離包裝稱為padding,月餅與月餅之間距離稱為marg,月餅包裝為bording;
note:
內填充,外邊距,邊框都有四個方向
邊框
盒子模型的邊框就是圍繞著內容及補白的線,這條線你可以設置它的粗細、樣式和顏色(邊框三個屬性)。
寫法
div{
border:2px solid red;
}
or
div{
border-width:2px;
border-style:solid;
border-color:red;
}
提供單邊設置下邊框
注意:
1、border-style(邊框樣式)常見樣式有:
dashed(虛線)| dotted(點線)| solid(實線)。
2、border-color(邊框顏色)中的顏色可設置為十六進制顏色,如:
border-color:#888;//前面的井號不要忘掉。
3、border-width(邊框寬度)中的寬度也可以設置為:
thin | medium | thick(但不是很常用),最常還是用象素(px)。
寬度和高度
盒模型寬度和高度和我們平常所說的物體的寬度和高度理解是不一樣的,css內定義的寬(width)和高(height),指的是填充以里的內容范圍。
因此一個元素實際寬度(盒子的寬度)=左邊界+左邊框+左填充+內容寬度+右填充+右邊框+右邊界。元素的高度也是同理。
填充
元素內容與邊框之間是可以設置距離的,稱之為“填充”;
填充也可分為上、右、下、左(順時針)。
邊界
元素與其它元素之間的距離可以使用邊界(margin)來設置。邊界也是可分為上、右、下、左。
div{margin:20px 10px 15px 30px;}
也可以分開寫:
div{
margin-top:20px;
margin-right:10px;
margin-bottom:15px;
margin-left:30px;
}
如果上右下左的邊界都為10px;可以這么寫:
div{ margin:10px;}
如果上下邊界一樣為10px,左右一樣為20px,可以這么寫:
div{ margin:10px 20px;}
布局模型
布局模型是建立在盒模型基礎之上,又不同于我們常說的 CSS 布局樣式或 CSS 布局模板。如果說布局模型是本,那么 CSS 布局模板就是末了,是外在的表現形式。
CSS包含3種基本的布局模型,用英文概括為:Flow、Layer 和 Float。
在網頁中,元素有三種布局模型:
1、流動模型(Flow)
流動(Flow)是默認的網頁布局模式。也就是說網頁在默認狀態下的 HTML 網頁元素都是根據流動模型來分布網頁內容的。
第一點,塊狀元素都會在所處的包含元素內自上而下按順序垂直延伸分布,因為在默認狀態下,塊狀元素的寬度都為100%。實際上,塊狀元素都會以行的形式占據位置。
第二點,在流動模型下,內聯元素都會在所處的包含元素內從左到右水平分布顯示。(內聯元素可不像塊狀元素這么霸道獨占一行)
2、浮動模型 (Float)
讓兩個塊狀元素并排顯示;任何元素在默認情況下是不能浮動的,但可以用 CSS 定義為浮動
float:left or right;
3、層模型(Layer)
層布局模型就像是圖像軟件PhotoShop中非常流行的圖層編輯功能一樣,每個圖層能夠精確定位操作,但在網頁設計領域,由于網頁大小的活動性,層布局沒能受到熱捧。但是在網頁上局部使用層布局還是有其方便之處的。
層模型有三種形式:
1、絕對定位(position: absolute)
設置position:absolute(表示絕對定位);這條語句的作用將元素從文檔流中拖出來,然后使用left、right、top、bottom屬性相對于其最接近的一個具有定位屬性的父包含塊進行絕對定位。如果不存在這樣的包含塊,則相對于body元素,即相對于瀏覽器窗口。
2、相對定位(position: relative)
通過left、right、top、bottom屬性確定元素在正常文檔流中的偏移位置。相對定位完成的過程是首先按static(float)方式生成一個元素(并且元素像層一樣浮動了起來),然后相對于以前的位置移動,移動的方向和幅度由left、right、top、bottom屬性確定,偏移前的位置保留不動。
3、固定定位(position: fixed)
fixed:表示固定定位,與absolute定位類型類似,但它的相對移動的坐標是視圖(屏幕內的網頁窗口)本身。由于視圖本身是固定的,它不會隨瀏覽器窗口的滾動條滾動而變化,除非你在屏幕中移動瀏覽器窗口的屏幕位置,或改變瀏覽器窗口的顯示大小,因此固定定位的元素會始終位于瀏覽器窗口內視圖的某個位置,不會受文檔流動影響,這與background-attachment:fixed;屬性功能相同。
縮寫
盒模型代碼簡寫
盒模型時外邊距(margin)、內邊距(padding)和邊框(border)設置上下左右四個方向的邊距是按照順時針方向設置的:上右下左。
顏色縮寫
關于顏色的css樣式也是可以縮寫的,當你設置的顏色是16進制的色彩值時,如果每兩位的值相同,可以縮寫一半。
字體縮寫
注意:
1、使用這一簡寫方式你至少要指定 font-size 和 font-family 屬性,其他的屬性(如 font-weight、font-style、font-varient、line-height)如未指定將自動使用默認值。
2、在縮寫時 font-size 與 line-height 中間要加入“/”斜扛。
一般情況下因為對于中文網站,英文還是比較少的,所以下面縮寫代碼比較常用:
body{
font:12px/1.5em "宋體",sans-serif;
}
只是有字號、行間距、中文字體、英文字體設置。
單位與值
顏色
在網頁中的顏色設置是非常重要,有字體顏色(color)、背景顏色(background-color)、邊框顏色(border)等,設置顏色的方法也有很多種:
1、英文命令顏色p{color:red;}
2、RGB顏色p{color:rgb(133,45,200);}
3.十六進制顏色其原理其實也是 RGB 設置,但是其每一項的值由 0-255 變成了十六進制 00-ff。p{color:#00ffff;}
長度值
1.像素
2.em 本元素給定字體的 font-size 值,如果元素的 font-size 為 14px ,那么 1em = 14px;如果 font-size 為 18px,那么 1em = 18px。
下面注意一個特殊情況:
但當給 font-size 設置單位為 em 時,此時計算的標準以 p 的父元素的 font-size 為基礎。
3、百分比
p{font-size:12px;line-height:130%}
設置行高(行間距)為字體的130%(12 * 1.3 = 15.6px)。
技巧
水平居中
1.行內元素
如果被設置元素為文本、圖片等行內元素時,水平居中是通過給父元素設置 text-align:center 來實現的。
2.塊狀定寬元素
滿足定寬和塊狀兩個條件的元素是可以通過設置“左右margin”值為“auto”來實現居中的。
3.塊狀不定寬元素
不定寬度的塊狀元素有三種方法居中(這三種方法目前使用的都很多):
3.1加入 table 標簽
原理:利用table標簽的長度自適應性---即不定義其長度也不默認父元素body的長度(table其長度根據其內文本長度決定),因此可以看做一個定寬度塊元素,然后再利用定寬度塊狀居中的margin的方法,使其水平居中。
步驟:第一步:為需要設置的居中的元素外面加入一個 table 標簽 ( 包括 <tbody>、<tr>、<td> )。
第二步:為這個 table 設置“左右 margin 居中”(這個和定寬塊狀元素的方法一樣)。
3.2設置 display: inline 方法:與第一種類似,顯示類型設為 行內元素,進行不定寬元素的屬性設置
改變塊級元素的 display 為 inline 類型(設置為 行內元素 顯示),然后使用 text-align:center 來實現居中效果。
存在著一些問題:它將塊狀元素的 display 類型改為 inline,變成了行內元素,所以少了一些功能,比如設定長度值。
3.3設置 position:relative 和 left:50%:利用 相對定位 的方式,將元素向左偏移 50% ,即達到居中的目的
通過給父元素設置 float,然后給父元素設置 position:relative 和 left:50%,子元素設置 position:relative 和 left: -50% 來實現水平居中。
理解:假想ul層的父層(即下面例子中的div層)中間有條平分線將ul層的父層(div層)平均分為兩份,ul層的css代碼是將ul層的最左端與ul層的父層(div層)的平分線對齊;而li層的css代碼則是將li層的平分線與ul層的最左端(也是div層的平分線)對齊,從而實現li層的居中。
垂直居中
1.父元素高度確定的單行文本
父元素高度確定的單行文本的豎直居中的方法是通過設置父元素的 height 和 line-height 高度一致來實現的。(height: 該元素的高度,line-height: 顧名思義,行高(行間距),指在文本中,行與行之間的 基線間的距離 )。
line-height 與 font-size 的計算值之差,在 CSS 中成為“行間距”。分為兩半,分別加到一個文本行內容的頂部和底部。
這種文字行高與塊高一致帶來了一個弊端:當文字內容的長度大于塊的寬時,就有內容脫離了塊。
2.父元素高度確定的多行文本。
2.1使用插入 table (包括tbody、tr、td)標簽,同時設置 vertical-align:middle。
css 中有一個用于豎直居中的屬性 vertical-align,在父元素設置此樣式時,會對inline-block類型的子元素都有用。
隱式改變display
當為元素(不論之前是什么類型元素,display:none 除外)設置以下 2 個句之一:
position : absolute
float : left 或 float:right
簡單來說,只要html代碼中出現以上兩句之一,元素的display顯示類型就會自動變為以 display:inline-block(塊狀元素)的方式顯示,當然就可以設置元素的 width 和 height 了,且默認寬度不占滿父元素。