【问题标题】:CSS arrow positioningCSS 箭头定位
【发布时间】:2015-02-09 06:12:39
【问题描述】:

我有两种不同类型的div,每个都应该有一个箭头,指向它旁边的图像。但是,它看起来像这样:

http://jsfiddle.net/990h3wot/1/

如何使箭头移动到divs 的一侧,而不是像现在这样坐在它们里面?

【问题讨论】:

  • 使用左/右等位置值来移动箭头。

标签: html css position geometry positioning


【解决方案1】:

相对定位.home-link-left.home-link-right并设置:before:afterleftright属性:伪元素。

Fiddle

.home-link-left,
.home-link-right {
  vertical-align: middle;
  margin: auto;
  width: 35vmin;
  height: 12vmin;
  border: 0.7vmin outset #232323;
  background-color: #606060;
  background: -webkit-radial-gradient(#707070, #505050);
  background: -moz-radial-gradient(#707070, #505050);
  background: -o-radial-gradient(#707070, #505050);
  background: radial-gradient(#707070, #505050);
  color: white;
  position: relative;
}
.home-link-left {
  border-radius: 20px 0px 0px 20px;
  left: 0px;
  border-right: 0px solid transparent;
}
.home-link-right {
  border-radius: 0px 20px 20px 0px;
  right: 0px;
  border-left: 0px solid transparent;
}
.home-link-left:before,
.home-link-right:after {
  content: '';
  position: absolute;
  width: 0px;
  height: 0px;
  border-bottom: 6vmin solid transparent;
  border-top: 6vmin solid transparent;
  vertical-align: middle;
  display: block;
}
.home-link-container {
  width: 45vmin;
  height: 13vmin;
  margin: auto;
  vertical-align: middle;
}
.home-link-left:before {
  border-left: 4vmin solid red;
  right: -4vmin;
}
.home-link-right:after {
  border-right: 4vmin solid red;
  left: -4vmin;
}
.home-link-image {
  border: 0.7vmin outset #333333;
  vertical-align: middle;
  margin-top: -10%;
  margin: auto;
  width: 35vmin;
  height: 25vmin;
  border-radius: 20px;
}
<table id="home-table">
  <tr>
    <td>
      <div class="home-link-container">
        <div class="home-link-left">
          <a href="#"></a>
        </div>
      </div>
    </td>
    <td>
      <div class="home-link-image"></div>
    </td>
  </tr>
  <tr>
    <td>
      <div class="home-link-image"></div>
    </td>
    <td>
      <div class="home-link-container">
        <div class="home-link-right">
          <a href="#"></a>
        </div>
      </div>
    </td>
  </tr>
  <tr>
    <td>
      <div class="home-link-container">
        <div class="home-link-left">
          <a href="#"></a>
        </div>
      </div>
    </td>
    <td>
      <div class="home-link-image"></div>
    </td>
  </tr>
  <tr>
    <td>
      <div class="home-link-image"></div>
    </td>
    <td>
      <div class="home-link-container">
        <div class="home-link-right">
          <a href="#"></a>
        </div>
      </div>
    </td>
  </tr>
</table>

【讨论】:

    【解决方案2】:

    一定要给箭头父母,.home-link-left .home-link-rightposition:relative

    .home-link-left, .home-link-right{
    vertical-align:middle;
    margin:auto;
    width:35vmin;
    height:12vmin;
    border:0.7vmin outset #232323;
    background-color:#606060;
    background: -webkit-radial-gradient(#707070, #505050);
    background: -moz-radial-gradient(#707070, #505050);
    background: -o-radial-gradient(#707070, #505050);
    background: radial-gradient(#707070, #505050);
    color:white;
    position:relative;/*<- Position:relative;*/
    }
    

    并给伪元素箭头一个左或右的位置:

    .home-link-left:before{
    border-left:4vmin solid red;
    right:-4vmax;
    }
    .home-link-right:after{
    border-right:4vmin solid red;
       left:-4vmax; 
    }
    

    JSFiddle

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多