CSS的inherit與auto使用分析

2022-03-30 19:22:48 字數 2562 閱讀 6477

本文**:

通常是乙個很小的數值,經過層層放大歪曲後,整個布局就走形了。css是一門很簡單的語言,易學易用,但也最容易出垃圾**。這是沒有深入研究這門語言所致。本人認為,css是由以下三大塊構成的:預設值,繼承系統與加權系統。預設值,也就是瀏覽器在使用者沒有設定屬性的情況下,預設指定的屬性。css框架基本都有乙個叫reset.css 的檔案,就是對其進行重設,消除各瀏覽器的差異的。繼承系統就是下面要重點討論的東西。加權系統,也就是優先順序的問題,不在本文的討論範疇,不說了。另,這三個東西都面臨著ie bug的侵襲,危害甚大,自己另行了斷吧(笑)。 

在css中,許多屬性都是可以繼承的,如某個段落的字型設定為白色,其元素的字型不用設定或設定為inhert,它就是白色。這些屬性被稱之為inherited property,它會從父元素獲取對應屬性的經過計算與轉換的值(computed value),如果父元素和它的情形一樣,它就繼續往上找,最後沒有就使用瀏覽器的預設值。 

下面是 inherited properties的一覽表: 

border-collapse 

border-spacing 

caption-side 

color 

cursor 

direction 

empty-cells 

font 

font-family 

font-stretch 

font-size 

font-size-adjust 

font-style 

font-variant 

font-weight 

letter-spacing 

line-height 

list-style 

opacity 

list-style-image 

list-style-type 

quotes 

text-align 

text-indent 

text-transform 

white-space 

word-spacing 

我們給父元素設定了字型的樣式,沒有設定子元素的,當取出子元素的時,發現其值轉換為rgb格式(當然ie除外啦!) 

不過,在ie7及其之前的版本,是不支援用inhert來設定direction與visibility以外的樣式屬性。具體可參見這裡與這裡 

在ie8中,原本是inherited property的text-align在th中失效。 

ruby

rouvre

by司徒正美

table, tr, td, th  

table  

td, th  

本來th應該會從table中繼承文字向右對齊的設定,但失效了……

解決ie8這個弱智bug也很容易,就是顯式地設定inhert。 

table, tr, td, th  

table  

td, th  

th 此外還有一些css屬性是不能繼承的,最經典如border系列。它被稱之為non-inherited property,如果我們不為它設定,我們只能取得瀏覽器的預設值,預設值在火狐中被稱之為 initial value 。乙個相關的好訊息是,預設值在火狐也可以指定了,這樣我們就不用reset樣式了! 

下面是non-inherited property的一覽表: 

background 

border 

bottom 

clear 

display 

float 

height 

left 

margin 

outline 

overflow 

padding 

position 

right 

top 

visibility 

width 

z-index

我們給父元素設定了背景顏色,沒有設定子元素的,這時會取得瀏覽器的預設值transparent(w3c那一方好像只要是顏色都會轉換為rgb格式,多出的a為alpha) 

接著我們來看auto,這是乙個含糊不清但是有長度概念的值。應用於以下屬性: 

overflow 

cursor 

height 

width 

marker-offset 

margin 

margin-* (left|bottom|top|right|start|end) 

top 

bottom 

left 

right 

table-layout 

z-index 

-moz-column-width 

languages 

在塊級元素的可度量的屬性中(如width,height),如果不設定值,其預設值是auto,但它很容易會被父級元素的值覆蓋,也就是隱式地成為了inhert了。在內聯元素中,由於不具備盒子模型,如果不設定,就算是火狐也原本奉還它,這對於精確計算元素的寬度與高度是非常不利的。auto還有對稱性,這個在居中布局我們常常運用到它。在非度量的屬性中,如overflow,就要具體情況具體分析了。

CSS 樣式繼承 inherit 屬性

在css中,子元素會繼承了父元素的一些樣式屬性。能夠繼承到子類的樣式屬性非常有限,僅是文字 字型 顏色.子類如果還想繼承父類的屬性,可以通過inherit強制繼承。通過編輯器做了個合同管理的系統,要求就是上傳的合同展示在頁面上必須幾乎相同 並且需要在瀏覽器上能填寫合同,由於編輯器用的一般是和標籤 為...

CSS中inherit指定繼承的使用方法

from css中的每個屬性都有乙個特定值 inherit 其含義是指定繼承父元素的相應屬性,使用inherit一方面在 上能地表明要繼承于父元素的樣式屬性,另一方面也使子元素繼承了那些不會被自動繼承的屬性 假如設計者要使id為menu的div元素有2px的黑色邊框,且具有5px的填充,同時想讓其子...

對height 100 和inherit的總結

部落格主頁 正文 之前看到一篇相關的文章 在看這個文章的demo時發現一些問題,下面來總結歸納一下 如下 效果大致是這個樣子 其中,左邊的是height 100 右邊的是height inherit。下面我們進行一下改動 其實就是給兩個子元素加上絕對定位。效果如圖 我們發現,100 的元素的高度計算...