html - 使用 CSS flex,我怎样才能在我的标题之后到行尾获得一行(如 hr 元素)
问题描述
我想在我的标题之后添加一些看起来像一行的东西到行尾:
.d-flex {
display: flex;
}
.text-right {
text-align: right;
}
.text-primary {
color: white;
}
.d-flex h2.text-primary {
background: blue;
flex: 0 0 3rem;
}
.d-flex h2:not(.text-primary) {
background: red;
flex: 1;
}
.hr {
height: 2px;
background: cyan;
}
<b>This is aligned left</b>
<div class="d-flex">
<H2 class="text-primary">1 / </H2>
<div>
<H2>Hello World</H2>
<P>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea</P>
</div>
</div>
<b>This is aligned right</b>
<div class="d-flex">
<H2 class="text-primary">2 / </H2>
<div>
<H2 class="text-right">Hello World</H2>
<P class="text-right">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea</P>
</div>
</div>
<b>This should have a "hr" <u>after</u> the title to the end of the line</b>
<div class="d-flex">
<H2 class="text-primary">3 / </H2>
<div>
<H2>Hello World</H2>
<div class="hr"></div>
<P>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea</P>
</div>
</div>
<b>This should have a "hr" <u>before</u> the title to the beggining of the title line</b>
<div class="d-flex">
<H2 class="text-primary">3 / </H2>
<div>
<H2 class="text-right">Hello World</H2>
<div class="hr"></div>
<P class="text-right">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea</P>
</div>
</div>
在我的第三个示例中,我添加了div.hr
.
使用 flexbox,是否可以:
- 让它显示在标题之后
- 位于第一标题行
- 稍后,我也需要实现相同的功能,但从行首到标题(用于右对齐文本)。
解决方案
将标题设置为display: flex
,align-items: baseline
以使水平线和文本在同一行。然后将标题文本放入<span>
并添加 div .hr
withflex: 1
使其宽度增长到满。看看演示:
.d-flex {
display: flex;
}
.text-right {
text-align: right;
}
.text-primary {
color: white;
}
.d-flex h2.text-primary {
background: blue;
flex: 0 0 3rem;
}
.d-flex h2:not(.text-primary) {
background: red;
flex: 1;
}
.hr-baseline {
display: flex;
align-items: baseline;
}
.hr {
height: 2px;
background: cyan;
flex: 1;
}
<b>This is aligned left</b>
<div class="d-flex">
<H2 class="text-primary">1 / </H2>
<div>
<H2>Hello World</H2>
<P>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea</P>
</div>
</div>
<b>This is aligned right</b>
<div class="d-flex">
<H2 class="text-primary">2 / </H2>
<div>
<H2 class="text-right">Hello World</H2>
<P class="text-right">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea</P>
</div>
</div>
<b>This should have a "hr" <u>after</u> the title to the end of the line</b>
<div class="d-flex">
<H2 class="text-primary">3 / </H2>
<div>
<H2 class="hr-baseline"><span>Hello World</span><div class="hr"></div></H2>
<P>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea</P>
</div>
</div>
<b>This should have a "hr" <u>before</u> the title to the beggining of the title line</b>
<div class="d-flex">
<H2 class="text-primary">3 / </H2>
<div>
<H2 class="text-right hr-baseline"><div class="hr"></div><span>Hello World</span></H2>
<P class="text-right">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea</P>
</div>
</div>
推荐阅读
- json - 如何获取精确器中匹配元素的数量(Json/css/xpath)
- c++ - c++20 模块(使用 Xcode 11 进行实验)
- ios - 从另一个视图控制器导航栏加载视图控制器的 UIWebView 中的请求 url
- azure-active-directory - 没有 Microsoft 登录页面的 Azure AD SSO
- google-apps-script - 顶部单元格的值和左侧的简单减法相加
- c# - {Equaling objects}“我的对象引用在哪里?” C#
- r - 将 data.tables j 槽(变量名、函数以及参数)作为参数传递
- hibernate - 重构 Hibernate + JPA
- excel - 从 Sharepoint 打开工作簿并从中获取工作表/数组
- xml - 如何在 Node-RED 中访问 XML 值