旋转和对齐div

时间:2018-01-19 06:49:46

标签: html css rotation alignment

enter image description here

我有一系列div水平对齐,以便它们的顶边接触水平线。然后,对于每个水平div,我想在上面的另一个div,旋转90度,使其左边缘与其下方的框的中心对齐,但是连接到相同的水平线。

甚至可以这样做,任何人都可以告诉我如何或指出我正确的方向?!

2 个答案:

答案 0 :(得分:0)

柔性,相对定位和绝对定位的组合可以解决这个问题:

* { margin: 0; padding: 0; box-sizing: border-box; }
body {
  padding-top: 5em;
}
.line {
  height: 1px;
  border-top: 1px solid black;
  margin: 0;
}
.blocks {
  display: flex;
  justify-content: center;
  align-items: flex-start;
}
.h {
  border: 1px solid black;
  position: relative;
}
.v {
  border: 1px solid black;
  position: absolute;
  transform-origin: 0 0;
  transform: rotate(-90deg);
  left: 50%;
  margin-left: -.75em;
  height: 1.5em;
}
  
<div class="line"></div>
<div class="blocks">
  <div class="h">
    <div class="v">fruits</div>
    apple<br />
    banana
  </div>
  <div class="h">
    <div class="v">carrot</div>
    parsnip<br />
    vegetables
  </div>
</div>

答案 1 :(得分:0)

只需使用flexbox,就可以在没有绝对定位的情况下完成。这是一个例子:https://codepen.io/palash/pen/OzrpKJ

 <div class='boxes'>
  <div class='vertical'>
    <div class="box">fruits</div>
    <div class="box">carrot</div>
  </div>
  <div class="line"></div>
  <div class='horizontal'>
    <div class="box">
      apple
      banana
    </div>
    <div class="box">
      parsnip
      vegetables
    </div>
  </div>
</div>

CSS:

.boxes {
  margin-top: 20px;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.line {
  height: 1px;
  width: 100%;
  background: black;
  margin: 0;
}

.box {
  border: 1px solid black;
}
.horizontal, .vertical {
  display: flex;
  justify-content: center;
  align-items: flex-start;
}
.vertical {
  transform: rotate(-90deg);
  flex-direction: column;
  .box {
    border-left: 0;
    &:first-child {
      transform: translateY(-20px);
    }
  }
}

.horizontal {
   .box {
    border-top: 0;
  }
}