HTML+CSS基礎

CSS選擇器

1、類和ID選擇器的區(qū)別

相同點:可以應用于任何元素

不同點:

1髓介、ID選擇器只能在文檔中使用一次惕鼓。與類選擇器不同,在一個HTML文檔中唐础,ID選擇器只能使用一次箱歧,而且僅一次。而類選擇器可以使用多次彻犁。

2叫胁、可以使用類選擇器詞列表方法為一個元素同時設置多個樣式。我們可以為一個元素同時設多個樣式汞幢,但只可以用類選擇器的方法實現(xiàn)驼鹅,ID選擇器是不可以的(不能使用 ID 詞列表)。

2森篷、子選擇器

子選擇器输钩,即大于符號(>),用于選擇指定標簽元素的第一代子元素。

.first>span{border:1px solid red;}

3仲智、包含(后代)選擇器

包含選擇器买乃,即加入空格,用于選擇指定標簽元素下的后輩元素。

.first span{color:red;}

總結:[子選擇器] > 作用于元素的第一代后代钓辆,[后代選擇器] 空格 作用于元素的所有后代剪验。

4、通用選擇器

通用選擇器是功能最強大的選擇器前联,它使用一個(*)號指定功戚,它的作用是匹配html中所有標簽元素显拜,如下使用下面代碼使用html中任意標簽元素字體顏色全部設置為紅色:

* {color:red;}

5寝贡、偽類選擇符

更有趣的是偽類選擇符朋魔,為什么叫做偽類選擇符扩然,它允許給html不存在的標簽(標簽的某種狀態(tài))設置樣式守伸,比如說我們給html中一個標簽元素的鼠標滑過的狀態(tài)來設置字體顏色:

a:hover{color:red;}

6萍程、分組選擇符

當你想為html中多個標簽元素設置同一個樣式時膨更,可以使用分組選擇符(挺邀,)伤塌,如下代碼為右側代碼編輯器中的h1灯萍、span標簽同時設置字體顏色為紅色:

h1,span{color:red;}

CSS繼承、特殊性寸谜、層疊

1竟稳、繼承

繼承是一種規(guī)則属桦,它允許樣式不僅應用于某個特定html標簽元素,而且應用于其后代他爸。

2聂宾、特殊性

有的時候我們?yōu)橥粋€元素設置了不同的CSS樣式代碼,那么元素會啟用哪一個CSS樣式呢? 權值

權值規(guī)則:

標簽的權值為1诊笤,類選擇符的權值為10系谐,ID選擇符的權值最高為100。 例如下面的代碼:

p{color:red;} /*權值為1*/
p span{color:green;} /*權值為1+1=2*/
.warning{color:white;} /*權值為10*/
p span.warning{color:purple;} /*權值為1+1+10=12*/
#footer .note p{color:yellow;} /*權值為100+10+1=111*/

注意:還有一個權值比較特殊--繼承也有權值但很低讨跟,有的文獻提出它只有0.1纪他,所以可以理解為繼承的權值最低。

3晾匠、層疊

如果在html文件中對于同一個元素可以有多個css樣式存在并且這多個css樣式具有相同權重值怎么辦茶袒?層疊

層疊很好理解,后面的樣式會覆蓋前面的樣式凉馆。

內(nèi)聯(lián)樣式表(標簽內(nèi)部)> 嵌入樣式表(當前文件中)> 外部樣式表(外部文件中)薪寓。

4、重要性

我們在做網(wǎng)頁代碼的時澜共,有些特殊的情況需要為某些樣式設置具有最高權值向叉,怎么辦?這時候我們可以使用!important來解決嗦董。

p{color:red!important;}
p{color:green;}

注意:!important要寫在分號的前面

樣式優(yōu)先級為:瀏覽器默認的樣式 < 網(wǎng)頁制作者樣式 < 用戶自己設置的樣式母谎,但記住!important優(yōu)先級樣式是個例外,權值高于用戶自己設置的樣式京革。

CSS格式化排版

文字排版--字體

注意不要設置不常用的字體奇唤,因為如果用戶本地電腦上如果沒有安裝你設置的字體,就會顯示瀏覽器默認的字體匹摇。

body{font-family:"Microsoft Yahei";}

或

body{font-family:"微軟雅黑";}

注意:第一種方法比第二種方法兼容性更好一些冻记。

文字排版--字號、顏色

body{font-size:12px;color:#666}

文字排版--粗體

p span{font-weight:bold;}

文字排版--斜體

p span{font-style:italic;}

文字排版--下劃線

p span{text-decoration:underline;}

文字排版--刪除線

.oldPrice{text-decoration:line-through;}

段落排版--縮進

p{text-indent:2em;}

段落排版--行間距(行高)

p{line-height:1.5em;}

段落排版--中文字間距来惧、字母間距

中文字間隔、字母間隔設置:
h1{letter-spacing:50px;}

單詞間距設置:
h1{word-spacing:50px;}

段落排版--對齊

h1{text-align:center;}

CSS元素分類

在CSS中演顾,html中的標簽元素大體被分為三種不同的類型:塊狀元素供搀、內(nèi)聯(lián)元素(又叫行內(nèi)元素)和內(nèi)聯(lián)塊狀元素。

常用的塊狀元素有:

<div>钠至、<p>葛虐、<h1>...<h6>、<ol>棉钧、<ul>屿脐、<dl>、
<table>、<address>的诵、<blockquote> 万栅、<form>

常用的內(nèi)聯(lián)元素有:

<a>、<span>西疤、<br>烦粒、<i>、<em>代赁、<strong>扰她、
<label>、<q>芭碍、<var>徒役、<cite>、<code>

常用的內(nèi)聯(lián)塊狀元素有:

<img>窖壕、<input>

元素分類--塊級元素

什么是塊級元素忧勿?

在html中<div>、<p>艇拍、<h1>狐蜕、<form>、<ul> 和 <li>就是塊級元素卸夕。

設置display:block就是將元素顯示為塊級元素层释。如下代碼就是將內(nèi)聯(lián)元素a轉換為塊狀元素,從而使a元素具有塊狀元素特點快集。

a{display:block;}

塊級元素特點:

1贡羔、每個塊級元素都從新的一行開始,并且其后的元素也另起一行个初。(真霸道乖寒,一個塊級元素獨占一行)

2、元素的高度院溺、寬度楣嘁、行高以及頂和底邊距都可設置。

3珍逸、元素寬度在不設置的情況下逐虚,是它本身父容器的100%(和父元素的寬度一致),除非設定一個寬度谆膳。

元素分類--內(nèi)聯(lián)元素

在html中叭爱,<span>、<a>漱病、<label>买雾、 <strong>
和<em>就是典型的內(nèi)聯(lián)元素(行內(nèi)元素)(inline)元素把曼。

當然塊狀元素也可以通過代碼display:inline將元素設置為內(nèi)聯(lián)元素。如下代碼就是將塊狀元素div轉換為內(nèi)聯(lián)元素漓穿,從而使 div 元素具有內(nèi)聯(lián)元素特點嗤军。

div{display:inline;}

內(nèi)聯(lián)元素特點:

1、和其他元素都在一行上器净;

2型雳、元素的高度、寬度及頂部和底部邊距不可設置山害;

3纠俭、元素的寬度就是它包含的文字或圖片的寬度,不可改變浪慌。

元素分類--內(nèi)聯(lián)塊狀元素

內(nèi)聯(lián)塊狀元素(inline-block)就是同時具備內(nèi)聯(lián)元素冤荆、塊狀元素的特點,代碼display:inline-block就是將元素設置為內(nèi)聯(lián)塊狀元素权纤。

a{display:inline-block;}

inline-block 元素特點:

1钓简、和其他元素都在一行上;

2汹想、元素的高度外邓、寬度、行高以及頂和底邊距都可設置古掏。

CSS 盒模型

盒子模型的邊框就是圍繞著內(nèi)容及補白的線损话,這條線你可以設置它的粗細、樣式和顏色(邊框三個屬性)槽唾。

div{border:2px solid red;}

dashed(虛線)丧枪、dotted(點線)、solid(實線)庞萍。
單獨設置下邊框

div{border-bottom:1px solid red;}
上拧烦、右、下钝计、左

div{margin:20px 10px 15px 30px;}

CSS布局模型

布局模型與盒模型一樣都是 CSS 最基本恋博、 最核心的概念。 但布局模型是建立在盒模型基礎之上私恬,又不同于我們常說的 CSS 布局樣式或 CSS 布局模板交播。如果說布局模型是本,那么 CSS 布局模板就是末了践付,是外在的表現(xiàn)形式。

CSS包含3種基本的布局模型缺厉,用英文概括為:Flow永高、Layer 和 Float隧土。

在網(wǎng)頁中,元素有三種布局模型:

1命爬、流動模型(Flow)

2曹傀、浮動模型 (Float)

3、層模型(Layer)

流動模型

流動模型饲宛,流動(Flow)是默認的網(wǎng)頁布局模式皆愉。

特征:

1.塊狀元素都會在所處的包含元素內(nèi)自上而下按順序垂直延伸分布,因為在默認狀態(tài)下艇抠,塊狀元素的寬度都為100%幕庐。

2.內(nèi)聯(lián)元素都會在所處的包含元素內(nèi)從左到右水平分布顯示。(內(nèi)聯(lián)元素可不像塊狀元素這么霸道獨占一行)

浮動模型

任何元素在默認情況下是不能浮動的家淤,但可以用 CSS 定義為浮動异剥,如 div、p絮重、table冤寿、img 等元素都可以被定義為浮動。如下代碼可以實現(xiàn)兩個 div 元素一行顯示青伤。

div{
    width:200px;
    height:200px;
    border:1px red solid;
    float:left;/*左浮動*/
}

層模型

三種形式:

1督怜、絕對定位(position: absolute)

2、相對定位(position: relative)

相對于以前的位置移動狠角,移動的方向和幅度由left号杠、right、top擎厢、bottom屬性確定究流,偏移前的位置保留不動

3动遭、固定定位(position: fixed)

水平居中總結-不定寬塊狀元素方法

不定寬度的塊狀元素有三種方法居中(這三種方法目前使用的都很多):

  • 1.加入 table 標簽

  • 2.設置 display: inline 方法:與第一種類似芬探,顯示類型設為 行內(nèi)元素,進行不定寬元素的屬性設置

  • 3.設置 position:relative 和 left:50%:利用 相對定位 的方式厘惦,將元素向左偏移 50% 偷仿,即達到居中的目的

方法一:

第一步:為需要設置的居中的元素外面加入一個 table 標簽 ( 包括 <tbody>、<tr>宵蕉、<td> )酝静。

第二步:為這個 table 設置“左右 margin 居中”(這個和定寬塊狀元素的方法一樣)。

<style>
table{
    border:1px solid;
    margin:0 auto;
}
</style>

<div>
 <table>
  <tbody>
    <tr><td>
    <ul>
        <li>我是第一行文本</li>
    </ul>
    </td></tr>
  </tbody>
 </table>
</div>

方法二:

改變塊級元素的 display 為 inline 類型(設置為 行內(nèi)元素 顯示)羡玛,然后使用 text-align:center 來實現(xiàn)居中效果别智。如下例子:

<style>
.container{
    text-align:center;
}
/* margin:0;padding:0(消除文本與div邊框之間的間隙)*/
.container ul{
    list-style:none;
    margin:0;
    padding:0;
    display:inline;
}
/* margin-right:8px(設置li文本之間的間隔)*/
.container li{
    margin-right:8px;
    display:inline;
}
</style>

<div class="container">
    <ul>
        <li><a href="#">1</a></li>
    </ul>
</div>

這種方法相比第一種方法的優(yōu)勢是不用增加無語義標簽,但也存在著一些問題:它將塊狀元素的 display 類型改為 inline稼稿,變成了行內(nèi)元素薄榛,所以少了一些功能讳窟,比如設定長度值。

方法三:通過給父元素設置 float敞恋,然后給父元素設置 position:relative 和 left:50%丽啡,子元素設置 position:relative 和 left: -50% 來實現(xiàn)水平居中。

我們可以這樣理解:假想ul層的父層(即下面例子中的div層)中間有條平分線將ul層的父層(div層)平均分為兩份硬猫,ul層的css代碼是將ul層的最左端與ul層的父層(div層)的平分線對齊补箍;而li層的css代碼則是將li層的平分線與ul層的最左端(也是div層的平分線)對齊,從而實現(xiàn)li層的居中啸蜜。

代碼如下:

<style>
.container{
    float:left;
    position:relative;
    left:50%
}

.container ul{
    list-style:none;
    margin:0;
    padding:0;

    position:relative;
    left:-50%;
}
.container li{float:left;display:inline;margin-right:8px;}
</style>

<div class="container">
    <ul>
        <li><a href="#">1</a></li>
    </ul>
</div>

這三種方法使用得都非常廣泛坑雅,各有優(yōu)缺點,具體選用哪種方法盔性,可以視具體情況而定霞丧。

垂直居中-父元素高度確定的單行文本

父元素高度確定的單行文本的豎直居中的方法是通過設置父元素的 height 和 line-height 高度一致來實現(xiàn)的。(height: 該元素的高度冕香,line-height: 顧名思義蛹尝,行高(行間距),指在文本中悉尾,行與行之間的 基線間的距離 )突那。

line-height 與 font-size 的計算值之差,在 CSS 中成為“行間距”构眯。分為兩半愕难,分別加到一個文本行內(nèi)容的頂部和底部。

弊端:當文字內(nèi)容的長度大于塊的寬時惫霸,就有內(nèi)容脫離了塊猫缭。

<style>
.container{
    height:100px;
    line-height:100px;
    background:#999;
}
</style>

<div class="container">
    hi,imooc!
</div>
垂直居中-父元素高度確定的多行文本

方法一:使用插入 table (包括tbody、tr壹店、td)標簽猜丹,同時設置 vertical-align:middle。

css 中有一個用于豎直居中的屬性 vertical-align硅卢,在父元素設置此樣式時射窒,會對inline-block類型的子元素都有用。下面看一下例子:

css 中有一個用于豎直居中的屬性 vertical-align将塑,在父元素設置此樣式時脉顿,會對inline-block類型的子元素都有用。下面看一下例子:

table td{height:500px;background:#ccc}

<body>
<table><tbody><tr><td class="wrap">
<div>
    <p>看我是否可以居中点寥。</p>
</div>
</td></tr></tbody></table>
</body>

因為 td 標簽默認情況下就默認設置了 vertical-align 為 middle艾疟,所以我們不需要顯式地設置了。

方法二:

在 chrome、firefox 及 IE8 以上的瀏覽器下可以設置塊級元素的 display 為 table-cell(設置為表格單元顯示)汉柒,激活 vertical-align 屬性误褪,但注意 IE6、7 并不支持這個樣式, 兼容性比較差碾褂。

<style>
.container{
    height:300px;
    background:#ccc;
    display:table-cell;/*IE8以上及Chrome、Firefox*/
    vertical-align:middle;/*IE8以上及Chrome历葛、Firefox*/
}
</style>
隱性改變display類型

有一個有趣的現(xiàn)象就是當為元素(不論之前是什么類型元素正塌,display:none 除外)設置以下 2 個句之一:

  1. position : absolute

  2. float : left 或 float:right

簡單來說,只要html代碼中出現(xiàn)以上兩句之一恤溶,元素的display顯示類型就會自動變?yōu)橐?display:inline-block(塊狀元素)的方式顯示乓诽,當然就可以設置元素的 width 和 height 了,且默認寬度不占滿父元素咒程。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鸠天,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子帐姻,更是在濱河造成了極大的恐慌稠集,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饥瓷,死亡現(xiàn)場離奇詭異剥纷,居然都是意外死亡,警方通過查閱死者的電腦和手機呢铆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門晦鞋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人棺克,你說我怎么就攤上這事悠垛。” “怎么了娜谊?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵确买,是天一觀的道長。 經(jīng)常有香客問我因俐,道長拇惋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任抹剩,我火速辦了婚禮撑帖,結果婚禮上,老公的妹妹穿的比我還像新娘澳眷。我一直安慰自己胡嘿,他們只是感情好,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布钳踊。 她就那樣靜靜地躺著衷敌,像睡著了一般勿侯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缴罗,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天助琐,我揣著相機與錄音,去河邊找鬼面氓。 笑死兵钮,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的舌界。 我是一名探鬼主播掘譬,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼呻拌!你這毒婦竟也來了葱轩?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤藐握,失蹤者是張志新(化名)和其女友劉穎靴拱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體趾娃,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡缭嫡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了抬闷。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妇蛀。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖笤成,靈堂內(nèi)的尸體忽然破棺而出评架,到底是詐尸還是另有隱情,我是刑警寧澤炕泳,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布纵诞,位于F島的核電站,受9級特大地震影響培遵,放射性物質(zhì)發(fā)生泄漏浙芙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一籽腕、第九天 我趴在偏房一處隱蔽的房頂上張望嗡呼。 院中可真熱鬧,春花似錦皇耗、人聲如沸南窗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽万伤。三九已至窒悔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間敌买,已是汗流浹背简珠。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留虹钮,地道東北人北救。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像芜抒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子托启,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

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

  • 本文主要是起筆記的作用宅倒,內(nèi)容來自慕課網(wǎng). 認識CSS樣式 CSS全稱為“層疊樣式表 (Cascading Styl...
    0o凍僵的企鵝o0閱讀 2,630評論 0 30
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,743評論 1 92
  • CSS格式化排版 1屯耸、字體 我們可以使用css樣式為網(wǎng)頁中的文字設置字體拐迁、字號、顏色等樣式屬性疗绣。下面我們來看一個例...
    張文靖同學閱讀 1,282評論 0 3
  • 本課來自http://www.imooc.com/learn/9請不要用作商業(yè)用途线召。 HTML5 HTML介紹 H...
    PYLON閱讀 3,212評論 0 5
  • 一、生活 尼泊爾是一個遍布神像的國家多矮,在大街小巷里缓淹,在巴士車、卡車車身上塔逃,在各類商店建筑上讯壶,在長途路兩邊,哪怕是窮...
    偉航閱讀 406評論 0 0