【问题标题】:Center align absolute elements inside flex items将弹性项目内的绝对元素居中对齐
【发布时间】:2016-10-28 18:37:51
【问题描述】:

我正在尝试水平对齐弹性项目内的两个绝对定位元素。

这是我目前的CodePen

HTML

<div class="stepper-wrapper">
  <ul class="step-wrapper" >
    <li class="step__bubble"></li>
    <li class="step__circle"></li>
  </ul>
  <ul class="step-wrapper" >
    <li class="step__bubble"></li>
    <li class="step__circle"></li>
  </ul>
</div>

CSS

.stepper-wrapper {
  display: flex;
  flex-direction: row;
}
ul {
  border: 1px solid grey;
  height: 0px;
  position: relative;
  top: 40%;
  min-width: 100px;
  flex: 1;
  li.step__bubble {
    display: inline-block;
    vertical-align: middle;
  }
  li.step__bubble::before {
    content: "";
    position: absolute;
    top: -9px;
    left: calc(50%);
    display: block;
    width: 16px;
    height: 16px;
    border: 2px solid grey;
    border-radius: 50%;
    background: white;
  }
  li.step__circle {
    width: 8px;
    height: 8px;
    border: 1px solid red;
    border-radius: 50%;
    display: block;
    position: absolute;
    top: -4px;
    left: calc(50% + 1px);
  }
}

我想做的是:

  • 让灰色圆圈垂直和水平对齐 线。 Vertically 并不是真正的 pb,我可以设置一个固定值,因为 .stepper-wrapper 的高度将是固定的。横向需要具有适应性,而这正是我所困的地方。
  • 在灰色圆圈内有红色圆圈

我尝试使用calc() 函数并将两个圆圈都设置为(50% - width_of_element_in_px/2),但我不知道为什么,每个像素似乎约为10px。

感谢您的帮助

【问题讨论】:

    标签: less flexbox css-position


    【解决方案1】:

    欢迎加入由calc() 和字符串插值法拥有的 LESS 用户俱乐部
    5 年来我一直在使用 LESS,但它仍然不时发生 :(

    Sooo tl;dr calc() 过去和现在都是一个 LESS 函数,它的编译器会很高兴地输出一些结果(可能是 50% + 10(stripped) => 60%)。
    如果你想让LESS编译器输出calc()CSS Level 3函数,你需要escape它,也就是包裹在~"calc(50% + 5px)"中!

    Codepen

    编辑:另见https://stackoverflow.com/a/17904128/137626
    EDIT2:在 LESS 文档 oO 中找不到关于 calc 的条目,但问题在 http://lesscss.org/usage/#command-line-usage-options 中进行了解释(在文本中搜索“calc”)。 strict-math 是一个很酷的选项,但您必须确保其他人都已激活它(默认情况下不会是这种情况)

    【讨论】:

    • 这并不能回答问题。他只使用 css。
    • 啊哈,我又被骗了。很高兴知道它仍然会发生在你身上^^。非常感谢,这工作。还有另一个问题:你做了(50% + 5px)。那 5px 是 8px 的元素宽度除以 2 + 1px 的边框,对吗?
    • @atulquest93 他正在使用 LESS。请检查他的 Codepen:它写的是“CSS (LESS)”。还要检查他的代码:关于li 的3 条规则包含在ul 规则中。这不是有效的 CSS(目前),而是有效的 LESS/Sass 代码。
    • @DlafCreative 是的,即(半径 + 边框)或总宽度的一半(在标准框尺寸模型中为 1+8+1 = 10px)
    猜你喜欢
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 2016-01-27
    • 2017-06-18
    相关资源
    最近更新 更多