css有兩大特性,即繼承性和層疊性。css
面嚮對象語言都會存在繼承的概念,在面嚮對象語言中,繼承的特色:繼承了父類的屬性和方法。那麼咱們如今主要研究css,css就是在設置屬性的。不會牽扯到方法的層面。html
繼承:給父級設置一些屬性,子級繼承了父級的該屬性,這就是咱們的css中的繼承。前端
記住:有一些屬性是能夠繼承下來 : color 、 font-*、 text-*、line-* 。主要是文本級的標籤元素。瀏覽器
可是像一些盒子元素屬性,定位的元素(浮動,絕對定位,固定定位)不能繼承。ide
例子和層疊性一塊兒體現。佈局
層疊性: 權重大的標籤覆蓋掉了權重小的標籤,說白了 ,就是被幹掉了字體
權重: 誰的權重大,瀏覽器就會顯示誰的屬性spa
數:id的數量 class的數量 標籤的數量,順序不能亂設計
對上面兩個屬性進行舉例:code
首先前端代碼爲:
<div class="mydiv1"> 這是div1的內容 <div class="mydiv2"> 這是div1的內容 <p class="myp">這是p的內容</p> <p id = "p2">這是第二個p的內容</p> </div> </div>
而後是css代碼爲:
/*修飾div標籤的*/ div{ color: red; } /*修飾class=mydiv2*/ [class=mydiv2]{ background: #00BFFF; } /*修飾p標籤的*/ p{ text-decoration: underline; } /*修飾id=p2的*/ [id=p2]{ background: red; color: white; }
效果爲:
效果分析:
首先表現前三行字體紅色體現了繼承性,只要在div下都繼承了div的紅色字體,class=mydiv2藍色背景第二層div下的第一個p標籤也繼承了藍色背景,而第二個p標籤既沒有繼承紅色字體也沒有繼承藍色標籤是由於層疊性,而id權重比其餘的大,全部呈現的是id的修飾效果:紅色背景和白色字體。
text-align 屬性規定元素中的文本的水平對齊方式。
屬性值:
center 把文本排列到中間
left 把文本排列到左邊
right 把文本排列到右邊
justify 實現兩端對齊文本效果
設置color屬性便可。
text-indent 屬性規定元素首行縮進的距離。
p {
text-indent: 32px; #首行縮進兩個字符,頁面上的默認大小爲16px
}
text-decoration屬性規定文本修飾的樣式
屬性值:
none 默認
underline 下劃線
overline 定義文本上的一條線
line-through 定義穿過文本下的一條線
inherit 繼承父元素的text-decoration屬性的值
line-height就是行高的意思,指的就是一行的高度。
針對單行文本垂直居中
公式:行高的高度等於盒子的高度,可使當行文本垂直居中,注意只適用單行文本。
針對多行文本垂直居中
行高的高度不能小於字體的大小,否則上下字之間會緊挨一塊兒。
第一步,一個寬度300*300的盒子,看盒子中一共顯示了幾行文字,假如是5行,再看一下行高,若是行高是line-height:30px; 那麼就知道行高*5=150px
第二步,讓(盒子的高度-150px)/2=75;那麼設置盒子的padding-top:75px;同時保證盒子的高度爲300px,那麼高度改成225px;
text-shadow:水平方向偏移量 垂直方向偏移量 模糊度 陰影顏色;
text-shadow:3px 3px 6px #FF0000;
text-overflow:ellipsis
案例:文字超出部分顯示...
例:
html內容:
<div> <p>前端讓我快樂</p> <p>前端讓我快樂</p> <p>前端讓我快樂</p> </div>
css內容:
div { width: 200px; height: 200px; border: 1px solid red; } div p { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
1.border-width 寬度
2.border-style 樣式
3.border-color 顏色
#i1 {
border-width: 2px;
border-style: solid;
border-color: red;
}
一般使用簡寫方式:
#i1 {
border: 2px solid red;
}
邊框樣式:
font-size表示設置字體大小,若是設置成inherit表示繼承父元素的字體大小值。
font-weight表示設置字體的粗細
屬性值:
none(默認值,標準粗細)
bold(粗體)
border(更粗)
lighter(更細)
100~900(設置具體粗細,400等同於normal,而700等同於bold)
inherit(繼承父元素字體的粗細值)
如:font-family: "Microsoft Yahei", "微軟雅黑", "Arial", sans-serif
若是瀏覽器不支持第一個字體,則會嘗試下一個。瀏覽器會使用它可識別的第一個值。若是都不支持則顯示宋體。
定義:vertical-align 屬性設置元素的垂直對齊方式。
該屬性定義行內元素的基線相對於該元素所在行的基線的垂直對齊
經常使用屬性值:
baseline 默認值
top
bottom
middle
它的做用:
內聯元素之間的對齊
文字與圖片垂直方向的對齊
圖片與圖片垂直方向的對齊
行內塊元素垂直方向的對齊
單元格td的內容垂直方向的對齊
在CSS中,"box model"這一術語是用來設計和佈局時使用,而後在網頁中基本上都會顯示一些方方正正的盒子。咱們稱爲這種盒子叫盒模型。
盒模型有兩種:標準盒子模型和IE盒子模型。咱們在這裏重點介紹標準模型。
一個盒子的模型示意圖以下:
盒模型屬性介紹:
width:內容的寬度
height: 內容的高度
padding:內邊距,邊框到內容的距離
border: 邊框,就是指的盒子的寬度,圍繞在內邊距和內容外的邊框
margin:外邊距,用於控制元素與元素之間的距離,盒子邊框到附近最近盒子的距離。margin的最基本用途就是控制元素周圍空間的間隔,從視覺角度上達到相互隔開的目的。
content(內容): 盒子的內容,顯示文本和圖像
盒模型的計算:
若是一個盒子設置了padding,border,width,height,margin(我們先不要設置margin,margin有坑,後面課程會講解)
盒子的真實寬度=width + 2*padding + 2*border
盒子的真實寬度=height + 2*padding + 2*border
那麼在這裏要注意看了。標準盒模型,width不等於盒子真實的寬度。
另外若是要保持盒子真實的寬度,那麼加padding就必定要減width,減padding就必定要加width。真實高度同樣設置。
padding:就是內邊距的意思,它是邊框到內容之間的距離
另外padding的區域是有背景顏色的。而且背景顏色和內容的顏色同樣。也就是說background-color這個屬性將填充全部的border之內的區域
padding的設置:
padding有四個方向,分別描述4個方向的padding。
描述的方法有兩種:
padding-top: 30px;
padding-right: 30px;
padding-bottom: 30px;
padding-left: 30px;
/*上 右 下 左*/
padding: 20px 30px 40px 50px ;
/*上 左右 下*/
padding: 20px 30px 40px;
/* 上下 左右*/
padding: 20px 30px;
/*上下左右*/
padding: 20px;
注意:一些標籤默認有padding。
好比ul標籤,有默認的padding-left值。
那麼咱們通常在作站的時候,是要清除頁面標籤中默認的padding和margin。以便於咱們更好的去調整元素的位置。
咱們如今初學可使用通配符選擇器。
*{
padding:0;
margin:0;
}
這種方法效率不高。因此咱們要使用並集選擇器來選中頁面中應有的標籤。上面的並集選擇器已經有所表現。
border:邊框的意思,描述盒子的邊框
邊框有三個要素: 粗細 線性樣式 顏色
border: solid
若是顏色不寫,默認是黑色。若是粗細不寫,不顯示邊框。若是隻寫線性樣式,默認的有上下左右 3px的寬度,實體樣式,而且黑色的邊框。
(1)按照三要素來寫border
border-width: 3px; border-style: solid; border-color: red; /* border-width: 5px 10px; border-style: solid(實線) dotted(點) double(雙實線) dashed(虛線); border-color: red green yellow; */
(2)按照方向劃分
border-top-width: 10px;
border-top-color: red;
border-top-style: solid;
border-right-width: 10px;
border-right-color: red;
border-right-style: solid;
border-bottom-width: 10px;
border-bottom-color: red;
border-bottom-style: solid;
border-left-width: 10px;
border-left-color: red;
border-left-style:solid;
上面12條語句,至關於 bordr: 10px solid red;
另外還能夠這樣:
border-top: 10px solid red;
border-right: 10px solid red;
border-bottom: 10px solid red;
border-left: 10pxb solid red;
注意:
border:none;
border:0;
表示border沒有設置樣式
margin:外邊距的意思。表示邊框到最近盒子的距離。
/*表示四個方向的外邊距離爲20px*/
margin: 20px;
/*表示盒子向下移動了30px*/
margin-top: 30px;
/*表示盒子向右移動了50px*/
margin-left: 50px;
/*表示盒子向左移動了70px*/
margin-right: 70px;
/*表示盒子向上移動了100px*/
margin-bottom: 100px;
在之前的HTML知識中,咱們已經將標籤分過類,當時分爲了:文本級、容器級。
從HTML的角度來說,標籤分爲:
文本級標籤:p、span、a、b、i、u、em。
容器級標籤:div、h系列、li、dt、dd。
PS:爲甚麼說p是文本級標籤呢?由於p裏面只能放文字&圖片&表單元素,p裏面不能放h和ul,p裏面也不能放p。
如今,從CSS的角度講,CSS的分類和上面的很像,就p不同:
行內元素:除了p以外,全部的文本級標籤,都是行內元素。p是個文本級,可是個塊級元素。
塊級元素:全部的容器級標籤都是塊級元素,還有p標籤。
咱們能夠經過display屬性將塊級元素和行內元素進行相互轉換。display即「顯示模式」。
一旦,給一個塊級元素(好比div)設置:
display: inline;
那麼,這個標籤將當即變爲行內元素,此時它和一個span無異。inline就是「行內」。也就是說:
此時這個div不能設置寬度、高度。
此時這個div能夠和別人並排了。
一樣的道理,一旦給一個行內元素(好比span)設置:
display: block;
那麼,這個標籤將當即變爲塊級元素,此時它和一個div無異。block」是「塊」的意思。也就是說:
此時這個span可以設置寬度、高度
此時這個span必須霸佔一行了,別人沒法和他並排
若是不設置寬度,將撐滿父親
標準流裏面的限制很是多,致使不少頁面效果沒法實現。若是咱們如今就要並排、而且就要設置寬高,那該怎麼辦呢?辦法是:移民!脫離標準流!
css中一共有三種手段,使一個元素脫離標準文檔流:
浮動
絕對定位
固定定位