。無(wú)序列表包含三個(gè)列表項(xiàng),列表項(xiàng)有鏈接在內(nèi),實(shí)際上將成為用于點(diǎn)擊后顯示內(nèi)容面板的選項(xiàng)卡。
div
包含三個(gè)
(
元素表示文檔、頁(yè)面、應(yīng)用或網(wǎng)站中的獨(dú)立結(jié)構(gòu),其意在成為可獨(dú)立分配的或可復(fù)用的結(jié)構(gòu),如在發(fā)布中,它可能是論壇帖子、雜志或新聞文章、博客、用戶提交的評(píng)論、交互式組件,或者其他獨(dú)立的內(nèi)容項(xiàng)目。) 元素,構(gòu)成對(duì)應(yīng)于每個(gè)選項(xiàng)卡的內(nèi)容面板。 每個(gè)面板包含一些示例內(nèi)容。
這里的思路是我們將樣式化選項(xiàng)卡看起來(lái)是一個(gè)標(biāo)準(zhǔn)的水平導(dǎo)航菜單,使用絕對(duì)定位樣式化面板互相坐落其頂上。我們也給你一點(diǎn)JavaScript包含到你的頁(yè)面上,當(dāng)選項(xiàng)卡被按下時(shí),顯示對(duì)應(yīng)的面板,并且樣式化選項(xiàng)卡本身。你不需要在這個(gè)階段了解JavaScript本身,但是你應(yīng)該盡快學(xué)習(xí)一些基本的 JavaScript——你的用戶界面越復(fù)雜,越需要一些JavaScript來(lái)實(shí)現(xiàn)你渴望的功能。
一般設(shè)置
開始前,在
開閉標(biāo)簽之間添加下面的代碼:
html {
font-family: sans-serif;
}
* {
box-sizing: border-box;
}
body {
margin: 0;
}
這只是一些一般設(shè)置,在我們頁(yè)面上設(shè)置了無(wú)襯線的字體、使用 box-sizing
模型,去掉
默認(rèn)外邊距。
下一步,在你早先的CSS下面加入如下代碼:
.info-box {
width: 450px;
height: 400px;
margin: 0 auto;
}
這對(duì)內(nèi)容設(shè)置具體的高度和寬度、在屏幕居中使用老把戲 margin: 0 auto
。在早先的課程中我們建議盡可能不固定內(nèi)容容器的高度。這個(gè)情況下是可以的,因?yàn)槲覀兪窃谶x項(xiàng)卡中固定的內(nèi)容,如果每個(gè)標(biāo)簽都有不同的高度,看起來(lái)也有些不和諧。
樣式化我們的選項(xiàng)卡
現(xiàn)在我們希望樣式化選項(xiàng)卡看上去像選項(xiàng)卡——基本,這些是一個(gè)水平的導(dǎo)航標(biāo)簽,但不是點(diǎn)擊之后加載不同的網(wǎng)頁(yè),和我們之前在課程中見到的不同,相反,他們?cè)谕豁?yè)面上顯示不同的面板。首先,在你的CSS底部添加下列規(guī)則,從無(wú)序列表中移除默認(rèn)的padding-left
和margin-top
值:
.info-box ul {
padding-left: 0;
margin-top: 0;
}
注意: 我們正在使用后代選擇器,整個(gè)例子 .info-box
都位于鏈的開始——這樣頁(yè)面已經(jīng)帶有其他內(nèi)容時(shí),我們可以插入這個(gè)特征,不害怕與應(yīng)用于頁(yè)面其他部分的樣式?jīng)_突。
接下來(lái),我們將樣式化水平選項(xiàng)卡——列表項(xiàng)都要左浮動(dòng)確保他們一行合起來(lái),他們的list-style-type
被設(shè)置為 none
用以去除項(xiàng)目符號(hào),寬度(width
)設(shè)置為 150px
以便于適應(yīng)這個(gè)info-box。鏈接(
)元素設(shè)置為display
inline-block,這樣他們將在一行顯示,仍然保持樣式可設(shè)置,他們會(huì)被樣式化合適的選項(xiàng)卡按鈕,通過(guò)一系列的其他屬性。
添加下列的CSS:
.info-box li {
float: left;
list-style-type: none;
width: 150px;
}
.info-box li a {
display: inline-block;
text-decoration: none;
width: 100%;
line-height: 3;
background-color: red;
color: black;
text-align: center;
}
最后,對(duì)于本節(jié),我們將會(huì)在鏈接狀態(tài)上設(shè)置一些樣式。首先,我們要設(shè)置標(biāo)簽的 :focus
和 :hover
狀態(tài),讓他們?cè)讷@得焦點(diǎn)/鼠標(biāo)懸浮的時(shí)候看起來(lái)不同,給用戶提供一些可視化反饋。其次,當(dāng)某個(gè)選項(xiàng)卡的類( class
)出現(xiàn) active
時(shí),我們?yōu)槠湓O(shè)置一條相同的樣式規(guī)則。我們將通過(guò)使用JavaScript來(lái)設(shè)置,當(dāng)一個(gè)標(biāo)簽被點(diǎn)擊時(shí)。把這些CSS放置在你的其他樣式后面:
.info-box li a:focus, .info-box li a:hover {
background-color: #a60000;
color: white;
}
.info-box li a.active {
background-color: #a60000;
color: white;
}
樣式化面板
下一步工作是樣式化我們的面板,現(xiàn)在開始吧!
首先,添加下列的規(guī)則去樣式化 .panels
容器。我們簡(jiǎn)單的設(shè)置一個(gè)固定的高度,確保面板包含在info-box里面,
position
relative
設(shè)置
為定位上下文,這樣你能然后相對(duì)自身放置定位子元素,而不是相對(duì)
元素,最后我們清除(
clear
)浮動(dòng),設(shè)置在上面CSS中,這樣避免影響布局的剩余部分。
.info-box .panels {
height: 352px;
position: relative;
clear: both;
}
在本節(jié)的最后,我們將對(duì)包含我們面板的多帶帶
元素設(shè)置樣式。我們添加的第一條規(guī)則就是絕對(duì)定位面板,讓他們都位于容器的左上角——這一部分對(duì)整個(gè)布局特性是關(guān)鍵的,就像使面板互相位于頂部。規(guī)則設(shè)置面板為和容器同樣的高度,給內(nèi)容一些內(nèi)邊距,設(shè)置字體顏色(
color
),和背景顏色(
background-color
)。
我們將添加的第二條規(guī)則,對(duì)帶有類( class
)為( active-panel
)的面板,設(shè)置z-index
為 1,會(huì)讓他位于其他的面板之上(默認(rèn)定位元素 z-index
的值是 0,會(huì)使默認(rèn)元素位于下面)。同樣的,我們會(huì)在合適的時(shí)候用JavaScript 來(lái)添加這個(gè)類。
.info-box article {
position: absolute;
top: 0;
left: 0;
height: 352px;
padding: 10px;
color: white;
background-color: #a60000;
}
.info-box .active-panel {
z-index: 1;
}
添加我們的JavaScript
讓這些特性工作的最后一步是添加一些JavaScript。添加下列一塊代碼,準(zhǔn)確的寫在你的開始和結(jié)束的