我正在尝试制作跨浏览器的Flexbox布局,以显示彼此并排放置的卡片。当所有卡片有足够的空间时,它们应该左对齐或右对齐(由“左”和“右”类别确定),但当没有足够空间时缩小。缩小时,将鼠标悬停在卡上会使其缩小,从而可以查看更多内容。Safari中的Flexbox:增长和缩小
这么多谈论这个,live demo here如果你愿意。
CSS:
img{
width:90px;
position: absolute;
}
.cards{
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-flex-direction: row;
-webkit-justify-content: flex-start;
-ms-flex-direction: row;
-ms-justify-content: flex-start;
flex-direction: row;
justify-content: flex-start;
}
.cards.right{
float: right;
-webkit-flex-direction: row-reverse;
-webkit-justify-content: flex-end;
-ms-flex-direction: row-reverse;
-ms-justify-content: flex-end;
flex-direction: row-reverse;
justify-content: flex-end;
}
.cards div{
position:relative;
-webkit-flex: 0 2 90px;
-ms-flex: 0 2 90px;
flex: 0 2 90px;
-webkit-box-flex: 0 2 90px;
transition: flex-shrink .3s;
transition: flex-shrink .3s, -webkit-flex .3s;
-webkit-transition: -webkit-flex .3s;
}
.cards.left div:last-child, .cards.right div:first-child{
-webkit-flex: 0 0 90px;
-ms-flex: 0 0 90px;
flex: 0 0 90px;
-webkit-box-flex: 0 0 90px;
}
.cards.left div:not(:last-child):hover, .cards.right div:hover+div{
-webkit-flex: 0 1 90px;
-ms-flex: 0 1 90px;
flex: 0 1 90px;
-webkit-box-flex: 0 1 90px;
}
到目前为止,我已经成功地创建在IE,FF,Chorme和Opera的最新的版本中所需的布局。
但是,我遇到了Safari的问题。它们的布局取决于能够指定不同的灵活性来增长和缩小,但据我所知,Safari不支持这一点。
在Safari中增长和缩小flexboxes的任何帮助表示赞赏。我不想回退到旧的基于表格的布局,因为它往往会在IE和FF中破解。
如果我可以专门针对Safari,那将会非常棒,但它仍然适用于所有浏览器。 – TwiNight 2013-04-22 18:55:48
干杯人!我把这个(.cards)放入.flex中,然后我就可以在我的sass(scss)中@extend .flex!奇迹般有效 :) – Volte 2014-09-28 18:17:23