【问题标题】:Absolute position of button centered but now full width按钮的绝对位置居中但现在全宽
【发布时间】:2015-07-30 13:46:37
【问题描述】:

我之前在以前的项目中解决过这个问题,但完全忘记了我是如何解决的,所以我想看看是否有人知道他们的头顶:)

我将一个按钮绝对定位在容器的底部,并使用 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>

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    除了使用left:0right:0,您还可以考虑使用 CSS 转换来使您的按钮居中。例如,您的声明块可能会变成:

    .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

    编辑 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。让我知道这是否有帮助!

    【讨论】:

    • 按钮不居中。
    • 它以它的父元素为中心。你的意思是在黑匣子里?那不是按钮的父级。
    • 某种作品,似乎某些按钮文本因某种原因中断为 2 行......如果我想要右边的按钮,我该如何实现它?正如我看到一些左右按钮。我将 CSS 拆分为使用 logo-box.left 和 logo-box.right
    • 我在宽度上使用了 % 因为需要响应式顺便说一句,所以需要避免使用固定宽度,除非您知道更好的方法来使其响应式。
    • 对不起,试试这个,我让图像响应:jsfiddle.net/1t6Ljkjg/7 如果你调整大小,你会明白我的意思。需要在那个黑盒子内的任何中心。并且取决于设置为左还是右取决于按钮容器的位置。感谢您的所有帮助!
    猜你喜欢
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    相关资源
    最近更新 更多