html - 将分隔线拉伸(stretch)到一侧但保持标题居中

标签 html css

请运行下面的示例。正如您在第二个示例中看到的那样,我试图将左线进一步向左拉伸(stretch)以补偿父级的填充,同时保持标题相对于父级居中,就像在第一个示例中一样。我似乎不能两者兼得。

(对于任何熟悉的人,我试图调整的分隔线来自 ant-design)

#container {
  height: 100px;
  width: 400px;
  background: #EFEFEF;
  padding: 24px;
}

/* Normal use case */

.divider {
  position: relative;
  line-height: 23px;
  height: 1px;
  display: table;
  margin: 16px 0;
  color: rgba(0, 0, 0, 0.85);
  font-weight: 500;
  font-size: 15px;
  white-space: nowrap;
  text-align: center;
  background: transparent;
}

.divider::before, .divider::after {
  position: relative;
  top: 50%;
  display: table-cell;
  width: 50%;
  border-top: 1px solid #AAA;
  -webkit-transform: translateY(50%);
  -ms-transform: translateY(50%);
  transform: translateY(50%);
  content: '';
}

.divider-text {
  display: inline-block;
  padding: 0 24px;
}

/* Trying to stretch the left line to further to the left without puting the title off-center */

.divider.stretched-left {
  left: -24px;
  width: calc(100% + 24px);
  min-width: calc(100% + 24px);
}
<div id="container">
  <div class="divider">
    <span class="divider-text">Title</span>
  </div>
  <div class="divider stretched-left">
    <span class="divider-text">Title</span>
  </div>
</div>

最佳答案

首先,我会使用 flexbox 而不是表格布局,然后调整边距/填充:

只保留演示的相关代码

#container {
  width: 400px;
  background: #EFEFEF;
  padding: 24px;
}

/* Normal use case */
.divider {
  display: flex;
  margin: 16px 0;
  align-items:center;
}

.divider::before, .divider::after {
  flex:1;
  height: 1px; 
  background:#AAA;
  content: '';
}
.divider::before {
  margin-right:24px;
}
.divider::after {
  margin-left:24px;
}

.divider.stretched-left:before {
  margin-left:-24px;   
  padding-left: 24px;
}

.divider.stretched-right:after {
  margin-right:-24px;   
  padding-right: 24px;
}
<div id="container">
  <div class="divider">
    <span class="divider-text">Title</span>
  </div>
  <div class="divider stretched-left">
    <span class="divider-text">another Title</span>
  </div>
  <div class="divider stretched-right">
    <span class="divider-text">Title</span>
  </div>
  <div class="divider stretched-right">
    <span class="divider-text">another Title</span>
  </div>
  <div class="divider stretched-left stretched-right">
    <span class="divider-text">another Title</span>
  </div>
</div>

使用您的原始代码,您可以试试这个:

#container {
  height: 100px;
  width: 400px;
  background: #EFEFEF;
  padding: 24px;
}

/* Normal use case */

.divider {
  position: relative;
  line-height: 23px;
  height: 1px;
  display: table;
  margin: 16px 0;
  color: rgba(0, 0, 0, 0.85);
  font-weight: 500;
  font-size: 15px;
  white-space: nowrap;
  text-align: center;
  background: transparent;
}

.divider::before, .divider::after {
  position: relative;
  top: 50%;
  display: table-cell;
  width: 50%;
  border-top: 1px solid #AAA;
  transform: translateY(50%);
  content: '';
}


.divider-text {
  display: inline-block;
  padding: 0 24px;
}

/* Trying to stretch the left line to further to the left without puting the title off-center */

.divider.stretched-left {
  left: -24px;
  width: calc(100% + 48px); /* Updated */
}
/* Added */
.divider.stretched-left:after {
  border-image:linear-gradient(to left,transparent 24px, #aaa 24px) 1;
}
<div id="container">
  <div class="divider">
    <span class="divider-text">Title</span>
  </div>
  <div class="divider stretched-left">
    <span class="divider-text">Title</span>
  </div>
</div>

关于html - 将分隔线拉伸(stretch)到一侧但保持标题居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58046980/

相关文章:

javascript - 井字游戏不改变颜色

jquery - Z-index- 1;不会出现在 IE 7 中

html - 在调整大小时,如何让我的图像停留在 div 的底部?

html - 如何使列表项 <li> 像链接 <a> 一样

html - 如何在 div 内垂直居中 <span>?

css - 使用 Emotion css 将图像添加到按钮

html - nav 包含在 header 中 vs 不包含在 header 中?

css - foundation-icons-sass-rails 图标未显示在按钮中

html - 当我转录代码时出现白屏

html - 拉伸(stretch)图像同时保留 HTML5 中的 Angular