2017-05-04 78 views
1

Safari has full support for FlexBox according to caniuse.絕對與Flexbox,就在Safari

定位,我只是想棧的不同大小的div的相互利用Flexbox的頂部。我是真的好奇,爲什麼這個工程在Chrome/Firefox中,但不是在Safari:

<div class="container"> 
    <div class="inner-one"></div> 
    <div class="inner-two"></div> 
</div> 
.container { 
    width: 15rem; 
    height: 15rem; 
    border-radius: 50%; 
    background-color: blue; 

    display: flex; 
    align-items: center; 
    justify-content: center; 
} 

.container div { 
    position: absolute; 
} 

.inner-one { 
    width: 13rem; 
    height: 13rem; 
    border-radius: 50%; 
    background-color: green; 
} 

.inner-two { 
    width: 11rem; 
    height: 11rem; 
    border-radius: 50%; 
    background-color: purple; 
} 

見的jsfiddle這裏:https://jsfiddle.net/19n95exf/3/

+0

你曾經通過-webkit前綴試過嗎? – sol

回答

4

因爲position: absolute;休息display: flex,使用transform: translate代替

.container { 
 
     position: relative; 
 
     width: 15rem; 
 
     height: 15rem; 
 
     border-radius: 50%; 
 
     background-color: blue; 
 
    } 
 

 
    .container div { 
 
     border-radius: 50%; 
 
     position: absolute; 
 
     top: 50%; 
 
     left: 50%; 
 
     transform: translate(-50%,-50%); 
 
    } 
 

 
    .inner-one { 
 
     width: 13rem; 
 
     height: 13rem; 
 
     background-color: green; 
 
    } 
 

 
    .inner-two { 
 
     width: 11rem; 
 
     height: 11rem; 
 
     background-color: purple; 
 
    }
<div class="container"> 
 
     <div class="inner-one"></div> 
 
     <div class="inner-two"></div> 
 
    </div>


或者給內部元件左/頂值

.container { 
 
     width: 15rem; 
 
     height: 15rem; 
 
     border-radius: 50%; 
 
     background-color: blue; 
 

 
     display: flex; 
 
     align-items: center; 
 
     justify-content: center; 
 
    } 
 

 
    .container div { 
 
     border-radius: 50%; 
 
     position: absolute; 
 
    } 
 

 
    .inner-one { 
 
     left: 1.5rem; 
 
     top: 1.5rem; 
 
     width: 13rem; 
 
     height: 13rem; 
 
     background-color: green; 
 
    } 
 

 
    .inner-two { 
 
     left: 2.5rem; 
 
     top: 2.5rem; 
 
     width: 11rem; 
 
     height: 11rem; 
 
     background-color: purple; 
 
    }
<div class="container"> 
 
     <div class="inner-one"></div> 
 
     <div class="inner-two"></div> 
 
</div>

+0

圖例。我仍然覺得有趣的是,在Safari中絕對處理與flex的處理方式不同。無論哪種方式,這是一個可行的解決方法。謝謝。 –

+2

@AndrewHill閱讀此:https://developers.google.com/web/updates/2016/06/absolute-positioned-children – LGSon

+0

優秀的東西。非常感激。 –