是否有更多的flexbox-ish方式来正确对齐"联系"而不是使用position: absolute
?
.main { display: flex; }
.a, .b, .c { background: #efefef; border: 1px solid #999; }
.b { flex: 1; text-align: center; }
.c { position: absolute; right: 0; }
Run Code Online (Sandbox Code Playgroud)
<h2>With title</h2>
<div class="main">
<div class="a"><a href="#">Home</a></div>
<div class="b"><a href="#">Some title centered</a></div>
<div class="c"><a href="#">Contact</a></div>
</div>
<h2>Without title</h2>
<div class="main">
<div class="a"><a href="#">Home</a></div>
<!--<div class="b"><a href="#">Some title centered</a></div>-->
<div class="c"><a href="#">Contact</a></div>
</div>
Run Code Online (Sandbox Code Playgroud)
如何使用flexbox在容器中水平和垂直居中div.在下面的例子中,我希望每个数字彼此相同(在行中),它们是水平居中的.
.flex-container {
padding: 0;
margin: 0;
list-style: none;
display: flex;
align-items: center;
justify-content: center;
}
row {
width: 100%;
}
.flex-item {
background: tomato;
padding: 5px;
width: 200px;
height: 150px;
margin: 10px;
line-height: 150px;
color: white;
font-weight: bold;
font-size: 3em;
text-align: center;
}
Run Code Online (Sandbox Code Playgroud)
<div class="flex-container">
<div class="row">
<span class="flex-item">1</span>
</div>
<div class="row">
<span class="flex-item">2</span>
</div>
<div class="row">
<span class="flex-item">3</span>
</div>
<div class="row">
<span class="flex-item">4</span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我希望在容器div中对齐3个div,如下所示:
[[LEFT] [CENTER] [RIGHT]]
Run Code Online (Sandbox Code Playgroud)
容器div是100%宽(没有设置宽度),并且在调整容器大小后中心div应保持在中心.
所以我设置:
#container{width:100%;}
#left{float:left;width:100px;}
#right{float:right;width:100px;}
#center{margin:0 auto;width:100px;}
Run Code Online (Sandbox Code Playgroud)
但它变成了:
[[LEFT] [CENTER] ]
[RIGHT]
Run Code Online (Sandbox Code Playgroud)
有小费吗?
任何人都可以告诉我之间的差异align-items
和align-content
?
您可以覆盖align-items
有align-self
一个弯曲的项目.我正在寻找一种覆盖justify-content
flex项目的方法.
如果你有一个flexbox容器justify-content:flex-end
,但你想要第一个项目justify-content: flex-start
,那怎么办呢?
因此,在尝试使用flexbox创建一个有用的模式时,我发现了什么似乎是一个浏览器问题,我想知道是否有一个已知的修复或解决方法 - 或者如何解决它的想法.
我想解决的问题有两个方面.首先,使模态窗口垂直居中,这可以按预期工作.第二个是让模态窗口滚动 - 外部,所以整个模态窗口滚动,而不是其中的内容(这样你就可以有下拉列表和其他可以扩展到模态边界之外的UI元素 - 像自定义日期选择器等)
但是,当将垂直居中与滚动条组合时,模态的顶部在开始溢出时可能无法进入.在上面的示例中,您可以调整大小以强制溢出,这样做可以让您滚动到模态的底部,但不能滚动到顶部(第一段被截断).
这是示例代码的链接(高度简化)
https://jsfiddle.net/dh9k18k0/2/
.modal-container {
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
background: rgba(0, 0, 0, 0.5);
overflow-x: auto;
}
.modal-container .modal-window {
display: -ms-flexbox;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
// Optional support to confirm scroll behavior makes sense in IE10
//-ms-flex-direction: column;
//-ms-flex-align: center;
//-ms-flex-pack: center;
height: 100%;
}
.modal-container .modal-window .modal-content {
border: 1px solid #ccc;
border-radius: 4px;
background: #fff;
width: 100%;
max-width: 500px; …
Run Code Online (Sandbox Code Playgroud) https://jsfiddle.net/vhem8scs/
是否可以将两个项目左对齐,一个项目与flexbox对齐?该链接更清楚地显示了它.最后一个例子是我想要实现的.
在flexbox中,我有一个代码块.使用float我有四个代码块.这是我更喜欢flexbox的一个原因.
HTML
<div class="wrap">
<div>One</div>
<div>Two</div>
<div>Three</div>
</div>
<!-- DESIRED RESULT -->
<div class="result">
<div>One</div>
<div>Two</div>
<div>Three</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
.wrap {
display: flex;
background: #ccc;
width: 100%;
justify-content: space-between;
}
.result {
background: #ccc;
margin-top: 20px;
}
.result:after {
content: '';
display: table;
clear: both;
}
.result div {
float: left;
}
.result div:last-child {
float: right;
}
Run Code Online (Sandbox Code Playgroud) 我在flexbox中有两个div并排.右手应该总是相同的宽度,我希望左手一个只抓住剩余的空间.但除非我专门设定其宽度,否则它不会.
所以目前,它设置为96%,看起来没问题,直到你真的挤压屏幕 - 然后右手div有点缺乏它所需的空间.
我想我可以保留它,但它感觉不对 - 就像必须有一种说法:
合适的人总是一样的; 你在左边 - 你得到了剩下的一切
.ar-course-nav {
cursor: pointer;
padding: 8px 12px 8px 12px;
border-radius: 8px;
}
.ar-course-nav:hover {
background-color: rgba(0, 0, 0, 0.1);
}
Run Code Online (Sandbox Code Playgroud)
<br/>
<br/>
<div class="ar-course-nav" style="display:flex; justify-content:space-between;">
<div style="width:96%;">
<div style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">
<strong title="Course Name Which is Really Quite Long And Does Go On a Bit But Then When You Think it's Stopped it Keeps on Going for even longer!">
Course Name Which is Really Quite Long And Does …
Run Code Online (Sandbox Code Playgroud)想象一下以下布局,其中圆点表示框之间的空间:
[Left box]......[Center box]......[Right box]
Run Code Online (Sandbox Code Playgroud)
当我移除右边的盒子时,我喜欢中心盒仍然位于中心,如下所示:
[Left box]......[Center box].................
Run Code Online (Sandbox Code Playgroud)
如果我删除左框也是如此.
................[Center box].................
Run Code Online (Sandbox Code Playgroud)
现在,当中心框内的内容变得更长时,它将占用尽可能多的可用空间,同时保持居中.左边和右边框将永远不会收缩,因此当没有剩余空间的地方overflow:hidden
,并text-overflow: ellipsis
会在效果打破了内容;
[Left box][Center boxxxxxxxxxxxxx][Right box]
Run Code Online (Sandbox Code Playgroud)
以上都是我理想的情况,但我不知道如何实现这个效果.因为当我创建一个像这样的flex结构时:
.parent {
display : flex; // flex box
justify-content : space-between; // horizontal alignment
align-content : center; // vertical alignment
}
Run Code Online (Sandbox Code Playgroud)
如果左右框的大小完全相同,我会得到所需的效果.然而,当两者中的一个来自不同尺寸时,居中的盒子不再真正居中.
有没有人可以帮助我?
更新
A justify-self
会很好,这将是理想的:
.leftBox {
justify-self : flex-start;
}
.rightBox {
justify-self : flex-end;
}
Run Code Online (Sandbox Code Playgroud) 我有一个容器<div>
用display: flex
.它有一个孩子<a>
.
如何让孩子显得"内联"?
具体来说,如何让孩子的宽度由其内容决定,而不是扩展到父母的宽度?
我尝试了什么:
我把孩子设置为display: inline-flex
,但它仍占用了整个宽度.我也尝试了所有其他显示属性,但没有任何效果.
例:
.container {
background: red;
height: 200px;
flex-direction: column;
padding: 10px;
display: flex;
}
a {
display: inline-flex;
padding: 10px 40px;
background: pink;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
<a href="#">Test</a>
</div>
Run Code Online (Sandbox Code Playgroud)