当前位置: 首页 > 知识库问答 >
问题:

为什么水平箭头不垂直对齐?

端木宏才
2023-03-14

我正在创建一个风格创建线有或没有箭头在纯css中,问题是我不能垂直对齐我的箭头与垂直-对齐中间,水平的工作与文本-对齐中心正确;

.box {
  background-color: lightgray;
  width: 200px;
  height: 200px;
  margin-right: 1em;
  float: left;
  vertical-align: middle;
  text-align: center;
  display: table-cell;
}
.linea-h {
  box-sizing: border-box;
  display: inline-block;
  position: relative;
  vertical-align: middle;
  border-top: 2px dotted dimgray;
  border-radius: 4px;
  height: 0;
}
.linea-h > * {
  position: absolute;
  transform: rotate(45deg);
  height: 8px;
  width: 8px;
}
.linea-h .left-arrow {
  margin-top: -6px;
  border-left: 2px solid dimgray;
  border-bottom: 2px solid dimgray;
  left: 0;
}
.linea-h .right-arrow {
  margin-top: -6px;
  border-right: 2px solid dimgray;
  border-top: 2px solid dimgray;
  right: 0;
}
.linea-v {
  box-sizing: border-box;
  display: inline-block;
  position: relative;
  vertical-align: middle;
  border-left: 4px dotted dimgray;
  border-radius: 8px;
  width: 0;
}
.linea-v > * {
  position: absolute;
  transform: rotate(45deg);
  height: 8px;
  width: 8px;
}
.linea-v .top-arrow {
  margin-left: -8px;
  border-left: 4px solid dimgray;
  border-top: 4px solid dimgray;
  top: 0;
}
.linea-v .bottom-arrow {
  margin-left: -8px;
  border-right: 4px solid dimgray;
  border-bottom: 4px solid dimgray;
  bottom: 0;
}
html prettyprint-override"><div class="box">
  <div class="linea-h" style="width: 200px">
    <div class="left-arrow"></div>
    <div class="right-arrow"></div>
  </div>
</div>
<div class="box">
  <div class="linea-v" style="height: 200px">
    <div class="top-arrow"></div>
    <div class="bottom-arrow"></div>
  </div>
</div>

共有1个答案

公良莫希
2023-03-14

尝试使用以下属性在CSS中垂直对齐:

 position: relative;
 top: 50%;
 transform: translateY(-50%);

我对linea-h类做了一些修改,以反映这一点。

.box {
  background-color: lightgray;
  width: 200px;
  height: 200px;
  margin-right: 1em;
  float: left;
  vertical-align: middle;
  text-align: center;
  display: table-cell;
}
.linea-h {
  box-sizing: border-box;
  border-top: 2px dotted dimgray;
  border-radius: 4px;
  height: 0;
  position: relative;
  top: 50%;
  transform: translateY(-50%);
}
.linea-h > * {
  position: absolute;
  transform: rotate(45deg);
  height: 8px;
  width: 8px;
}
.linea-h .left-arrow {
  margin-top: -6px;
  border-left: 2px solid dimgray;
  border-bottom: 2px solid dimgray;
  left: 0;
}
.linea-h .right-arrow {
  margin-top: -6px;
  border-right: 2px solid dimgray;
  border-top: 2px solid dimgray;
  right: 0;
}
.linea-v {
  box-sizing: border-box;
  display: inline-block;
  position: relative;
  vertical-align: middle;
  border-left: 4px dotted dimgray;
  border-radius: 8px;
  width: 0;
}
.linea-v > * {
  position: absolute;
  transform: rotate(45deg);
  height: 8px;
  width: 8px;
}
.linea-v .top-arrow {
  margin-left: -8px;
  border-left: 4px solid dimgray;
  border-top: 4px solid dimgray;
  top: 0;
}
.linea-v .bottom-arrow {
  margin-left: -8px;
  border-right: 4px solid dimgray;
  border-bottom: 4px solid dimgray;
  bottom: 0;
}
<div class="box">
  <div class="linea-h" style="width: 200px">
    <div class="left-arrow"></div>
    <div class="right-arrow"></div>
  </div>
</div>
<div class="box">
  <div class="linea-v" style="height: 200px">
    <div class="top-arrow"></div>
    <div class="bottom-arrow"></div>
  </div>
</div>
 类似资料:
  • 水平 & 垂直居中对齐 元素居中对齐 要水平居中对齐一个元素(如 <div>), 可以使用 margin: auto;。 设置到元素的宽度将防止它溢出到容器的边缘。 元素通过指定宽度,并将两边的空外边距平均分配: div 元素是居中的 .center { margin: auto; width: 50%; border: 3px solid green; padding: 10px; } 注意:

  • 问题内容: 我有一个页面,其中仅存在表单,并且我希望将表单放置在屏幕的中央。 该对齐表格水平,但我无法弄清楚如何垂直对齐。我已经尝试使用和,但是它不起作用。 我想念什么? 问题答案: 更新2019 - Bootstrap 4.3.1 有 没有必要 进行 额外的CSS 。Bootstrap中已经包含的内容将起作用。确保表格的容器为 全高 。Bootstrap4现在具有100%高度的类… 垂直中心:

  • 问题内容: 嗨,我想放置一个图像,该图像的垂直和水平居中对齐,我的HTML标记是 完成所有这些操作后,我将无法执行操作。请看一下并帮助我。 问题答案: 有几种方法可以使元素水平和垂直居中,这取决于情况和您的喜好。 使用以下标记: 行高 好的快速修复方法,不会使您太费时间,但是如果实际上将文本居中,则可能会出现问题。 显示:表格单元 就像好的旧表一样工作并且高度灵活,但是仅在现代浏览器中受支持。 位

  • 我有个问题快把我逼疯了。 我有一个包装器,其中包含一个带有一些文本的div和一个图像。图像和div的大小各不相同。包装器div将调整为较大包装器的大小。 它们都应该垂直对齐,如下所示: 我偶然发现了这个帖子: http://www.jakpsatweb.cz/css/css-vertical-center-solution.html 正如你在小提琴上看到的: http://jsfiddle.net

  • 问题内容: 如何使用flexbox在容器内水平和垂直居中div。在下面的示例中,我希望每个数字都彼此相邻(按行),并水平居中。 问题答案: 我认为您想要以下内容。 你的元素应该是块级(而非)如果你想要的高度和顶部/底部填充,以正常工作。 另外,在上,将宽度设置为而不是。 您的属性很好。 如果您希望垂直居中于视口中,请为和分配100%的高度,然后将页边距清零。 请注意,需要一个高度才能看到垂直对齐效

  • 如何使用FlexBox在容器内水平和垂直地居中div。在下面的例子中,我希望每一个数字在彼此下面(在行中),水平居中。 null null http://codepen.io/anon/pen/zlxbo

  • 我正在使用MPAndroidChart库。在条形图中,默认情况下,所有条形图都是垂直的(自下而上),如何水平显示?

  • 问题内容: 我陷入了涉及将水平行转换为垂直行的SQL查询(SQL Server) 以下是我的数据 转换后,该表应为 关于此的任何输入将有所帮助? 我正在尝试在分区上玩耍。但是它以某种方式不起作用!!! 谢谢 !!! 问题答案: 您可以使用: 或: