css 全稱為“層疊樣式表”
聲明乡话,本文為學(xué)習(xí)慕課網(wǎng)HTML+CSS中CSS筆記http://www.imooc.com/learn/9;可能存在問題,未來不斷學(xué)習(xí)修改
組成:
選擇器 {
屬性:值;聲明
}
注釋/** **/
分類:三種
內(nèi)聯(lián)式
css樣式表就是把css代碼直接寫在現(xiàn)有的HTML標(biāo)簽中
嵌入式
可以把css樣式代碼寫在<style type="text/css"></style>標(biāo)簽之間。
一般情況下嵌入式css樣式寫在<head></head>之間。
外部式
css代碼寫一個(gè)單獨(dú)的外部文件中协饲,這個(gè)css樣式文件以“.css”為擴(kuò)展名,
在“head”內(nèi)(不是在style標(biāo)簽內(nèi))使用link標(biāo)簽將css樣式文件鏈接到HTML文件內(nèi)缴川,如下面代碼:
<link href="base.css引用位置" rel="stylesheet" type="text/css" />
優(yōu)先級(jí):在的相同權(quán)值的情況下,內(nèi)聯(lián)式 > 嵌入式 > 外部式描馅;
嵌入式>外部式有一個(gè)前提:嵌入式css樣式的位置一定在外部式的后面把夸。
其實(shí)總結(jié)來說,就是--就近原則(離被設(shè)置元素越近優(yōu)先級(jí)別越高)铭污。
不同選擇器:
1.標(biāo)簽選擇器
html代碼中的標(biāo)簽恋日。
2.類選擇器
.類選擇器{}
使用 class = "類選擇器名稱" 為標(biāo)簽設(shè)置一個(gè)類
3.id選擇器
方式: #選擇器{ }為標(biāo)簽設(shè)置id="ID名稱"
class 和 id 選擇器的區(qū)別
相同點(diǎn):可以應(yīng)用于任何元素
不同點(diǎn):
1膀篮、ID選擇器只能在文檔中使用一次。與類選擇器不同岂膳,在一個(gè)HTML文檔中誓竿,ID選擇器只能使用一次,
而且僅一次谈截。而類選擇器可以使用多次筷屡。
2.可以使用類選擇器詞列表方法為一個(gè)元素同時(shí)設(shè)置多個(gè)樣式。
我們可以為一個(gè)元素同時(shí)設(shè)多個(gè)樣式簸喂,但只可以用類選擇器的方法實(shí)現(xiàn)毙死。ID選擇器是不可以的(不能使用 ID 詞列表)。比如:
(span class="stress bigsize")
4.子選擇器
大于符號(hào)(>),用于選擇指定標(biāo)簽元素的第一代子元素
.first > span{color:red;}
5.包含(后代)選擇器
即加入空格,用于選擇指定標(biāo)簽元素下的后輩元素喻鳄。如:.first span{color:red;}
比較
子選擇器(child selector)僅是指它的直接后代扼倘,或者你可以理解為作用于子元素的第一代后代。
而后代選擇器是作用于所有子后代元素除呵。后代選擇器通過空格來進(jìn)行選擇再菊,而子選擇器是通過“>”進(jìn)行選擇。
總結(jié):>作用于元素的第一代后代颜曾,空格作用于元素的所有后代袄简。
====
5.通用選擇器
通用選擇器是功能最強(qiáng)大的選擇器,它使用一個(gè)(*)號(hào)指定泛啸,它的作用是匹配html中所有標(biāo)簽元素
6.偽類選擇符
它允許給html不存在的標(biāo)簽(標(biāo)簽的某種狀態(tài))設(shè)置樣式
link 未訪問(默認(rèn)) -- hover 鼠標(biāo)懸停(鼠標(biāo)劃過) -- active 鏈接激活(鼠標(biāo)按下) -- visited 訪問過后(點(diǎn)擊過后)
順序:link visited hover active
a:hover{color:red;}
7.分組選擇符
多個(gè)標(biāo)簽元素設(shè)置同一個(gè)樣式時(shí)绿语,可以使用分組選擇符(,)
h1,span{color:red;}
特性:
1.繼承
CSS的某些樣式是具有繼承性的候址;繼承是一種規(guī)則吕粹,它允許樣式不僅應(yīng)用于某個(gè)特定html標(biāo)簽元素,而且應(yīng)用于其后代岗仑。
2.特殊性:
有的時(shí)候我們?yōu)橥粋€(gè)元素設(shè)置了不同的CSS樣式代碼匹耕,那么元素會(huì)啟用哪一個(gè)CSS樣式呢?
下面是權(quán)值的規(guī)則:
標(biāo)簽的權(quán)值為1荠雕,類選擇符的權(quán)值為10稳其,ID選擇符的權(quán)值最高為100。
注意:還有一個(gè)權(quán)值比較特殊--繼承也有權(quán)值但很低炸卑,有的文獻(xiàn)提出它只有0.1既鞠,所以可以理解為繼承的權(quán)值最低。
3.層疊:
如果在html文件中對(duì)于同一個(gè)元素可以有多個(gè)css樣式存在并且這多個(gè)css樣式具有相同權(quán)重值怎么辦盖文?
層疊就是在html文件中對(duì)于同一個(gè)元素可以有多個(gè)css樣式存在嘱蛋,當(dāng)有相同權(quán)重的樣式存在時(shí),
會(huì)根據(jù)這些css樣式的前后順序來決定,處于最后面的css樣式會(huì)被應(yīng)用洒敏。
所以內(nèi)聯(lián)樣式表(標(biāo)簽內(nèi)部)> 嵌入樣式表(當(dāng)前文件中)> 外部樣式表(外部文件中)龄恋。
4.重要性:
我們?cè)谧鼍W(wǎng)頁代碼的時(shí),有些特殊的情況需要為某些樣式設(shè)置具有最高權(quán)值凶伙,怎么辦郭毕?
這時(shí)候我們可以使用!important來解決。
p{color:red!important;} //注意:!important要寫在分號(hào)的前面
格式化排版
1.字體
font-family;
color
font-weight:bold;//粗體
font-style:italic; //斜體
text-decoration:underline;//下劃線
text-decoration:line-through;//刪除線
2.段落排版
text-indent:2em;//縮進(jìn)--注意:2em的意思就是文字的2倍大小函荣。
line-height:1.5em; //行間距--(行高)
letter-spacing://中文字間隔显押、字母間隔設(shè)置;字母與字母
word-spacing://單詞間距設(shè)置
text-align; //對(duì)齊
元素分類
塊元素
設(shè)置display:block就是將元素顯示為塊級(jí)元素。
塊級(jí)元素特點(diǎn):
1偏竟、每個(gè)塊級(jí)元素都從新的一行開始煮落,并且其后的元素也另起一行。(真霸道踊谋,一個(gè)塊級(jí)元素獨(dú)占一行)
2蝉仇、元素的高度、寬度殖蚕、行高以及頂和底邊距都可設(shè)置轿衔。
3、元素寬度在不設(shè)置的情況下睦疫,是它本身父容器的100%(和父元素的寬度一致)害驹,除非設(shè)定一個(gè)寬度。
內(nèi)聯(lián)元素
塊狀元素也可以通過代碼display:inline將元素設(shè)置為內(nèi)聯(lián)元素
內(nèi)聯(lián)元素特點(diǎn):
1蛤育、和其他元素都在一行上宛官;
2、元素的高度瓦糕、寬度及頂部和底部邊距不可設(shè)置底洗;
3、元素的寬度就是它包含的文字或圖片的寬度咕娄,不可改變亥揖。
內(nèi)聯(lián)塊元素
內(nèi)聯(lián)塊狀元素(inline-block)就是同時(shí)具備內(nèi)聯(lián)元素、塊狀元素的特點(diǎn)圣勒,代碼display:inline-block就是將元素設(shè)置為內(nèi)聯(lián)塊狀元素费变。
inline-block 元素特點(diǎn):
1、和其他元素都在一行上圣贸;
2挚歧、元素的高度、寬度旁趟、行高以及頂和底邊距都可設(shè)置昼激。
盒模型
什么是盒子模型
打個(gè)比喻:中秋節(jié)送包裝月餅庇绽,里面每一個(gè)月餅等同于div,月餅距離包裝稱為padding,月餅與月餅之間距離稱為marg,月餅包裝為bording;
note:
內(nèi)填充锡搜,外邊距橙困,邊框都有四個(gè)方向
邊框
盒子模型的邊框就是圍繞著內(nèi)容及補(bǔ)白的線,這條線你可以設(shè)置它的粗細(xì)耕餐、樣式和顏色(邊框三個(gè)屬性)凡傅。
寫法
div{
border:2px solid red;
}
or
div{
border-width:2px;
border-style:solid;
border-color:red;
}
提供單邊設(shè)置下邊框
注意:
1、border-style(邊框樣式)常見樣式有:
dashed(虛線)| dotted(點(diǎn)線)| solid(實(shí)線)肠缔。
2夏跷、border-color(邊框顏色)中的顏色可設(shè)置為十六進(jìn)制顏色,如:
border-color:#888;//前面的井號(hào)不要忘掉蟹倾。
3抖坪、border-width(邊框?qū)挾龋┲械膶挾纫部梢栽O(shè)置為:
thin | medium | thick(但不是很常用)寞酿,最常還是用象素(px)。
寬度和高度
盒模型寬度和高度和我們平常所說的物體的寬度和高度理解是不一樣的猫态,css內(nèi)定義的寬(width)和高(height),指的是填充以里的內(nèi)容范圍披摄。
因此一個(gè)元素實(shí)際寬度(盒子的寬度)=左邊界+左邊框+左填充+內(nèi)容寬度+右填充+右邊框+右邊界亲雪。元素的高度也是同理。
填充
元素內(nèi)容與邊框之間是可以設(shè)置距離的疚膊,稱之為“填充”义辕;
填充也可分為上、右寓盗、下灌砖、左(順時(shí)針)。
邊界
元素與其它元素之間的距離可以使用邊界(margin)來設(shè)置傀蚌。邊界也是可分為上基显、右、下喳张、左续镇。
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;}
布局模型
布局模型是建立在盒模型基礎(chǔ)之上摸航,又不同于我們常說的 CSS 布局樣式或 CSS 布局模板。如果說布局模型是本舅桩,那么 CSS 布局模板就是末了酱虎,是外在的表現(xiàn)形式。
CSS包含3種基本的布局模型擂涛,用英文概括為:Flow读串、Layer 和 Float。
在網(wǎng)頁中,元素有三種布局模型:
1恢暖、流動(dòng)模型(Flow)
流動(dòng)(Flow)是默認(rèn)的網(wǎng)頁布局模式排监。也就是說網(wǎng)頁在默認(rèn)狀態(tài)下的 HTML 網(wǎng)頁元素都是根據(jù)流動(dòng)模型來分布網(wǎng)頁內(nèi)容的。
第一點(diǎn)杰捂,塊狀元素都會(huì)在所處的包含元素內(nèi)自上而下按順序垂直延伸分布舆床,因?yàn)樵谀J(rèn)狀態(tài)下,塊狀元素的寬度都為100%嫁佳。實(shí)際上挨队,塊狀元素都會(huì)以行的形式占據(jù)位置。
第二點(diǎn)蒿往,在流動(dòng)模型下盛垦,內(nèi)聯(lián)元素都會(huì)在所處的包含元素內(nèi)從左到右水平分布顯示。(內(nèi)聯(lián)元素可不像塊狀元素這么霸道獨(dú)占一行)
2瓤漏、浮動(dòng)模型 (Float)
讓兩個(gè)塊狀元素并排顯示;任何元素在默認(rèn)情況下是不能浮動(dòng)的腾夯,但可以用 CSS 定義為浮動(dòng)
float:left or right;
3、層模型(Layer)
層布局模型就像是圖像軟件PhotoShop中非常流行的圖層編輯功能一樣赌蔑,每個(gè)圖層能夠精確定位操作俯在,但在網(wǎng)頁設(shè)計(jì)領(lǐng)域,由于網(wǎng)頁大小的活動(dòng)性娃惯,層布局沒能受到熱捧跷乐。但是在網(wǎng)頁上局部使用層布局還是有其方便之處的趾浅。
層模型有三種形式:
1、絕對(duì)定位(position: absolute)
設(shè)置position:absolute(表示絕對(duì)定位);這條語句的作用將元素從文檔流中拖出來浅侨,然后使用left、right如输、top、bottom屬性相對(duì)于其最接近的一個(gè)具有定位屬性的父包含塊進(jìn)行絕對(duì)定位不见。如果不存在這樣的包含塊崔步,則相對(duì)于body元素稳吮,即相對(duì)于瀏覽器窗口。
2井濒、相對(duì)定位(position: relative)
通過left灶似、right列林、top、bottom屬性確定元素在正常文檔流中的偏移位置酪惭。相對(duì)定位完成的過程是首先按static(float)方式生成一個(gè)元素(并且元素像層一樣浮動(dòng)了起來)希痴,然后相對(duì)于以前的位置移動(dòng),移動(dòng)的方向和幅度由left撞蚕、right润梯、top过牙、bottom屬性確定甥厦,偏移前的位置保留不動(dòng)。
3寇钉、固定定位(position: fixed)
fixed:表示固定定位刀疙,與absolute定位類型類似,但它的相對(duì)移動(dòng)的坐標(biāo)是視圖(屏幕內(nèi)的網(wǎng)頁窗口)本身扫倡。由于視圖本身是固定的谦秧,它不會(huì)隨瀏覽器窗口的滾動(dòng)條滾動(dòng)而變化,除非你在屏幕中移動(dòng)瀏覽器窗口的屏幕位置撵溃,或改變?yōu)g覽器窗口的顯示大小疚鲤,因此固定定位的元素會(huì)始終位于瀏覽器窗口內(nèi)視圖的某個(gè)位置,不會(huì)受文檔流動(dòng)影響缘挑,這與background-attachment:fixed;屬性功能相同集歇。
縮寫
盒模型代碼簡寫
盒模型時(shí)外邊距(margin)、內(nèi)邊距(padding)和邊框(border)設(shè)置上下左右四個(gè)方向的邊距是按照順時(shí)針方向設(shè)置的:上右下左语淘。
顏色縮寫
關(guān)于顏色的css樣式也是可以縮寫的诲宇,當(dāng)你設(shè)置的顏色是16進(jìn)制的色彩值時(shí),如果每兩位的值相同惶翻,可以縮寫一半姑蓝。
字體縮寫
注意:
1、使用這一簡寫方式你至少要指定 font-size 和 font-family 屬性吕粗,其他的屬性(如 font-weight纺荧、font-style宙暇、font-varient客给、line-height)如未指定將自動(dòng)使用默認(rèn)值靶剑。
2、在縮寫時(shí) font-size 與 line-height 中間要加入“/”斜扛缎讼。
一般情況下因?yàn)閷?duì)于中文網(wǎng)站血崭,英文還是比較少的厘灼,所以下面縮寫代碼比較常用:
body{
font:12px/1.5em "宋體",sans-serif;
}
只是有字號(hào)设凹、行間距闪朱、中文字體、英文字體設(shè)置锄开。
單位與值
顏色
在網(wǎng)頁中的顏色設(shè)置是非常重要萍悴,有字體顏色(color)退腥、背景顏色(background-color)狡刘、邊框顏色(border)等嗅蔬,設(shè)置顏色的方法也有很多種:
1澜术、英文命令顏色p{color:red;}
2鸟废、RGB顏色p{color:rgb(133,45,200);}
3.十六進(jìn)制顏色其原理其實(shí)也是 RGB 設(shè)置盒延,但是其每一項(xiàng)的值由 0-255 變成了十六進(jìn)制 00-ff。p{color:#00ffff;}
長度值
1.像素
2.em 本元素給定字體的 font-size 值胯盯,如果元素的 font-size 為 14px 博脑,那么 1em = 14px叉趣;如果 font-size 為 18px君账,那么 1em = 18px。
下面注意一個(gè)特殊情況:
但當(dāng)給 font-size 設(shè)置單位為 em 時(shí)闻牡,此時(shí)計(jì)算的標(biāo)準(zhǔn)以 p 的父元素的 font-size 為基礎(chǔ)罩润。
3翼馆、百分比
p{font-size:12px;line-height:130%}
設(shè)置行高(行間距)為字體的130%(12 * 1.3 = 15.6px)严沥。
技巧
水平居中
1.行內(nèi)元素
如果被設(shè)置元素為文本中姜、圖片等行內(nèi)元素時(shí)丢胚,水平居中是通過給父元素設(shè)置 text-align:center 來實(shí)現(xiàn)的携龟。
2.塊狀定寬元素
滿足定寬和塊狀兩個(gè)條件的元素是可以通過設(shè)置“左右margin”值為“auto”來實(shí)現(xiàn)居中的。
3.塊狀不定寬元素
不定寬度的塊狀元素有三種方法居中(這三種方法目前使用的都很多):
3.1加入 table 標(biāo)簽
原理:利用table標(biāo)簽的長度自適應(yīng)性---即不定義其長度也不默認(rèn)父元素body的長度(table其長度根據(jù)其內(nèi)文本長度決定)坟桅,因此可以看做一個(gè)定寬度塊元素桦卒,然后再利用定寬度塊狀居中的margin的方法方灾,使其水平居中裕偿。
步驟:第一步:為需要設(shè)置的居中的元素外面加入一個(gè) table 標(biāo)簽 ( 包括 <tbody>嘿棘、<tr>焦人、<td> )重父。
第二步:為這個(gè) table 設(shè)置“左右 margin 居中”(這個(gè)和定寬塊狀元素的方法一樣)矿辽。
3.2設(shè)置 display: inline 方法:與第一種類似袋倔,顯示類型設(shè)為 行內(nèi)元素宾娜,進(jìn)行不定寬元素的屬性設(shè)置
改變塊級(jí)元素的 display 為 inline 類型(設(shè)置為 行內(nèi)元素 顯示)碳默,然后使用 text-align:center 來實(shí)現(xiàn)居中效果嘱根。
存在著一些問題:它將塊狀元素的 display 類型改為 inline该抒,變成了行內(nèi)元素凑保,所以少了一些功能欧引,比如設(shè)定長度值。
3.3設(shè)置 position:relative 和 left:50%:利用 相對(duì)定位 的方式憋肖,將元素向左偏移 50% ,即達(dá)到居中的目的
通過給父元素設(shè)置 float怎炊,然后給父元素設(shè)置 position:relative 和 left:50%评肆,子元素設(shè)置 position:relative 和 left: -50% 來實(shí)現(xiàn)水平居中责循。
理解:假想ul層的父層(即下面例子中的div層)中間有條平分線將ul層的父層(div層)平均分為兩份,ul層的css代碼是將ul層的最左端與ul層的父層(div層)的平分線對(duì)齊歹垫;而li層的css代碼則是將li層的平分線與ul層的最左端(也是div層的平分線)對(duì)齊排惨,從而實(shí)現(xiàn)li層的居中暮芭。
垂直居中
1.父元素高度確定的單行文本
父元素高度確定的單行文本的豎直居中的方法是通過設(shè)置父元素的 height 和 line-height 高度一致來實(shí)現(xiàn)的。(height: 該元素的高度瑞筐,line-height: 顧名思義,行高(行間距)腊瑟,指在文本中聚假,行與行之間的 基線間的距離 )块蚌。
line-height 與 font-size 的計(jì)算值之差,在 CSS 中成為“行間距”膘格。分為兩半峭范,分別加到一個(gè)文本行內(nèi)容的頂部和底部。
這種文字行高與塊高一致帶來了一個(gè)弊端:當(dāng)文字內(nèi)容的長度大于塊的寬時(shí)瘪贱,就有內(nèi)容脫離了塊纱控。
2.父元素高度確定的多行文本。
2.1使用插入 table (包括tbody政敢、tr、td)標(biāo)簽,同時(shí)設(shè)置 vertical-align:middle。
css 中有一個(gè)用于豎直居中的屬性 vertical-align璃谨,在父元素設(shè)置此樣式時(shí),會(huì)對(duì)inline-block類型的子元素都有用衷模。
隱式改變display
當(dāng)為元素(不論之前是什么類型元素熙揍,display:none 除外)設(shè)置以下 2 個(gè)句之一:
position : absolute
float : left 或 float:right
簡單來說泥耀,只要html代碼中出現(xiàn)以上兩句之一夸溶,元素的display顯示類型就會(huì)自動(dòng)變?yōu)橐?display:inline-block(塊狀元素)的方式顯示韩脑,當(dāng)然就可以設(shè)置元素的 width 和 height 了壮吩,且默認(rèn)寬度不占滿父元素递雀。