CSS:高級技巧


學(xué)習(xí)目標(biāo)

  • 理解

    • 能說出元素顯示隱藏最常見的寫法
    • 能說出精靈圖產(chǎn)生的目的
    • 能說出去除圖片底側(cè)空白縫隙的方法
  • 應(yīng)用

    • 能寫出最常見的鼠標(biāo)樣式
    • 能使用精靈圖技術(shù)
    • 能用滑動門做導(dǎo)航欄案例

1. 元素的顯示與隱藏

  • 目的

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

  • 場景

    類似網(wǎng)站廣告罕偎,當(dāng)我們點擊關(guān)閉就不見了,但是我們重新刷新頁面,會重新出現(xiàn)!

1.1 display 顯示(重點)

  • display 設(shè)置或檢索對象是否及如何顯示拦赠。

    display: none /* 隱藏對象 */
    
    display:block /* 除了轉(zhuǎn)換為塊級元素之外,同時還有顯示元素的意思碑宴。*/
    
  • 特點: 隱藏之后梗肝,不再保留位置。

實際開發(fā)場景:

配合后面js做特效航背,比如下拉菜單喉悴,原先沒有,鼠標(biāo)經(jīng)過玖媚,顯示下拉菜單箕肃, 應(yīng)用極為廣泛

1.2 visibility 可見性(了解)

  • 設(shè)置或檢索是否顯示對象。

    visibility:visible ;  對象可視
    
    visibility:hidden;    對象隱藏
    
  • 特點: 隱藏之后最盅,繼續(xù)保留原有位置突雪。(停職留薪)

1.3 overflow 溢出(重點)

  • 檢索或設(shè)置當(dāng)對象的內(nèi)容超過其指定高度及寬度時如何管理內(nèi)容。
屬性值 描述
visible 不剪切內(nèi)容也不添加滾動條
hidden 不顯示超過對象尺寸的內(nèi)容涡贱,超出的部分隱藏掉
scroll 不管超出內(nèi)容否咏删,總是顯示滾動條
auto 超出自動顯示滾動條,不超出不顯示滾動條

實際開發(fā)場景:

  1. 清除浮動
  2. 隱藏超出內(nèi)容问词,隱藏掉, 不允許內(nèi)容超過父盒子督函。

1.4 顯示與隱藏總結(jié)

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

2. CSS 用戶界面樣式

  • 所謂的界面樣式薄湿, 就是更改一些用戶操作樣式叫倍,以便提高更好的用戶體驗偷卧。
    • 更改用戶的鼠標(biāo)樣式 (滾動條因為兼容性非常差,我們不研究))
    • 表單輪廓等吆倦。
    • 防止表單域拖拽

2.1 鼠標(biāo)樣式 cursor

設(shè)置或檢索在對象上移動的鼠標(biāo)指針采用何種系統(tǒng)預(yù)定義的光標(biāo)形狀听诸。

屬性值 描述
default 小白 默認(rèn)
pointer 小手
move 移動
text 文本
not-allowed 禁止

鼠標(biāo)放我身上查看效果哦:

<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 

但是我們都不關(guān)心可以設(shè)置多少,我們平時都是去掉的须妻。

最直接的寫法是:outline: 0; 或者 outline: none;

 <input type="text" style="outline: 0;" />

2.3 防止拖拽文本域 resize

實際開發(fā)中仔蝌,我們文本域右下角是不可以拖拽:

<textarea style="resize: none;"></textarea>

2.4 用戶界面樣式總結(jié)

屬性 用途 用途
鼠標(biāo)樣式 更改鼠標(biāo)樣式 cursor 樣式很多,重點記住 pointer
輪廓線 表單默認(rèn) outline outline 輪廓線璧南,我們一般直接去掉掌逛,border 是邊框,我們會經(jīng)常用
防止拖拽 主要針對文本域 resize 防止用戶隨意拖拽文本域司倚,造成頁面布局混亂豆混,我們 resize:none

3. vertical-align 垂直對齊

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

但是我們從來沒有講過有垂直居中的屬性皿伺。

vertical-align 垂直對齊,它只針對于行內(nèi)元素或者行內(nèi)塊元素

vertical-align : baseline |top |middle |bottom 

設(shè)置或檢索對象內(nèi)容的垂直對其方式盒粮。

  • 注意:

vertical-align 不影響塊級元素中的內(nèi)容對齊鸵鸥,它只針對于行內(nèi)元素或者行內(nèi)塊元素

特別是行內(nèi)塊元素丹皱,通常用來控制圖片/表單與文字的對齊妒穴。

3.1 圖片、表單和文字對齊

所以我們知道摊崭,我們可以通過 vertical-align 控制圖片和文字的垂直關(guān)系了讼油。 默認(rèn)的圖片會和文字基線對齊。

基線對齊
對齊模式

3.2 去除圖片底側(cè)空白縫隙

  • 原因:

    圖片或者表單等行內(nèi)塊元素呢簸,他的底線會和父級盒子的基線對齊矮台。

    就是圖片底側(cè)會有一個空白縫隙。

  • 解決的方法就是:

    • img vertical-align:middle | top| bottom 等等根时。 讓圖片不要和基線對齊瘦赫。

    • img 添加 display:block; 轉(zhuǎn)換為塊級元素就不會存在問題了。


4. 溢出的文字省略號顯示

4.1 white-space

  • white-space 設(shè)置或檢索對象內(nèi)文本顯示方式蛤迎。通常我們使用于強(qiáng)制一行顯示內(nèi)容
white-space: normal; /* 默認(rèn)處理方式 */

white-space: nowrap; /* 強(qiáng)制在同一行內(nèi)顯示所有文本确虱,直到文本結(jié)束或者遭遇 br 標(biāo)簽對象才換行。*/

4.2 text-overflow 文字溢出

  • 設(shè)置或檢索是否使用一個省略標(biāo)記(...)標(biāo)示對象內(nèi)文本的溢出
text-overflow: clip; /* 不顯示省略標(biāo)記(...)替裆,而是簡單的裁切 */

text-overflow: ellipsis; /* 當(dāng)對象內(nèi)文本溢出時顯示省略標(biāo)記(...)*/

注意

一定要首先強(qiáng)制一行內(nèi)顯示蝉娜,再次和 overflow 屬性搭配使用

4.3 總結(jié)三步曲

  /* 1. 先強(qiáng)制一行內(nèi)顯示文本 */
  white-space: nowrap;
  /* 2. 超出的部分隱藏 */
  overflow: hidden;
  /* 3. 文字用省略號替代超出的部分 */
  text-overflow: ellipsis;

5. CSS 精靈技術(shù)(sprite)重點

5.1 為什么需要精靈技術(shù)

圖所示為網(wǎng)頁的請求原理圖唱较,當(dāng)用戶訪問一個網(wǎng)站時扎唾,需要向服務(wù)器發(fā)送請求召川,網(wǎng)頁上的每張圖像都要經(jīng)過一次請求才能展現(xiàn)給用戶。

然而胸遇,一個網(wǎng)頁中往往會應(yīng)用很多小的背景圖像作為修飾荧呐,當(dāng)網(wǎng)頁中的圖像過多時,服務(wù)器就會頻繁地接受和發(fā)送請求纸镊,這將大大降低頁面的加載速度倍阐。

為什么需要精靈技術(shù):

為了有效地減少服務(wù)器接受和發(fā)送請求的次數(shù),提高頁面的加載速度逗威。

出現(xiàn)了 CSS 精靈技術(shù)(也稱 CSS Sprites峰搪、CSS 雪碧)。

5.2 精靈技術(shù)講解

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

這樣鞠柄,當(dāng)用戶訪問該頁面時,只需向服務(wù)發(fā)送一次請求嫉柴,網(wǎng)頁中的背景圖像即可全部展示出來厌杜。

我們需要使用 CSS

  • background-imagebackground-repeat计螺、background-position 屬性進(jìn)行背景定位夯尽,其中最關(guān)鍵的是使用 background-position 屬性精確地定位。

5.3 精靈技術(shù)使用的核心總結(jié)

首先我們知道登馒,css 精靈技術(shù)主要針對于背景圖片匙握,插入的圖片 img 是不需要這個技術(shù)的。

  1. 精確測量谊娇,每個小背景圖片的大小和位置肺孤。
  2. 給盒子指定小背景圖片時,背景定位基本都是負(fù)值济欢。

5.4 制作精靈圖(了解)

CSS 精靈其實是將網(wǎng)頁中的一些背景圖像整合到一張大圖中(精靈圖)赠堵,那我們要做的,就是把小圖拼合成一張大圖法褥。

大部分情況下茫叭,精靈圖都是網(wǎng)頁美工做。

我們精靈圖上放的都是小的裝飾性質(zhì)的背景圖片半等。 插入圖片不能往上放揍愁。
我們可以橫向擺放也可以縱向擺放呐萨,但是每個圖片之間留有適當(dāng)?shù)目障丁?br> 在我們精靈圖的最低端,留一片空隙莽囤,方便我們以后添加其他精靈圖谬擦。

結(jié)束語:小公司,背景圖片很少的情況朽缎,沒有必要使用精靈技術(shù)惨远,維護(hù)成本太高。如果是背景圖片比較多话肖,可以建議使用精靈技術(shù)北秽。


6. 滑動門

先來體會下現(xiàn)實中的滑動門,或者你可以叫做推拉門:

滑動門

滑動門出現(xiàn)的背景

制作網(wǎng)頁時,為了美觀最筒,常常需要為網(wǎng)頁元素設(shè)置特殊形狀的背景贺氓,比如微信導(dǎo)航欄,有凸起和凹下去的感覺床蜘,最大的問題是里面的字?jǐn)?shù)不一樣多辙培,咋辦?

為了使各種特殊形狀的背景能夠自適應(yīng)元素中文本內(nèi)容的多少悄泥,出現(xiàn)了 CSS 滑動門技術(shù)虏冻。它從新的角度構(gòu)建頁面,使各種特殊形狀的背景能夠自由拉伸滑動弹囚,以適應(yīng)元素內(nèi)部的文本內(nèi)容厨相,可用性更強(qiáng)。 最常見于各種導(dǎo)航欄的滑動門鸥鹉。

http://weixin.qq.com/

核心技術(shù)

核心技術(shù)就是利用 CSS 精靈(主要是背景位置)和 盒子 padding 撐開寬度, 以便能適應(yīng)不同字?jǐn)?shù)的導(dǎo)航欄蛮穿。

一般的經(jīng)典布局都是這樣的:

<li>
  <a href="#">
    <span>導(dǎo)航欄內(nèi)容</span>
  </a>
</li>

css 樣式

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

總結(jié):

  1. a 設(shè)置背景左側(cè),padding撐開合適寬度毁渗。
  2. span 設(shè)置背景右側(cè)践磅,padding 撐開合適寬度,剩下由文字繼續(xù)撐開寬度灸异。
  3. 之所以 a 包含 span 就是因為整個導(dǎo)航都是可以點擊的府适。

7. 拓展

7.1 margin 負(fù)值之美

1). 負(fù)邊距+定位:水平垂直居中

咱們前面講過, 一個絕對定位的盒子肺樟, 利用 父級盒子的 50%檐春, 然后 往左(上)走 自己寬度的一半 ,可以實現(xiàn)盒子水平垂直居中么伯。

2). 壓住盒子相鄰邊框

7.2 CSS 三角形之美

div {
    width: 0; 
    height: 0;
    line-height: 0;
    font-size: 0;
    border-top: 10px solid red;
    border-right: 10px solid green;
    border-bottom: 10px solid blue;
    border-left: 10px solid #000; 
}

一張圖疟暖, 你就知道 css 三角是怎么來的了,做法如下:

  1. 我們用 css 邊框可以模擬三角效果
  2. 寬度高度為 0
  3. 我們 4 個邊框都要寫,只保留需要的邊框顏色俐巴,其余的不能省略骨望,都改為 transparent 透明就好了
  4. 為了照顧兼容性 低版本的瀏覽器,加上 font-size: 0; line-height: 0;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末欣舵,一起剝皮案震驚了整個濱河市擎鸠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌邻遏,老刑警劉巖糠亩,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異准验,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)廷没,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門糊饱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人颠黎,你說我怎么就攤上這事另锋。” “怎么了狭归?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵夭坪,是天一觀的道長。 經(jīng)常有香客問我过椎,道長室梅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任疚宇,我火速辦了婚禮亡鼠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘敷待。我一直安慰自己间涵,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布榜揖。 她就那樣靜靜地躺著勾哩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪举哟。 梳的紋絲不亂的頭發(fā)上思劳,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機(jī)與錄音炎滞,去河邊找鬼敢艰。 笑死,一個胖子當(dāng)著我的面吹牛册赛,可吹牛的內(nèi)容都是我干的钠导。 我是一名探鬼主播震嫉,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼牡属!你這毒婦竟也來了票堵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤逮栅,失蹤者是張志新(化名)和其女友劉穎悴势,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體措伐,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡特纤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了侥加。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捧存。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖担败,靈堂內(nèi)的尸體忽然破棺而出昔穴,到底是詐尸還是另有隱情,我是刑警寧澤提前,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布吗货,位于F島的核電站,受9級特大地震影響狈网,放射性物質(zhì)發(fā)生泄漏宙搬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一孙援、第九天 我趴在偏房一處隱蔽的房頂上張望害淤。 院中可真熱鬧,春花似錦拓售、人聲如沸窥摄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽崭放。三九已至,卻和暖如春鸽凶,著一層夾襖步出監(jiān)牢的瞬間币砂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工玻侥, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留决摧,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像掌桩,于是被迫代替她去往敵國和親边锁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

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

  • 1.1 display 顯示(重點) display 設(shè)置或檢索對象是否及如何顯示波岛。display: none 隱...
    王玉偉的偉閱讀 114評論 0 0
  • 1.CSS基本概念 1.1 CSS的定義 CSS(Cascading Style Sheets)層疊樣式表茅坛,主要用...
    寥寥十一閱讀 1,836評論 0 6
  • CSS 指層疊樣式表(Cascading Style Sheets),是一種用來為結(jié)構(gòu)化文檔(如 HTML 文檔或...
    神齊閱讀 2,093評論 0 14
  • CSS用戶界面樣式 所謂的界面樣式则拷, 就是更改一些用戶操作樣式贡蓖, 比如 更改用戶的鼠標(biāo)樣式, 表單輪廓等煌茬。但是比如...
    王玉偉的偉閱讀 91評論 0 1
  • 減肥時究竟怎么吃宣旱?是困擾很多人的問題 小錦詢問了許多減肥達(dá)人仅父,他們總結(jié)出運動減肥時常吃10種水果,瘦到停不下來浑吟! ...
    上錦生活閱讀 196評論 0 1