Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 日韩在线不卡视频,亚洲精品一区二区三区第四页 ,99精品国产成人一区二区在线

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          CSS布局靜態頁面時你是否為了line-height

          CSS布局靜態頁面時你是否為了line-height苦惱過?


          者:極客小俊

          一個把邏輯思維轉變為代碼的技術博主

          你不用拼過聰明人,你只需要拼過那些懶人 你就一定會超越大部分人!



          line-height 屬性

          概念: 行高指的是文本行的基線之間的距離, 更簡單來說行高是指文本行基線間的垂直距離, 行高也是文字大小與行距的和, 行高越大則行間距越大!

          注意:line-height屬性不允許使用負值。

          但是很多人就只是知道 line-height屬性用于設置行高, 而行高到底是一個什么東西并不是很清楚!

          那么在了解行高之前,我們就必須要先掌握這幾個概念: 頂線、中線、基線、底線、x-height、ex、內聯盒模型、行距等..

          知道這些概念之后才能真正的去理解line-height屬性的意義!

          那現在我們廢話不多說,就先來看一張文字在網頁中的結構圖:

          從上到下四條線分別是頂線(綠色)、中線(藍色)、基線(紅色)、底線(紫色)

          圖中黃顏色的線位置表示: 行間距 其實是分為上一行文字的下半行距 和 下一行文字的上半行距, 這里要是聽不懂 沒關系 我們接下來會慢慢說半行距的意義!

          小提示: 之后我們要講到的vertical-align css屬性中有top、middle、baseline、bottom,就是和這四條線相關!

          什么是基線?

          要了解基線 那么還要知道 在我們英文的26個字幕當中 有一個小寫的x字母是在CSS中相當特殊的! 那么基線是什么呢?

          解答: 基線就是小寫x字母的下邊緣(線) 就是我們常說的 基線 而不是那些有尾巴的英文字母, 例如: s 、j、g、k、f、y

          所以一定要注意: 基線(baseline)不是漢字文字的下底部,而是英文小寫字母“x”的下底部!

          內聯元素默認是按照基線對齊的 而基線就是小寫字母x的底部! 不懂的話舉個例子 如下:

           北京市
           <span>深圳市</span>
           <strong>計算機</strong>
           <img src="images/1.gif">

          效果圖: 紅色箭頭指向位置從圖中可以發現, 只要是內聯元素基線都是對齊的! 也就是說內聯元素中的文字都是放在基線上的!

          例如下圖一樣:

          line-height屬性設置的行高也就是定義的兩行文字基線之間的距離! 原因是因為中間夾雜了更多的行距 關于行距的概念我們接下來會說到!

          如果把line-height設置為0px 那么這個基線就會重疊! 文字也重疊了!

          那么也由此可見 設置line-height會影響基線之間的距離! 基線變大了 每一行的文字也就隔開了!


          什么是頂線

          頂線就是在中文漢字的頂部位置就是頂線的位置!

          如下圖:

          什么是底線

          底線就是在中文漢字的底部位置 就是底線的位置!

          什么是中線?x-height又是什么?

          故名意思: css中有一個概念叫x-height,意思也就是小寫字母x的高度!

          那么在css當中小寫x字母不僅有確定了基線(baseline)的位置,還有描述了中線(等分線)(middle)的作用!

          中線又是什么?

          在css中,有些屬性值的定義就和這個x-height有關, 最經典最有代表性的就是vertical-align的屬性值middle 這里的middle就是中間的意思 指的其實就是基線 往上1/2的位置 也就是小寫x字母的中間交叉點那個位置!也就是middle的位置!

          這里就是我們所說的中線:橫過小寫英文字母x的中間的線!

          如下圖: 藍色線位置

          案例:

           <style>
               #cont{
                   width:800px;
                   background-color:rgb(255,255,30);
               }
               #cont>span{
                   display: inline-block;
                   border: 1px solid red;
                   line-height: 60px;
                   font-size: 36px;
               }
               /*一行文本 有且只有 一個基線  多行文本每一行都有一個基線*/
               #img{
                   vertical-align: middle;
               }
           </style>
           
           <div id="cont">
               <span>
                   <img src="images/test.gif" id="img">
                   北京市 iphone x
               </span>
           </div>
           

          效果圖如下:

          但是大家從結果上肯定也能夠看出來, vertical-align: middle 并不是絕對的垂直居中于文字對齊!

          middle也只是一種近似接近于居中的效果! 因為不同的字體在行元素中的中線的位置是不一樣的 !

          例如:

           <style type="text/css" >
           
               #test{
                   background: yellow;
                   font-size: 38px;
                   font-family: serif;
               }
           
               #test2{
                   background: yellow;
                   font-size: 38px;
                   font-family: 龐門正道標題體;
               }
           
               span>img{
                   vertical-align: middle;
               }
           
           </style>
           
           <span id="test"><img src="images/test.gif"> 北京市 iphone x</span>
           <br>
           <span id="test2"><img src="images/test.gif"> 北京市 iphone x</span>

          效果圖: 從下圖效果中可以看出 x的交叉點的高矮是不一樣的位置!

          所以 在CSS中, 內聯元素(行元素) 垂直居中(也就是給內聯元素設置vertical-align:middle)是對文字垂直居中, 而與外部容器無關!

          關于vertical-align元素后面會單獨提及到


          字母x與css中ex單位之間的概念

          上面也說過了, vertical-align: middle 并不是絕對的垂直居中于文字對齊! middle也只是一種近似接近于居中的效果!

          就是因為不同的字體在行元素中的位置是不一樣的!中線位置也不一樣,所以說對齊方式也不一樣。

          同時如果font-size字體大小有變化的情況下, x字母的高度也會隨之變化, 然后內聯元素依舊會以小寫字母x的中線為基準對齊

          舉個例子:

          如果用一個小圖標來對齊一行文字,那么在文字大小和字體樣式有變化之后,給小圖標設置vertical-align: middle 后,它依舊會按照x中線對齊, 但這個小圖標的從大小上感覺沒有對齊,也從外部元素的高度上來看,所以小圖標感覺也沒有垂直居中對齊的樣子!

          如下圖所示:

          所以要讓一個小圖標來對齊一行文字,還有一個更加簡便的做法 那么就是使用ex單位來解決!

          ex 在css中的定義是一個尺寸單位, 官方的解釋是: 一個 ex 是一個字體的 x-height。(其實就是你設定的字體中產生的x的大小)

          我的解釋 : ex 就是css中的一個相對單位, 相對的是字體大小和字體樣式而改變的一個單位! 指的就是小寫字母x的高度 其實就是x-height

          也就是說把內聯元素的高度尺寸單位設置為ex 那么就不會受到 字體樣式和字號的影響! 從該內聯元素相對字體樣式和字號進行變化!

          1ex 就是一個x的高度這句話如何理解: 就是在不同字體和字號情況下x的高度!

          那么也就是說把小圖標的高度設置為1ex 那么不管你把字體大小 和 字體樣式如何修改, 這個小圖標都會隨著他們而變化!

          案例:

           <style type="text/css" >
           
               #test{
                   background: yellow;
                   font-size: 78px;
                   font-family: serif;
               }
               #test2{
                   background: yellow;
                   font-size: 78px;
                   font-family: 龐門正道標題體;
               }
               #test3{
                   background: yellow;
                   font-size: 78px;
                   font-family: 微軟雅黑;
               }
               span>img{
                   /* vertical-align: middle;*/
                   height: 1ex;
               }
           
           </style>
           
           <span id="test"><img src="images/test.gif"> 北京市 iphone x</span>
           <br>
           <span id="test2"><img src="images/test.gif"> 北京市 iphone x</span>
           <br>
           <span id="test3"><img src="images/test.gif"> <em>北京市 iphone x</em></span>

          效果如下:

          不管如何修改字體大小和字號 小圖標都會更好的去垂直居中, vertical-align: middle;也沒必要使用了! 借助ex這個相對單位我們直接利用默認的baseline基線對齊就可以實現小圖標內聯元素和文字進行居中的效果了! 注意:經過審查元素看到每一行小圖標和文字中的字母x高度始終是一樣的!

          小結: ex相對單位不會受字體和字號的影響! 雖然ex單位跟line-height沒有直接關系,但也有間接關系!


          回顧什么是內聯元素!

          內聯元素從定義上看: 該元素默認的display屬性值為inline、inline-block、inline-table的元素就是內聯元素。

          內聯元素從表現上看: 典型的特征就是內聯元素可以和文字在一行進行顯示, 這里注意: 文字本身也是一個內聯元素(是匿名內聯元素 馬上會接下來會說到), 所以我們常見的內聯元素從表面上看有文字、 圖片、按鈕、輸入框、下拉框、等原生表單控件都是內聯元素!

          內聯盒模型 (重點核心)

          在我們學習line-height這個屬性的時候, 我們還必須要了解CSS中一個重要的概念 就是內聯盒模型 那么我們先來看一段代碼案例, 這一段文字代碼看似簡單 但其中包含很多術語和概念,通俗的說這一段代碼中包含很多種類的盒子!

          如下:

           <p>
               這是一行普通的文字, 這里有一個 <em>我是斜體</em> 標簽
           </p>

          從以上代碼中 我們來分析它里面到底有哪些盒子!

          (1) 內容區域 content area

          內容區域是一種我們肉眼看不見的盒子,它圍繞著文字 我們平常是看不見這個盒子的!

          通俗理解: 其實可以通過選中文本然后查看背景顏色區域作為內容區域來理解!

          小提示:但是要注意的是 如果是圖片,其內容不是文字,不存在內容區域之說 因此對于圖片這類元素可以把內容區域看作是元素自身!

          也就是說如果是圖片的話,那么內容區域的大小是隨著圖片的大小來決定的!

          這樣理解內容區域可以幫助我們理解各種相關內聯元素的行為都是可以的!

          如下圖:

          內容區域小結

          1. 我們先記住一點: 文字選中的背景顏色區域就把它看做為: 內容區域!
          2. 內容區域 (content area) 的高度會受到font-family(字體)和font-size(字號)的影響!
          3. 并且有時候哪怕是當前元素的font-size(字號大小)在不變的情況下, 但也有可能因為 font-family(字體)設置的不同最后導致內容區域 (content area)不一樣!
          4. 內容區域頂線和底線包裹的區域就是內容區域,如果font-size 或 font-family有變化 那么頂線和底線位置也會變化。
          5. 我們在設置font-size 或者 font-family的時候,實際上都會改變內容區域的大小! 所以內容區域高度與字號以及字體有關!
          6. 這里還有一個重點就是內容區域 是不能使用width和height進行設置寬高的!

          總的來說內容區域:就是底線和頂線包裹的區域(行內元素display:inline可以通過background-color屬性顯示出來),實際中不一定看得到,但確實存在。內容區的大小依據font-size的值和字數進行變化。

          如下圖:

          (2) 內聯盒子(行內框) inline box

          說到內聯盒子 那么大家一定就不會陌生了 就是我們平常使用的內聯元素(行內元素)!

          內聯盒子也稱之為: 行內框 這要特別注意 這是針對行元素而言的, 每個行內元素會生成一個行內框,行內框是一個瀏覽器渲染模型中的一個概念 無法肉眼觀測!

          它讓內容成為一行排列 所以內聯盒子就是指的內聯元素, 簡單的說就是文字用的什么內聯元素來包含!

          例如: span、em、a、這些都屬于 內聯盒子(行內框)!

          注意:行內框=內容區域

          內聯盒子的分類

          但是內聯盒子則又會細分為 內聯盒子匿名內聯盒子

          所以 常見的內聯盒子 如文字外部包含的是 span、a、em、strong、等這些標簽 那么則屬于 內聯盒子

          如果 是光禿禿的文字 則屬于 匿名內聯盒子 所以要注意 光禿禿的文字其實也是一種內聯盒子!只是沒有標簽名字而已!

          如下圖:

          特別案例

          我們在設定line-height行高時,行內框(也就是內聯盒子)的高度是不會有任何變化的,不知道大家有沒有注意到這個情況!

          如下案例:

           <div>
               <span style="">重慶市</span>
               <em>北京市</em>
               <strong style="line-height: 30px;">深圳市</strong>
           </div>

          如圖: 我給strong設定了line-height為30px 但strong的高度依舊是19.8 其他兩個內聯盒子也是一樣的高度 并沒有影響,

          影響的是strong上下周圍的區域 也就是分別增加/減少到內容區域的上下兩邊灰色的部分! 并且上下的灰色部分的高度是一致的!

          這也就是我們待會要講解到的行框與行間距(行距)、(半行距)的概念

          (3) 行框盒子 line box

          每一行就是一個行框盒子,那什么又叫做每一行呢 ?由多個內聯盒子組合而成的一行 就會形成一個行框盒子

          所以反推每一個行框盒子又是由一個個內聯盒子組成而來的!

          注意: 是每一行都會形成,如果文字有五行,就會形成5個行框。

          如下圖:

          綠色框部分就是由一個一個的內聯盒子組成的 最終這一個整體就叫做一個 行框 或者叫 行框盒子

          小提示: 如果有換行符 把字符和元素換到下一行那么 下一行就是一個新的行框! 就相當于有多行內容時,每行都會有自己的行框

          注意: 并且 行框高度等于本行框內部,所有行內框(內聯盒子)中,最大的那個行內框(內聯盒子)的值! 重點: 是以帶有行高值最大的行內框(內聯元素)為基準來最終計算行框的高度,其他行內框(內聯元素)采用自己的對齊方式向基準對齊!

          簡單的說 就是 行間距 + 字體大小=Line-height的高度 就是這個高度撐開了行框! (行間距包含在行框內部的!) 為了方便理解請看下圖:

          從上圖可以看出來 所有的內聯元素都是以基線對齊的上面已經說過了,但重要的是 第二個內聯元素具有行高, 產生了行間距 所以就以第二個內聯元素為基準來計算行框最終的高度!

          備注: 設置line-height屬性會影響行框的布局? 這句話的意義何在?

          答案就是: line-height 與 font-size 的計算值之差(行距)分為兩半,分別加到一個內聯元素的頂部和底部 而且計算出來的差值分別加到內容區域的頂部和底部的就是行距 所以實質上撐開 行框 的是line-height行高其中的行距!


          (4) 包含盒子 containing box

          這段代碼中的p標簽就是一個包含盒子! 包含盒子的內部就是由一行一行的行框盒子組成!

          一個行框盒子 說明只有一行, 多個行框盒子說明是多行! 當然也有人稱呼它為 包含塊(containing block)

          如下圖:

          粉紅色部分的就是包含塊部分! 包含塊最終把這一行整合為一個整體!

          (5) 幽靈空白節點

          這個概念聽起來就很玄乎! 很奇特 但其實也是在內聯盒模型中一個很重要的概念!

          概念理解: 在瀏覽器對內聯元素的解析和渲染中 每一個行框 前面都有一個 空白節點 但很奇特的是這個空白節點永遠是看不見透明的 并且也不占據任何寬度 也就是說 寬度為0, 是的 肉眼看不見 也無法通過腳本去獲取到 就好比幽靈一般! 但有的的確確是存在的! 就跟文本節點一樣 所以 大家都稱為它是 幽靈空白節點

          注意: 有一個前提條件 它主要是在HTML5的文檔聲明中才有這個情況,其他老一點的文檔聲明則不存在 幽靈空白節點!

          我們來看一個案例 就會馬上了解 如下:

           <style type="text/css" >
               div{
                   background: #cd0000;
               }
               span{
                   display: inline-block;
               }
           </style>
           
           <div><span></span></div>

          注意: 這里我們并沒有設置任何高度! 而結果卻是如下圖所示:

          此時你看見結果后一定會很驚訝 為什么div的高度不是0呢? 我們并沒有給div設置任何高度呀 對吧 并且內部span的高度我們也沒有設置呀 高度也應該是0 那么div的高度20px是如何來的呢? 這就是我們剛剛說的 幽靈空白節點 的緣故

          其實原因就是 : 瀏覽器對內聯元素的解析和渲染中 每一個行框 前面都有一個 空白節點 那么這里就是在span元素的前面還有一個寬度為0的空白字符!

          并且其實它也是一個盒子 不過是一個抽象的盒子 官方定義名稱為: strut (支柱) 重點來了, 并且這個空白字符strut(支柱) 是一個存在于每個行框盒子 內部的最前面 它的寬度只有0px,看不到的, 同時這個 strut (支柱)的行高和字體大小都與該元素相同! 簡單的先知道這個概念就可以了 至于高度從何而來我們后面再細說!

          圖解如下:

          CSS官方對strut (支柱) 的介紹: [了解]

          Each line box starts with a zero-width inline box with the element's font an d line-height properties. We call that imaginary box a "strut"!

          我們來看一個跟幽靈空白節點有關的案例:

           <style>
               .box{
                   line-height: 256px;
                   background: yellow;
               }
           
           </style>
           
           <div class="box">
               <img src="images/test.gif">
           </div>

          效果:

          此時 div的高會成為256px, 有人會認為這是把圖片的高度改變了,其實不是 而是line-height把 幽靈空白節點上下的行距增大從而改變了 因為圖片是內聯元素 會形成一個 行框盒子 在HTML5文檔模式下, 每一個行框盒子前面都有一個寬度為0的 幽靈空白節點 前面也提到過了 這個幽靈空白節點的特性和普通字符一模一樣也就是它是一個隱藏的內聯元素 所以其實是這個幽靈空白節點被設置了上下行距為122像素的緣故 撐開了行框 ,而行框最后撐開了外面的div元素!

          了解幽靈空白節點為后續更好的認識內聯元素打好堅實的基礎!


          line-height與內聯元素高度之間的關系

          先提出一個問題: 不管是內聯元素 還是 塊元素 在他們沒有設置高度并且里面也有文字內容的情況下 元素的高度從何而來?

          很多人認為是由文字撐開! 實際上卻不是, 而是line-height的高度決定的!

          案例1:

          通過測試我們可以看出 .test1 元素雖然設置了font-size為36px 但line-height設置為0后 .test1元素顯示成了一根線! 并沒有像有些人所說的文字會撐開! 而.test2雖然font-size設為了0 文字看不見了,但line-height設為了36px 它卻把 .test2元素撐開了! 原理跟上面所講到的 幽靈空白節點 一致! (個人理解)

          案例2

           <style>
               span,em{
                     background-color: red;
                     line-height: 100px;
                     /*font-size: 100px;*/
                     border: 1px solid blue;
                 }
           </style>
           
           <div>
               <span>北京市</span>
               <span>北京市</span>
               <span>北京市</span>
               <span>北京市</span>
           </div>
           
           <div>
               <em>北京市</em>
               <em>北京市</em>
               <em>北京市</em>
               <em>北京市</em>
           </div>

          效果如下:

          從上圖看 通過給內聯元素span、em設置line-height , 他們的可視高度沒有變,但他們的彼此撐開了外部包含的div 那么是什么撐開的呢?

          答案是: line-height撐開了行框盒子 然后這個行框盒子從我們肉眼上看是看不見的, 但它又可以撐開外部的div 所以就看到現在兩行文字彼此之間有距離了!

          所以從圖中看, 內聯元素設置line-height但內聯元素本身高度是沒有變化,但每一行的行框的高度改變了, 從人的視覺上是看不出來的! 而撐開的這個其實就叫 行距


          什么是行距?

          行距又稱為 行間距

          行距 從意義上來說 作用是讓我們閱讀文章的時候,好確定閱讀的方向!

          行距 從css的角度來說, 代表的不是一個地方, 而是要分為兩個部分! 分別是一個文本行內容的頂部和底部!

          也就是說 底線下面粉紅色標注區域 和 頂線上面粉紅色標注區域, 就是行間距

          如下圖:

          中間黃顏色部分 等于 上半行距 + 下半行距 之和 就是行間距, 也就是行高與字體尺寸的差稱為行間距

          但即使是只有一行文字,其實上方也是有行距的 只不過這個行距的高度僅僅是完整行距高度的一半! 俗稱 半行距

          行距小結: 指相鄰文本行間上一個文本行底線和下一文本行頂線之間的距離。

          當然,有些人的理解是: (上文本行行高-內容區高度)/2+(下文本行行高-內容區高度)/2


          行距的計算公式

          為什么我們要算行距呢? 是因為上面提到了 半行距 那么這個半行距是如何求得呢 ? 我們就要了解一下這個行距的計算公式了!

          行間距=line-height的值(行高) - font-size字體大小 (行間距=行高 - 字體大小)

          然后 算出來的這個行間距 / 2 所得到的值分別給粉紅色的兩部, 分別加到一個行內框(內聯盒子)的頂部和底部即可!

          也就是俗稱的 半行間距【(行高-字體size)/2 】分別增加 或者 減少到內容區域的上下兩邊:

          例如: 設置行高為40px; 字體大小設為16px , 那么根據上面的公式我們得到行間距的值是24px, 這個24像素要除以2 劃分為兩個部分!

          也就是行內容的頂部 和 底部 這兩個地方分別為: 12px像素!

          案例代碼:

           <style>
               #cont{
                   width:600px;
                   background-color:rgb(255,255,30);
                   line-height: 40px;
                   font-size: 16px;
               }
           </style>
           
           <div id="cont">
               在過去的52周,騰訊的最低股價為324.29港元,最高為633港元。按照最高股價計算,騰訊的總市值在過去一年創造了歷史新高——突破6萬億港元。
               在2018年的“930改革”后,經歷2019年的波動,騰訊終于在2020年重新回到增長軌道。
               一方面,隨著游戲版權開放,加上全球新冠肺炎疫情蔓延,騰訊的“現金牛”業務游戲收獲頗豐;另外一方面,騰訊堅決落地產業互聯網戰略,并初見成效,擺脫了增長依賴于游戲業務的局面。
               在高速增長下,2020年騰訊也存在一些隱憂,隨著監管部門加強對于互聯網平臺經濟的監管和反壟斷的深入進行,騰訊需要在適應環境變化的情況下保持增長
           </div>

          所以上下文本之間的行間距也就是上面文本底部的12像素+下面文本頂部的12像素!

          真正理解什么是行高?

          我們知道了內容區域與字體字號大小的關系、也知道了什么是行間距以后, 其實我們就可以反推出 行高是什么了!

          公式: 內容區域content area(或字體大小) + 行間距=行高

          注意 :

          1. 以上我們說的內容區域大小 其實相對而言就可以理解為 font-size字體大小!
          2. 行高跟字體樣式也有一定關系! 不同的字體默認的行高是不一樣的! 因為字體的不同影響了內容區域!

          line-height行高小結

          行高(line-height):就是包括內容區域(content area)與以內容區為基礎對稱拓展的空白區域(也就是上下半行距),我們稱之為行高

          一般情況下,也可以認為是相鄰文本行基線間的距離。

          如下圖:

          line-height的各種取值類型

          line-height的取值可以是一個像素值!

          特別注意:

          1. line-height的大小與font-size大小 相等時, 那么行間距為0! 也就是說相當于沒得行間距!
          2. line-height的大小 不能小于 當前元素的font-size大小! 否則算出來的行間距會負數 導致 每一行之間的文本重疊! 如下圖


          line-height的取值可以是一個百分比%

          指定一個百分數, 意思就是會相對于font-size字體大小去計算行高! 沒有明白嗎?那我們看下面的案例吧!

          案例1

          font-size大小為30px,而line-height的大小為80%,也就是說line-height的大小占 font-size大小的80%,又因為80%相當于 80/100就等于0.8,所以最終line-height的大小也就是行高為30px*0.8=24px,根據上面的公式,那么行間距就為24px-30px=-6px,上面文本底部與下面文本頂部都為-3px。

          代碼如下:

           <style>
               #cont{
                   width:600px;
                   background-color:rgb(255,255,30);
                   line-height: 80%;
                   font-size: 30px;
               }
           </style>

          注意: 但是如果使用百分比,那么這個百分比通常不會小于100%,因為小于100%所計算出來的行距值是一個負數! 其實跟上面的line-height的值小于當前元素的font-size的值是一個道理! 都是沒有意義的!

          如下圖:

          案例2

          font-size大小為30px,而line-height的大小為200%,也就是說line-height的大小就是 font-size大小的兩倍,又因為200%相當于 200/100就等于2,所以最終line-height的大小也就是行高為30px*2=60px,根據上面的公式,那么行間距就為60px-30px=30px,上面文本底部與下面文本頂部都為15px。這樣用百分比來表示行高才有意義。代碼如下:

           <style>
               #cont{
                   width:600px;
                   background-color:rgb(255,255,30);
                   line-height: 200%;
                   font-size: 30px;
               }
           </style>

          如下圖:

          小提示: line-height的百分比取值并不是很常用! 通常都是像素值!


          line-height的取值可以是一個整數數字!

          如果設置line-height的值為一個整數數值,那么則行高的值其實就是font-size字體大小相應的倍數!

          簡單的說就是如果設置數值 此數字會與當前的font-size字體大小相乘來設置行間距!

          案例如下: 這里line-height設置為2 也就相當于上面的 line-height設置為:200%是一個道理!那么行高的實際大小為:30px*2=60px,也就是說line-height:60px,則半行距=(60px-30px)/2=15px。代碼如下:

           <style>
               #cont{
                   width:600px;
                   background-color:rgb(255,255,30);
                   line-height: 2;
                   font-size: 30px;
               }
           </style>

          line-height屬性與內聯元素 垂直居中的關系

          1、line-height讓單行文本垂直居中詳解

          相信大家都知道一種說法,想要讓一個單行文本垂直居中,那么只要設置line-height 的大小和 height高度一樣就可以了

          例如:

          一個塊元素中只有一行文字 或者 超級鏈接文字的情況下,也就是說對于單行文本可以將line-height行高設置為當前元素 或者 父元素的高度一樣就可以了!

          這樣就可以讓這個單行文本在當前元素中 或者 說父元素中 垂直居中!

          案例

           <style>
               #cont{
                   width:600px;
                   height: 100px;
                   background-color:rgb(255,255,30);
                   font-size: 30px;
                   line-height: 100px;
               }
           </style>
           
           <div id="cont">
               hello world!
           </div>

          但從我查閱資料并實際操作后,證明讓line-height的值設置為和height值一樣來實現單行文本的垂直居中這種說法并不是很正確!

          原因有如下:

          要讓單行文本垂直居中。其實只需要設置line-height這一個屬性就可以了,根本不需要再設置一個height屬性, 所以有很多教程也誤導了大多數人一定要去設置一個height屬性才可以垂直居中,其實不然! 如下:

           <style>
               #cont{
                   width:600px;
                   background-color:rgb(255,255,30);
                   font-size: 30px;
                   line-height: 100px;
               }
           </style>

          2、line-height只能讓文本近似于垂直居中

          這里的垂直居中只僅僅是無限接近于垂直居中! 為什么要說成是接近于垂直居中呢?

          原因1: 行高的實現在于CSS中的行間距是 一行文字的上下等分機制! 也就是說一行文本的上面和下面所存在的行間距是相等的! 所以如果行間距只存在于一邊的話 那么文字是無法垂直居中的, 其實這也證明了文字垂直居中靠的重要因素就是上下行間距!

          原因2: 剛剛說了 接近于垂直居中,因為文字的中線位置普遍要比 行框盒子的中間線位置要低一些! 如果你不理解 請看下圖: 黃顏色的線 為行框盒子的中間線表示位置, 藍色的線為文字的中線位置! 是不是文字中線比行框盒子低呢! 對吧! 但有些字體因為看起來可能比較有下沉的感覺,所以可能在行間距垂直居中的作用下會有1px像素的小差異 所以我們稱之為:接近于垂直居中!

          所以我們說的接近于垂直居中 而不能完全是垂直居中的原因是 vertical-align造成的, 和line-height是沒有關系的, 關于vertical-align屬性 在后面會詳細說到這里就不多說了!

          3、line-height讓多行文本垂直居中

          使用line-height來控制文本垂直居中,不僅僅用于單行文本, 就連多行文本其實也是可以進行垂直居中的!

          多行文本的垂直居中和 單行文本中就不一樣了! 需要使用到vertical-align屬性!

          案例代碼:

           <style>
               #cont{
                   width:600px;
                   background-color:rgb(255,255,30);
                   line-height: 200px;
               }
               #cont>p{
                   line-height: normal;
                   display: inline-block;
                   vertical-align: middle;
               }
           </style>
           
           <div id="cont">
               <p>
                   測試數據...測試數據...測試數據...測試數據...測試數據...測試數據...測試數據...
                   測試數據...測試數據...測試數據...測試數據...測試數據...測試數據...測試數據...
                   測試數據...測試數據...測試數據...測試數據...測試數據...測試數據...測試數據...
                   測試數據...測試數據...測試數據...測試數據...測試數據...測試數據...測試數據...
               </p>
           </div>
           

          效果圖如下:

          原理實現如下

          1. 多行文本使用一個元素來包裹, 不管你用div、p、還是span、內聯元素 還是 塊元素來包裹都是可以的! 但是必須設置一個display: inline-block; 好處就是讓這個元素保持內聯元素的特性
          2. 給多行文本的包裹元素 設置 line-height: normal; 是為了清除繼承下來的行高!
          3. 在給包含多行文本的元素設置了 display: inline-block; 屬性后 會產生關鍵的 行框盒子 而且前面我們已經知道了 只要有一個行框盒子那么都會附帶一個 幽靈空白節點! 還不明白的會上面看看! 我們設置 line-height: 200px;就作用到了這個幽靈空白節點上! 從而在行框前面 撐開了 200px的高度
          4. 又因為給多行文本的包含元素設置了display: inline-block; 它現在是內聯元素, 而內聯元素 默認是基線對齊的, 所以我們又給這個包含元素p設置了vertical-align屬性值為:middle 來調整這個多行文本的垂直位置! 最后就實現了我們所看到的多行文本垂直居中效果! 如果是圖片原理是一樣的!

          line-height 與 font 的使用順序問題

          使用font屬性也可以設置行高,可以在字體大小后添加 /行高大小 來表示行高,這個值是可選的,不指定的時候會采用默認值也就是沒得。

          例如:

           font: 30px/行高值px '字體樣式';

          但是當line-height屬性設置在 font 屬性之前,并且 font 屬性中沒有設置行高的時候,line-height屬性會被font 屬性中的行高默認值覆蓋,也就是說在這個時候line-height屬性是無效的。所以如果想要設置行高,可以把line-height屬性設置在 font 屬性之后,也可以直接在 font 屬性里面設置行高。

          案例:

           <style>
               /*line-height會被font的默認行高而覆蓋*/
               #cont{
                   width:600px;
                   background-color:rgb(255,255,30);
                   line-height: 50px;
                   font: 30px '微軟雅黑';
               }
               
               /*line-height寫在font下面會被正常解析*/
               #cont{
                   width:600px;
                   background-color:rgb(255,255,30);
                   font: 30px '微軟雅黑';
                   line-height: 50px;
               }
               
               /*直接通過font來調整line-height行高*/
               #cont{
                   width:600px;
                   background-color:rgb(255,255,30);
                   font: 30px/50px '微軟雅黑';
               }
               
           </style>

          小結: 所以使用font屬性的時候要注意一些其他文本屬性的順序,例如line-height, font-style,font-weight,font-family 這些屬性要是寫在font前面都可能被后面的font默認值所覆蓋! 注意使用順序即可!


          line-height 與 圖片之間的細微關系

          我們先來看一個案例吧:

           <style>
               div{
                   width:500px;
                   background: yellow;
               }
           </style>
           
           <div>
               <img src="images/1.gif">
           </div>

          結果圖:

          從上圖中可以看出,圖片在div元素中的下部會有一點點間隙! 這正因為前面提到的 匿名空白文本節點的存在,才會造成圖中的情形!

          為什么給父元素設置text-align: center; 會讓內部的img元素居中?

          案例:

           <div>
               <img src="images/1.gif">
           </div>
           <style>
               div{
                   width:300px;
                   background: yellow;
                   text-align: center;
               }
           </style>

          如圖:

          原因: 這其實是居中的 幽靈空白節點, 而不是圖片! 因為幽靈空白節點也是一個文本節點,設置text-align: center; 理所當然會居中,而且后面的圖片和前面的幽靈空白節點同樣都是 內聯元素,幽靈空白節點居中的時候就把圖片頂過來了! 而且幽靈空白節點是0寬度看不出來的,所以我們看到的就僅僅是圖片居中了! (個人理解僅供參考)

          解決圖片因幽靈空白節點而產生的底部空隙

          1. 圖片塊狀化。vertical-align 只適用于inline、inline-block元素,也就是說對于block元素并沒有基線對齊這一說。所以設置: img{display:block;}, 其實反推圖片塊狀化了之后 ,設置 text-align: center;圖片也自然不會居中了! 這時居中圖片應該使用塊元素居中的辦法了!比如給圖片設置 : margin: 0 auto; 居中等等...
          2. 圖片底線對齊 img{vertical-align:bottom;}
          3. 行高足夠小,使基線上移 .box{line-height:0}

          line-height行高總結

          行高(line-height):就是包括內容區與以內容區為基礎對稱拓展的空白區域(也就是上下半行距) 加起來的總和,我們稱之為行高

          給行元素(內聯元素)設置line-height后, 行內框(內聯元素盒子) 撐開了行框 , 而行框又撐開了內容區域、而內容區域撐開了包含元素也就是最外層的包含塊!

          撐開的部分平均分布在上下兩側就是行距 !

          而行高 就是 內容區域+ 兩側行間距 就是=行高


          原創技術文章

          如果喜歡話請 "點贊 評論 收藏" 一鍵三連

          大家的支持就是我堅持下去的動力!

          ,html+css基礎

          1-1

          Html和CSS的關系

          學習web前端開發基礎技術需要掌握:HTML、CSS、JavaScript語言。下面我們就來了解下這三門技術都是用來實現什么的:

          1. HTML是網頁內容的載體。內容就是網頁制作者放在頁面上想要讓用戶瀏覽的信息,可以包含文字、圖片、視頻等。

          2. CSS樣式是表現。就像網頁的外衣。比如,標題字體、顏色變化,或為標題加入背景圖片、邊框等。所有這些用來改變內容外觀的東西稱之為表現。

          3. JavaScript是用來實現網頁上的特效效果。如:鼠標滑過彈出下拉菜單。或鼠標滑過表格的背景顏色改變。還有焦點新聞(新聞圖片)的輪換。可以這么理解,有動畫的,有交互的一般都是用JavaScript來實現的。

          1-2

          1, HTML標簽不區分大小寫,<h1>和<H1>是一樣的,但建議小寫,因為大部分程序員都以小寫為準。

          1-3

          一個HTML文件是有自己固定的結構的。

          <html>

          <head>...</head>

          <body>...</body>

          </html>

          代碼講解:

          1. <html></html>稱為根標簽,所有的網頁標簽都在<html></html>中。

          2. <head> 標簽用于定義文檔的頭部,它是所有頭部元素的容器。頭部元素有<title>、<script>、 <style>、<link>、 <meta>等標簽,頭部標簽在下一小節中會有詳細介紹。

          3. 在<body>和</body>標簽之間的內容是網頁的主要內容,如<h1>、<p>、<a>、<img>等網頁內容標簽,在這里的標簽中的內容會在瀏覽器中顯示出來。

          1-4

          1,下面這些標簽可用在 head 部分:

          <head>

          <title>...</title>

          <meta>

          <link>

          <style>...</style>

          <script>...</script>

          </head>

          2,代碼注釋不僅方便程序員自己回憶起以前代碼的用途,還可以幫助其他程序員很快的讀懂你的程序的功能,方便多人合作開發網頁代碼。

          語法:

          <!--注釋文字 -->

          3,CSS注釋代碼

          就像在Html的注釋一樣,在CSS中也有注釋語句:用/*注釋語句*/來標明(Html中使用<!--注釋語句-->)

          1-5

          1,語義化:說的通俗點就是:明白每個標簽的用途(在什么情況下我可以使用這個標簽才合理)比如,網頁上的文章的標題就得用標題標簽,網頁上的各個欄目的欄目名稱也可以使用標題標簽。

          2,語義化的作用

          1). 更容易被搜索引擎收錄。

          2). 更容易讓屏幕閱讀器讀出網頁內容。

          二,認識標簽(第一部分)

          2-1

          如果想在網頁上顯示文章,這時就需要<p>標簽了,把文章的段落放到<p>標簽中。

          語法:

          <p>段落文本</p>

          2-2

          <hx>標簽來制作文章的標題。

          標題標簽一共有6個,h1、h2、h3、h4、h5、h6分別為一級標題、二級標題、三級標題、四級標題、五級標題、六級標題。并且依據重要性遞減。<h1>是最高的等級。

          語法:

          <hx>標題文本</hx> (x為1-6)

          文章的標題前面已經說過了,可以使用標題標簽,另外網頁上的各個欄目的標題也可使用它們

          2-3

          有了段落又有了標題,現在如果想在一段話中特別強調某幾個文字,這時候就可以用到<em>或<strong>標簽。

          但兩者在強調的語氣上有區別:<em> 表示強調,<strong> 表示更強烈的強調。并且在瀏覽器中<em> 默認用斜體表示,<strong> 用粗體表示。兩個標簽相比,目前國內前端程序員更喜歡使用<strong>表示強調

          2-4

          <em>、<strong>、<span>的區別:

          1. <em>和<strong>標簽是為了強調一段話中的關鍵字時使用,它們的語義是強調。

          2. <span>標簽是沒有語義的,它的作用就是為了設置單獨的樣式用的,把一段話圈起來,然后用css設置樣式。

          2-5

          q標簽,短文本引用

          比如在你的網頁的文章里想引用某個作家的一句詩,這樣會使你的文章更加出彩,那么<q>標簽是你所需要的。

          語法:

          <q>引用文本</q>

          1,注意要引用的文本不用加雙引號,瀏覽器會對q標簽自動添加雙引號。

          2,注意這里用<q>標簽的真正關鍵點不是它的默認樣式雙引號(如果這樣我們不如自己在鍵盤上輸入雙引號就行了),而是它的語義:引用別人的話

          blockquote標簽,長文本引用

          <blockquote>的作用也是引用別人的文本。但它是對長文本的引用

          <q>標簽是對簡短文本的引用,比如說引用一句話就用到<q>標簽。

          語法:

          <blockquote>引用文本</blockquote>

          瀏覽器對<blockquote>標簽的解析是縮進樣式

          2-6

          換行標簽<br/>

          <br/>標簽作用相當于word文檔中的回車。

          分割線標簽<hr/>

          <hr/>標簽和<br/>標簽一樣也是一個空標簽,所以只有一個開始標簽,沒有結束標簽。

          <hr/>標簽的在瀏覽器中的默認樣式線條比較粗,顏色為灰色,可能有些人覺得這種樣式不美觀,沒有關系,這些外在樣式在我們以后學習了css樣式表之后,都可以對其修改。

          2-7

          html特殊字符

          空格: (;分號必不可少)

          2-8

          address標簽,為網頁加入地址信息

          語法:

          <address>地址信息</address>

          如:

          <address>北京市西城區德外大街10號</address>

          在瀏覽器上顯示的樣式為斜體,如果不喜歡斜體,當然可以,可以在后面的課程中使用css樣式來修改它<address>標簽的默認樣式

          2-9

          在介紹語言技術的網站中,必免不了在網頁中顯示一些計算機專業的編程代碼,當代碼為一行代碼時,你就可以使用<code>標簽了,如下面例子:

          <code>var i=i+300;</code>

          語法:

          <code>代碼語言</code>

          注意:在文章中一般如果要插入多行代碼時不能使用<code>標簽,如果是多行代碼,可以使用<pre>標簽。

          <pre> 標簽的主要作用:預格式化的文本。被包圍在 pre 元素中的文本通常會保留空格和換行符。如果用以前的方法,回車需要輸入<br>簽,空格需要輸入 。

          注意:<pre> 標簽不只是為顯示計算機的源代碼時用的,在你需要在網頁中預顯示格式時都可以使用它,只是<pre>標簽的一個常見應用就是用來展示計算機的源代碼。

          三,認識標簽(第二部分)

          3-1

          1,無序列表

          ul-li是沒有前后順序的信息列表。

          語法:

          <ul>

          <li>信息</li>

          <li>信息</li>

          ......

          </ul>

          舉例:

          <ul>

          <li>精彩少年</li>

          <li>美麗突然出現</li>

          <li>觸動心靈的旋律</li>

          </ul>

          ul-li在網頁中顯示的默認樣式一般為:每項li前都自帶一個圓點

          2,有序列表

          語法:

          <ol>

          <li>信息</li>

          <li>信息</li>

          ......

          </ol>

          舉例:

          下面是一個熱點課程下載排行榜:

          <ol>

          <li>前端開發面試心法 </li>

          <li>零基礎學習html</li>

          <li>JavaScript全攻略</li>

          </ol>

          <ol>在網頁中顯示的默認樣式一般為:每項<li>前都自帶一個序號,序號默認從1開

          3-2

          <div>容器標簽

          在網頁制作過程過中,可以把一些獨立的邏輯部分劃分出來,放在一個<div>標簽中,這個<div>標簽的作用就相當于一個容器。

          語法:

          <div>…</div>

          確定邏輯部分:

          什么是邏輯部分?它是頁面上相互關聯的一組元素。如網頁中的獨立的欄目版塊,就是一個典型的邏輯部分。如下圖所示:圖中用紅色邊框標出的部分就是一個邏輯部分,就可以使用<div>標簽作為容器

          注釋:<div> 是一個塊級元素,也就是說,瀏覽器通常會在 div 元素前后放置一個換行符。

          3-3

          創建表格的五個元素:

          table、tbody、tr、th、td

          1、<table>…</table>:整個表格以<table>標記開始、</table>標記結束。

          2、<tbody>…</tbody>:當表格內容非常多時,表格會下載一點顯示一點,但如果加上<tbody>標簽后,這個表格就要等表格內容全部下載完才會顯示。如右側代碼編輯器中的代碼。(這個標簽基本上不怎么用了)

          3、<tr>…</tr>:表格的一行,所以有幾對tr 表格就有幾行。

          4、<td>…</td>:表格的一個單元格,一行中包含幾對<td>...<td/>,說明一行中就有幾列。

          5、<th>…</th>:表格的頭部的一個單元格,表格表頭。

          6、表格中列的個數,取決于一行中數據單元格的個數。

          表格還是需要添加一些標簽進行優化,可以添加標題和摘要

          <table summary="本表格記錄2012年到2013年庫存記錄,記錄包括U盤和耳機庫存量">

          <caption>2012年到2013年庫存記錄</caption>

          3-4

          1,使用<a>標簽,鏈接到別一個頁面

          使用<a>標簽可實現超鏈接,它在網頁制作中可以說是無處不在,只要有鏈接的地方,就會有這個標簽。

          語法:

          <a href=”目標網址”>鏈接顯示的文本</a>

          例如:

          <a >click here!</a>

          上面例子作用是單擊click here!文字,網頁鏈接到http://www.imooc.com這個網頁。

          3-5

          認識<img>標簽,為網頁插入圖片

          在網頁的制作中為使網頁炫麗美觀,肯定是缺少不了圖片,可以使用<img>標簽來插入圖片。

          語法:

          <img src="圖片地址" alt="下載失敗時的替換文本" title="提示文本">

          舉例:

          <img src="myimage.gif" alt="My Image" title="My Image" />

          講解:

          1、src:標識圖像的位置;

          2、alt:指定圖像的描述性文本,當圖像不可見時(下載不成功時),可看到該屬性指定的文本;

          3、title:提供在圖像可見時對圖像的描述(鼠標滑過圖片時顯示的文本);

          4、圖像可以是GIF,PNG,JPEG格式的圖像文件。

          四,表單標簽(與用戶進行交互)

          4-1

          表單是可以把瀏覽者輸入的數據傳送到服務器端,這樣服務器端程序就可以處理表單傳過來的數據。

          語法:

          <form method="傳送方式" action="服務器文件">

          講解:

          1.<form> :<form>標簽是成對出現的,以<form>開始,以</form>結束。

          2.action :瀏覽者輸入的數據被傳送到的地方,比如一個PHP頁面(save.php)。

          3.method : 數據傳送的方式(get/post)。

          4-2

          <input>輸入框

          文本輸入框、密碼輸入框

          當用戶要在表單中鍵入字母、數字等內容時,就會用到文本輸入框。文本框也可以轉化為密碼輸入框。

          語法:

          <form>

          <input type="text/password" name="名稱" value="文本" />

          </form>

          1、type:

          當type="text"時,輸入框為文本輸入框;

          當type="password"時, 輸入框為密碼輸入框。

          2、name:為文本框命名,以備后臺程序ASP 、PHP使用。

          3、value:為文本輸入框設置默認值。(一般起到提示作用)

          4-3

          文本域,支持多行文本輸入

          當用戶需要在表單中輸入大段文字時,需要用到文本輸入域。

          語法:

          <textarea rows="行數" cols="列數">文本</textarea>

          1、<textarea>標簽是成對出現的,以<textarea>開始,以</textarea>結束。

          2、cols :多行輸入域的列數。

          3、rows :多行輸入域的行數。

          4-4

          單選框,復選框

          語法:

          <input type="radio/checkbox" value="值" name="名稱" checked="checked"/>

          1、type:

          當type="radio"時,控件為單選框

          當type="checkbox"時,控件為復選框

          2、value:提交數據到服務器的值(后臺程序PHP使用)

          3、name:為控件命名,以備后臺程序ASP、PHP使用

          4、checked:當設置checked="checked"時,該選項被默認選中

          注意:同一組的單選按鈕,name取值一定要一致,這樣同一組的單選按鈕才可以起到單選的作用。

          4-5

          下拉列表框,節省空間

          下拉列表在網頁中也常會用到,它可以有效的節省網頁空間。既可以單選、又可以多選。

          語法:<option value="提交值">選項</option>

          提交值是向服務器提交的值,選項是顯示的值。

          <form action="save.php" method="post" >

          <label>愛好:</label>

          <select>

          <option value="看書">看書</option>

          <option value="旅游" selected="selected">旅游</option>

          <option value="運動">運動</option>

          <option value="購物">購物</option>

          </select>

          </form>

          4-6

          使用下拉列表框進行多選

          下拉列表也可以進行多選操作,在<select>標簽中設置multiple="multiple"屬性,

          就可以實現多選功能,進行多選時按下Ctrl鍵同時進行單擊,可以選擇多個選項。

          如下代碼:

          <form action="save.php" method="post" >

          <label>愛好:</label>

          <select multiple="multiple">

          <option value="看書">看書</option>

          <option value="旅游">旅游</option>

          <option value="運動">運動</option>

          <option value="購物">購物</option>

          </select>

          </form>

          4-7

          在表單中有兩種按鈕可以使用,分別為:提交按鈕、重置。

          1,提交按鈕:當用戶需要提交表單信息到服務器時,需要用到提交按鈕。

          語法:

          <input type="submit" value="提交">

          type:只有當type值設置為submit時,按鈕才有提交作用

          value:按鈕上顯示的文字

          2,重置按鈕,重置表單信息

          當用戶需要重置表單信息到初始時的狀態時,比如用戶輸入“用戶名”后,發現書寫有誤,可以使用重置按鈕使輸入框恢復到初始狀態。只需要把type設置為"reset"就可以。

          語法:

          <input type="reset" value="重置">

          type:只有當type值設置為reset時,按鈕才有重置作用

          value:按鈕上顯示的文字

          五,css樣式

          5-1

          認識css樣式

          CSS全稱為“層疊樣式表 (Cascading Style Sheets)”,它主要是用于定義HTML內容在瀏覽器內的顯示樣式,如文字大小、顏色、字體加粗等。

          如下列代碼:

          p{

          font-size:12px;

          color:red;

          font-weight:bold;

          }

          使用CSS樣式的一個好處是通過定義某個樣式,可以讓不同網頁位置的文字有著統一的字體、字號或者顏色等。

          5-2

          CSS代碼語法

          css 樣式由選擇符和聲明組成,而聲明又由屬性和值組成

          選擇符{屬性:值}

          p{color:red;}

          選擇符:又稱選擇器,指明網頁中要應用樣式規則的元素,如本例中是網頁中所有的段(p)的文字將變成藍色,而其他的元素(如ol)不會受到影響。

          聲明:在英文大括號“{}”中的的就是聲明,屬性和值之間用英文冒號“:”分隔。當有多條聲明時,中間可以英文分號“;”分隔,如下所示:

          p{font-size:12px;color:red;}

          5-3

          從CSS 樣式代碼插入的形式來看基本可以分為以下3種:

          內聯式、嵌入式和外部式三種

          1,內聯式css樣式

          就是把css代碼直接寫在現有的HTML標簽中,如下面代碼:

          <p style="color:red">這里文字是紅色。</p>

          css樣式代碼要寫在style=""雙引號中,如果有多條css樣式代碼設置可以寫在一起,中間用分號隔開。如下代碼:

          <p style="color:red;font-size:12px">這里文字是紅色。</p>

          2,嵌入式css樣式,

          就是可以把css樣式代碼寫在<style type="text/css"></style>標簽之間。如下面代碼實現把三個<span>標簽中的文字設置為紅色:

          <style type="text/css">

          span{

          color:red;

          }

          </style>

          嵌入式css樣式必須寫在<style></style>之間,并且一般情況下嵌入式css樣式寫在<head></head>之間。

          3,外部式css樣式

          寫在單獨的一個文件中

          外部式css樣式(也可稱為外聯式)就是把css代碼寫一個單獨的外部文件中,這個css樣式文件以“.css”為擴展名,在<head>內(不是在<style>標簽內)使用<link>標簽將css樣式文件鏈接到HTML文件內,如下面代碼:

          <link href="base.css" rel="stylesheet" type="text/css" />

          注意:

          1、css樣式文件名稱以有意義的英文字母命名,如 main.css。

          2、rel="stylesheet" type="text/css" 是固定寫法不可修改。

          3、<link>標簽位置一般寫在<head>標簽之內。

          六,CSS選擇器

          每一條css樣式定義由兩部分組成,形式如下:

          選擇器{

          樣式;

          }

          在{}之前的部分就是“選擇器”,“選擇器”指明了{}中的“樣式”的作用對象,也就是“樣式”作用于網頁中的哪些元素

          6-1,標簽選擇器

          標簽選擇器其實就是html代碼中的標簽。如右側代碼編輯器中的<html>、<body>、<h1>、<p>、<img>。例如下面代碼:

          p{font-size:12px;line-height:1.6em;}

          上面的css樣式代碼的作用:為p標簽設置12px字號,行間距設置1.6em的樣式。

          6-2,類選擇器

          類選擇器在css樣式編碼中是最常用到的,如右側代碼編輯器中的代碼:可以實現為“膽小如鼠”、“勇氣”字體設置為紅色。

          語法:

          .類選器名稱{css樣式代碼;}

          注意:

          1、英文圓點開頭

          2、其中類選器名稱可以任意起名(但不要起中文噢)

          使用方法:

          第一步:使用合適的標簽把要修飾的內容標記起來,如下:

          <span>膽小如鼠</span>

          第二步:使用class="類選擇器名稱"為標簽設置一個類,如下:

          <span class="stress">膽小如鼠</span>

          第三步:設置類選器css樣式,如下:

          .stress{color:red;}/*類前面要加入一個英文圓點*/

          6-3,ID選擇器

          在很多方面,ID選擇器都類似于類選擇符,但也有一些重要的區別:

          1、為標簽設置id="ID名稱",而不是class="類名稱"。

          2、ID選擇符的前面是井號(#)號,而不是英文圓點(.)。

          6-4,類和ID選擇器的區別

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

          不同點:

          1、ID選擇器只能在文檔中使用一次。與類選擇器不同,在一個HTML文檔中,ID選擇器只能使用一次,而且僅一次。而類選擇器可以使用多次。

          下面代碼是正確的:

          <p>三年級時,我還是一個<span class="stress">膽小如鼠</span>的小女孩,上課從來不敢回答老師提出的問題,生怕回答錯了老師會批評我。就一直沒有這個<span class="stress">勇氣</span>來回答老師提出的問題。</p>

          而下面代碼是錯誤的:

          <p>三年級時,我還是一個<span id="stress">膽小如鼠</span>的小女孩,上課從來不敢回答老師提出的問題,生怕回答錯了老師會批評我。就一直沒有這個<span id="stress">勇氣</span>來回答老師提出的問題。</p>

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

          下面的代碼是正確的(完整代碼見右側代碼編輯器)

          .stress{

          color:red;

          }

          .bigsize{

          font-size:25px;

          }

          <p>到了<span class="stress bigsize">三年級</span>下學期時,我們班上了一節公開課...</p>

          上面代碼的作用是為“三年級”三個文字設置文本顏色為紅色并且字號為25px

          下面的代碼是不正確的(完整代碼見右側代碼編輯器)

          #stressid{

          color:red;

          }

          #bigsizeid{

          font-size:25px;

          }

          <p>到了<span id="stressid bigsizeid">三年級</span>下學期時,我們班上了一節公開課...</p>

          上面代碼不可以實現為“三年級”三個文字設置文本顏色為紅色并且字號為25px的作用。

          6-5,子選擇器

          還有一個比較有用的選擇器子選擇器,即大于符號(>),用于選擇指定標簽元素的子元素。如下面的代碼:

          .food>li{border:1px solid red;}

          這行代碼會使class名為food下的子元素li加入紅色實線邊框。

          6-6,包含(后代)選擇器

          包含選擇器,即加入空格,用于選擇指定標簽元素下的后輩元素。如右側代碼編輯器中的代碼:

          .first span{color:red;}

          請注意這個選擇器與子選擇器的區別

          1,子選擇器(child selector)僅是指它的直接后代,或者你可以理解為作用于子元素的第一代后代

          2,后代選擇器是作用于所有子后代元素。后代選擇器通過空格來進行選擇,而子選擇器是通過“>”進行選擇。

          總結:>作用于元素的第一代后代,空格作用于元素的所有后代。

          6-7,通用選擇器

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

          * {color:red;}

          6-8,偽類選擇符

          更有趣的是偽類選擇符,為什么叫做偽類選擇符,它允許給html不存在的標簽設置樣式,比如說我們給html中一個標簽元素的鼠標滑過的狀態來設置字體顏色:

          a:hover{color:red;}

          這行代碼會使被<a></a>標簽包裹的文字內容中的“膽小如鼠”字體顏色在鼠標滑過時變為紅色。

          6-9,分組選擇符

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

          h1,span{color:red;}

          它相當于下面兩行代碼:

          h1{color:red;}

          span{color:red;}

          七,CSS的繼承、層疊和特殊性。

          7-1

          CSS的某些樣式是具有繼承性的,那么什么是繼承呢?繼承是一種規則,它允許樣式不僅應用于某個特定html標簽元素,而且應用于其后代。比如下面代碼:如某種顏色應用于p標簽,這個顏色設置不僅應用p標簽,還應用于p標簽中的所有子元素文本,這里子元素為span標簽。

          但注意有一些css樣式是不具有繼承性的。如border:1px solid red;

          7-2

          根據權值來判斷使用哪個css樣式

          瀏覽器是根據權值來判斷使用哪種css樣式的,權值高的就使用哪種css樣式。

          下面是權值的規則:

          標簽的權值為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,所以可以理解為繼承的權值最低

          7-3,層疊

          我們來思考一個問題:如果在html文件中對于同一個元素可以有多個css樣式存在并且這多個css樣式具有相同權重值怎么辦?好,這一小節中的層疊幫你解決這個問題。

          層疊就是在html文件中對于同一個元素可以有多個css樣式存在,當有相同權重的樣式存在時,會根據這些css樣式的前后順序來決定,處于最后面的css樣式會被應用。

          如下面代碼:

          p{color:red;}

          p{color:green;}

          <p class="first">三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>

          最后 p 中的文本會設置為green,這個層疊很好理解,理解為后面的樣式會覆蓋前面的樣式。

          所以前面的css樣式優先級就不難理解了:

          內聯樣式表(標簽內部)> 嵌入樣式表(當前文件中)> 外部樣式表(外部文件中)。

          7-4,重要性

          重要性

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

          如下代碼:

          p{color:red!important;}

          p{color:green;}

          <p class="first">三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>

          這時 p 段落中的文本會顯示的red紅色。

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

          八,CSS格式化排版

          8-1

          文字排版

          1,文字排版--字體

          我們可以使用css樣式為網頁中的文字設置字體、字號、顏色等樣式屬性。下面我們來看一個例子,下面代碼實現:為網頁中的文字設置字體為宋體。

          body{font-family:"宋體";}

          這里注意不要設置不常用的字體,因為如果用戶本地電腦上如果沒有安裝你設置的字體,就會顯示瀏覽器默認的字體。(因為用戶是否可以看到你設置的字體樣式取決于用戶本地電腦上是否安裝你設置的字體。)

          2,文字排版--字號、顏色

          可以使用下面代碼設置網頁中文字的字號為12像素,并把字體顏色設置為#666(灰色):

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

          3,文字排版--粗體

          我們還可以使用css樣式來改變文字的樣式:粗體、斜體、下劃線、刪除線,可以使用下面代碼實現設置文字以粗體樣式顯示出來。

          p span{font-weight:bold;}

          4,文字排版--斜體

          以下代碼可以實現文字以斜體樣式在瀏覽器中顯示:

          p a{font-style:italic;}

          <p>三年級時,我還是一個<a>膽小如鼠</a>的小女孩。</p>

          5,文字排版--下劃線

          有些情況下想為文字設置為下劃線樣式,這樣可以在視覺上強調文字,可以使用下面代碼來實現:

          p a{text-decoration:underline;}

          <p>三年級時,我還是一個<a>膽小如鼠</a>的小女孩。</p>

          刪除線,在電商網站上經常見。

          p a{text-decoration:line-through;}

          8-2

          段落排版

          1,段落排版--縮進

          中文文字中的段前習慣空兩個文字的空白,這個特殊的樣式可以用下面代碼來實現:

          p{text-indent:2em;}

          注意:2em的意思就是文字的2倍大小。

          2,段落排版--行間距

          這一小節我們來學習一下另一個在段落排版中起重要作用的行間距屬性(line-height),如下代碼實現設置段落行間距為1.5倍。

          p{line-height:1.5em;}

          3,段落排版--字間距、字母間距

          文字間隔、字母間隔設置:

          如果想在網頁排版中設置文字間隔或者字母間隔就可以使用 letter-spacing來實現,如下面代碼:

          h1{

          letter-spacing:50px;

          }

          ...

          <h1>了不起的蓋茨比</h1>

          注意:這個樣式使用在英文單詞時,是設置字母與字母之間的間距。

          單詞間距設置:

          如果我想設置英文單詞之間的間距呢?可以使用word-spacing來實現。如下代碼:

          h1{

          word-spacing:50px;

          }

          ...

          <h1>welcome to imooc!</h1>

          九,CSS盒模型

          9-1

          元素分類

          在講解CSS布局之前,我們需要提前知道一些知識,在CSS中,html中的標簽元素大體被分為三種不同的類型:塊狀元素、內聯元素和內聯塊狀元素。

          常用的塊狀元素有:

          <div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form>

          常用的內聯元素有:

          <a>、<span>、<br>、<i>、<em>、<strong>、<label>、<q>、<var>、<cite>、<code>

          常用的內聯塊狀元素有:

          <img>、<input>

          9-2

          元素分類--塊級元素

          什么是塊級元素?在html中<div>、 <p>、<h1>、<form>、<ul> 和 <li>就是塊級元素。設置display:block就是將元素顯示為塊級元素。如下代碼就是將行內元素a轉換為塊狀元素,從頁使用a元素具有塊狀元素特點。

          a{display:block;}

          塊級元素特點:

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

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

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

          9-3

          元素分類--行內元素

          在html中,<span>、<a>、<label>、<input>、 <img>、 <strong> 和<em>就是典型的行內元素(inline)元素。當然塊狀元素也可以通過代碼display:inline將元素設置為行內元素。

          行內元素特點:

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

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

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

          9-4

          元素分類--內聯塊狀元素

          內聯塊狀元素(inline-block)就是同時具備內聯元素、塊狀元素的特點,代碼display:inline-block就是將元素設置為內聯塊狀元素。(css2.1新增),<img>、<input>標簽就是這種內聯塊狀標簽。

          inline-block元素特點:

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

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

          9-5

          盒模型--邊框(一)

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

          如下面代碼為div來設置邊框粗細為2px、樣式為實心的、顏色為紅色的邊框:

          div{

          border:2px solid red;

          }

          上面是border代碼的縮寫形式,可以分開寫:

          div{

          border-width:2px;

          border-style:solid;

          border-color:red;

          }

          注意:

          1、border-style(邊框樣式)常見樣式有:

          dashed(虛線)| dotted(點線)| solid(實線)。

          2、border-color(邊框顏色)中的顏色可設置為十六進制顏色,如:

          border-color:#888;//前面的井號不要忘掉。

          9-6

          盒模型--邊框(二)

          現在有一個問題,如果有想為p標簽單獨設置下邊框,而其它三邊都不設置邊框樣式怎么辦呢?css樣式中允許只為一個方向的邊框設置樣式:

          div{border-bottom:1px solid red;}

          同樣可以使用下面代碼實現其它三邊上、右、左邊框的設置:

          border-top:1px solid red;

          border-right:1px solid red;

          border-left:1px solid red;

          9-7

          盒模型--邊界

          元素與其它元素之間的距離可以使用邊界(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;}

          總結一下:padding和margin的區別,padding在邊框里,margin在邊框外。

          9-8

          盒模型--填充

          元素內容與邊框之間是可以設置距離的,稱之為填充。填充也可分為上、右、下、左。如下代碼:

          div{padding:20px 10px15px 30px;}

          順序一定不要搞混。可以分開寫上面代碼:

          div{

          padding-top:20px;

          padding-right:10px;

          padding-bottom:15px;

          padding-left:30px;

          }

          如果上、右、下、左的填充都為10px;可以這么寫

          div{padding:10px;}

          如果上下填充一樣為10px,左右一樣為20px,可以這么寫:

          div{padding:10px 20px;}

          9-9

          盒模型代碼簡寫

          還記得在講盒模型時外邊距(margin)、內邊距(padding)和邊框(border)設置上下左右四個方向的邊距是按照順時針方向設置的:上右下左。具體應用在margin和padding的例子如下:

          margin:10px 15px 12px 14px;/*上設置為10px、右設置為15px、下設置為12px、左設置為14px*/

          通常有下面三種縮寫方法:

          1、如果top、right、bottom、left的值相同,如下面代碼:

          margin:10px 10px 10px 10px;

          可縮寫為:

          margin:10px;

          2、如果top和bottom值相同、left和 right的值相同,如下面代碼:

          margin:10px 20px 10px 20px;

          可縮寫為:

          margin:10px 20px;

          3、如果left和right的值相同,如下面代碼:

          margin:10px 20px 30px 20px;

          可縮寫為:

          margin:10px 20px 30px;

          注意:padding、border的縮寫方法和margin是一致的。

          9-10

          顏色值縮寫

          關于顏色的css樣式也是可以縮寫的,當你設置的顏色是16進制的色彩值時,如果每兩位的值相同,可以縮寫一半。

          例子1:

          p{color:#000000;}

          可以縮寫為:

          p{color: #000;}

          例子2:

          p{color: #336699;}

          可以縮寫為:

          p{color: #369;}

          十,CSS布局模型

          10-1

          css布局模型

          清楚了CSS 盒模型的基本概念、 盒模型類型, 我們就可以深入探討網頁布局的基本模型了。布局模型與盒模型一樣都是 CSS 最基本、 最核心的概念。 但布局模型是建立在盒模型基礎之上,又不同于我們常說的 CSS 布局樣式或 CSS 布局模板。如果說布局模型是本,那么 CSS 布局模板就是末了,是外在的表現形式。

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

          在網頁中,元素有三種布局模型:

          1、流動模型(Flow)

          2、浮動模型 (Float)

          3、層模型(Layer)

          10-2

          流動模型(一)

          流動(Flow):自上而下。

          先來說一說流動模型,流動(Flow)是默認的網頁布局模式。也就是說網頁在默認狀態下的 HTML 網頁元素都是根據流動模型來分布網頁內容的。

          流動布局模型具有2個比較典型的特征:

          第一點,塊狀元素都會在所處的包含元素內自上而下按順序垂直延伸分布,因為在默認狀態下,塊狀元素的寬度都為100%。實際上,塊狀元素都會以行的形式占據位置。如右側代碼編輯器中三個塊狀元素標簽(div,h1,p)寬度顯示為100%。

          第二點,在流動模型下,內聯元素都會在所處的包含元素內從左到右水平分布顯示。(內聯元素可不像塊狀元素這么霸道獨占一行)

          右側代碼編輯器中內聯元素標簽a、span、em、strong都是內聯元素。

          10-3浮動模型

          塊狀元素這么霸道都是獨占一行,如果現在我們想讓兩個塊狀元素并排顯示,怎么辦呢?不要著急,設置元素浮動就可以實現這一愿望。任何元素在默認情況下是不能浮動的,但可以用CSS定義為浮動,如div、p、table、img等元素都可以被定義為浮動。如下代碼可以實現兩個div元素一行顯示。

          div{

          width:200px;

          height:200px;

          border:2px red solid;

          float:left;

          }

          <div id="div1"></div>

          <div id="div2"></div>

          注意:設置浮動的同時一定要先設置塊狀元素的寬度,且需要浮動的幾個元素寬度加起來一定要小于容器元素的寬度。

          10-4什么是層模型?

          什么是層布局模型?層布局模型就像是圖像軟件PhotoShop中非常流行的圖層編輯功能一樣,每個圖層能夠精確定位操作,但在網頁設計領域,由于網頁大小的活動性,層布局沒能受到熱捧。但是在網頁上局部使用層布局還是有其方便之處的。下面我們來學習一下html中的層布局。

          如何讓html元素在網頁中精確定位,就像圖像軟件PhotoShop中的圖層一樣可以對每個圖層能夠精確定位操作。CSS定義了一組定位(positioning)屬性來支持層布局模型。

          層模型有三種形式:

          1、絕對定位(position: absolute)

          2、相對定位(position: relative)

          3、固定定位(position: fixed)

          1,層模型--絕對定位(相對于父類)

          如果想為元素設置層模型中的絕對定位,需要設置position:absolute(表示絕對定位),這條語句的作用將元素從文檔流中拖出來,然后使用left、right、top、bottom屬性相對于其最接近的一個具有定位屬性的父包含塊進行絕對定位。如果不存在這樣的包含塊,則相對于body元素,即相對于瀏覽器窗口。

          如下面代碼可以實現div元素相對于瀏覽器窗口向右移動100px,向下移動50px。

          div{

          width:200px;

          height:200px;

          border:2px red solid;

          position:absolute;

          left:100px;

          top:50px;

          }

          <div id="div1"></div>

          2,層模型--相對定位(相對于以前)

          如果想為元素設置層模型中的相對定位,需要設置position:relative(表示相對定位),它通過left、right、top、bottom屬性確定元素在正常文檔流中的偏移位置。相對定位完成的過程是首先按static(float)方式生成一個元素(并且元素像層一樣浮動了起來),然后相對于以前的位置移動,移動的方向和幅度由left、right、top、bottom屬性確定,偏移前的位置保留不動。

          如下代碼實現相對于以前位置向下移動50px,向右移動100px;

          #div1{

          width:200px;

          height:200px;

          border:2px red solid;

          position:relative;

          left:100px;

          top:50px;

          }

          <div id="div1"></div>

          3,層模型--固定定位(相對于網頁窗口)

          固定住某一坐標。

          fixed:表示固定定位,與absolute定位類型類似,但它的相對移動的坐標是視圖(屏幕內的網頁窗口)本身。由于視圖本身是固定的,它不會隨瀏覽器窗口的滾動條滾動而變化,除非你在屏幕中移動瀏覽器窗口的屏幕位置,或改變瀏覽器窗口的顯示大小,因此固定定位的元素會始終位于瀏覽器窗口內視圖的某個位置,不會受文檔流動影響,這與background-attachment:fixed?屬性功能相同。以下代碼可以實現相對于瀏覽器視圖向右移動100px,向下移動50px。并且拖動滾動條時位置固定不變。

          #div1{

          width:200px;

          height:200px;

          border:2px red solid;

          position:fixed;

          left:100px;

          top:50px;

          }

          10-5Relative與Absolute組合使用

          小伙伴們學習了12-6小節的相對定位的方法:使用position:absolute可以實現被設置元素相對于瀏覽器(body)設置定位以后,大家有沒有想過可不可以相對于其它元素進行定位呢?答案是肯定的,當然可以。使用position:relative來幫忙,但是必須遵守下面規范:

          1、參照定位的元素必須是相對定位元素的前輩元素:

          <div id="box1"><!--參照定位的元素-->

          <div id="box2">相對參照元素進行定位</div><!--相對定位元素-->

          </div>

          從上面代碼可以看出box1是box2的父元素(父元素當然也是前輩元素了)。

          2、參照定位的元素必須加入position:relative;

          #box1{

          width:200px;

          height:200px;

          position:relative;

          }

          3、定位元素加入position:absolute,便可以使用top、bottom、left、right來進行偏移定位了。

          #box2{

          position:absolute;

          top:20px;

          left:30px;

          }

          這樣box2就可以相對于父元素box1定位了(這里注意參照物就可以不是瀏覽器了,而可以自由設置了)。

          有任何關于編程的問題都可以私信我,我看到后會及時解答。

          編程小石頭,為分享干貨而生!據說,每個年輕上進,顏值又高的互聯網人都關注了編程小石頭。

          三部分 附錄(因為暫時不支持插入超鏈接所以部分內容無法顯示


          附錄一 DIV命名規范


          • 企業DIV使用頻率高的命名方法
          • 網頁內容類
          • 標題: title
          • 摘要: summary
          • 箭頭: arrow
          • 商標: label
          • 網站標志: logo
          • 轉角/圓角:corner
          • 橫幅廣告: banner
          • 子菜單: subMenu
          • 搜索: search
          • 搜索框: searchBox
          • 登錄: login
          • 登錄條:loginbar
          • 工具條: toolbar
          • 下拉: drop
          • 標簽頁: tab
          • 當前的: current
          • 列表: list
          • 滾動: scroll
          • 服務: service
          • 提示信息: msg
          • 熱點:hot
          • 新聞: news
          • 小技巧: tips
          • 下載: download
          • 欄目標題: title
          • 熱點: hot
          • 加入:joinus
          • 注冊: regsiter
          • 指南: guide
          • 友情鏈接: friendlink
          • 狀態: status
          • 版權: copyright
          • 按鈕: btn
          • 合作伙伴: partner
          • 投票: vote
          • 左右中:left right center


          • 注釋的寫法: /* Footer */ 內容區/* End Footer */
          • id的命名:
          • 頁面結構
          • 容器: container
          • 頁頭:header
          • 內容:content/container
          • 頁面主體:main
          • 頁尾:footer
          • 導航:nav
          • 側欄:sidebar
          • 欄目:column
          • 頁面外圍控制整體布局寬度:wrapper
          • 左右中:left right center

          • 導航
          • 導航:nav
          • 主導航:mainbav
          • 子導航:subnav
          • 頂導航:topnav
          • 邊導航:sidebar
          • 左導航:leftsidebar
          • 右導航:rightsidebar
          • 菜單:menu
          • 子菜單:submenu
          • 標題: title
          • 摘要: summary

          • 功能
          • 標志:logo
          • 廣告:banner
          • 登陸:login
          • 登錄條:loginbar
          • 注冊:regsiter
          • 搜索:search
          • 功能區:shop
          • 標題:title
          • 加入:joinus
          • 狀態:status
          • 按鈕:btn
          • 滾動:scroll
          • 標簽頁:tab
          • 文章列表:list
          • 提示信息:msg
          • 當前的:current
          • 小技巧:tips
          • 圖標: icon
          • 注釋:note
          • 指南:guild
          • 服務:service
          • 熱點:hot
          • 新聞:news
          • 下載:download
          • 投票:vote
          • 合作伙伴:partner
          • 友情鏈接:link
          • 版權:copyright

          • class的命名:
          • 顏色:使用顏色的名稱或者16進制代碼,如
          • .red { color: red; }
          • .f60 { color: #f60; }
          • .ff8600 { color: #ff8600; }
          • 字體大小,直接使用”font+字體大小”作為名稱,如
          • .font12px { font-size: 12px; }
          • .font9px {font-size: 9pt; }
          • 對齊樣式,使用對齊目標的英文名稱,如
          • .left { float:left; }
          • .bottom { float:bottom; }
          • 標題欄樣式,使用”類別+功能”的方式命名,如
          • .barnews { }
          • .barproduct { }

          • 注意事項::
          • 一律小寫;
          • 盡量用英文;
          • 不加中杠和下劃線;
          • 盡量不縮寫,除非一看就明白的單詞.


          • 推薦的 CSS 書寫順序:
          • 顯示屬性
          • display
          • list-style
          • position
          • float
          • clear
          • 自身屬性
          • width
          • height
          • margin
          • padding
          • border
          • background
          • 文本屬性
          • color
          • font
          • text-decoration
          • text-align
          • vertical-align
          • white-space
          • other text
          • content

          附錄二 CSS精靈


          • CSS精靈原理以及應用
          • CSS雪碧的基本原理是把你的網站上用到的一些圖片整合到一張單獨的圖片中,從而減少你的網站的HTTP請求數量。
          • 該圖片使用CSS background和background-position屬性渲染,這也就意味著你的標簽變得更加復雜了,圖片是在CSS中定義,而非<img>標簽。
          • 一個簡單的例子:
          • 一張圖片作出一個按鈕的三個狀態
          • 一個鏈接用CSS做成按鈕的樣式,我們可以使用同一張圖片,完成按鈕的三個狀態,a:link,a:hover,a:active <a class="button" href="#">鏈接</a>
          • 加入右側的圖片為:200px 65px的三個按鈕圖拼合而成的圖片button.png,從上到下一次為按鈕的普通、鼠標滑過、鼠標點擊的狀態。則可以使用CSS進行定義。
          a {
           display:block; 
           width:200px; 
           height:65px; 
           line-height:65px; /*定義狀態*/
           text-indent:-2015px; /*隱藏文字*/
           background-image:url(button.png); /*定義背景圖片*/
           background-position:0 0;
           /*定義鏈接的普通狀態,此時圖像顯示的是頂上的部分*/
          }
          a:hover {
           background-position:0 -66px;
           /*定義鏈接的滑過狀態,此時顯示的為中間部分,向下取負值*/
          }
          a:active {
           background-position:0 -132px; 
           /*定 義鏈接的普通狀態,此時顯示的是底部的部分,向下取負值*/
          }
          
          • 更多的CSS雪碧,圖片更復雜,背景定位更精確。可能會用到大量的數值
          • 如:background:url(nav.png) -180px 24pxno-repeat; 來達到更精確的定位
          • 優點:
          • 減少加載網頁圖片時對服務器的請求次數
          • 可以合并多數背景圖片和小圖標,方便在任何位置使用,這樣不同位置的請求只需要調用一個圖片,從而減少對服務器的請求次數,降低服務器壓力,同時提高了頁面的加載速度,節約服務器的流量。
          • 提高頁面的加載速度
          • sprite技術的其中一個好處是圖片的加載時間(在有許多 sprite 時,單張圖片的加載時間)。由所需圖片拼成的一張 GIF圖片的尺寸會明顯小于所有圖片拼合前的大小。單張的 GIF只有相關的一個色表,而單獨分割的每一張 GIF 都有自己的一個色表,這就增加了總體的大小。因此,單獨的一張 JPEG 或者 PNGsprite 在大小上非常可能比把一張圖分成多張得來的圖片總尺寸小。
          • 減少鼠標滑過的一些bug
          • IE6不會主動預加載鼠標滑過即a:hover中的背景圖片,所以,如果使用多張圖片,鼠標滑過會出現閃白的現象。使用CSS雪碧,由于一張圖片即可,所以不會出現這種現象。
          • 不足:
          • CSS雪碧的最大問題是內存使用
          • 影響瀏覽器的縮放功能
          • 拼圖維護比較麻煩
          • 使CSS的編寫變得困難
          • CSS 雪碧調用的圖片不能被打印
          • 錯誤得使用 Sprites 影響可訪問性

          附錄三 一些tips解決方案


          頁面優化實踐


          • 從下面的幾個方面可以進行頁面的優化:
          • 減少請求數
          • 圖片合并
          • CSS文件合并
          • 減少內聯樣式
          • 避免在 CSS中使用 import
          • 減少文件大小
          • 選擇適合的圖片格式
          • 圖片壓縮
          • CSS 值縮寫(Shorthand Property)
          • 文件壓縮
          • 頁面性能
          • 調整文件加載順序
          • 減少標簽數量
          • 調整選擇器長度
          • 盡量使用CSS 制作顯示表現
          • 增強代碼可讀性與可維護性
          • 規范化
          • 語義化
          • 模塊化

          寫DIV+CSS 的一些常識


          • 不要使用過小的圖片做背景平鋪
          • 這就是為何很多人都不用 1px 的原因,這才知曉。寬高 1px 的圖片平鋪出一個寬高 200px 的區域,需要 200200=40, 000 次,占用資源
          • 無邊框
          • 推薦的寫法是 border:none;,哈哈,我一直在用這個。 border:0; 只是定義邊框寬度為零,但邊框樣式、顏色還是會被瀏覽器解析,占用資源
          • 慎用 通配符
          • 所謂通配符,就是將CSS 中的所有標簽均初始化,不管用的不用的,過時的先進的,一視同仁,這樣,大大的占用資源。要有選擇的初始化標簽。
          • CSS的十六進制顏色代碼縮寫
          • 習慣了縮寫及小寫,這才知道,原來不是推薦的寫法,為的是減少解析所占用的資源。但同時會增加文件體積。孰優孰劣,有待仔細考證。
          • 樣式放頭上,腳本放腳下。不內嵌,只外鏈
          • 堅決不用 CSS表達式
          • 使用 引用樣式表,而不是通過@import 導入。
          • 一般來說,PNG比 GIF 要小,小得多。再者,GIF 中有多少顏色是被浪費的,很值得優化。
          • 千萬不要在 HTML中縮放圖片,一者不好看,二者占資源。
          • 正文字體最好用偶數
          • 12px、14px、16px,效果非常好。特例,15px。
          • block、ul、ol等上下留出至少一倍行距,左側至少兩倍行距,右側隨意。
          • 段落之間,至少要有一倍行距
          • 強行指定某些元素的 line-height,正文 1.6倍于文字大小,標題1.3倍。
          • 中文標點用全角
          • 英文夾雜在中文中,左右空格,半角。
          • 中文字體的粗體和斜體,遠離較好

          常用代碼片段


          • 雅虎工程師提供的CSS初始化示例代碼【僅供參考】
          • 可以在html頭文件中直接引用,從而避免瀏覽器的不兼容帶來的錯誤。
          body,
          div,
          dl,
          dt,
          dd,
          ul,
          ol,
          li,
          h1,
          h2,
          h3,
          h4,
          h5,
          h6,
          pre,
          code,
          form,
          fieldset,
          legend,
          input,
          button,
          textarea,
          p,
          blockquote,
          th,
          td { 
           margin:0; padding:0; 
          }
          body {
           background:#fff; 
           color:#555; 
           font-size:14px; 
           font-family: Verdana, Arial, Helvetica, sans-serif; 
          }
          td,
          th,
          caption { 
           font-size:14px;
          }
          h1, 
          h2, 
          h3, 
          h4, 
          h5, 
          h6 { 
           font-weight:normal; 
           font-size:100%; 
          }
          address, 
          caption,
          cite, 
          code, 
          dfn, 
          em, 
          strong,
          th, 
          var { 
           font-style:normal; 
           font-weight:normal;
          }
          a { 
           color:#555; 
           text-decoration:none; 
          }
          a:hover { 
           text-decoration:underline; 
          }
          img {
           border:none;
          }
          ol,ul,li { 
           list-style:none; 
          }
          input, 
          textarea, 
          select, 
          button { 
           font:14px Verdana,Helvetica,Arial,sans-serif; 
          }
          table { 
           border-collapse:collapse; 
          }
          html {
           overflow-y: scroll;
          } 
          .clearfix:after {
           content: "."; 
           display: block; 
           height:0; 
           clear:both; 
           visibility: hidden;
          }
          .clearfix { 
           *zoom:1; 
          }
          
          • mobile meta標簽
          <meta name=”viewport” content=”width=320,target-densitydpi=dpi_value,initial-scale=1, user-scalable=no”/>
          
          • 表格不被撐開
          table-layout: fixed; word-break: break-all;;border-collapse: collapse
          
          • 不設寬高居中
          <div id=”abc” style=”display:table;text-align:center;width:100%;height:100%;”>
           <span style=”background:#f00; display:table-cell; vertical-align:middle;”>
           <input type=”button” value=”item1″ />
           </span>
          </div>
          
          • 透明度的兼容代碼
          filter:alpha(opacity=50); /*1-100*/
          -moz-opacity:0.5; /*0-1.0*/
          -khtml-opacity:0.5; /*0-1.0*/
          opacity:0.5; /*0-1.0*/
          
          • 文字溢出點點省略
          white-space:nowrap;
          text-overflow:ellipsis;
          overflow:hidden;
          
          • 清除浮動的幾種方法
          • 方法一:投機取巧法 – 不推薦
          • 直接一個放到當作最后一個子標簽放到父標簽那兒,此方法屢試不爽,兼容性強
          • 方法二:overflow + zoom方法 –不推薦
          • .fix{overflow:hidden; zoom:1;}
          • 此方法優點在于代碼簡潔,涵蓋所有瀏覽器
          • 方法三:after + zoom方法 -推薦–此方法可以說是綜合起來最好的方法了
          • clearfix只應用在包含浮動子元素的父級元素上
          .fix{zoom:1;}
          .fix:after{
           display:block; 
           content:'clear'; 
           clear:both;
           line-height:0; 
           visibility:hidden;
          }
          
          • 更多代碼片段詳情
          • 實用的60個CSS代碼片段

          一些總結


          • 自動繼承屬性:
          • color
          • font
          • text-align
          • list-style
          • 非繼承屬性:
          • background
          • border
          • position
          • 具有破壞性的元素:
          • float
          • display:none;
          • position:absoblute/fixed/sticky;
          • 具有包裹性的元素:
          • display:inline-block/table-cell
          • position:absolute/fixed/sticky
          • overflow:hidden/scroll
          • 消除圖片底部間隙的方法
          • 圖片塊狀化-無基線對齊
          • img{display:block;}
          • 圖片底線對齊
          • img{vertical-align:bottom;}
          • 行高足夠小 - 基線位置上移
          • .box{line-height:0;}

          一些概念


          • BFC
          • BFC全稱”Block Formatting Context” 中文為“塊級格式化上下文”
          • 記住這么一句話:BFC元素特性表現原則就是,內部子元素再怎么翻江倒海,翻云覆雨都不會影響外部的元素
          • BFC就是頁面上的一個隔離的獨立容器,容器里面的子元素不會影響到外面的元素。反之也如此
          • 優雅降級(graceful degradation)
          • 一開始就構建完整的功能,然后再針對低版本瀏覽器進行兼容
          • 漸進增強 progressive enhancement:
          • 是在瀏覽器開啟JavaScript功能后,如果瀏覽器版本不支持某些 JavaScript 能力,我們解決這種問題的方式
          • 平穩退化
          • 是在瀏覽器沒有JavaScript功能,或沒有開啟JavaScript功能情況下,我們解決這種問題的方式;

          學習從來不是一個人的事情,要有個相互監督的伙伴,想要學習或交流前端問題的小伙伴可以私信“學習”小明加群獲取2019web前端最新入門資料,一起學習,一起成長!


          主站蜘蛛池模板: 无码福利一区二区三区| 国产一区在线电影| 日韩在线视频不卡一区二区三区| 午夜视频在线观看一区二区| 亚洲老妈激情一区二区三区| 亚洲熟妇无码一区二区三区| 久久国产高清一区二区三区| 国产精品一区二区电影| 在线欧美精品一区二区三区| 精品一区二区三区四区| 精品人妻少妇一区二区| 无码人妻精品一区二区三区99不卡 | 亚洲国产精品乱码一区二区| 国产精品被窝福利一区 | 亚洲AV无码国产一区二区三区| 国产一区二区三区久久| 手机看片一区二区| 中文字幕一区二区三区日韩精品| 女人和拘做受全程看视频日本综合a一区二区视频 | 久久久精品人妻一区二区三区四| 国产一区二区在线观看app| 高清一区二区三区| 亚洲一区二区三区国产精品| 波多野结衣中文字幕一区二区三区| 无码午夜人妻一区二区不卡视频 | 香蕉久久ac一区二区三区| 免费看无码自慰一区二区| 色婷婷香蕉在线一区二区| 国模无码视频一区二区三区| 国产精品成人99一区无码| 无码AⅤ精品一区二区三区| 精品人妻少妇一区二区三区在线 | 国产一区在线视频观看| 亚洲AV成人精品日韩一区18p| 好吊视频一区二区三区| 精品视频一区二区三区在线观看 | 久久久久一区二区三区| 老熟女五十路乱子交尾中出一区| 国产精品一级香蕉一区| 精品国产日韩一区三区| 久久99久久无码毛片一区二区|