CSS3 Flexbox布局模块-对齐内联级别元素(当它是flex项时)
鉴于我已经获得了以下HTML代码:CSS3 Flexbox布局模块-对齐内联级别元素(当它是flex项时),css,flexbox,Css,Flexbox,鉴于我已经获得了以下HTML代码: <div> <h2>What is Lorem Ipsum?</h2> <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p> <a href="#">Read more</a> </div> 如何设置锚点的样式,使其水平居中?一种方
<div>
<h2>What is Lorem Ipsum?</h2>
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>
<a href="#">Read more</a>
</div>
如何设置锚点的样式,使其水平居中?一种方法是:
div {
display: flex;
flex-direction: column;
padding: 1em;
border: 1px solid #DDD;
border-radius: 10px;
width:100%;
}
div h2 {
font-size: 1.2307em;
text-align: center;
}
div p {
flex: 1;
margin: 0.7692em 0;
}
div a{
width:80px;
margin:auto;
display: block;
}
还有html
<div>
<h2>What is Lorem Ipsum?</h2>
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>
<a href="#">Read more</a>
</div>
什么是Lorem Ipsum?
Lorem Ipsum只是印刷和排版行业的虚拟文本
将锚点像段落外那样浮动不是好的标记。您应该在锚点周围放置第二个段落标记,然后将该段落居中
您也可以像现在这样在代码上使用此CSS:
a {
text-align: center;
display: block;
}
我发现“align self”flex属性有助于在横轴上对齐元素。但它只能应用于flex项和内联级元素,如
div a{text align:center;}
在
上设置align self:center
(当然,也可以使用特定于浏览器的属性版本)。内联元素确实变成了flex项,因此不需要在
周围使用块级包装器
这就是说,如果你打算使用flexbox,你会很快发现它通常需要额外的包装div,所以你最好现在就习惯。只要你不跟他们发疯,这不是坏事。HTML5规范甚至讨论了如何将div用于表示目的。所以,当你只需要添加一个时,不要对此感到太内疚。我想
div{text align:center;}p{text align:left;}
可以。@thirtydot,你的猜测是,请将它作为答案发布。@EliranM:我不太确定。我不认为任何浏览器真的像你的演示那样支持普通的display:flex
;需要某种类型的供应商前缀。@thirtydot,我知道你的解决方案,但我正在寻找实现flex对齐概念的东西。你能在不使用固定宽度的情况下改进你的解决方案吗?当然!在我的代码中,删除所有宽度并将“text align:center”添加到锚点(标记)。这里的关键是使锚成为一个块元素(display:block),谢谢,但这将使整条线变成一个可点击的区域,这不是我要寻找的。我希望看到一个使用flex layout模块实现的解决方案。你认为每个内联级元素都应该用像p这样的块级元素包装吗?是的,我认为这是一个很好的指南。这将有助于你的布局有坚实的结构,并有助于你的设计原则,因为你正在制定什么去哪里,占用什么样的空间。我喜欢使用足够必要的标记来定义内容的语义和风格。引入纯粹与布局相关的标记可以很容易地引导您使用divitis。此外,如果您正在处理一个模块化HTML代码,其中的显示方式不同,那么布局标记将变得多余。例如,如果我需要在右手边显示一个锚,我会把它放到右边。谢谢你的回答。当我写这个问题时,align self并没有涵盖内联级别的元素,但是规范已经改变了,现在它涵盖了这些元素。下面是一个工作演示:
a {
text-align: center;
display: block;
}
<div><a href="#">Read more</a></div>
div a { text-align: center; }