搜尋
首頁web前端css教學關於CSS中細節的詳解

關於CSS中細節的詳解

Oct 31, 2017 am 10:28 AM
css詳解

  這樣寫是沒問題,直到有個子元素需要設定一個不同的字體大小,比如,在這樣的標籤當中: 

The cat sat on the mat.

  如果你要設定span的字體大小為1.2em ,你需要做什麼?拿出計算器,算1.2除以1.4是多少,結果如下: 

p span { font-size: 0.85714em; }

  這個問題不限於em。如果用百分比來建立響應式的串流佈局網站,而百分比是與容器相關的,所以,如果要定義一個元素為它的容器的40%,它的高是75%,寬則需要設定為53.33333% 。 
  很明顯,這很不方便。 
根相關的長度單位 
  為了修正字體大小定義的問題,現在可以使用單位rem(root em)。 rem同樣是相對單位,但是它所對應的是固定的基本值,這個固定的基本值也就是文檔的根元素的字體大小(在HTML文件中,就是html元素)。假設和上個例子一樣,同樣設定10px的字體大小為根元素的大小,那麼CSS這樣寫就OK了: 

p { font-size: 1.4rem; } p span { font-size: 1.2rem; }

  這兩個CSS規則都是相對於根元素的字體大小,這樣的程式碼更優雅簡單,特別是在設定簡單的數值如10px或12px的時候。這樣和使用px值很相似,不同點在於rem是可擴展的。 
  在整篇文章介紹的特性中,rem特性相對來說是相容性比較好,高級瀏覽器都能支持,包括IE9在內,除了Opera Mobile。 
視窗相關的長度單位 
  覺得rem單位很酷吧,如果還有另外一組單位能解決百分比的問題,那就更酷了。它和rem的道理相似,不同點在於,它相對的不是文檔的根元素,而是相對於設備視窗本身的大小。 
  這兩個單位就是vh和vw,也就是相對於視窗大小的高和寬。每個單位在前面加上數字,代表的是多少個百分比。 

p { height: 50vh; }

  在上面的例子,高度設定為視窗高度的一半。 1vh相當於一個百分比的視窗高度,所以50vh即是50%的視窗高度。 
  如果視窗大小改變了,那麼這個值也隨之改變。這相對百分比來說,好處是不需要擔心父容器,不管它的父容器如何,10vw的元素會一直是10%的視窗大小。 
  相應地,有vmin單位,相當於vh或vw的最小值,最近還宣布有vmax單位會被加到規範文檔裡面(雖然在這篇文章發布的時候還沒有)。 
  現在支援這個功能的有IE9+、Chrome和Safari 6。 
運算式的值 
  如果你在做響應式的串流佈局網站,常常會遇到混合單位的問題-用百分比設定柵格,但是又用固定像素寬度設定margin。如: 

p { margin: 0 20px; width: 33%;}

  如果佈局只用到padding和border,你可以使用box-sizing來解決,但是對於margin就無能為力了。更好、更靈活的方法是使用calc()函數,設定不同單位之間的數學方程式,如: 

p { margin: 0 20px; width: calc(33% - 40px);}

  它不僅可以用來計算寬,還可以用來計算長度— —如果有必要,還可以在calc()裡面再加上calc()。 
  這個特性IE9+和Firefox都支持,Firefox需要加上 -moz- 前綴(在版本16或17可能不用加前綴),Chrome和Safari也支持,但需要加上 -webkit- 前綴。然而,行動Webkit還不支援。 
載入字體庫的部分字體 
  優越的效能往往很重要,尤其是市場上各種各樣的行動裝置——導致連接速度的差異和不確定性——更加體現了這個重要性。其中一個加快頁面載入速度的方法,就是減少外部檔案個數,@font-face的一個新屬性unicode-range就是為此而生。 
  這個屬性就是unicode-range(編碼範圍),代表的是編碼字型的參數範圍。在載入外部文件的時候,只有那些被使用的字體才會被加載,而不是整套字體庫。下面的程式碼示範如何從foo.ttf字體庫中只載入三個字體: 

@font-face {font-family: foo;src: url(‘foo.ttf’);unicode-range: U+31-33;}

  这点对于使用字体图标的页面尤其有用。我测试过,使用unicode-range,加载字体文件的时间平均减少了0.85秒,也不是小数目了。当然,你可能不会这么想。 
  这个属性,目前可以在IE9+、Webkit浏览器(如Chrome和Safari)中运行。 
新的伪类 
  单位和值都应该好好利用,但是,让我更兴奋的是选择器和伪类。完善的选择器模式,即使只有少数浏览器支持,都让我兴奋不已。引用乔布斯的话:你要把栅栏的里面修得和外面一样漂亮,即使别人看不到里面——因为你自己知道。 
  我第一次使用:nth-of-type()的时候,简直是一次突破,就像我冲出了思想的桎梏。好吧,我有些夸张了。但有些新的CSS伪类,确实值得狂热一番。 
否定伪类 
  你大概不知道 :not() 伪类的好,除非你亲自实践一番。带有参数的 :not() 其实就是普通的选择器——不是复合选择器。一组元素加上选择器 :not(),表示满足这个参数的元素会被排除出去。听起来有些复杂吧?但是实际上非常简单。 
  假设:要对项目列表的奇数行进行选择,但是最后一行除外。如果是以前,需要这样写: 

li { color: #00F; } li:nth-child(odd) { color: #F00; } li:last-child { color: #00F; }

  现在,通过设定:last-child作为否定伪类的参数,就可以把最后一个元素排除,这样少了一行代码,从而更加的简洁和易维护。 

li { color: #00F; } li:nth-child(odd):not(:last-child) { color: #F00; }

  否定伪类看起来并没有什么惊人之处,你可以不用它,但是它还是挺实用的。我曾经把它用在基于Webkit的项目当中,优势还是挺明显的。说实话,它是我最喜欢的伪类之一。 
  是的,我有最喜欢的伪类。 
  在本文提到的特性当中,否定伪类是兼容性最好的,它被IE9+和高级浏览器支持(不需要加浏览器产商前缀)。如果你熟悉jQuery,你可能习惯用它——版本1.0开始就有了,以及相似的not()方法。 
“适用于”伪类 
  :matches() 伪类可以用普通的选择器、复合选择器、逗号隔开的列表或任何的选择器组合作为参数。太棒了!但是,它能做什么? 
  :matches() 伪类最强大的地方就是聚合多行选择器。例如,要选择父容器里面其中几个不同子容器里面的p元素,在这之前,代码或许会写成这样: 

.home header p,.home footer p,.home aside p {color: #F00;}

  有了:matches()伪类,就可以把共同点提取出来,缩减代码量。该例子里面,选择器的共同点是以home为起点、以p为终点,所以可以用:matches()把中间的所有元素集合起来。是不是有些困惑?看看代码就明白了: 

.home :matches(header,footer,aside) p { color: #F00; }

  这其实是CSS4的一部分(确切地说,是CSS选择器第四等级),这份规范文档还提到将会有类似的语法(以逗号隔开的复合选择器)应用于:not()伪类。兴奋ing! 
  目前,:matches()可以在Chrome和Safari浏览器中运行,但是要加上前缀-webkit-,Firefox也支持,但是要按照旧的写法:any(),同时要加上-moz-前缀。 

以上是關於CSS中細節的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
每周平台新聞:Galaxy Store的Web應用程序,Tappable Stories,CSS Subgrid每周平台新聞:Galaxy Store的Web應用程序,Tappable Stories,CSS SubgridApr 14, 2025 am 11:20 AM

在本週的綜述中:Firefox獲得了類似鎖匠的力量,三星的Galaxy Store開始支持Progressive Web Apps,CSS Subgrid正在Firefox發貨

每周平台新聞:Internet Explorer模式,搜索控制台中的速度報告,限制通知提示每周平台新聞:Internet Explorer模式,搜索控制台中的速度報告,限制通知提示Apr 14, 2025 am 11:15 AM

在本週的綜述中:Internet Explorer進入Edge,Google搜索控制台吹捧新的速度報告,而Firefox給出了Facebook' s Notification

CSS自定義屬性的範圍的功率(和樂趣)CSS自定義屬性的範圍的功率(和樂趣)Apr 14, 2025 am 11:11 AM

您可能至少已經對CSS變量有點熟悉了。如果沒有,這是兩秒鐘的概述:它們真的稱為自定義屬性

我們是程序員我們是程序員Apr 14, 2025 am 11:04 AM

構建網站正在編程。編寫HTML和CSS正在編程。我是程序員,如果您在這裡閱讀CSS-Tricks,那麼您很有可能是您

您如何從網站上刪除未使用的CSS?您如何從網站上刪除未使用的CSS?Apr 14, 2025 am 10:59 AM

在這裡,我想預先知道的是:這是一個很難的問題。如果您降落在這裡,因為您希望指向您可以運行的工具

圖片中的圖片網絡API簡介圖片中的圖片網絡API簡介Apr 14, 2025 am 10:57 AM

圖片中的圖片在2016年發行了Macos Sierra,在Safari瀏覽器中首次出現在網絡上。這使用戶可以彈出

使用Gatsby組織和準備圖像以使圖像模糊效果的方法使用Gatsby組織和準備圖像以使圖像模糊效果的方法Apr 14, 2025 am 10:56 AM

蓋茨比(Gatsby)進行了出色的處理和處理圖像。例如,它可以幫助您節省圖像優化的時間,因為您不必手動

哦,嘿,填充百分比基於父元素的寬度哦,嘿,填充百分比基於父元素的寬度Apr 14, 2025 am 10:55 AM

今天,我學到了一些有關基於百分比的(%)填充的知識,我腦海中完全錯了!我一直認為百分比填充是基於

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。