css學(xué)習(xí) 第三天

CSS?分組?和?嵌套?選擇器

分組選擇器

在樣式表中有很多具有相同樣式的元素。

h1{????color:green;}h2{????color:green;}p{????color:green;}

為了盡量減少代碼,你可以使用分組選擇器。每個(gè)選擇器用逗號分隔。

在下面的例子中,我們對以上代碼使用分組選擇器:

h1,h2,p{? ? color:green;}

嵌套選擇器

它可能適用于選擇器內(nèi)部的選擇器的樣式。

在下面的例子設(shè)置了三個(gè)樣式:

????????p{ }: 為所有?p?元素指定一個(gè)樣式。

????????.marked{ }: 為所有?class="marked"?的元素指定一個(gè)樣式。

????????.marked p{ }: 為所有?class="marked"?元素內(nèi)的?p?元素指定一個(gè)樣式。

? ? ? ? p.marked{ }: 為所有?class="marked"?的?p?元素指定一個(gè)樣式。

p{ color:blue;text-align:center;}

.marked{? ? background-color:red;}

.marked p{? ? color:white;}

p.marked{? ? text-decoration:underline;}

CSS?尺寸 (Dimension)

所有CSS 尺寸 (Dimension)屬性

height????????????????????設(shè)置元素的高度。

line-height????????????設(shè)置行高。

max-height????????????設(shè)置元素的最大高度。

max-width????????????設(shè)置元素的最大寬度。

min-height????????????設(shè)置元素的最小高度。

min-width????????????????設(shè)置元素的最小寬度。

width????????????????????????設(shè)置元素的寬度。

CSS?Display(顯示)?與?Visibility(可見性)

display屬性設(shè)置一個(gè)元素應(yīng)如何顯示,visibility屬性指定一個(gè)元素應(yīng)可見還是隱藏。

隱藏元素 - display:none或visibility:hidden

隱藏一個(gè)元素可以通過把display屬性設(shè)置為"none",或把visibility屬性設(shè)置為"hidden"。但是請注意,這兩種方法會(huì)產(chǎn)生不同的結(jié)果。

visibility:hidden可以隱藏某個(gè)元素,但隱藏的元素仍需占用與未隱藏之前一樣的空間。也就是說,該元素雖然被隱藏了,但仍然會(huì)影響布局。

h1.hidden {visibility:hidden;}

display:none可以隱藏某個(gè)元素,且隱藏的元素不會(huì)占用任何空間。也就是說,該元素不但被隱藏了,而且該元素原本占用的空間也會(huì)從頁面布局中消失。

h1.hidden {display:none;}

CSS Display - 塊和內(nèi)聯(lián)元素

塊元素是一個(gè)元素,占用了全部寬度,在前后都是換行符。

塊元素的例子:

<h1>

<p>

<div>

內(nèi)聯(lián)元素只需要必要的寬度,不強(qiáng)制換行。

內(nèi)聯(lián)元素的例子:

<span>

<a>

如何改變一個(gè)元素顯示

可以更改內(nèi)聯(lián)元素和塊元素,反之亦然,可以使頁面看起來是以一種特定的方式組合,并仍然遵循web標(biāo)準(zhǔn)。

下面的示例把列表項(xiàng)顯示為內(nèi)聯(lián)元素:

li {display:inline;}

下面的示例把span元素作為塊元素:

span {display:block;}

注意:變更元素的顯示類型看該元素是如何顯示,它是什么樣的元素。例如:一個(gè)內(nèi)聯(lián)元素設(shè)置為display:block是不允許有它內(nèi)部的嵌套塊元素。

CSS?Position(定位)

position 屬性指定了元素的定位類型。

position 屬性的五個(gè)值:

static

relative

fixed

absolute

sticky

元素可以使用的頂部,底部,左側(cè)和右側(cè)屬性定位。然而,這些屬性無法工作,除非是先設(shè)定position屬性。他們也有不同的工作方式,這取決于定位方法。

static 定位

HTML 元素的默認(rèn)值,即沒有定位,遵循正常的文檔流對象。

靜態(tài)定位的元素不會(huì)受到 top, bottom, left, right影響。

div.static { position: static;

? ? border: 3px solid #73AD21;}

fixed 定位

元素的位置相對于瀏覽器窗口是固定位置。

即使窗口是滾動(dòng)的它也不會(huì)移動(dòng):

p.pos_fixed{ position:fixed;

? ? top:30px;

? ? right:5px;}

注意:?Fixed 定位在 IE7 和 IE8 下需要描述 !DOCTYPE 才能支持。

Fixed定位使元素的位置與文檔流無關(guān),因此不占據(jù)空間。

Fixed定位的元素和其他元素重疊。

relative 定位

相對定位元素的定位是相對其正常位置。

h2.pos_left{ position:relative;

? ? left:-20px;}

h2.pos_right{? ? position:relative;

? ? left:20px;}

absolute 定位

絕對定位的元素的位置相對于最近的已定位父元素,如果元素沒有已定位的父元素,那么它的位置相對于<html>:

h2{ position:absolute;

? ? left:100px;

? ? top:150px;}

sticky 定位

sticky 英文字面意思是粘,粘貼,所以可以把它稱之為粘性定位。

position: sticky;?基于用戶的滾動(dòng)位置來定位。

粘性定位的元素是依賴于用戶的滾動(dòng),在?position:relative?與?position:fixed?定位之間切換。

它的行為就像?position:relative;?而當(dāng)頁面滾動(dòng)超出目標(biāo)區(qū)域時(shí),它的表現(xiàn)就像?position:fixed;,它會(huì)固定在目標(biāo)位置。

元素定位表現(xiàn)為在跨越特定閾值前為相對定位,之后為固定定位。

這個(gè)特定閾值指的是 top, right, bottom 或 left 之一,換言之,指定 top, right, bottom 或 left 四個(gè)閾值其中之一,才可使粘性定位生效。否則其行為與相對定位相同。

注意:?Internet Explorer, Edge 15 及更早 IE 版本不支持 sticky 定位。 Safari 需要使用 -webkit- prefix (查看以下實(shí)例)。

div.sticky { position: -webkit-sticky; /* Safari */ position: sticky;

? ? top: 0;

? ? background-color: green;

? ? border: 2px solid #4CAF50;}

重疊的元素

元素的定位與文檔流無關(guān),所以它們可以覆蓋頁面上的其它元素

z-index屬性指定了一個(gè)元素的堆疊順序(哪個(gè)元素應(yīng)該放在前面,或后面)

一個(gè)元素可以有正數(shù)或負(fù)數(shù)的堆疊順序:

img{ position:absolute;

? ? left:0px;

? ? top:0px;

? ? z-index:-1;}

CSS 布局 - Overflow

CSS overflow 屬性用于控制內(nèi)容溢出元素框時(shí)顯示的方式。

CSS Overflow

CSS overflow 屬性可以控制內(nèi)容溢出元素框時(shí)在對應(yīng)的元素區(qū)間內(nèi)添加滾動(dòng)條。

overflow屬性有以下值:

visible????????????默認(rèn)值。內(nèi)容不會(huì)被修剪,會(huì)呈現(xiàn)在元素框之外。

hidden????????????內(nèi)容會(huì)被修剪,并且其余內(nèi)容是不可見的。

scroll????????????????內(nèi)容會(huì)被修剪,但是瀏覽器會(huì)顯示滾動(dòng)條以便查看其余的內(nèi)容。

auto????????????????????如果內(nèi)容被修剪,則瀏覽器會(huì)顯示滾動(dòng)條以便查看其余的內(nèi)容。

inherit????????????????規(guī)定應(yīng)該從父元素繼承 overflow 屬性的值。

overflow: visible

默認(rèn)情況下,overflow 的值為 visible, 意思是內(nèi)容溢出元素框:

div { width: 200px;

? ? height: 50px;

? ? background-color: #eee;

? ? overflow: visible;}

CSS?Float(浮動(dòng))

什么是 CSS Float(浮動(dòng))?

CSS 的 Float(浮動(dòng)),會(huì)使元素向左或向右移動(dòng),其周圍的元素也會(huì)重新排列。

Float(浮動(dòng)),往往是用于圖像,但它在布局時(shí)一樣非常有用。

元素怎樣浮動(dòng)

元素的水平方向浮動(dòng),意味著元素只能左右移動(dòng)而不能上下移動(dòng)。

一個(gè)浮動(dòng)元素會(huì)盡量向左或向右移動(dòng),直到它的外邊緣碰到包含框或另一個(gè)浮動(dòng)框的邊框?yàn)橹埂?/p>

浮動(dòng)元素之后的元素將圍繞它。

浮動(dòng)元素之前的元素將不會(huì)受到影響。

如果圖像是右浮動(dòng),下面的文本流將環(huán)繞在它左邊:

img{ float:right;}

彼此相鄰的浮動(dòng)元素

如果你把幾個(gè)浮動(dòng)的元素放到一起,如果有空間的話,它們將彼此相鄰。

在這里,我們對圖片廊使用 float 屬性

.thumbnail { float:left;

? ? width:110px;

? ? height:90px;

? ? margin:5px;}

清除浮動(dòng) - 使用 clear

元素浮動(dòng)之后,周圍的元素會(huì)重新排列,為了避免這種情況,使用 clear 屬性。

clear 屬性指定元素兩側(cè)不能出現(xiàn)浮動(dòng)元素。

使用 clear 屬性往文本中添加圖片廊:

.text_line{ clear:both;}

CSS 布局 - 水平 & 垂直對齊

元素居中對齊

要水平居中對齊一個(gè)元素(如

), 可以使用?margin: auto;。

設(shè)置到元素的寬度將防止它溢出到容器的邊緣。

元素通過指定寬度,并將兩邊的空外邊距平均分配:

.center { margin: auto;

? ? width: 50%;

? ? border: 3px solid green;

? ? padding: 10px;}

注意:?如果沒有設(shè)置?width?屬性(或者設(shè)置 100%),居中對齊將不起作用。

文本居中對齊

如果僅僅是為了文本在元素內(nèi)居中對齊,可以使用?text-align: center;

.center { text-align: center;

? ? border: 3px solid green;}

圖片居中對齊

要讓圖片居中對齊, 可以使用?margin: auto;?并將它放到??元素中:

img { display: block;

? ? margin: auto;

? ? width: 40%;}

左右對齊 - 使用定位方式

我們可以使用?position: absolute;?屬性來對齊元素:

.right { position: absolute;

? ? right: 0px;

? ? width: 300px;

? ? border: 3px solid #73AD21;

? ? padding: 10px;}

注釋:絕對定位元素會(huì)被從正常流中刪除,并且能夠交疊元素。

提示:?當(dāng)使用?position?來對齊元素時(shí), 通常?<body>?元素會(huì)設(shè)置?margin?和?padding?。 這樣可以避免在不同的瀏覽器中出現(xiàn)可見的差異。

當(dāng)使用 position 屬性時(shí),IE8 以及更早的版本存在一個(gè)問題。如果容器元素(在我們的案例中是 <div class="container">)設(shè)置了指定的寬度,并且省略了 !DOCTYPE 聲明,那么 IE8 以及更早的版本會(huì)在右側(cè)增加 17px 的外邊距。這似乎是為滾動(dòng)條預(yù)留的空間。當(dāng)使用 position 屬性時(shí),請始終設(shè)置 !DOCTYPE 聲明:

左右對齊 - 使用 float 方式

我們也可以使用?float?屬性來對齊元素:

.right { float: right;

? ? width: 300px;

? ? border: 3px solid #73AD21;

? ? padding: 10px;}

當(dāng)像這樣對齊元素時(shí),對 <body> 元素的外邊距和內(nèi)邊距進(jìn)行預(yù)定義是一個(gè)好主意。這樣可以避免在不同的瀏覽器中出現(xiàn)可見的差異。

注意:如果子元素的高度大于父元素,且子元素設(shè)置了浮動(dòng),那么子元素將溢出,這時(shí)候你可以使用 "clearfix(清除浮動(dòng))" 來解決該問題。

我們可以在父元素上添加 overflow: auto; 來解決子元素溢出的問題:

.clearfix { overflow: auto;}

當(dāng)使用 float 屬性時(shí),IE8 以及更早的版本存在一個(gè)問題。如果省略 !DOCTYPE 聲明,那么 IE8 以及更早的版本會(huì)在右側(cè)增加 17px 的外邊距。這似乎是為滾動(dòng)條預(yù)留的空間。當(dāng)使用 float 屬性時(shí),請始終設(shè)置 !DOCTYPE 聲明:

body { margin: 0;

? ? padding: 0;}?

.right {? ? float: right;

? ? width: 300px;

? ? background-color: #b0e0e6;}

垂直居中對齊 - 使用 padding

CSS 中有很多方式可以實(shí)現(xiàn)垂直居中對齊。 一個(gè)簡單的方式就是頭部頂部使用?padding:

.center { padding: 70px 0;

? ? border: 3px solid green;}

如果要水平和垂直都居中,可以使用?padding?和?text-align: center:

.center { padding: 70px 0;

? ? border: 3px solid green;

? ? text-align: center;}

垂直居中 - 使用 line-height

.center { line-height: 200px;

? ? height: 200px;

? ? border: 3px solid green;

? ? text-align: center;}

/* 如果文本有多行,添加以下代碼: */

.center p {? ? line-height: 1.5;

? ? display: inline-block;

? ? vertical-align: middle;}

垂直居中 - 使用 position 和 transform

除了使用?padding?和?line-height?屬性外,我們還可以使用?transform?屬性來設(shè)置垂直居中:

.center {

? ? height: 200px;

? ? position: relative;

? ? border: 3px solid green; }?

.center p {? ? margin: 0;

? ? position: absolute;

? ? top: 50%;

? ? left: 50%;

? ? transform: translate(-50%, -50%);}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容