老師:目前我的學(xué)習(xí)進(jìn)度是跟不上的,我基礎(chǔ)差,從JS開(kāi)始已經(jīng)跟不上了,不過(guò)我一定會(huì)認(rèn)真學(xué)完每一課,做好每一次作業(yè)的,只是會(huì)做的慢一點(diǎn)。每一節(jié)課的知識(shí)量很大,我需要慢慢搞懂老師講到的每一個(gè)概念。
7月5日直播課作業(yè):
作業(yè)1-4可預(yù)覽網(wǎng)址:
作業(yè)1:理解并寫(xiě)出外邊距的三個(gè)特征: 同級(jí)塌陷,嵌套傳遞,自動(dòng)擠壓的案例;
(1)同級(jí)塌陷:
同級(jí)塌陷指的是同級(jí)元素呈上下排列的時(shí)候,兩個(gè)元素的外邊距會(huì)互相塌陷,只呈現(xiàn)出其中一個(gè)較大的外邊距,但同級(jí)元素的左右外邊距不會(huì)塌陷。實(shí)際運(yùn)用中需要知道這個(gè)html特性,便于利用和操作。
(2)嵌套傳遞:
元素內(nèi)容的外邊距會(huì)直接傳遞給元素的外邊距,導(dǎo)致外邊距被撐大。實(shí)際運(yùn)用中應(yīng)該避免外邊距的嵌套傳遞,而采用內(nèi)邊距來(lái)控制元素的內(nèi)容。
(3)自動(dòng)擠壓:
通過(guò)設(shè)置元素的外邊距為自動(dòng),瀏覽器會(huì)把盡可能多的空間分配給外邊距,這樣就會(huì)將元素盡可能往另一邊的空間擠壓過(guò)去,并且不管瀏覽器的寬度怎么變化,元素都能夠一直保持這被羈押的狀態(tài)。當(dāng)左右外邊距都設(shè)置為auto的時(shí)候,左右外邊距都會(huì)對(duì)元素進(jìn)行擠壓,就會(huì)把元素寄到瀏覽器的居中位置了,善用改特性,能夠在不居中是元素居中。
作業(yè)2:寫(xiě)案例,并分析內(nèi)邊距對(duì)盒中內(nèi)容的影響,以及解決的三種方案是什么?
方法一:重設(shè)寬高
1、通過(guò)先撐大盒子,再重新設(shè)置盒子的寬度來(lái)使內(nèi)容居中。
2、設(shè)置父盒子寬高為300,設(shè)置盒子的內(nèi)邊距為50,擠壓內(nèi)容使之居中,但由于設(shè)置內(nèi)邊距為50之后,父盒子會(huì)被隨之撐大,需要重設(shè)父寬高為200,才能減去撐大的部分,使內(nèi)容剛好居中。
3、這個(gè)方法并不好,不利于元素大小的調(diào)整,需要調(diào)節(jié)的參數(shù)會(huì)很多。
.box1 { background-color: aquamarine; /*設(shè)置父盒子寬高為300,但由于設(shè)置內(nèi)邊距為50之后,需要重設(shè)寬高為200,才能減去撐大的部分,所以在這里直接設(shè)為200*/ width: 200px; height: 200px; /*設(shè)置盒子的內(nèi)邊距為50,擠壓內(nèi)容使之居中*/ padding: 50px; } /*將box2作為box1的內(nèi)容*/ .neirong { background-color: darksalmon; width: 200px; height: 200px; }
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
實(shí)例 <div> <div class="box1"> <div class="neirong"></div> </div> </div> 運(yùn)行實(shí)例 ? 點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
方法二:寬度分離
1、在最外層再加上一個(gè)殼,相當(dāng)于有三層,最里層為內(nèi)容,最外層為殼,中間層為原來(lái)的父盒子。
2、在殼只設(shè)置寬度,此時(shí)殼有形卻不可見(jiàn),利用子盒子只繼承父盒子寬度的原理,父盒子自動(dòng)撐大,寬高變成跟殼一致,然后在父盒子設(shè)置內(nèi)邊距,使將內(nèi)容剛好被擠壓到居中的位置。
3、簡(jiǎn)潔好用。
/*將box2作為box1的內(nèi)容*/ .neirong { background-color: darksalmon; width: 200px; height: 200px; } /*給父盒子再套一個(gè)殼*/ .ke { width: 300px; } .box2 { background-color: aquamarine; padding: 50px; }
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
<div class="ke"> <div class="box2"> <div class="neirong"></div> </div> </div>
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
方法三:將父盒子的寬度設(shè)置到邊框上
1、根據(jù)方法二的理解,只要在父盒子外增加一個(gè)外層,并將寬度設(shè)置在外層,父盒子就可以繼承寬度,不會(huì)導(dǎo)致被撐大。此時(shí),我們可以把父盒子的邊框看做是外層,在邊框上設(shè)置寬度,那么父盒子就被作為內(nèi)容,繼承了邊框的寬度,而不需要另外設(shè)置一個(gè)外層。跟方法二有異曲同工之妙,卻更加簡(jiǎn)潔優(yōu)雅。
2、此方法會(huì)壓縮內(nèi)容的寬高,如果壓縮后的內(nèi)容區(qū)域小于內(nèi)容的實(shí)際尺寸,內(nèi)容的畫(huà)面會(huì)被裁剪。
3、這個(gè)方法最好,多利用。
.neirong { background-color: darksalmon; width: 200px; height: 200px; } .box3 { width: 300px; height: 300px; /*把父盒子的邊框作為外殼,父盒子變成了內(nèi)容,寬度設(shè)置在邊框上就相當(dāng)于設(shè)置在外層上,父盒子作為內(nèi)容自動(dòng)繼承寬度*/ box-sizing: border-box; background-color: aquamarine; padding: 50px; border: black 1px solid; }
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
<div class="box3"> <div class="neirong"></div> </div>
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
作業(yè)3:浮動(dòng)的實(shí)現(xiàn)原理與清除的技巧
(1)浮動(dòng):
瀏覽器的默認(rèn)布局是文檔流,不美也不受控制。為了控制布局,做到隨心所欲的布局,元素必須脫離文檔流,脫離瀏覽器的控制。脫離文檔流的方法分為兩種:一種是浮動(dòng),一種是定位。
元素浮動(dòng)之后,不占據(jù)文檔流的位置,會(huì)浮在文檔流的上層,還在文檔流中的元素將會(huì)前挪。浮動(dòng)后的元素會(huì)左浮動(dòng)或者右浮動(dòng),直到碰到邊框或者另一個(gè)浮動(dòng)元素的邊緣,各個(gè)元素自動(dòng)緊貼排列。
浮動(dòng)元素只影響后面的元素,不影響前面的元素,如果前面的元素沒(méi)有浮動(dòng),浮動(dòng)的元素并不會(huì)蓋住前面的元素,但后面的元素往上排列后會(huì)被浮動(dòng)元素蓋住。
浮動(dòng)的適用場(chǎng)景是文字環(huán)繞效果,另外,浮動(dòng)可以實(shí)現(xiàn)常規(guī)的多列布局,更適合實(shí)現(xiàn)自適應(yīng)多列布局,比如左側(cè)固定寬度,右側(cè)根據(jù)父元素寬度自適應(yīng)。
(2)清除浮動(dòng):
浮動(dòng)會(huì)導(dǎo)致父元素高度坍塌。解決父元素高度坍塌的方式就是清除浮動(dòng),常規(guī)的方法是clear清除浮動(dòng)和BFC清除浮動(dòng),推薦clearfix的方式。
作業(yè)4:相對(duì)定位與絕對(duì)定位的區(qū)別與聯(lián)系,并實(shí)例演示
(1)相對(duì)定位(position: relative):
沒(méi)有脫離文檔流,通常用來(lái)做為絕對(duì)定位的父級(jí)。定位的基準(zhǔn)是元素在文檔流中的原始位置為原點(diǎn),父級(jí)不需要定位屬性。
實(shí)例:
.xddw { /*position: relative;*/ width: 400px; height: 400px; border: coral solid 1px; } .xd1 { position: relative; width: 100px; height: 100px; background-color: aquamarine; /*設(shè)置位置*/ top: 0; left: 100px; } .xd2 { position: relative; width: 100px; height: 100px; background-color: darksalmon; } .xd3 { position: relative; width: 100px; height: 100px; background-color: lightgoldenrodyellow; /*設(shè)置位置*/ top: -100px; left: 100px; } .xd4 { position: relative; width: 100px; height: 100px; background-color: blueviolet; /*設(shè)置位置*/ top: -200px; left: 200px; } .xd5 { position: relative; width: 100px; height: 100px; background-color: lightseagreen; /*設(shè)置位置*/ top: -200px; left: 100px; }
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
<div class="xddw"> <div class="xd1">1</div> <div class="xd2">2</div> <div class="xd3">3</div> <div class="xd4">4</div> <div class="xd5">5</div> </div>
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
(2)絕對(duì)定位(position: absolute):
脫離文檔流,必須有定位父級(jí),父級(jí)必須設(shè)有定位屬性,且不能是靜態(tài)定位。CSS中必須設(shè)置TOP等值,否則不能脫離文檔流。定位的基準(zhǔn)是以父級(jí)的左上角坐標(biāo)(0,0)為原點(diǎn)。是大多數(shù)場(chǎng)景使用的布局。
實(shí)例:
.jddw { position: relative; width: 400px; height: 400px; border: coral solid 1px; } .jd1 { position: absolute; width: 100px; height: 100px; background-color: aquamarine; /*設(shè)置位置*/ top: 0; left: 100px; } .jd2 { position: absolute; width: 100px; height: 100px; background-color: darksalmon; /*設(shè)置位置*/ top: 100px; left: 0; } .jd3 { position: absolute; width: 100px; height: 100px; background-color: lightgoldenrodyellow; /*設(shè)置位置*/ top: 100px; left: 100px; } .jd4 { position: absolute; width: 100px; height: 100px; background-color: blueviolet; /*設(shè)置位置*/ top: 100px; left: 200px; } .jd5 { position: absolute; width: 100px; height: 100px; background-color: lightseagreen; /*設(shè)置位置*/ top: 200px; left: 100px; }
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
<div class="jddw"> <div class="jd1">1</div> <div class="jd2">2</div> <div class="jd3">3</div> <div class="jd4">4</div> <div class="jd5">5</div> </div>
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
(3)固定定位(position: fixed):
脫離文檔流,以窗口為原點(diǎn)進(jìn)行上下左右的定位,不隨頁(yè)面滾動(dòng),通常用語(yǔ)固定位置的浮動(dòng)廣告。(實(shí)例在作業(yè)5中體現(xiàn))
作業(yè)5:模仿完成課堂上的二個(gè)定位案例:模擬php中文網(wǎng)登陸(遮罩+絕對(duì)定位)和固定定位廣告的展示方式
作業(yè)中有一個(gè)疑問(wèn):按理絕對(duì)定位時(shí)必須有定位父級(jí),但是我在設(shè)定遮罩和登錄框時(shí)卻沒(méi)有定位父級(jí),為何還能夠正常顯示呢?懇請(qǐng)老師解答。
作業(yè)5可預(yù)覽網(wǎng)址:
.back { width: 1371px; height: 526px; margin: auto; background-image: url("../image/back.png"); } .foot { width: 479px; height: 108px; margin: auto; background-image: url("../image/foot.png"); } .shade { /* 遮罩絕對(duì)定位,并自動(dòng)伸展到整個(gè)窗口 */ position: absolute; left: 0; top: 0; width: 100%; height: 100%; /* 將背景設(shè)置為純黑,并通過(guò)透明度使背影內(nèi)容透出來(lái) */ background-color: black; opacity: 0.5; } .login { /* 遮罩絕對(duì)定位,定位到畫(huà)面居中*/ position: absolute; width: 349px; height: 371px; left: 50%; top: 50%; margin-left: -174px; margin-top: -285px; } .ads { position: fixed; right: 0; bottom: 25px; width: 388px; height: 491px; }
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
<h1>7月5日直播課作業(yè)5</h1> <hr> <!--作業(yè)5:模仿完成課堂上的二個(gè)定位案例:模擬php中文網(wǎng)登陸(遮罩+絕對(duì)定位)和固定定位廣告的展示方式--> <h3>作業(yè)5:模仿完成課堂上的二個(gè)定位案例:模擬php中文網(wǎng)登陸(遮罩+絕對(duì)定位)和固定定位廣告的展示方式</h3> <!--背景圖--> <div class="back"></div> <div class="foot"></div> <div class="shade"></div> <div class="login"><img src="static/image/login.png" alt="" ></div> <div class="ads"> <div> <button onclick="this.parentNode.style.display = 'none'">X</button> <img src="static/image/kf.png" alt=""> </div> </div>
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)