Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CSS3 Flexbox布局模块-对齐内联级别元素(当它是flex项时)_Css_Flexbox - Fatal编程技术网

CSS3 Flexbox布局模块-对齐内联级别元素(当它是flex项时)

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> 如何设置锚点的样式,使其水平居中?一种方

鉴于我已经获得了以下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>
如何设置锚点的样式,使其水平居中?

一种方法是:

  • 使锚点成为块元素(显示:块)
  • 给它一个宽度(即80px)和自动边距
  • 最后给它一个容器的宽度(即100%)
  • 这是css

         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; }