我有outerWrapper
,innerWrapper
和孩子。
outerWrapper
的高度为300px
,且为display: flex
。
innerWrapper
也是display: flex
。
我认为因为它们是flex
,innerWrapper
会继承outerWrappers
高度。
我想将align-content: flex-end
添加到outerWrapper
。但它不起作用,因为innerWrapper
继承了outerWrappers
高度。
如何将align-content: flex-end
添加到outerWrapper
?
或者,如何让innerContents
身高与孩子保持同一高度,align-content: flex-end
会有效?
这是描述我想要的图像:
我想将innerContent
缩小到红线。
更新
我只想澄清一下。我希望innerWrapper
以红线结束,而不是开始。
#outerWrapper {
height: 300px;
background-color: lightgreen;
display: flex;
flex-wrap: wrap;
align-content: flex-end;
}
ul {
padding: 0;
margin: 0;
display: flex;
align-items: center;
flex-wrap: wrap;
}
li {
list-style-type: none;
width: 100px;
height: 100px;
background-color: lightblue;
border: 1px solid;
}
<div id="outerWrapper">
<ul id="innerWrapper">
<li class="child">I'm #01</li>
<li class="child">I'm #02</li>
<li class="child">I'm #03</li>
<li class="child">I'm #04</li>
<li class="child">I'm #05</li>
</ul>
</div>
答案 0 :(得分:1)
请尝试align-items:flex-end;
而不是align-content:flex-end;
。
align-content适用于多行柔性框。当项目在一行中时,它不起作用。它根据其价值对齐整个结构。
flex-box的align-items属性垂直对齐flex容器内的项目,就像justify-content对水平轴一样。
答案 1 :(得分:0)
使用align-content: flex-end
代替align-items: flex-end
或与align-content
一起使用。
align-content
属性仅适用于多行灵活容器。因此,例如,如果您的弹性项目换行,那么align-content
将起作用。
在单行Flex容器中,.innerWrapper
无效。正如您所提到的,&#34; ...它不起作用,因为.outerWrapper
继承了align-self
的高度&#34; 。换句话说,它不起作用,因为单行的交叉大小是容器的交叉大小,不留任何额外的空间。
来自规范:
在多线柔性容器(即使只有一条线的容器)中, 每行的交叉大小是包含该行所必需的最小大小 弹线上的项目(由于
align-content
对齐后)和 使用align-content
在flex容器中对齐线条 属性。 在单行Flex容器中,行的交叉大小 是flex容器的交叉大小,align-content
没有 效果。 一行的主要大小始终与主要大小相同 flex容器的内容框。8.4. Packing Flex Lines: the
align-content
property
justify-content
属性对齐Flex容器的行 当横轴有额外的空间时,flex容器, 类似于import UIKit import Firebase import FirebaseStorage class timelineTableViewController: UITableViewController { var posts = [Post]() var databaseRef: FIRDatabaseReference! var storageRef: FIRStorageReference! override func viewDidLoad() { super.viewDidLoad() databaseRef = FIRDatabase.database().reference() storageRef = FIRStorage.storage().reference() let userPostRef = self.databaseRef.child("posts") userPostRef.queryOrderedByChild("time").observeEventType(.ChildAdded, withBlock: {(snapshot) in if let postAdd = snapshot.value as? NSDictionary{ let url = snapshot.value?["postPhoto"] as! String let userPhotoUrl = snapshot.value?["userPhoto"] as! String let myPost = Post(data: postAdd) FIRStorage.storage().referenceForURL(url).dataWithMaxSize(10 * 1024 * 1024, completion: { (data, error) in let postPhoto = UIImage(data: data!) }) FIRStorage.storage().referenceForURL(userPhotoUrl).dataWithMaxSize(10 * 1024 * 1024, completion: { (data, error) in let userPhoto = UIImage(data: data!) }) self.posts.insert(myPost, atIndex: 0) self.tableView.reloadData() } }) } override func numberOfSectionsInTableView(tableView: UITableView) -> Int { // #warning Incomplete implementation, return the number of sections return 1 } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return posts.count } override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cellIdentifier = "postCell" let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath)as! timelineTableViewCell //Dispatch the main thread here dispatch_async(dispatch_get_main_queue()) { cell.usernameLabel.text = self.posts[indexPath.row].username cell.postText.text = self.posts[indexPath.row].postText cell.timeLabel.text = self.posts[indexPath.row].time cell.postPhoto.image = self.posts[indexPath.row].postPhoto cell.userPhoto.image = self.posts[indexPath.row].userPhoto } return cell } }
如何对齐单个项目 主轴。 注意,此属性对单行flex不起作用 容器 强>(强调添加)