将一个固定的“箭头”元素居中于另一固定的“圆形”元素内

时间:2019-03-17 12:43:11

标签: html css position

我在红色圆圈内居中箭头时遇到麻烦。 如何将一个固定元素居中放置在另一个固定元素内?

JsFiddle:https://jsfiddle.net/sebastian3495/xtj9cga2/4/

代码

html, body {
  height: 1000px;
  width: 100%;
}
#a {
  width: 100%;
  height: 100%;
  border: 1px solid black;
  position:relative;
}
#wrapper {
  position: absolute;
  top: 50vh;
}
#b {
  width: 100px;
  height: 100px;
  border-radius: 50%;
  background: red;
  position: fixed;
}
#c {
  border: solid black;
  border-width: 0 3px 3px 0;
  position: fixed;
  width: 50px;
  height: 50px;
  transform: rotate(-45deg);
}
<div id="a">
  <div id="wrapper">
    <i id="b"></i>
    <i id="c"></i>
  </div>
</div>

2 个答案:

答案 0 :(得分:1)

您可以像下面这样简单地编写代码,然后可以轻松地使箭头居中并调整尺寸:

.arrow {
  background:red;
  width:100px;
  height:100px;
  border-radius:50%;
  position:fixed;
  top:100px;
  left:50px;
}
.arrow::before {
  content:"";
  position:absolute;
  top:50%;
  left:50%;
  width:50%;
  height:50%;
  border-top:3px solid;
  border-right:3px solid;
  /*75% instead of 50% since we need to center half the shape so 50% then 25%*/
  transform:translate(-75%,-50%) rotate(45deg);
  
}
<div class="arrow"></div>

您仍然可以在不使用伪元素的情况下进行更多简化:

.arrow {
  width:100px;
  height:100px;
  padding:35px 35px 0 0;
  border-radius:50%;
  position:fixed;
  top:100px;
  left:50px;
  background:
    linear-gradient(#000,#000) top right/77% 3px,
    linear-gradient(#000,#000) top right/3px 77%,
    red;
  background-repeat:no-repeat;
  background-origin:content-box;
  transform:rotate(45deg);
  box-sizing:border-box;
}
<div class="arrow"></div>

答案 1 :(得分:0)

使用id =“ c”调整i标签的顶部和左侧位置

#c {
    border: solid black;
    border-width: 0 3px 3px 0;
    position: fixed;
    width: 50px;
    height: 50px;
    left:3%;
    top:60vh;
    transform: rotate(-45deg);
}