CSS在框的每一侧放置箭头(div)

时间:2015-06-11 14:49:48

标签: html css css-shapes

需要帮助,了解如何在指向外侧的方框的每一侧放置箭头。

我在另一个堆栈问题上看到了箭头的框和基本CSS。

需要帮助在该框中创建四个箭头

我是一名java开发人员,所以这不是我的一杯茶

专栏:

#myBox {
  width: 150px;
  height: 150px;
  background-color: grey;
  border: 1px solid black;
}
/*Chevron*/
.Chevron {
  position: relative;
  display: block;
  height: 50px;
  /*height should be double border*/
}
.Chevron:before,
.Chevron:after {
  position: absolute;
  display: block;
  content: "";
  border: 25px solid transparent;
  /*adjust size*/
}
/*Change four 'top' values below to rotate (top/right/bottom/left)*/

.Chevron:before {
  top: 0;
  border-top-color: #b00;
  /*Chevron Color*/
}
.Chevron:after {
  top: -50px;
  /*adjust thickness*/
  border-top-color: #fff;
  /*Match background colour*/
}
<div id="myBox"></div>





<i class="Chevron"></i>

3 个答案:

答案 0 :(得分:3)

由于您希望与这些形状进行交互,因此最好采用不同的方法制作三角形,而不是边框​​黑客。

&#13;
&#13;
.box {
  height: 150px;
  width: 150px;
  background: lightgray;
  position: relative;
}
.wrap {
  position: absolute;
  top: 0;
  left: 25%;
  height: 25%;
  width: 50%;
  overflow: hidden;
}
.touch {
  position: absolute;
  top: 0;
  left: 50%;
  height: 200%;
  width: 200%;
  transform: rotate(45deg);
  transform-origin: top left;
  background: gray;
  cursor: pointer;
}
.wrap:nth-child(2) {
  transform: rotate(90deg);
  transform-origin: top left;
  top: 25%;
  left: 100%;
}
.wrap:nth-child(3) {
  transform: rotate(180deg);
  transform-origin: top left;
  top: 100%;
  left: 75%;
}
.wrap:nth-child(4) {
  transform: rotate(-90deg);
  transform-origin: top left;
  top: 75%;
  left: 0;
}
.touch:hover {
  background: tomato;
}
&#13;
<div class="box">
  <span class="wrap"><span class="touch"></span></span>
  <span class="wrap"><span class="touch"></span></span>
  <span class="wrap"><span class="touch"></span></span>
  <span class="wrap"><span class="touch"></span></span>

</div>
&#13;
&#13;
&#13;

我使用了nth-child来正确定位箭头。我还需要使用包装器div like in this answer,因为边界黑客不会在命中测试中工作。

答案 1 :(得分:1)

使用Css triangle。你需要这样的东西吗?

enter image description here

对于每一方,使用下面的代码制作一个三角形:

width: 0;
height: 0;
border-style: solid;
border-width: 100px 100px 100px 0;
border-color: transparent #007bff transparent transparent;

这是working demo

答案 2 :(得分:1)

我已经设法使用CSS变换和定位来完成3个元素。这是你想要实现的目标吗?

&#13;
&#13;
.container {
  width: 100px;
  height: 100px;
  background: grey;
  position: relative;
}

.container .triangles {
  width: 70px;
  height: 70px;
  background: yellow;
  transform: rotate(45deg);
  position: absolute;
  top: 15px;
  left: 15px;
}

.container .triangles .box {
  width: 50px; 
  height: 50px;
  background: blue;
  transform: rotate(-45deg);
  position: absolute;
  top: 10px;
  left: 10px;
  color: white;
}
&#13;
<div class="container">
  <div class="triangles">
    <div class="box">
      text
    </div>
  </div>
</div>
&#13;
&#13;
&#13;