国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【css面試題】 實(shí)現(xiàn)一個(gè)盒子的水平豎直居中對(duì)齊效果

這篇具有很好參考價(jià)值的文章主要介紹了【css面試題】 實(shí)現(xiàn)一個(gè)盒子的水平豎直居中對(duì)齊效果。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

面試題里有時(shí)還會(huì)強(qiáng)調(diào) 子盒子寬高是否已知,要注意一下

嘗試一:給父盒子設(shè)置padding 或者子盒子設(shè)置margin

<style>
    .father{
        width: 300px;
        height: 200px;
       
        overflow: hidden; /* 放坑爹現(xiàn)象,不信你刪了試試 */
        background-color: #db7b7b;
    }

    .son{
        width: 100px;
        height: 100px;
         
        margin: auto;

        background-color: #d8db7b;
    }
</style>
<body>
    <div class="father">
        <div class="son">aa</div>
    </div>
</body>

【css面試題】 實(shí)現(xiàn)一個(gè)盒子的水平豎直居中對(duì)齊效果,面試 - css,css,前端
失敗,只能水平居中,垂直不可以?。。。。。?!
原因
http://t.csdn.cn/AOMJ1
http://t.csdn.cn/cFsg6

margin:auto為什么不垂直居中

margin:auto是具有強(qiáng)烈計(jì)算意味的關(guān)鍵字,用來(lái)計(jì)算元素對(duì)應(yīng)方向上應(yīng)該獲得的剩余空間大小。

行內(nèi)元素margin:auto; 不能水平居中在一行的中央位置(行內(nèi)元素不獨(dú)占一行)。

塊級(jí)元素設(shè)置寬度后仍占據(jù)一行空間,因此margin:auto;會(huì)將這一行的剩余空間平均分配給左右外邊距。

margin:auto 能使塊級(jí)元素水平居中,但是不能垂直居中,因?yàn)榇怪狈较蛏夏J(rèn)沒有剩余的空間。

注:行內(nèi)元素margin:auto既不能水平居中也不能垂直居中,因?yàn)樾袃?nèi)元素水平垂直方向上默認(rèn)都沒有剩余的空間。

解一:子絕父相+margin:auto+四周是0(子有寬高

<style>
    .father{
      
        position: relative;  /* !!!! */
        width: 300px;
        height: 200px;
       
        overflow: hidden; /* 放坑爹現(xiàn)象,不信你刪了試試 */
        background-color: #db7b7b;
    }

    .son{
        position: absolute;  /* !!!! */
        width: 100px;
        height: 100px;
        
         /* !!!! */
         top:0;
         left:0;
         bottom:0;
         right:0;

        margin: auto;

        background-color: #d8db7b;
    }
</style>
<body>
    <div class="father">
        <div class="son">aa</div>
    </div>

【css面試題】 實(shí)現(xiàn)一個(gè)盒子的水平豎直居中對(duì)齊效果,面試 - css,css,前端
但這種情況不適用于 子盒子 不定寬高 的情況,例如子盒子會(huì)盛滿整個(gè)父盒子
【css面試題】 實(shí)現(xiàn)一個(gè)盒子的水平豎直居中對(duì)齊效果,面試 - css,css,前端

嘗試二:子絕父相+margin-top/left:50%+transform

子盒子 寬高已知

<style>
    .father{
      
        position: relative;  /* !!!! */
        width: 300px;
        height: 200px;
       
        overflow: hidden; /* 放坑爹現(xiàn)象,不信你刪了試試 */
        background-color: #db7b7b;
    }

    .son{
        position: absolute;  /* !!!! */
        width: 100px;
        height: 100px;
        
         /* !!!! */
        margin-top: 50%;
        margin-left: 50%;
        transform: translate(-50%,-50%);

        background-color: #d8db7b;
    }
</style>
<body>
    <div class="father">
        <div class="son">aa</div>
    </div>
</body>

如果你以為這個(gè)方法可以通用,那你就錯(cuò)了,因?yàn)?/p>

marginpadding無(wú)論left還是right還是top還是bottom都是相對(duì)于父元素width的,若如果沒有,找其父輩元素的寬度,均沒設(shè)寬度時(shí),相對(duì)于屏幕的寬度。
【css面試題】 實(shí)現(xiàn)一個(gè)盒子的水平豎直居中對(duì)齊效果,面試 - css,css,前端
http://t.csdn.cn/Pwcy6
http://t.csdn.cn/YSubI

所以說(shuō),嘗試一,給父盒子加padding,根本不行,父盒子的padding參考body的大小,所以就把父盒子撐大了
【css面試題】 實(shí)現(xiàn)一個(gè)盒子的水平豎直居中對(duì)齊效果,面試 - css,css,前端【css面試題】 實(shí)現(xiàn)一個(gè)盒子的水平豎直居中對(duì)齊效果,面試 - css,css,前端
所以不要試padding了!!!

解二:子絕父相+margin-left/top:父盒子一半+transform(子定寬高

<style>
    .father{
        position: relative; 
        width: 300px;
        height: 200px;
        overflow: hidden; /* 放坑爹現(xiàn)象,不信你刪了試試 */
        background-color: #db7b7b;
    }

    .son{
        position: absolute; 
        width: 100px;
        height: 100px;
        
         /* !!!! */
        margin-top: 100px; 
        margin-left: 150px;
        transform: translate(-50%,-50%);

        background-color: #d8db7b;
    }
</style>
<body>
    <div class="father">
        <div class="son">aa</div>
    </div>
</body>

解三:子絕父相+top/left:50%+transform(子不定寬高

子盒子可以 不定寬高

<style>
    .father{
      
        position: relative;  /* !!!! */
        width: 300px;
        height: 200px;
       
        overflow: hidden; /* 放坑爹現(xiàn)象,不信你刪了試試 */
        background-color: #db7b7b;
    }

    .son{
        position: absolute;  /* !!!! */
        width: 100px;
        height: 100px;
        
        
        top: 50%;
        left: 50%;
        transform: translate(-50%,-50%);

        background-color: #d8db7b;
    }
</style>

解四:子絕父相+top/left:50%+magin-top/left: 負(fù) 子一半(子寬高已知

也就是把transform: translate(-50%,-50%); 替換成margin-top: -50px;margin-left: -25px;所以,子盒子寬高已知

<style>
    .father{
      
        position: relative;  
        width: 300px;
        height: 200px;
       
        overflow: hidden; /* 放坑爹現(xiàn)象,不信你刪了試試 */
        background-color: #db7b7b;
    }

    .son{
        position: absolute;
        width: 50px;  /* !!!! */
        height: 100px;
        
        
        top: 50%;
        left: 50%;
        /* transform: translate(-50%,-50%); */
        margin-top: -50px;
        margin-left: -25px;

        background-color: #d8db7b;
    }
</style>

flex

父盒子flex布局,并設(shè)置justify-content: center; align-items: center;

<style>
    .father{
        display: flex;
        justify-content: center;  
        align-items: center;

        width: 300px;
        height: 200px;


        background-color: #db7b7b;
    }

    .son{
        background-color: #d8db7b;
    }
</style>

table - cell

將父盒子設(shè)置display: table-cell; 并設(shè)置text-align: center; vertical-align: middle; 子盒子設(shè)置display: inline-block;

http://t.csdn.cn/cmr2B

<style>
    .father{
        display: table-cell;
        text-align: center;
        vertical-align: middle;

        width: 300px;
        height: 200px;


        background-color: #db7b7b;
    }

    .son{
        display: inline-block;
        background-color: #d8db7b;
    }
</style>

grid

父盒子設(shè)置為網(wǎng)格元素display: grid; 并設(shè)置 place-items: center;

<style>
    .father{
        display: grid;
        place-items: center;

        width: 300px;
        height: 200px;


        background-color: #db7b7b;
    }

    .son{

        background-color: #d8db7b;
    }
</style>

總結(jié):

1.試方法要多個(gè)栗子,不能只試正方形,這樣就發(fā)現(xiàn)不了margin依據(jù)父的寬度

2.子盒子不定寬高,只能設(shè)置top/left:50%,不能設(shè)置margin-left:50%,是因?yàn)?code>top/left:50%不像margin都參照父的width

【css面試題】 實(shí)現(xiàn)一個(gè)盒子的水平豎直居中對(duì)齊效果,面試 - css,css,前端文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-699359.html

到了這里,關(guān)于【css面試題】 實(shí)現(xiàn)一個(gè)盒子的水平豎直居中對(duì)齊效果的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • css實(shí)現(xiàn)水平居中

    css實(shí)現(xiàn)水平居中

    代碼示例 display:flex; ?這些要添加在父級(jí)的,是父級(jí)的屬性 ?//父級(jí)添加display:flex; ?//父級(jí)添加justify-content:center; 效果圖:? 外邊距可以讓塊級(jí)盒子水平居中,但是必須滿足兩個(gè)條件: ①盒子必須指定了寬度 ②盒子左右的外邊距都設(shè)置為auto ?.header{ ? ? ? width:960px; ? ? ? m

    2024年02月14日
    瀏覽(18)
  • CSS實(shí)現(xiàn): 水平居中 的幾種方法

    CSS實(shí)現(xiàn): 水平居中 的幾種方法

    實(shí)現(xiàn)方法: 1、添加 margin 值 auto 2、定位 position(子絕父相) + 偏移值 left + margin-left 回退 [ 需要計(jì)算,有點(diǎn) 麻煩 ] 3、定位 position(子絕父相) + 偏移值 left + CSS-2d transform 4、文字居中 text-align:center; + 行內(nèi)塊元素 5、彈性盒子布局 [ 推薦 ] 示例 代碼實(shí)現(xiàn): 原始效果圖: 接下來(lái),

    2024年02月03日
    瀏覽(24)
  • html 怎么設(shè)置文本對(duì)齊,文本間距,盒子居中顯示

    html 怎么設(shè)置文本對(duì)齊,文本間距,盒子居中顯示

    1.在一個(gè)盒子中我們?cè)趺醋屛谋舅?,垂直居中顯示 可以看到此時(shí)文本默認(rèn)是在盒子的左上角顯示的,可以 添加行高 (line-height 值 與盒子高度一樣就行 ),和 文本對(duì)齊方式設(shè)置為水平居中 ,代碼如下: ? ?2.怎么讓盒子中的元素居中顯示 ?這里我們可以看到,盒子中的元

    2024年02月08日
    瀏覽(25)
  • CSS實(shí)現(xiàn)元素水平垂直居中的各種方法

    CSS實(shí)現(xiàn)元素水平垂直居中的各種方法

    關(guān)于 CSS 如何將元素進(jìn)行水平垂直居中的幾種常用方法 前言 ????????在設(shè)計(jì)網(wǎng)頁(yè)頁(yè)面的過程中,總會(huì)有將元素或者文字進(jìn)行水平或者垂直居中的要求,各種CSS樣式調(diào)整,搞的頭都大了。這里將會(huì)介紹 CSS 中幾種常用到的水平垂直居中的方法,希望能夠?qū)δ阌兴鶐椭?接下

    2024年02月08日
    瀏覽(25)
  • css垂直水平居中的幾種實(shí)現(xiàn)方式

    一、固定寬高: 1、定位 + margin-top + margin-left 設(shè)置父元素的position為相對(duì)定位,子元素絕對(duì)定位,并在 top 和 left 方向上移動(dòng)父元素50%的距離。 但這個(gè)時(shí)候,是子元素的上邊框和左邊框距離父元素150px,整體向右下角偏了一些,所以還需要再用 margin 調(diào)整至中心位置,數(shù)值分別

    2024年01月18日
    瀏覽(20)
  • css 實(shí)現(xiàn) html 元素內(nèi)文字水平垂直居中的N種方法

    css 實(shí)現(xiàn) html 元素內(nèi)文字水平垂直居中的N種方法

    ? ? ? ? 上一篇博文寫了div 中元素居中的N種常用方法,那么單個(gè)html元素:div(塊級(jí)元素代表),span(行內(nèi)元素代表)中的文字如何水平垂直都居中呢?實(shí)現(xiàn)方法如下: ????????本文例子使用的 html body結(jié)構(gòu)下的模型如下: ? ? ? ? 例子居中效果都如下圖: 注:當(dāng)把div

    2024年02月13日
    瀏覽(35)
  • CSS文字居中對(duì)齊學(xué)習(xí)

    CSS文字居中對(duì)齊學(xué)習(xí)

    CSS使用text-align屬性設(shè)置文字對(duì)齊方式;text-align:center,這樣就設(shè)置了文字居中對(duì)齊; 做一個(gè)html文檔,網(wǎng)頁(yè)元素包括:h1, 一個(gè)div,一個(gè)div,一個(gè)p(段落),一個(gè)鏈接(a),一個(gè)表格; 定義了CSS樣式類box,其中指定了背景色為pink,文字對(duì)齊為居中對(duì)齊;定義了h1元素的文字對(duì)

    2024年02月09日
    瀏覽(32)
  • CSS3中盒子居中

    CSS3中盒子居中

    (1)利用定位(子絕父相)、margin-left、和margin-top實(shí)現(xiàn) (2) 利用定位(子絕父相)、transfrom屬性實(shí)現(xiàn) (3) 利用flex布局實(shí)現(xiàn)盒子居中

    2024年02月22日
    瀏覽(22)
  • CSS水平垂直居中

    1.利用定位 + margin:auto 2.flex布局 3.grid布局 一、利用position+margin:auto ?二、利用flex 三、gird布局

    2024年02月14日
    瀏覽(29)
  • CSS盒子居中的6種方法!

    CSS盒子居中的6種方法!

    常見的一種方式就是使用 flex 布局設(shè)置居中。 利用彈性布局( flex ),實(shí)現(xiàn)水平居中,其中 justify-content 用于設(shè)置彈性盒子元素在主軸(橫軸)方向上的對(duì)齊方式 給容器設(shè)置: display: flex ; 寫在父元素上這就是定義了一個(gè)伸縮容器 justify-content 主軸對(duì)齊方式,默認(rèn)是橫軸 align-i

    2024年03月13日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包