九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
「學習筆記」CSS基礎

前言

拖延了一周的CSS學習筆記終于利用周末去補齊了,本篇文章著重梳理之前所學的CSS知識點,查漏補缺。同時,試著用git將重點案例存放到遠程倉庫中,更近一步貼近公司流程。????

CSS構造塊

「1. HTML的局限性」

  • HTML滿足不了設計者的需求,可以將網頁結構與樣式相分離,這樣就可以在不更改網頁結構的前提下,更換網站的樣式。
  • 操作html屬性不方便
  • HTML里面添加樣式帶來的是無盡的臃腫和繁瑣

「2. CSS網頁的美容師」

  • 讓我們的網頁更加豐富多彩,布局更加靈活自如。
  • CSS最大的貢獻:讓HTML從樣式中脫離,實現了HTML專注去做結構呈現,樣式交給CSS

「3. CSS」CSS(Cascading Style Sheets)通常稱為CSS樣式表或層疊樣式表(級聯(lián)樣式表)。

  • 作用
    • 主要用于設置HTML頁面中的文本內容(字體、大小、對齊方式等)\圖片的外形(寬高、邊框樣式、邊距等)以及版面的布局和外觀顯示樣式。
    • CSS以HTML為基礎,提供了豐富的功能,如字體、樣式、背景的控制及整體排版等,而且可以針對不同的瀏覽器設置不同的樣式。

「4. CSS注釋」

/* 這是注釋 */

引入CSS樣式表

「1.行內式(內聯(lián)樣式)」

通過標簽的style屬性來設置元素的樣式

  • style其實就是標簽的屬性
  • 樣式屬性和值中間是:
  • 多組屬性值直接用;隔開
  • 只能控制當前的標簽和以及嵌套在其中的字標簽,造成代碼冗余。
  • 缺點:沒有實現樣式和結構相分離。
<標簽名 style="屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3;"> 內容 </標簽名>
例如:
<div style="colorredfont-size: 12px;">青春不常在,抓緊談戀愛</div>

「2.內部樣式表(內嵌樣式表)」

也稱為內嵌式,將CSS代碼集中寫在HTML文檔的head頭部標簽中,并且用style標簽定義。

  • style標簽一般位于head標簽中,當然理論上他可以放在HTML文檔的任何地方。
  • type="text/css"  在html5中可以省略。
  • 只能控制當前的頁面
  • 缺點:沒有徹底分離結構與樣式
<head>
<style type="text/CSS">
    選擇器(選擇的標簽) { 
      屬性1: 屬性值1;
      屬性2: 屬性值2; 
      屬性3: 屬性值3;
    }
</style>
</head>

「3.外部樣式表(外鏈式)」

也稱鏈入式,是將所有的樣式放在一個或多個以.css為擴展名的外部樣式表文件中,通過link標簽將外部樣式表文件鏈接到HTML文檔中。

  • rel:定義當前文檔與被鏈接文檔之間的關系,在這里需要指定為“stylesheet”,表示被鏈接的文檔是一個樣式表文件。
  • href:定義所鏈接外部樣式表文件的URL,可以是相對路徑,也可以是絕對路徑。
<link rel="stylesheethref="index.css">

「4.團隊約定-代碼風格」

/*1.緊湊格式 (Compact)*/
h3 { color: deeppink;font-size20px;}
// 2.一種是展開格式(推薦)
h3 {
 color: deeppink;
    font-size20px;    
}

/* 團隊約定-代碼大小寫*/
/* 樣式選擇器,屬性名,屬性值關鍵字全部使用小寫字母書寫,屬性字符串允許使用大小寫。*/
/* 推薦 */
h3{
 color: pink;
}
 
/* 不推薦 */
H3{
 COLOR: PINK;
}


CSS基礎選擇器

CSS選擇器作用

找到指定的HTML頁面元素,選擇標簽。

CSS基礎選擇器

「1. 標簽選擇器」

  • 標簽選擇器(元素選擇器)是指用HTML標簽名稱作為選擇器,按標簽名稱分類,為頁面中某一類標簽指定統(tǒng)一的CSS樣式。
  • 作用:可以把某一類標簽全部選擇出來。
  • 優(yōu)點:快速為網頁中同類型的標簽統(tǒng)一樣式
  • 缺點:不能設計差異化樣式。
標簽名{屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; } 

「2. 類選擇器」

  • 類選擇器使用"."(英文點號)進行標識,后面緊跟類名
  • 語法:類名選擇器
.類名  {   
    屬性1:屬性值1; 
    屬性2:屬性值2; 
    屬性3:屬性值3;     
}
<p class='類名'></p>
  • 優(yōu)點:可以為元素對象定義單獨或相同的樣式。可以選擇一個或者多個標簽。
  • 注意:類選擇器使用“.”(英文點號)進行標識,后面緊跟類名(自定義,我們自己命名的)
    • 長名稱或詞組可以使用中橫線來為選擇器命名。
    • 不要純數字、中文等命名, 盡量使用英文字母來表示。
    • 多類名選擇器:各個類名中間用空格隔開。

「3. id選擇器」id選擇器使用#進行標識,后面緊跟id名

  • 元素的id值是唯一的,只能對應于文檔中某一個具體的元素。
#id名 {屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }
<p id="id名"></p>

「4. 通配符選擇器」

通配符選擇器用*號表示,* 就是選擇所有的標簽。它是所有選擇器中作用范圍最廣的,能匹配頁面中所有的元素。

  • 注意:會匹配頁面所有的元素,降低頁面響應速度,不建議隨便使用
* { 屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }

例如下面代碼,使用通配符選擇器定義CSS樣式,清除所有HTML標記的默認邊距。

* {
  margin0;                    /* 定義外邊距*/
  padding0;                   /* 定義內邊距*/
}

「5. 基礎選擇器總結」

選擇器作用缺點使用情況用法
標簽選擇器可以選出所有相同的標簽,比如p不能差異化選擇較多p { color:red;}
類選擇器可以選出1個或者多個標簽可以根據需求選擇非常多.nav { color: red; }
id選擇器一次只能選擇器1個標簽只能使用一次不推薦使用#nav {color: red;}
通配符選擇器選擇所有的標簽選擇的太多,有部分不需要不推薦使用* {color: red;}

「6. 團隊約定-選擇器」

  1. 盡量少用通配符選擇器 *
  2. 盡量少用ID選擇器
  3. 不使用無具體語義定義的標簽選擇器。
/* 推薦 */
.jdc {}
li {}
p{}

/* 不推薦 */
*{}
#jdc {}
div{}   因為div 沒有語義,我們盡量少用

CSS復合選擇器

復合選擇器是由兩個或多個基礎選擇器,通過不同的方式組合而成的

「1. 后代選擇器」又稱為包含選擇器

  • 用來選擇元素或元素組的子孫后代
  • 其寫法就是把外層標簽寫在前面,內層標簽寫在后面,中間用「空格」分隔,先寫父親爺爺,再寫兒子孫子。
  • 子孫后代都可以這么選擇?;蛘哒f,它能選擇任何包含在內 的標簽。
父級 子級{屬性:屬性值;屬性:屬性值;}

.class h3 {color:red;font-size:16px;}
  • 當標簽發(fā)生嵌套時,內層標簽就成為外層標簽的后代。
  • 子孫后代都可以這么選擇。或者說,它能選擇任何包含在內的標簽。

「2. 子元素選擇器」

  • 子元素選擇器只能選擇作為某元素子元素(親兒子)的元素。
  • 其寫法就是把父級標簽寫在前面,子級標簽寫在后面,中間跟一個 > 進行連接
  • 這里的子,指的是親兒子。不包含孫子 重孫子之類。
.class>h3 {color:red;font-size:14px;}

「3. 交集選擇器」

  • 其中第一個為標簽選擇器,第二個為class選擇器,兩個選擇器之間不能有空格,如h3.special。
交集選擇器是并且的意思,即...又...的意思
比如:   p.one   選擇的是: 類名為 .one 的段落標簽。 
/*用的相對來說比較少,不建議使用。*/

「4. 并集選擇器」如果某些選擇器定義的相同樣式,就可以利用并集選擇器,可以讓代碼更簡潔。并集選擇器(CSS選擇器分組)是各個選擇器通過,連接而成的,通常用于集體聲明。

  • 任何形式的選擇器(包括標簽選擇器、class類選擇器 id選擇器等),都可以作為并集選擇器的一部分。
  • 并集選擇器通常用于集體聲明  ,逗號隔開的,所有選擇器都會執(zhí)行后面樣式,逗號可以理解為的意思。
比如  
.one
p , 
#test {color#F00;}  
表示   .one 和 p  和 #test 這三個選擇器都會執(zhí)行顏色為紅色。 
通常用于集體聲明。  

「5. 鏈接偽類選擇器」

用于向某些選擇器添加特殊的效果。寫的時候,他們的順序盡量不要顛倒,按照lvha的順序。否則可能引起錯誤。

鏈接偽類,是利用交集選擇器.

  • a:link  未訪問的鏈接
  • a:visited  已訪問的鏈接
  • a:hover  鼠標移動到鏈接上
  • a:active  選定的鏈接
實際工作中,很少寫全四個狀態(tài),一般寫法如下:
a {   /* a是標簽選擇器  所有的鏈接 */
   font-weight700;
   font-size16px;
   color: gray;
      text-decoration: none; /* 清除鏈接默認的下劃線*/
}
a:hover {   /* :hover 是鏈接偽類選擇器 鼠標經過 */
   color: red; /*  鼠標經過的時候,由原來的 灰色 變成了紅色 */
}

「6. 復合選擇器總結」

選擇器作用特征使用情況隔開符號及用法
后代選擇器用來選擇元素后代是選擇所有的子孫后代較多符號是空格 .nav a
子代選擇器選擇 最近一級元素只選親兒子較少符號是>   .nav>p
交集選擇器選擇兩個標簽交集的部分既是 又是較少沒有符號  p.one
并集選擇器選擇某些相同樣式的選擇器可以用于集體聲明較多符號是逗號 .nav, .header
鏈接偽類選擇器給鏈接更改狀態(tài)
較多重點記住 a{} 和 a:hover  實際開發(fā)的寫法

CSS字體樣式

font字體

「1. font-size」

  • font-size屬性用于設置字號(字體大小)
  • 谷歌瀏覽器默認的文字大小為16px
  • 不同瀏覽器可能默認顯示的字號大小不一致,我們盡量給一個明確值大小,不要默認大小。一般給body指定整個頁面文字的大小。
p { font-size:20px; }

單位

  • 相對長度單位、絕對長度單位

「2. font-family」

  • font-family屬性用于設置哪一種字體。
p { font-family:"微軟雅黑";}
  • 指定多個字體,如果瀏覽器不支持第一個字體就會嘗試下一個直到找到合適的字體,如果都沒有,以電腦默認字體為準。
p {font-family: Arial,"Microsoft Yahei""微軟雅黑";}
  • CSS Unicode字體
    • 在 CSS 中設置字體名稱,直接寫中文是可以的。但是在文件編碼(GB2312、UTF-8 等)不匹配時會產生亂碼的錯誤。
    • xp 系統(tǒng)不支持 類似微軟雅黑的中文。
    • 解決方案:英文來替代。比如font-family:"Microsoft Yahei"。在 CSS 直接使用 Unicode 編碼來寫字體名稱可以避免這些錯誤。使用 Unicode 寫中文字體名稱,瀏覽器是可以正確的解析的。
font-family: "\5FAE\8F6F\96C5\9ED1";   表示設置字體為“微軟雅黑”。

「3. font-weight」

屬性值描述
normal默認值(不加粗的)
bold定義粗體(加粗的)
100~900400 等同于 normal,而 700 等同于 bold  (數字表示粗細用的多)

「4. font-weight」

font-style屬性用于定義字體風格,如設置斜體、傾斜或正常字體,其可用屬性值如下:

屬性作用
normal默認值,瀏覽器會顯示標準的字體樣式  font-style: normal;
italic瀏覽器會顯示斜體的字體樣式。

「5. font:綜合設置字體樣式」

選擇器 { font: font-style  font-weight  font-size/line-height  font-family;}
  • 注意:使用font屬性時,必須按上面語法格式中的順序書寫,不能更換順序,各個屬性以空格隔開
    • 其中不需要設置的屬性可以省略(取默認值),但必須保留font-sizefont-family屬性,否則font屬性將不起作用。

「6. font總結」

屬性表示注意點
font-size字號我們通常用的單位是px 像素,一定要跟上單位
font-family字體實際工作中按照團隊約定來寫字體
font-weight字體粗細記住加粗是 700 或者 bold  不加粗 是 normal 或者  400  記住數字不要跟單位
font-style字體樣式記住傾斜是 italic     不傾斜 是 normal  工作中我們最常用 normal
font字體連寫1. 字體連寫是有順序的  不能隨意換位置 2. 其中字號 和 字體 必須同時出現

CSS外觀屬性

「1. color」

color屬性用于定義文本的顏色
其取值方式有以下3種:

  • 實際工作中,用16進制的寫法是最多的,且我們更喜歡簡寫方式比如#f0代表紅色。
表示表示屬性值
預定義的顏色值red,green,blue,pink
十六進制#FF0000,#FF6600,#29D794
RGB代碼rgb(255,0,0)或rgb(100%,0%,0%)

「2.text-align」

text-align屬性用于設置文本內容的水平對齊方式,相當于html中的align對齊屬性。

  • 注意:是讓盒子里面的文本內容水平居中, 而不是讓盒子居中對齊

其可用屬性值如下:

屬性解釋
left左對齊(默認值)
right右對齊
center居中對齊

「3. line-height」line-height屬性用于設置行間距,就是行與行之間的距離,即字符的垂直間距,一般稱為行高。

  • line-height常用的屬性值單位有三種,分別為像素px,相對值em和百分比%,實際工作中使用最多的是像素px
一般情況下,行距比字號大7--8像素左右就可以了。
line-height: 24px;

行高測量

行高測量方法:

行高測量方法行高我們利用最多的一個地方是:可以讓單行文本在盒子中垂直居中對齊。

文字的行高等于盒子的高度。行高   =  上距離 +  內容高度  + 下距離
上距離和下距離總是相等的,因此文字看上去是垂直居中的。

行高與高度的三種關系

  • 如果 行高 等 高度  文字會 垂直居中
  • 如果行高 大于 高度   文字會 偏下
  • 如果行高小于高度   文字會  偏上
  /*line-height 要設置在font屬性下面,否則無效,例如:*/
  height: 80px;
  text-aligncenter;
  fontnormal bold 30px "宋體";
  line-height: 80px;

可以使用display:flex;布局方式讓文字水平垂直居中

  displayflex;
  align-itemscenter;     /* 側軸對齊方式*/
  justify-contentcenter/* 主軸對齊方式 */

「4. text-indent」

text-indent屬性用于設置首行文本的縮進

  • 其屬性值可為不同單位的數值、em字符寬度的倍數、或相對于瀏覽器窗口寬度的百分比%,允許使用負值。
  • 建議使用em作為設置單位。
  • 1em 就是一個字的寬度。如果是漢字的段落,1em 就是一個漢字的寬度
p {
      /*行間距*/
      line-height25px;
      /*首行縮進2個字  em  1個em 就是1個字的大小*/
      text-indent2em;  
 }

「5. text-decoration」文本的裝飾

text-decoration,通常我們用于給鏈接修改裝飾效果

描述
none默認。定義標準的文本。取消下劃線(最常用)
underline定義文本下的一條線。下劃線 也是我們鏈接自帶的(常用)
overline定義文本上的一條線。(不用)
line-through定義穿過文本下的一條線。(不常用)

「6. CSS外觀屬性總結」

屬性表示注意點
color顏色我們通常用  十六進制   比如 而且是簡寫形式 #fff
line-height行高控制行與行之間的距離
text-align水平對齊可以設定文字水平的對齊方式
text-indent首行縮進通常我們用于段落首行縮進2個字的距離   text-indent: 2em;
text-decoration文本修飾記住 添加 下劃線  underline  取消下劃線  none


標簽顯示模式(display)

標簽顯示模式是標簽以什么方式進行顯示。HTML標簽一般分為塊標簽行內標簽兩種類型,它們也稱為塊元素行內元素。

標簽顯示模式轉換 display

  • 塊轉行內:display:inline;
  • 行內轉塊:display:block;
  • 塊、行內元素轉換為行內塊:display: inline-block;

「1. 塊級元素(block-level)」

常見的塊元素有<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等,其中<div>標簽是最典型的塊元素。

  • 塊級元素的特點
    • 獨占一行
    • 高度,寬度,外邊距以及內邊距都可以控制。
    • 寬度默認是容器(父級寬度)的100%
    • 是一個容器及盒子,里面可以放行內或者塊級元素
    • 注意:只有文字才能組成段落,因此p標簽里面不能放塊級元素,特別是p不能放div。同理,還有h1~h6,dt,它們都是文字類塊級標簽,里面不能放其他塊級元素。

「2. 行內元素(inline-level)」

有的地方也稱為內聯(lián)元素

常見的行內元素有<a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<span>等,其中<span>標簽最典型的行內元素。

  • 行內元素的特點
    1. 相鄰行內元素在一行上,一行可以顯示多個。
    2. 高度、寬度直接設置是無效的。
    3. 默認高度就是它本身內容的寬度。
    4. 行內元素只能容納文本或其他行內元素。
注意
  • 鏈接里面不能再放鏈接
  • 特殊情況a里面可以放塊級元素,但是給a轉換一下塊級模式最安全。

「3. 行內塊元素(inline-block)」

在行內元素中有幾個特殊的標簽——<img>、<input >、<td>,可以對它們設置寬高和對齊屬性,有些資料可能會稱它們?yōu)樾袃葔K元素。

  • 行內塊元素的特點
    1. 和相鄰行內元素(行內塊)在一行上,但是之間會有空白風險。一行可以顯示多個
    2. 默認寬度就是它本身內容的寬度。
    3. 高度,行高,外邊距以及內邊距都可以控制。

三種模式總結

元素模式元素排列設置樣式默認寬度包含
塊級元素一行只能放一個塊級元素可以設置寬度高度容器的100%容器級可以包含任何標簽
行內元素一行可以放多個行內元素不可以直接設置寬度高度它本身內容的寬度容納文本或則其他行內元素
行內塊元素一行放多個行內塊元素可以設置寬度和高度它本身內容的寬度


CSS背景(background)

「1. 背景顏色」

background-color: 顏色值;   默認的值是 transparent  透明的

「2. 背景圖片(image)」

語法:
background-image : none | url (url) ;
例如:
background-imageurl(images/1.png);

「3. 背景平鋪(repeat)」

background-repeat : repeat | no-repeat | repeat-x | repeat-y 
參數作用
repeat背景圖像在縱向和橫向上平鋪(默認的)
no-repeat背景圖像不平鋪
repeat-x背景圖像在橫向上平鋪
repeat-y背景圖像在縱向平鋪

「4. 背景位置(position)」

background-position : length || length
background-position : position || position 
參數
length百分數 | 由浮點數字和單位標識符組成的長度值
positiontop | center | bottom | left | center | right   方位名詞

注意:

  • 必須先指定background-image屬性
  • position 后面是x坐標和y坐標??梢允褂梅轿幻~或者 精確單位。
  • 如果指定兩個值,兩個值都是方位名字,則兩個值前后順序無關,比如left  top和top  left效果一致
  • 如果只指定了一個方位名詞,另一個值默認居中對齊。
  • 如果position 后面是精確坐標, 那么第一個,肯定是 x 第二個一定是y
  • 如果只指定一個數值,那該數值一定是x坐標,另一個默認垂直居中
  • 如果指定的兩個值是 精確單位和方位名字混合使用,則第一個值是x坐標,第二個值是y坐標

背景簡寫:

  • background:屬性的值的書寫順序官方沒有強制的標準。為了可讀性,建議如下寫:
  • background: 背景顏色 背景圖片地址 背景平鋪 背景滾動 背景位置;
/* 有背景圖片背景顏色可以不用寫*/
backgroundtransparent url(image.jpgrepeat-y  scroll center top ;

「5. 背景半透明(CSS3)」

backgroundrgba(0, 0, 0, 0.3);
backgroundrgba(0, 0, 0, .3);
  • 等同于background-color: rgba(0, 0, 0, .3)
  • 最后一個參數是alpha 透明度  取值范圍 0~1之間
  • 我們習慣把0.3 的 0 省略掉  這樣寫 background: rgba(0, 0, 0, .3);
  • 注意:背景半透明是指盒子背景半透明,盒子里面的內容不受影響
  • 低于IE 9的版本不支持
盒子半透明 opacity
  • 設置opacity元素的所有后代元素會隨著一起具有透明性,一般用于調整圖片或者模塊的整體不透明度
opacity.2;

「6. 背景總結」

屬性作用
background-color背景顏色預定義的顏色值/十六進制/RGB代碼
background-image背景圖片url(圖片路徑)
background-repeat是否平鋪repeat/no-repeat/repeat-x/repeat-y
background-position背景位置length/position    分別是x  和 y坐標, 切記 如果有 精確數值單位,則必須按照先X 后Y 的寫法
background-attachment背景固定還是滾動scroll/fixed
背景簡寫更簡單背景顏色 背景圖片地址 背景平鋪 背景滾動 背景位置;  他們沒有順序
背景透明讓盒子半透明background: rgba(0,0,0,0.3);   后面必須是 4個值


CSS三大特性

「1. CSS 層疊性」

-概念

  • 所謂層疊性是指多種CSS樣式的疊加
  • 是瀏覽器處理沖突的一個能力,如果一個屬性通過兩個相同選擇器設置到同一個元素上,那么這個時候一個屬性就會將另一個屬性層疊掉

-原則

  • 樣式沖突,遵循的原則是就近原則。 那個樣式離著結構近,就執(zhí)行那個樣式。
  • 樣式不沖突,不會層疊。

「2. CSS 繼承性」

-概念

  • 子標簽會繼承父標簽的某些樣式,如文本顏色和字號。
  • 想要設置一個可繼承的屬性,只需將它應用于父元素即可。

-注意

  • 恰當地使用繼承可以簡化代碼,降低CSS樣式的復雜性。比如有很多子級孩子都需要某個樣式,可以給父級指定一個,這些孩子繼承過來就好了。
  • 子元素可以繼承父元素的樣式(text-,font-,line-這些元素開頭的可以繼承,以及color屬性

「3. CSS 優(yōu)先級(CSS特殊性)」

-概念:定義CSS樣式時,經常出現兩個或更多規(guī)則應用在同一元素上,此時,

  • 選擇器相同,則執(zhí)行層疊性
  • 選擇器不同,就會出現優(yōu)先級的問題。

-權重計算公式

標簽選擇器計算權重公式
繼承或者 *0,0,0,0
每個元素(標簽選擇器)0,0,0,1
每個類,偽類0,0,1,0
每個ID0,1,0,0
每個行內樣式 style=""1,0,0,0
每個!important  最重要的∞ 無窮大
  • 值從左到右,左面的最大,一級大于一級,數位之間沒有進制,級別之間不可超越。
  • 關于CSS權重,我們需要一套計算公式來去計算,這個就是 CSS Specificity(特殊性)
  • div { color: pink !important; }

-權重疊加

 div ul  li   ------>      0,0,0,3
 .nav ul li   ------>      0,0,1,2
 a:hover      -----—>      0,0,1,1
 .nav a       ------>      0,0,1,1

-繼承的權重是0

  • 我們修改樣式,一定要看該標簽有沒有被選中
  • 如果選中了,那么以上面的公式來計權重。誰大聽誰的。
  • 如果沒有選中,那么權重是0,因為繼承的權重為0.


盒子模型

css學習三大重點: css 盒子模型 、 浮動 定位  

網頁布局的本質

  • 首先利用CSS設置好盒子的大小,然后擺放盒子的位置。
  • 最后把網頁元素比如文字圖片等等,放入盒子里面。

1. 盒子模型(Box Model)

  • 盒子模型就是把HTML頁面中的布局元素看作是一個矩形的盒子,也就是一個盛裝內容的容器。
  • 盒子模型由元素的內容、邊框(border)、內邊距(padding)、和外邊距(margin)組成。
  • 盒子里面的文字和圖片等元素是 內容區(qū)域
  • 盒子的厚度 我們稱為為盒子的邊框
  • 盒子內容與邊框的距離是內邊距
  • 盒子與盒子之間的距離是外邊距

W3c標準盒子模型

標準 w3c 盒子模型的范圍包括 margin、border、padding、content

當設置為box-sizing: content-box;時,將采用標準模式解析計算,也是默認模式;

內盒尺寸計算(元素實際大小)

  • 寬度:Element Height = content height + padding + border (Height為內容高度)
  • 高度:Element  Width = content width + padding + border (Width為內容寬度)
  • 盒子的實際大?。?strong>內容的寬度和高度 +  內邊距   +  邊框  
    IE盒子模型

IE 盒子模型的 content 部分包含了 border 和 pading

當設置為box-sizing: border-box時,將采用怪異模式解析計算;

2. 盒子邊框(border)

屬性作用
border-width定義邊框粗細,單位是px
border-style邊框的樣式
border-color邊框顏色

邊框的樣式:

  • none:沒有邊框即忽略所有邊框的寬度(默認值)
  • solid:邊框為單實線(最為常用的)
  • dashed:邊框為虛線
  • dotted:邊框為點線
邊框綜合設置
border : border-width || border-style || border-color 

border: 1px solid red;  沒有順序要求  

盒子邊框寫法總結表:

很多情況下,我們不需要指定4個邊框,我們是可以單獨給4個邊框分別指定的。

上邊框下邊框左邊框右邊框
border-top-style:樣式;border-bottom-style:樣式;border-left-style:樣式;border-right-style:樣式;
border-top-width:寬度;border- bottom-width:寬度;border-left-width:寬度;border-right-width:寬度;
border-top-color:顏色;border- bottom-color:顏色;border-left-color:顏色;border-right-color:顏色;
border-top:寬度 樣式 顏色;border-bottom:寬度 樣式 顏色;border-left:寬度 樣式 顏色;border-right:寬度 樣式 顏色;

表格的細線邊框:

  • 通過表格的cellspacing="0",將單元格與單元格之間的距離設置為0,
  • 但是兩個單元格之間的邊框會出現重疊,從而使邊框變粗
  • 通過css屬性:table{ border-collapse:collapse; }  
    • collapse 單詞是合并的意思,border-collapse: collapse;表示相鄰邊框合并在一起。
<style>
 table {
  width500px;
  height300px;
  border1px solid red;
 }
 td {
  border1px solid red;
  text-align: center;
 }
 tabletd {
  border-collapse: collapse;  /*合并相鄰邊框*/
 }
</style>

2. 內邊距(padding)

padding屬性用于設置內邊距。是指邊框與內容之間的距離。

設置

屬性作用
padding-left左內邊距
padding-right右內邊距
padding-top上內邊距
padding-bottom下內邊距

padding簡寫

值的個數表達意思
1個值padding:上下左右內邊距;
2個值padding: 上下內邊距    左右內邊距 ;
3個值padding:上內邊距   左右內邊距   下內邊距;
4個值padding: 上內邊距 右內邊距 下內邊距 左內邊距 ;

當我們給盒子指定padding值之后, 發(fā)生了2件事情:

  1. 內容和邊框 有了距離,添加了內邊距。
  2. 盒子會變大

解決措施:通過給設置了寬高的盒子,減去相應的內邊距的值,維持盒子原有的大小。

padding不影響盒子大小情況:??如果沒有給一個盒子指定寬度, 此時,如果給這個盒子指定padding, 則不會撐開盒子。

3. 外邊距(margin)

margin屬性用于設置外邊距。margin就是控制盒子和盒子之間的距離

設置

屬性作用
margin-left左外邊距
margin-right右外邊距
margin-top上外邊距
margin-bottom下外邊距

margin值的簡寫 (復合寫法)代表意思  跟 padding 完全相同。

塊級盒子水平居中

  • 盒子必須指定寬度(width)
  • 然后就給左右的外邊距都設置為auto

實際工作中常用這種方式進行網頁布局,示例代碼如下:

.header  { width960pxmargin0 auto;}

常見的寫法,以下下三種都可以????。

  • margin-left: auto;   margin-right: auto;
  • margin: auto;
  • margin: 0 auto;

文字居中和盒子居中區(qū)別????

  1. 盒子內的文字水平居中是 text-align: center; 而且還可以讓 行內元素行內塊居中對齊
  2. 塊級盒子水平居中  左右margin 改為 auto

插入圖片和背景圖片區(qū)別????

  1. 插入圖片我們用的最多 比如產品展示類  移動位置只能靠盒模型 padding margin
  2. 背景圖片我們一般用于小圖標背景或者超大背景圖片、背景圖片,移動位置只能通過  background-position

清除元素的默認內外邊距????

  • 行內元素為了照顧兼容性,盡量只設置左右內外邊距,不要設置上下內外邊距。
* {
   padding:0;         /* 清除內邊距 */
   margin:0;          /* 清除外邊距 */
}

4.外邊距合并

使用margin定義塊元素的「垂直外邊距」時,可能會出現外邊距的合并。

(1). 相鄰塊元素垂直外邊距的合并
  • 當上下相鄰的兩個塊元素相遇時,如果上面的元素有下外邊距margin-bottom
  • 下面的元素有上外邊距margin-top,則他們之間的垂直間距不是margin-bottom與margin-top之和
  • 「取兩個值中的較大者」這種現象被稱為相鄰塊元素垂直外邊距的合并(也稱外邊距塌陷)。

「解決方案:盡量給只給一個盒子添加margin值」

(2). 嵌套塊元素垂直外邊距的合并(塌陷)

  • 對于兩個嵌套關系的塊元素,如果父元素沒有上內邊距及邊框
  • 父元素的上外邊距會與子元素的上外邊距發(fā)生合并
  • 合并后的外邊距為兩者中的較大者

「解決方案:」

  1. 可以為父元素定義上邊框。
  2. 可以為父元素定義上內邊距
  3. 可以為父元素添加overflow: hidden。

還有其他方法,比如浮動、固定、絕對定位的盒子不會有問題,后面咱們再總結。。。

盒子模型布局穩(wěn)定性

優(yōu)先使用  寬度 (width)  其次 使用內邊距(padding)    再次  外邊距(margin)

width >  padding  >   margin   

原因:

  • margin 會有外邊距合并 還有 ie6下面margin 加倍的bug(討厭)所以最后使用。
  • padding  會影響盒子大小, 需要進行加減計算(麻煩) 其次使用。
  • width   沒有問題(嗨皮)我們經常使用寬度剩余法 高度剩余法來做。

5. CSS3 新增

圓角邊框:

border-radius:length;

border-top-left-radius   定義了左上角的弧度
border-top-right-radius   定義了右上角的弧度
border-bottom-right-radius   定義了右下角的弧度
border-bottom-left-radius   定義了左下角的弧度
  • 其中每一個值可以為 數值或百分比的形式。
  • 技巧:讓一個正方形 變成圓圈
border-radius: 50%;

如果要在四個角上一一指定,可以使用以下規(guī)則????:

border-radius: 左上角 右上角  右下角  左下角;
  1. 四個值: 第一個值為左上角,第二個值為右上角,第三個值為右下角,第四個值為左下角。
  2. 三個值: 第一個值為左上角, 第二個值為右上角和左下角,第三個值為右下角
  3. 兩個值: 第一個值為左上角與右下角,第二個值為右上角與左下角
  4. 一個值:四個圓角值相同

盒子陰影(box-shadow):

box-shadowoffset-x offset-y [blur [spread][color] [inset]
描述
offset-x陰影的水平偏移量。正數向右偏移,負數向左偏移。
offset-y陰影的垂直偏移量。正數向下偏移,負數向上偏移。
blur可選。陰影模糊距離,不能取負數。
spread可選。陰影大小
color可選。陰影的顏色
inset可選。表示添加內陰影,默認為外陰影
div {
   width200px;
   height200px;
   border10px solid red;
   /* box-shadow: 5px 5px 3px 4px rgba(0, 0, 0, .4);  */
   /* box-shadow:水平位置 垂直位置 模糊距離 陰影尺寸(影子大?。?nbsp;陰影顏色  內/外陰影; */
   box-shadow0 15px 30px  rgba(0, 0, 0, .4);   
}



浮動

浮動

「1. CSS布局的三種機制」

網頁布局的核心——就是用CSS來擺放盒子。

CSS 提供了3種機制來設置盒子的擺放位置,分別是普通流(標準流)、浮動定位,其中:

A. 普通流(標準流)

  • 塊級元素會獨占一行,從上向下順序排列;
    • 常用元素:div、hr、p、h1~h6、ul、ol、dl、form、table
  • 行內元素會按照順序,從左到右順序排列,碰到父元素邊緣則自動換行;
    • 常用元素:span、a、i、em等

B. 浮動

  • 讓盒子從普通流中起來,主要作用讓多個塊級盒子一行顯示。

C. 定位

  • 將盒子在瀏覽器的某一個位置——CSS 離不開定位,特別是后面的 js 特效。

「2. 什么是浮動」元素的浮動是指設置了浮動屬性的元素

  • 脫離標準普通流的控制,不占位置,脫標
  • 移動到指定位置。
作用
  1. 讓多個盒子(div)水平排列成一行,使得浮動稱為布局的重要手段。
  2. 可以實現盒子的左右對齊等等。
  3. 浮動最早是用來控制圖片,實現文字環(huán)繞圖片效果。
  4. float屬性會改變元素的display屬性,任何元素都可以浮動。浮動元素會生成一個塊級框,而不論它本身是何種元素。生成的塊級框和我們前面的行內塊極其相似。
語法
選擇器 { float: 屬性值; }
屬性值描述
none元素不浮動(默認值)
left元素向左浮動
right元素向右浮動

浮動只會影響當前的或者是后面的標準流盒子,不會影響前面的標準流。
建議:如果一個盒子里面有多個子盒子,如果其中一個盒子浮動了,其他兄弟也應該浮動。防止引起問題

浮動(float)小結

特點說明
加了浮動的盒子「是浮起來」的,漂浮在其他標準流盒子的上面。
加了浮動的盒子「是不占位置的」,它原來的位置「漏給了標準流的盒子」
「特別注意」:浮動元素會改變display屬性, 類似轉換為了行內塊,但是元素之間沒有空白縫隙

清除浮動

因為父級盒子很多情況下,不方便給高度,但是子盒子浮動就不占有位置,最后父級盒子高度為0,就影響了下面的標準流盒子。

總結:

  • 由于浮動元素不再占用原文檔流的位置,所以它會對后面的元素排版產生影響
  • 準確地說,并不是清除浮動,而是清除浮動后造成的影響

清除浮動本質清除浮動主要為了解決父級元素因為子級浮動引起內部高度為0 的問題。清除浮動之后, 父級就會根據浮動的子盒子自動檢測高度。父級有了高度,就不會影響下面的標準流了

清除浮動的方法

選擇器 { clear: 屬性值; }   clear 清除  
屬性值描述
left不允許左側有浮動元素(清除左側浮動的影響)
right不允許右側有浮動元素(清除右側浮動的影響)
both同時清除左右兩側浮動的影響

實際工作中,幾乎只用clear: both

1).額外標簽法(隔墻法)

是W3C推薦的做法是通過在浮動元素末尾添加一個空的標簽例如 <div style=”clear:both”></div>,或則其他標簽br等亦可。

  • 優(yōu)點:通俗易懂,書寫方便
  • 缺點:添加許多無意義的標簽,結構化較差。

2).父級添加overflow屬性方法

可以給父級添加: overflow為 hiddenautoscroll  都可以實現。
  • 優(yōu)點: 代碼簡潔
  • 缺點: 內容增多時候容易造成不會自動換行導致內容被隱藏掉,無法顯示需要溢出的元素。

3).使用after偽元素清除浮動:after 方式為空元素額外標簽法的升級版,好處是不用單獨加標簽了

    .clearfix:after {
        content"";
        display: block;
        height0;
        clear: both;
        visibility: hidden;
    }
  
    /* IE6、7 專有 */
    .clearfix {
        *zoom1;
    }
        
  • 優(yōu)點:符合閉合浮動思想  結構語義化正確
  • 缺點:由于IE6-7不支持:after,使用 zoom:1觸發(fā) hasLayout。

4).使用雙偽元素清除浮動

    .clearfix:before,
    .clearfix:after {
        content"";
        display: table;
    }

    .clearfix:after {
        clear: both;
    }

    .clearfix {
       *zoom1;
    }

  • 優(yōu)點: 代碼更簡潔
  • 缺點: 由于IE6-7不支持:after,使用 zoom:1觸發(fā) hasLayout。

清除浮動總結

什么時候用清除浮動呢?

  1. 父級沒高度
  2. 子盒子浮動了
  3. 影響下面布局了,我們就應該清除浮動了。

清除浮動的方式優(yōu)點缺點
額外標簽法(隔墻法)通俗易懂,書寫方便添加許多無意義的標簽,結構化較差。
父級overflow:hidden;書寫簡單溢出隱藏
父級after偽元素結構語義化正確由于IE6-7不支持:after,兼容性問題
父級雙偽元素結構語義化正確由于IE6-7不支持:after,兼容性問題

CSS屬性書寫順序

建議遵循以下順序:

  1. 布局定位屬性:display / position / float / clear / visibility / overflow(建議 display 第一個寫,畢竟關系到模式)

  2. 自身屬性:width / height / margin / padding / border / background

  3. 文本屬性:color / font / text-decoration / text-align / vertical-align / white- space / break-word

  4. 其他屬性(CSS3):content / cursor / border-radius / box-shadow / text-shadow / background:linear-gradient …

.jdc {
    display: block;
    position: relative;
    float: left;
    width100px;
    height100px;
    margin0 10px;
    padding20px 0;
    font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
    color#333;
    backgroundrgba(0,0,0,.5);
    -webkit-border-radius10px;
    -moz-border-radius10px;
    -o-border-radius10px;
    -ms-border-radius10px;
    border-radius10px;
}


定位(position)

「1. 定位詳解」

將盒子「定」在某一個「位」置  自由的漂浮在其他盒子(包括標準流和浮動)的上面。

所以,我們腦海應該有三種布局機制的上下順序????
標準流在最底層 (海底)  -------    浮動 的盒子 在 中間層  (海面)  -------   定位的盒子 在 最上層  (天空)

定位是用來布局的,它有兩部分組成:定位 = 定位模式 + 邊偏移在 CSS 中,通過 top、bottom、leftright 屬性定義元素的「邊偏移」:(方位名詞)

邊偏移屬性示例描述
toptop: 80px「頂端」偏移量,定義元素相對于其父元素「上邊線的距離」。
bottombottom: 80px「底部」偏移量,定義元素相對于其父元素「下邊線的距離」
leftleft: 80px「左側」偏移量,定義元素相對于其父元素「左邊線的距離」。
rightright: 80px「右側」偏移量,定義元素相對于其父元素「右邊線的距離」

「2. 定位模式(position)」在 CSS 中,通過 position 屬性定義元素的「定位模式」,語法如下:

選擇器 { position: 屬性值; }
語義
static「靜態(tài)」定位
relative「相對」定位
absolute「絕對」定位
fixed「固定」定位

「3. 靜態(tài)定位(static)」

  • 靜態(tài)定位是元素的默認定位方式,無定位的意思。它相當于border里面的none,不要定位的時候用。
  • 靜態(tài)定位 按照標準流特性擺放位置。它沒有邊偏移。
  • 靜態(tài)定位在布局時幾乎不用

「4. 相對定位(relative)」

  • 相對定位是元素相對于它原來在標準流中的位置來說的。
  • 相對于自己原來在標準流中位置來移動的
  • 原來在標準流的區(qū)域繼續(xù)占有,后面的盒子仍然以標準流的方式對待它。

「5. 絕對定位(absolute)」

絕對定位是元素以帶有定位的父級元素來移動位置

  • 完全脫表--完全不占位置;
  • 父元素沒有定位,則以瀏覽器為準定位(Document文檔)。

父元素有定位

定位口訣--子絕父相

「6. 固定定位(fixed)」

固定定位是絕對定位的一種特殊形式;

  • 完全脫標--完全不占位置;
  • 只認瀏覽器的可視窗口--瀏覽器可視窗口+邊偏移屬性來設置元素的位置
    • 跟父元素沒有任何關系;單獨使用
    • 不隨滾動條滾動

定位(position)的擴展

絕對定位的盒子居中

絕對定位/固定定位的盒子不能通過設置margin: auto設置水平居中 在使用絕對定位時要向實現水平居中,可以按照下面的方法:

  1. left : 50%:讓盒子的左側移動到父級元素的水平中心位置;
  2. margin-left: -100px;讓盒子向左移動自身寬度的一半。
  3. 同理垂直居中。

堆疊順序(z-index)

在使用「定位」布局時,可能會「出現盒子重疊的情況」

加了定位的盒子,默認「后來者居上」, 后面的盒子會壓住前面的盒子。

應用 z-index 層疊等級屬性可以「調整盒子的堆疊順序」。如下圖所示:

z-index的特性如下:

  1. 屬性值:正整數、負整數或 0,默認值是 0,數值越大,盒子越靠上;
  2. 如果屬性值相同,則按照書寫順序,后來居上;
  3. 數字后面不能加單位
  4. z-index只能用于相對定位、絕對定位和固定定位的元素,其他標準流、浮動和靜態(tài)定位無效。

定位改變display屬性

前面提過, display 是 顯示模式, 可以通過以下方式改變顯示模式:

  • 可以用inline-block  轉換為行內塊
  • 可以用浮動 float 默認轉換為行內塊(類似,并不完全一樣,因為浮動是脫標的)
  • 絕對定位和固定定位也和浮動類似, 默認轉換的特性 轉換為行內塊。

所以說, 一個行內的盒子,如果加了「浮動」、「固定定位」「絕對定位」,不用轉換,就可以給這個盒子直接設置寬度和高度等。

定位小結

定位模式是否脫標占有位置移動位置基準模式轉換(行內塊)使用情況
靜態(tài)static不脫標,正常模式正常模式不能幾乎不用
相對定位relative不脫標,占有位置相對自身位置移動不能基本單獨使用
絕對定位absolute完全脫標,不占有位置相對于定位父級移動位置要和定位父級元素搭配使用
固定定位fixed完全脫標,不占有位置相對于瀏覽器移動位置單獨使用,不需要父級

注意:

  1. 邊偏移 需要和 定位模式 聯(lián)合使用,單獨使用無效;
  2. topbottom 不要同時使用;
  3. leftright 不要同時使用。


CSS高級技巧

元素的顯示與隱藏

  • 目的:讓一個元素在頁面中消失或者顯示出來

  • 場景:類似網站廣告,當我們點擊關閉就不見了,但是我們重新刷新頁面,會重新出現!

1.1 display 顯示(重點)

display設置或檢索對象是否顯示或如何顯示。

  • display: none 隱藏對象
    • 特點:隱藏之后,不再保留位置。
  • display: block 除了轉換為塊級元素之外,同時還有顯示元素的意思。

實際開發(fā)場景:配合后面js做特效,比如下拉菜單,原先沒有,鼠標經過,顯示下拉菜單, 應用極為廣泛

1.2 visibility 可見性

設置或檢索是否顯示對象

visibilityvisible ;  對象可視

visibilityhidden;    對象隱藏
  • 特點:隱藏之后,繼續(xù)保留原有位置。

1.3 overflow 溢出

檢索或設置當對象的內容超過其指定高度及寬度時如何管理內容。

屬性值描述
visible不剪切內容也不添加滾動條
hidden不顯示超過對象尺寸的內容,超出的部分隱藏掉
scroll不管超出內容否,總是顯示滾動條
auto超出自動顯示滾動條,不超出不顯示滾動條

實際開發(fā)場景

  1. 清除浮動
  2. 隱藏超出內容,隱藏掉,  不允許內容超過父盒子。

1.4 顯示與隱藏總結

屬性區(qū)別用途
display隱藏對象,不保留位置配合后面js做特效,比如下拉菜單,原先沒有,鼠標經過,顯示下拉菜單, 應用極為廣泛
visibility隱藏對象,保留位置使用較少
overflow只是隱藏超出大小的部分1. 可以清除浮動 2. 保證盒子里面的內容不會超出該盒子范圍

CSS用戶界面樣式

所謂的界面樣式, 就是更改一些用戶操作樣式,以便提高更好的用戶體驗。

  • 更改用戶的鼠標樣式
  • 表單輪廓等。
  • 防止表單域拖拽

2.1 鼠標樣式

設置或檢索在對象上移動的鼠標指針采用何種系統(tǒng)預定義的光標形狀。

屬性值描述
default小白  默認
pointer小手
move移動
text文本
not-allowed禁止
<ul>
  <li style="cursor:default">我是小白</li>
  <li style="cursor:pointer">我是小手</li>
  <li style="cursor:move">我是移動</li>
  <li style="cursor:text">我是文本</li>
  <li style="cursor:not-allowed">我是文本</li>
</ul>

2.2 輪廓線 outline

是繪制于元素周圍的一條線,位于邊框邊緣的外圍,可起到突出元素的作用。

outline : outline-color ||outline-style || outline-width 

但是我們都不關心可以設置多少,我們平時都是去掉的。
最直接的寫法是 : outline: 0;   或者   outline: none;

2.3 防止拖拽文本域resize

<textarea  style="resizenone;"></textarea>

2.4 用戶界面樣式總結

屬性用途用途
鼠標樣式更改鼠標樣式cursor樣式很多,重點記住 pointer
輪廓線表單默認outlineoutline 輪廓線,我們一般直接去掉,border是邊框,我們會經常用
防止拖拽主要針對文本域resize防止用戶隨意拖拽文本域,造成頁面布局混亂,我們resize:none

vertical-align 垂直對齊

  • 有寬度的塊級元素居中對齊,是margin: 0 auto;
  • 讓文字居中對齊,是 text-align: center;

vertical-align 垂直對齊,它只針對于「行內元素」或者「行內塊元素」

設置或檢索對象內容的垂直對其方式。
vertical-align : baseline |top |middle |bottom 

注意:

vertical-align 不影響塊級元素中的內容對齊,它只針對于「行內元素」或者「行內塊元素」,

特別是行內塊元素, 通常用來控制圖片/表單與文字的對齊。

3.1 圖片、表單和文字對齊

我們可以通過vertical-align 控制圖片和文字的垂直關系了。默認的圖片會和文字基線對齊。

3.2 去除圖片底側空白縫隙

原因:圖片或者表單等行內塊元素,他的底線會和父級盒子的基線對齊。

就是圖片底側會有一個空白縫隙。

解決方法:

  • 給img vertical-align:middle | top| bottom等等。 讓圖片不要和基線對齊。
  • 給img 添加 display:block; 轉換為塊級元素就不會存在問題了。

溢出的文字省略號顯示

4.1 white-space

  • white-space設置或檢索對象內文本顯示方式。通常我們使用于強制一行顯示內容
white-space:normal ;默認處理方式

white-space:nowrap ; 強制在同一行內顯示所有文本,直到文本結束或者遭遇br標簽對象才換行。

4.2 text-overflow 文字溢出

  • 設置或檢索是否使用一個省略標記(...)標示對象內文本的溢出
text-overflow : clip ;不顯示省略標記(...),而是簡單的裁切 

text-overflowellipsis ; 當對象內文本溢出時顯示省略標記(...)

「注意」

一定要首先強制一行內顯示,再次和overflow屬性  搭配使用

4.3 總結三步曲

  /*1. 先強制一行內顯示文本*/
      white-spacenowrap;
  /*2. 超出的部分隱藏*/
      overflowhidden;
  /*3. 文字用省略號替代超出的部分*/
      text-overflowellipsis;

CSS精靈技術(sprite)

CSS精靈技術(也稱CSS Sprites、CSS雪碧)。

  • 圖所示為網頁的請求原理圖,當用戶訪問一個網站時,需要向服務器發(fā)送請求,網頁上的每張圖像都要經過一次請求才能展現給用戶。
  • 然而,一個網頁中往往會應用很多小的背景圖像作為修飾,當網頁中的圖像過多時,服務器就會頻繁地接受和發(fā)送請求,這將大大降低頁面的加載速度。

為什么需要精靈技術為了有效地減少服務器接受和發(fā)送請求的次數,提高頁面的加載速度。

5.1 精靈技術講解

CSS 精靈其實是將網頁中的一些背景圖像整合到一張大圖中(精靈圖),然而,各個網頁元素通常只需要精靈圖中不同位置的某個小圖,要想精確定位到精靈圖中的某個小圖。

這樣,當用戶訪問該頁面時,只需向服務發(fā)送一次請求,網頁中的背景圖像即可全部展示出來。

我們需要使用CSS的:

  • background-image、
  • background-repeat
  • background-position屬性進行背景定位,
  • 其中最關鍵的是使用background-position 屬性精確地定位。

5.2 精靈技術使用的核心總結

首先我們知道,css精靈技術主要針對于背景圖片,插入的圖片img 是不需要這個技術的。

  1. 精確測量,每個小背景圖片的大小和 位置。
  2. 給盒子指定小背景圖片時, 背景定位基本都是 負值。

滑動門

6.1 滑動門出現的背景

制作網頁時,為了美觀,常常需要為網頁元素設置特殊形狀的背景,比如微信導航欄,有凸起和凹下去的感覺,最大的問題是里面的字數不一樣多,咋辦?

為了使各種特殊形狀的背景能夠自適應元素中文本內容的多少,出現了CSS滑動門技術。它從新的角度構建頁面,使各種特殊形狀的背景能夠自由拉伸滑動,以適應元素內部的文本內容,可用性更強。最常見于各種導航欄的滑動門。

6.2 核心技術

核心技術就是利用CSS精靈(主要是背景位置)和 盒子padding撐開寬度, 以便能適應不同字數的導航欄。

一般的經典布局都是這樣的:

<li>
  <a href="#">
    <span>導航欄內容</span>
  </a>
</li>
* {
    padding:0;
    margin:0;

   }
    body{
      backgroundurl(images/wx.jpg) repeat-x;
    }
    .father {
      padding-top:20px;
    }
    li {
      padding-left16px;
      height33px;
      float: left;
      line-height33px;
      margin:0  10px;
      backgroundurl(./images/to.png) no-repeat left ;
    }
    a {
      padding-right16px;
      height33px;
      display: inline-block;
      color:#fff;
      backgroundurl(./images/to.png) no-repeat right ;
      text-decoration: none;
    }
    li:hover,
    li:hover a {
      background-image:url(./images/ao.png);
    }

總結:

  1. a 設置 背景左側,padding撐開合適寬度。
  2. span 設置背景右側, padding撐開合適寬度 剩下由文字繼續(xù)撐開寬度。
  3. 之所以a包含span就是因為 整個導航都是可以點擊的。

CSS 三角形

div {

    width0

    height0;
    line-height:0;
    font-size: 0;
   border-top10px solid red;

   border-right10px solid green;

   border-bottom10px solid blue;

   border-left10px solid #000

     }
  1. 我們用css 邊框可以模擬三角效果
  2. 寬度高度為0
  3. 我們4個邊框都要寫, 只保留需要的邊框顏色,其余的不能省略,都改為 transparent 透明就好了
  4. 為了照顧兼容性 低版本的瀏覽器,加上 font-size: 0;  line-height: 0;
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
1 x證書Web前端開發(fā)初級理論考試試卷三(1)
50道CSS基礎面試題(附答案)
CSS學習筆記
css
(辦公)html5與css3的相關知識
WEB之CSS系列筆記
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服