CSS 基礎(chǔ)總結(jié)

引入CSS

內(nèi)聯(lián)樣式

<h1 style="text-align: center; color: red"></h1>

style標(biāo)簽

<style>
    body {background-color: grey;}
</style>

外部樣式

a.css

body {background-color: grey;}

index.html

<link rel="stylesheet" href="./a.css">

CSS之間引入(不常用)

a.css

@import url(./b.css);
div {background-color: red;}

調(diào)整樣式的技巧

取色留荔、量尺寸涣旨、預(yù)覽字體

  • 使用截圖怜奖、取色工具:QQ妖胀、ColorPix峦剔;
  • 字體可能有多種顏色档礁,此時(shí)需要查看網(wǎng)頁(yè)源代碼:Chrome開(kāi)發(fā)者工具下選擇Elements的Computed屬性(計(jì)算出來(lái)的屬性值);
  • 設(shè)置屬性值:直接在開(kāi)發(fā)者工具上測(cè)試修改吝沫,或查看MDN呻澜;
  • 測(cè)量某些條件下的尺寸時(shí)(如hover)啟用截圖工具可能使效果消失,此時(shí)可以在開(kāi)發(fā)者工具中找到該元素惨险、把觸發(fā)條件固定再測(cè)量羹幸;

添加border

添加樣式無(wú)明顯效果時(shí),可以給添加樣式的元素添加帶顏色和寬度的邊框觀察變化辫愉。

知識(shí)點(diǎn)

偽元素

  • 只能展示(默認(rèn)以span的形式展示栅受,display: block則為div),不能被選中(不是真實(shí)的元素);
  • 必須添加content才可見(jiàn)(content可以為'')屏镊;
  • 可以代替一層div(before/after后面不能再繼續(xù)加)依疼。
div::before{
    content: '['
}
div::after{
    content: ']'
}

屬性繼承

  • 把父元素下的子元素的公共屬性樣式提取出來(lái),寫(xiě)為父元素的樣式屬性闸衫;
  • 部分屬性可修改值為inhert涛贯,表示繼承祖先元素屬性。

默認(rèn)邊距

很多標(biāo)簽都存在默認(rèn)邊距(如body標(biāo)簽?zāi)J(rèn)外邊距8px)蔚出,應(yīng)該修改為0弟翘,再根據(jù)實(shí)際情況調(diào)整。

* {
    margin: 0;
    padding: 0;
}

偽類(lèi)

如包含尺寸相關(guān)的樣式(如border)骄酗,偽類(lèi)屬性(如鼠標(biāo)經(jīng)過(guò))引起改變時(shí)可能會(huì)造成“抖動(dòng)”稀余,此時(shí)應(yīng)設(shè)置樣式默認(rèn)存在、顏色為透明趋翻,如設(shè)置邊框:

a {
    border-bottom: 1px solid transparent;
}
a:hover {
    border-bottom: 1px solid red;
}

其他常用的偽類(lèi)還有:nth-child(2)睛琳、first-child、:lang等踏烙。

a標(biāo)簽

  • a標(biāo)簽作為子標(biāo)簽時(shí)师骗,父標(biāo)簽可能不能完全包住a標(biāo)簽(a是內(nèi)聯(lián)元素),此時(shí)修改a標(biāo)簽的display屬性為block即可讨惩;
  • 設(shè)置a標(biāo)簽的邊界與文字之間的邊距(內(nèi)邊距)辟癌,可以使用padding屬性;
  • a標(biāo)簽?zāi)J(rèn)為藍(lán)色荐捻、有下劃線(xiàn)黍少,應(yīng)該修改全局a標(biāo)簽屬性color: inherit繼承祖先元素的顏色、text-decoration: none去除下劃線(xiàn)处面。

span標(biāo)簽

span與span之間無(wú)論相隔多少空的內(nèi)容(空格厂置、換行等),都會(huì)被認(rèn)為是一個(gè)空格魂角,而在某些span之間不需要空或空格寬度不合要求的的場(chǎng)合應(yīng)該把span同行靠在一起昵济,再通過(guò)margin調(diào)整間距。

元素的高度

文檔流

文檔流即文檔內(nèi)元素的流動(dòng)方向:

  • 內(nèi)聯(lián)元素從左往右野揪,受到阻擋時(shí)換行繼續(xù)向右流動(dòng)访忿,其中:
    • span元素會(huì)被截?cái)喑蓛刹糠殖霈F(xiàn)在兩行;
    • 一連串的英文字符會(huì)被認(rèn)為是一個(gè)單詞囱挑,因此不會(huì)換行(由word-break屬性控制)醉顽;
  • 塊級(jí)元素(獨(dú)占一行)從上往下流動(dòng)沼溜。

塊級(jí)元素(div)的高度:文檔流

  • 塊級(jí)元素的高度由其內(nèi)部文檔流元素的高度總和決定(不是相加)平挑;
  • 可以使用display屬性修改其文檔流展示特性(不建議);
  • 可以使用height屬性固定高度(不建議)。

內(nèi)聯(lián)元素(span)的高度

  • 同行元素依基線(xiàn)(單詞本的第三線(xiàn))對(duì)齊通熄;
  • 換行元素相隔“建議行高”:如span中包含文字唆涝,則建議行高約為字體像素大小的1.4倍高(可以由height、line-height屬性控制唇辨,因字體而異廊酣,前端無(wú)法準(zhǔn)確決定);
  • 字體的像素大猩兔丁:把所有文字排成一行亡驰,最頂端到最低端的距離;
  • 多個(gè)元素同行排放:取行高最大值饿幅;
  • 注意內(nèi)聯(lián)元素只有左右padding有效果凡辱,上下padding沒(méi)有。

內(nèi)聯(lián)元素?zé)o法準(zhǔn)確確定高度栗恩,字體較小時(shí)可以通過(guò)line-height控制(當(dāng)line-height與height一致時(shí)會(huì)在外層元素中自動(dòng)居中)透乾,也可以通過(guò)padding調(diào)節(jié)。

背景圖

  • 自適應(yīng)(寬高磕秤、位置):
banner {
    background-image: url(xxx);
    background-position: center center;
    background-size: cover;
}
  • 遮罩層:放在背景圖div的內(nèi)層乳乌,寬高與背景圖相等(注意自適應(yīng)時(shí)不需要指定),設(shè)置為黑色市咆、調(diào)整透明度即可(如background-color: rgba(0, 0, 0, 0.8))

自適應(yīng)

  • div動(dòng)態(tài)寬度:使用max-width屬性表示最寬不會(huì)超過(guò)該值汉操,而窗口較小時(shí)會(huì)隨窗口縮小床绪;
  • div居中:margin: auto;;
  • span居中:計(jì)算寬度客情、高度差,調(diào)整height = padding + line-height癞己、text-align控制膀斋;
  • 同行元素對(duì)齊:調(diào)整同行不同元素的border、padding(修改padding時(shí)注意上下都要同時(shí)修改痹雅,否則不對(duì)稱(chēng))仰担;
  • 列表兩邊對(duì)齊:如要使dl > dt, dd占滿(mǎn)一行且占據(jù)在兩邊:
dl dt,
dl dd{
    float: left;
    width: 50%;
}

重疊

  • 可以調(diào)整margin外邊距使元素與其他同級(jí)元素重疊,只需要設(shè)置margin為負(fù)數(shù)绩社;
  • 另一個(gè)方法是使用相對(duì)定位(父)-絕對(duì)定位(子)摔蓝,不建議。

形狀

搜素:CSS Tricks Shape

三角形

  • 首先讓邊框與寬度和高度相等
  • 使寬度和高度等于0愉耙,即得到一個(gè)正方形贮尉;
  • 取需要的指定方向的三角形、使其他三個(gè)邊框顏色為透明即可得到一個(gè)等腰直角三角形朴沿;
  • 調(diào)節(jié)邊框?qū)挾炔卵瑁梢缘玫讲煌嵌劝苌啊⒉煌笮〉娜切巍?/li>
div {
    border: 10px solid red;
    width: 10px;
    height: 10px;
    border-top-color: black;
    border-top-color: blue;
    border-top-color: greed;
}

最后把透明的邊框?qū)傩詣h去,得到:

div {
    border: 100px solid transparent;
    width: 0px;
    border-left-color: #E6686A;
    border-top-width: 0px;
}

圓形

  • div加上border-radius屬性可得到弧形的邊框魏铅,其中50%即為圓昌犹;
  • 注意div必須指定width和height。

其他特殊效果

  • 漸變(linear gradient generator)
  • 動(dòng)畫(huà)(CSS Animation)
  • 陰影(Shadow generator)
  • 過(guò)渡:transition: xxx 1s;

圖標(biāo)

使用SVG:

svg {
    width: 100px;
    height: 100px;
    fill: 100%;
    vertical-align: top;
}

關(guān)于布局的總結(jié)

一些設(shè)計(jì)原則

  • 不混用行布局和列布局(比如當(dāng)一行多個(gè)div览芳、且下一個(gè)div位于另一行時(shí):在同行的div們外層套一個(gè)div斜姥,再與下一行的div組成列布局);
  • 使用max-width能根據(jù)窗口大小自動(dòng)調(diào)節(jié)div寬度沧竟,比width更靈活铸敏;
  • 使用display屬性可以改變標(biāo)簽的展示方式,而不是為了方便再內(nèi)容外面先套上一個(gè)div悟泵;
  • 上一行的div與當(dāng)前行div沒(méi)有關(guān)系搞坝,如無(wú)必要不應(yīng)該用一個(gè)div把兩者包在一起,而是根據(jù)內(nèi)容劃分層次魁袜。

多列

單列桩撮、多行排放的元素可通過(guò)float修改為橫向、多列布局:

.child {
    float: left
}

在其父元素清除浮動(dòng)帶來(lái)的副作用:

.clearfix::after{
    content: '';
    display: block;
    clear: both;
}

另外也可以使用絕對(duì)定位-相對(duì)定位做多列布局峰弹,不建議店量。

雙列布局

標(biāo)簽定義如下:

<div class="clearfix">
    <div class="left">left</div>
    <div class="right">right</div>
</div>

兩列自適應(yīng):

<style>
.clearfix::after{
    content: '';
    display: block;
    clear: both;
}
.left {
    background-color: red;
    width: 50%;
    float: left
}
.right {
    background-color: blue;
    width: 50%;
    float: left
}
</style>

固定一列,另一列自適應(yīng):

<style>
.clearfix::after{
    content: '';
    display: block;
    clear: both;
}
.left {
    background-color: red;
    width: 300px;
    float: left;
}
.right {
    background-color: blue;
    margin-left: 300px;
}
</style>

三列布局

標(biāo)簽定義如下:

<div class="clearfix">
    <div class="left">left</div>
    <div class="right">right</div>
    <div class="middle">middle</div>
</div>

固定兩邊鞠呈,中間自適應(yīng)(注意要把頁(yè)面上需要自適應(yīng)的元素代碼寫(xiě)在最后融师,因此固定中間和左/右、另一邊自適應(yīng)同理):

<style>
.clearfix::after{
    content: '';
    display: block;
    clear: both;
}
.left {
    background-color: red;
    width: 300px;
    float: left;
}
.middle {
    background-color: yellow;
    margin-left: 300px;
    margin-right: 100px;
}
.right {
    background-color: blue;
    width: 100px;
    float: right;
}
</style>

三列自適應(yīng)與兩列自適應(yīng)類(lèi)似蚁吝,不作贅述旱爆。

居中

水平居中

元素 屬性
inline 父元素text-align: center
block 定寬:margin-left: auto; margin-right: auto
不定寬:子元素display: inline,再以?xún)?nèi)聯(lián)元素的方法設(shè)置
flex 父元素display: flex; justify-content: center;

垂直居中

元素 屬性
inline 單行:父元素height=line-height
多行:父元素display:table-cell或inline-block; vertical-align:middle;
block 子元素position: absolute; top: 0; bottom: 0
父元素position: relative; margin: auto;
flex 父元素display: flex; min-height: 100vh;
子元素margin:auto;

定位

固定定位

使用position屬性可以脫離文檔流(“浮”在上層)窘茁,如position: fixed屬性定位的元素:

  • 不再受其父元素控制怀伦,其位置是相對(duì)于屏幕而言的;
  • 其寬不會(huì)向兩邊擴(kuò)展(而是向一邊縮)山林,可通過(guò)width: 100%控制(不建議房待,可能會(huì)越出其父元素);
  • 在fixed定位的元素中套一層div驼抹,通過(guò)修改該div的padding屬性達(dá)到控制邊距的效果桑孩。

相對(duì)定位、絕對(duì)定位

絕對(duì)定位必為block框冀,使用絕對(duì)定位不會(huì)影響父元素流椒、可以避免頁(yè)面元素改變時(shí)影響布局(比如div擠壓)。

使用浮動(dòng)元素/絕對(duì)定位時(shí)沒(méi)有指定寬度會(huì)默認(rèn)自動(dòng)換行明也,需要同行展示可以設(shè)置white-space: nowrap宣虾。

  • 父元素:position: relative;
  • 子元素:position: absolute;(相對(duì)于祖先中的第一個(gè)relative素定位)
  • 子元素中通過(guò)top极谊、bottom、left安岂、right屬性調(diào)節(jié)定位(表示到該邊的距離)。

更多高級(jí)的布局方法見(jiàn):CSS布局十八般武藝都在這里了

周邊工具

  • LESS CSS:一種簡(jiǎn)化帆吻、功能更多的CSS語(yǔ)言域那;
  • SASS:一種簡(jiǎn)化、功能更多的CSS 語(yǔ)言(請(qǐng)自行搜索中英文官網(wǎng))猜煮;
  • PostCSS:一種 CSS 處理程序次员。

學(xué)習(xí)資源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市王带,隨后出現(xiàn)的幾起案子淑蔚,更是在濱河造成了極大的恐慌,老刑警劉巖愕撰,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刹衫,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡搞挣,警方通過(guò)查閱死者的電腦和手機(jī)带迟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)囱桨,“玉大人仓犬,你說(shuō)我怎么就攤上這事∩岢Γ” “怎么了搀继?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)翠语。 經(jīng)常有香客問(wèn)我叽躯,道長(zhǎng),這世上最難降的妖魔是什么肌括? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任险毁,我火速辦了婚禮,結(jié)果婚禮上们童,老公的妹妹穿的比我還像新娘畔况。我一直安慰自己,他們只是感情好慧库,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布跷跪。 她就那樣靜靜地躺著,像睡著了一般齐板。 火紅的嫁衣襯著肌膚如雪吵瞻。 梳的紋絲不亂的頭發(fā)上葛菇,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音橡羞,去河邊找鬼眯停。 笑死,一個(gè)胖子當(dāng)著我的面吹牛卿泽,可吹牛的內(nèi)容都是我干的莺债。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼签夭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼齐邦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起第租,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤措拇,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后慎宾,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體丐吓,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年趟据,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了汰蜘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡之宿,死狀恐怖族操,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情比被,我是刑警寧澤色难,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站等缀,受9級(jí)特大地震影響枷莉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尺迂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一笤妙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧噪裕,春花似錦蹲盘、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至祭陷,卻和暖如春苍凛,著一層夾襖步出監(jiān)牢的瞬間趣席,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工醇蝴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宣肚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓悠栓,卻偏偏與公主長(zhǎng)得像霉涨,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子闸迷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容