按钮的绝对位置居中但现在全宽

时间:2015-07-30 13:46:38

标签: javascript jquery html css

我之前在一个项目上已经解决了这个问题,但是我完全忘记了我是如何解决这个问题的,所以我想如果有人知道他们的头脑中有什么问题:)

我绝对在容器底部放置一个按钮,然后使用left:0和right:0使按钮居中但是它会使它全宽,任何想法如何防止这种情况?

小提琴模型:http://jsfiddle.net/1t6Ljkjg/



ul li img {
  width: 500px;
}
.ty-subcategories__item {
  position: relative;
  margin: 0;
  display: inline-block;
  width: 49%;
}
.ty-subcategories__item .logo-box {
  width: 58%;
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  text-align: center;
}
.ty-subcategories__item .logo-box.left .ty-btn,
.ty-subcategories__item .logo-box.right .ty-btn {
  font-size: 0.7rem;
  border: 2px solid #fff;
  color: #fff;
  text-transform: uppercase;
  background: #f14fa1;
  position: absolute;
  bottom: 20px;
  left: 0;
  right: 0;
}

<ul>
  <li class="ty-subcategories__item">
    <a href="http://2015.ambientlounge.com/interior/gold-class-bean-bags/butterfly-sofa-bean-bags/" class="ty-subcategories-block__a">
      <img class="ty-pict  ty-subcategories-img  " src="http://2015.ambientlounge.com/images/detailed/3/category-panel-butterfly.jpg?t=1437997789" alt="left" title="left">
      <div class="logo-box left"><span class="ty-btn ty-btn__primary">Shop Now</span>
      </div>
    </a>
  </li>
</ul>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

您可以考虑使用CSS转换来使按钮居中,而不是使用left:0right:0。例如,您的声明块可能会变为:

.ty-subcategories__item .logo-box.left .ty-btn,
.ty-subcategories__item .logo-box.right .ty-btn {
    font-size: 0.7rem;
    border: 2px solid #fff;
    color: #fff;
    text-transform: uppercase;
    background: #f14fa1;
    position: absolute;
    bottom: 20px;
    left: 50%;
    transform: translate(-50%, 0);
}

这是一个updated JSFiddle。希望这可以帮助!如果您有任何问题,请告诉我。

编辑:但是,如果您希望将其置于黑匣子中心(而不仅仅是按钮的父元素),则需要将父级的宽度更新为类似:

.ty-subcategories__item .logo-box {
    width: 161px;
}

(我假设黑盒子是方形的。)这是一个新的JSFiddle

EDIT 2 :为了使定心工作起作用,我们可以做一些数学运算:假设黑框是方形的,图像宽高比始终相同,我们可以计算框所占图像宽度的百分比,用:

  

520(图像高度)/ 1610(图像宽度)* 100%= 32.3%

因此,这是按钮父级所需的宽度。要避免文本中断到按钮中的多行,可以指定white-space属性。所以你的CSS可能会成为:

ul li img {
    width: 100%;
    height: 100%;
}
.ty-subcategories__item {
    position: relative;
    margin: 0;
    display: inline-block;
    width: 100%;
}
.ty-subcategories__item .logo-box {
    width: 32.3%;
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    text-align: center;
}
.ty-subcategories__item .logo-box.left .ty-btn,
.ty-subcategories__item .logo-box.right .ty-btn {
    font-size: 0.7rem;
    border: 2px solid #fff;
    color: #fff;
    text-transform: uppercase;
    background: #f14fa1;
    position: absolute;
    bottom: 20px;
    left: 50%;
    transform: translate(-50%, 0);
    white-space: nowrap;
}

这是另一个updated JSFiddle。如果这有帮助,请告诉我!