看《css知多少》的一些總結

2022-01-17 18:46:32 字數 3482 閱讀 9778

1、有些瀏覽器不完全支援css3,現在可以用哪個工具去檢測瀏覽器是否支援,以及支援哪些項?

modernizr:檢測瀏覽器對html5和css3特性(至於modernizr的介紹,可以看我另外一篇博文html5系列四(特徵檢測、modernizr.js的相關介紹))

2、常用的html標籤,它們的display屬性一般預設為block和inline。有哪些常用標籤的display不是block和inline,這些標籤顯示的時候和block/inline有何區別?

具體display屬性值有如下:

inline可以理解為是流,這是沒有大小和形狀的,它的寬度取決於父容器的寬度。針對inline的標籤,你設定寬度和高度是無效的。

如何把inline元素轉換為塊級元素

對inline元素設定display:block

對inline元素設定float

對inline元素設定position:absolute/fixed

簡單一點的說,一般的文字、它們是inline的,div是block的,而一般的一般的button、input是inline-block的。

所以說inline-block的特點可以總結為:外部看來是「流」,但是自身確實乙個「塊」。

3、乙個**的第一行顯示紅色背景,最後一行顯示藍色背景,中間行使用灰色/白色間隔的背景,如何寫?

利用結構化偽類,就會如下這樣寫

這裡插一句,如果要在各個選單之間加下劃線,如下圖所示效果

一般人都會用

ul li

ul li:last-child

但是事實上還有一種更加方便的方式(如果你對結構化偽類很了解的話)

ul li + li

這裡補充說明一下如下兩個結構化偽類:

選擇某乙個元素緊挨著的兄弟節點,例如 li + li

選擇某乙個元素的所有同胞節點,例如 span ~ a

4、偽元素 ::before、::after 是否用過?都是在哪些地方用的?

清除浮動、為乙個div增加乙個「三角」

事實上很多圖示一般都很小(它本身就應該是很小的),但是我需要在這個小圖示上增加事件繫結,那在手機端就更加糟糕了,使用者根本點選不到,那怎麼辦,就可以利用before after可以來增加容器的大小

這裡還提一句就是css中屬性content只會在before after裡面起作用,在其它屬性中都沒有效果。所以有時候不要給自己的**寫一些無用的屬性,增加瀏覽器的解析時間。

5、css——層疊樣式表,其中的「層疊」該如何理解?

這個沒有什麼好說的,事實上看到很多博文上都是說id代表100,class代表10,element代表1,我表示對這種解釋不太贊同,如果想真正了解的話可以去看一下《css權威指南》,也可以去看一下css--結構和層疊

6、盒子模型的width其實是指內容的寬度,不包括padding、border、margin。其實這樣對我們做css布局是很不利的,有什麼方法可以讓width是全部的寬度?

box-sizing

其它還有挺多問題,我一一總結

瀏覽器是怎麼工作的?

瀏覽器載入了html之後只為一件東西——dom樹,瀏覽器把html變為dom樹結構,就完成了對html的結構化。

瀏覽器將載入的html變為dom樹,但是此時沒有任何顯示樣式。所以顯示的樣式,都是css定義的,瀏覽器只會通過css來渲染檢視樣式

至於後來對檢視的渲染,p是block、br換行,那是整合了css之後的事情。而瀏覽器整合css又是另乙個路線,和解析html是分開的。

html的解析是一條線,css的解析是一條線,兩者會在某一點結合,形成最終的檢視。

如果我們以css為重點看,從上圖中我們可以總結出學習css的三個突破點。

瀏覽器如何載入和解析css——css的5個**;

css和html如何結合起來——選擇器;

css能控制那些顯示方式——盒子模式、浮動、定位、背景、字型等;

事實上如果我們從如上三個方面來了解css的話,思路就豁然開朗了。利用原文博主的一句話就是說借助別人的力量來提高自己,站在巨人的肩膀上才能看得更遠。

css樣式**

我之前一直到《css權威指南》裡面說的使用者**樣式一詞很不了解,看了博主的文章後才明白,在一些瀏覽器是可以自定義字型大小和字型的(使用者在這裡設定了字型和字型大小之後,它們會覆蓋掉瀏覽器預設的樣式)。

display:table具有包裹性,除了display:table之外,float及position:absolute也都具有包裹性,什麼叫包裹性,簡單一點的說就是寬度會根據內容而定,包裹的特性其實主要有三個表現:收縮、堅挺、隔絕。

在沒有css3的column-count之前,大家都習慣用display:table-cell來實現多列布局,但是眾所周知table-cell ie6、7不相容。

縱向margin是會重疊

用div畫下三角

div

div設定了float之後,其寬度會自動調整為包裹住內容寬度,而不是撐滿整個父容器。

被設定了float的元素會脫離文件流。

「清空格」這一特性的根本原因是由於float會導致節點脫離文件流結構。它都不屬於文件流結構了,那麼它身邊的什麼換行、空格就都和它沒關係的,它就盡量的往一邊去靠攏,能靠多近就靠多近,這就是清空格的本質。事實上這些空格並沒有真正消失,只是位於float元素的後面罷了。 

為父元素新增overflow:hidden

浮動父元素

clear:both

相容各瀏覽器的clear both方法

.clearfix:after

.clearfix

看王朋福的css知多少系列的總結

CSS一些總結

1.display block 塊元素,預設寬度為100 可以設定元素的寬高,預設佔滿一行。塊元素包括div,h1 h6,form,table,ul,ol等 inline 行內元素,預設寬度為內容的寬度,width和height對inline元素無效,margin top和bottom對行內元素無效...

關於CSS學習的一些總結

接觸css有很長的一段時間了,我對它的感情每次都有些不同,簡單 費解 神奇 好玩 css就是這麼一門不正交的語言,你無需一步步從頭學起,它就像樂高積木,學會了一點就能用上一點。儘管css不正交,屬性也比較多不好記,但沒關係,你只要記住用的最多的幾種方法足矣應付業務中大部分需求 除了以上用的最多的幾種...

關於CSS定位的一些總結

所有主流瀏覽器都支援 position 屬性。position屬性規定元素的定位型別,影響元素框生成的方式。值描述 absolute 生成絕對定位的元素,相對於 static 定位以外的第乙個父元素進行定位,如果不存在這樣的父元素,則依據最初的包含快。根據使用者 的不同,最初的包含塊可能是畫布或 h...