margin屬性的取值可為負(fù)值,h5定位模式有哪幾種?
1.靜態(tài)定位(static)
靜態(tài)定位是所有元素的默認(rèn)定位方式,當(dāng)position屬性的取值為static時(shí),可以將元素定位于靜態(tài)位置。 所謂靜態(tài)位置就是各個(gè)元素在HTML文檔流中默認(rèn)的位置。
白話:網(wǎng)頁(yè)中所有元素都是靜態(tài)定位,也就是標(biāo)準(zhǔn)流的特性
在靜態(tài)定位下,沒(méi)有偏移量
PS :沒(méi)啥好講的
2.相對(duì)定位relative 自戀型
相對(duì)定位不脫標(biāo)(不脫離標(biāo)準(zhǔn)流)
相對(duì)定位是將元素相對(duì)于它在標(biāo)準(zhǔn)流中的位置進(jìn)行定位,當(dāng)position屬性的取值為relative時(shí),可以將元素定位于相對(duì)位置。
注意: 1.元素相對(duì)定位后,雖然可以用便偏移量改變位置,但是在文檔流中的位置仍保留。
? 2.每次移動(dòng)的位置,都是以自己的左上角為基點(diǎn)移動(dòng)
浮動(dòng):多個(gè)塊級(jí)元素一行顯示
相對(duì)定位:主要價(jià)值就是移動(dòng)位置
3.絕對(duì)定位absolute 拼爹型
絕對(duì)定位完全脫標(biāo)
當(dāng)position屬性的取值為absolute時(shí),可以將元素的定位模式設(shè)置為絕對(duì)定位。
父級(jí)沒(méi)有定位
若所有父元素都沒(méi)有定位,以瀏覽器為準(zhǔn)對(duì)齊(document文檔)。
父級(jí)有定位
絕對(duì)定位是將元素依據(jù)最近的已經(jīng)定位(絕對(duì)、固定或相對(duì)定位)的父元素(祖先)進(jìn)行定位。
子絕父相
非常重要,是我們的口訣
首先,絕對(duì)定位是將元素依據(jù)最近的已經(jīng)定位絕對(duì),固定,相對(duì)的父元素(祖先)進(jìn)行定位。
也就是說(shuō),子級(jí)絕對(duì)定位,父級(jí)只要是定位(除static靜態(tài)定位)就可以,也就是說(shuō),子絕父絕也行
那么,為何父級(jí)要求時(shí)相對(duì)定位呢?
子級(jí)絕對(duì)定位,父級(jí)就用相對(duì)定位(最優(yōu)解),因?yàn)樽蛹?jí)時(shí)絕對(duì)定位不占位置,就可放在父級(jí)的任何位置
因?yàn)楦负凶釉诓季謺r(shí),需要占有位置,因此父級(jí)要相對(duì)定位
什么是文檔流,普通流,標(biāo)準(zhǔn)流
都是一個(gè)意思。
最普通的布局叫標(biāo)準(zhǔn)流
絕對(duì)定位的盒子水平/垂直居中
普通的盒子是左右margin 改為 auto就可, 但是對(duì)于絕對(duì)定位就無(wú)效了
水平居中的算法:
? 1.left 50% ,父盒子的一半大小
? 2.再有外邊距負(fù)的一半值即可
4.固定定位fixed
它以瀏覽器窗口作為參照物來(lái)定義網(wǎng)頁(yè)元素。當(dāng)position屬性的取值為fixed時(shí),即可將元素的定位模式設(shè)置為固定定位。
固定定位是一種特殊的絕對(duì)定位
疊放次序(z-index)
當(dāng)對(duì)多個(gè)元素同時(shí)設(shè)置定位時(shí),定位元素之間有可能會(huì)發(fā)生重疊。
1.默認(rèn)值是0,取值越大,定位元素越居上
2.取值相同,看書(shū)寫(xiě)順序
3.數(shù)字沒(méi)有單位
4.只有定位才有該屬性,浮動(dòng),標(biāo)準(zhǔn)流,靜態(tài)定位都沒(méi)有該屬性
flex布局怎么讓盒子垂直水平居中?
我們這里分為兩種形式,一種是定元素寬高的情況下,另一種是不定元素寬高的情況下。
定元素寬高的情況下
a.絕對(duì)定位 + 負(fù)margin
利用絕對(duì)定位absolute和margin完成元素居中,具體例子如下:
給父元素添加相對(duì)定位,子元素添加絕對(duì)定位,利用margin負(fù)子元素寬高的一半,實(shí)現(xiàn)元素的居中,這種方法不常用,
優(yōu)點(diǎn):好理解,兼容性好
缺點(diǎn):必需給定子元素的寬高
b.絕對(duì)定位+margin:auto
利用absolute絕對(duì)定位和margin:auto自動(dòng)居中方法完成元素的居中,例子如下:
與上例子一樣給父元素加相對(duì)定位,子元素添加絕對(duì)定位,在設(shè)置元素的左、右、上、下位置為零,再利用自動(dòng)居中對(duì)齊的方法margin:auto,完成元素的垂直水平居中,這種方法常用
優(yōu)點(diǎn):簡(jiǎn)單易懂,兼容性好
缺點(diǎn):代碼量大,占內(nèi)存
c.table-cell
利用css的table屬性,完成元素的垂直居中,margin完成元素的水平居中,例子如下
設(shè)置父元素的元素類型為table-cell類型,設(shè)置表格的垂直對(duì)齊方式為居中,再給子元素添加margin:0 auto 完成元素的垂直水平居中,這種方法不常用,
優(yōu)點(diǎn):兼容性好
缺點(diǎn):出來(lái)的太早,現(xiàn)在都不流行用了
d.translate
利用2d位移來(lái)完成元素的居中,例子如下:
只需操作子元素,給子元素添加transform屬性,利用2d位移translate,分別向左向右移動(dòng)父元素寬高度減自身寬高度的一半,完成元素的垂直水平對(duì)齊,這種方法不常用,
優(yōu)點(diǎn):代碼簡(jiǎn)單
缺點(diǎn):我們必須給定子元素的寬和高,否則無(wú)法完成元素居中
不定元素寬高的情況下
line-heght
給元素設(shè)置line-heght,也就是行高,完成元素的居中,具體例子如下:
我們給子元素設(shè)置行高,完成元素的垂直居中,再然后利用文本水平對(duì)齊方式text-align方法,完成水平居中,這中方法是最簡(jiǎn)單的,也是我們經(jīng)常用的
優(yōu)點(diǎn):寫(xiě)起來(lái)簡(jiǎn)單,兼容性好
缺點(diǎn):只適合單行文本的居中,多行文本不支持
b.絕對(duì)定位加translate
之前我們說(shuō)過(guò)一個(gè)利用translate完成元素垂直水平的,這里就是在那種方法上的進(jìn)一步改進(jìn),也就是可以,不用設(shè)置寬高,也能實(shí)現(xiàn)元素的垂直水平居中,用translate加絕對(duì)定位完成元素的居中,例子如下:
在這里,還有不同就是,我們translate里面可以直接用百分比完成位移,從而實(shí)現(xiàn)元素的垂直水平居中,這種方法常用(但是我不常用)
優(yōu)點(diǎn):代碼簡(jiǎn)單,兼容性好
缺點(diǎn):無(wú)
c.flex
flex形成彈性盒,我們利用彈性盒可以做很多事情,其中最主要的還是布局,當(dāng)然這里我們就不詳細(xì)說(shuō)了,我們來(lái)談?wù)勅绾问挂粋€(gè)元素垂直水平居中,例子如下:
我們讓父元素形成彈性盒子,再然后設(shè)置主軸對(duì)齊方式為居中對(duì)齊,側(cè)軸對(duì)齊方式為居中對(duì)齊從而完成元素的垂直水平居中,這種方法經(jīng)常用,
優(yōu)點(diǎn):代碼簡(jiǎn)單易懂
缺點(diǎn):PC端兼容性不好
d.flex+margin:auto
這種方法與上面那種不同的是,這里沒(méi)用到彈性盒子里面的屬性,而是用margin直接完成元素的居中對(duì)齊,例子如下:
讓父元素形成彈性盒子,再然后給子元素添加margin:auto,完成元素的垂直水平居中,這種方法也常用,
margin屬性是干什么用的?
margin:0 auto 0px表示上外邊距為0px,左右外邊距自動(dòng),下外邊距為0px。 margin:0 2px表示上外邊距和下外邊距是0px,右外邊距和左外邊距是2px margin:0 auto表示上下外邊距為0px,左右外邊距為自動(dòng)。 說(shuō)明:塊級(jí)元素的垂直相鄰?fù)膺吘鄷?huì)合并,而行內(nèi)元素實(shí)際上不占上下外邊距。行內(nèi)元素的的左右外邊距不會(huì)合并。同樣地,浮動(dòng)元素的外邊距也不會(huì)合并。允許指定負(fù)的外邊距值。
margin的算法?
折舊攤銷息稅前收益率的計(jì)算公式為EBITDA margin=EBITDA/revenue=EBITDA/凈銷售額X100%這個(gè)算出來(lái)的即為百分?jǐn)?shù)