2017-02-14 92 views
1

我已经实现了我想要的结果。但这不是正确的做法。例如,如果我的父容器曾经改变宽度,这种黑客行为是行不通的。不过,我只是为了在屏幕上试着解决浏览器中的正确方法。以相对父容器内的绝对按钮为中心的正确方法

See screenshot here

HTML

<div class="container"> 
       <div class="row"> 
        <div class="col-md-4"> 
         <div class="product-wrapper"> 
          <div class="product-card"> 
           <a href="lathes-single.html" class="product-img-wrapper"><img src="../assets/img/46-455.jpg" alt=""></a> 
           <h4> 46-460 12 1/2 in. Variable Speed MIDI-LATHE® </h4> 
           <p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.</p> 
           <a href="lathes-single.html" class="btn btn-lg btn-primary">View Product</a> 
          </div> 
         </div> 
        </div> 
       </div> 
</div> 

对不起我的古怪的间距。出于某种原因粘贴了崇高文字3,一旦它来到这里,所有东西都被顶起来。

相关CSS

.product-img-wrapper { 
    text-align: center; 
} 

.product-img-wrapper img { 
    width: 200px; 
    height: 200px; 
} 

.product-wrapper { 
    position: relative; 
    margin: 50px 0; 
} 

.product-card { 
    position: relative; 
    max-width: 330px; 
    height: 450px; 
    border: 1px solid #eee; 
    margin: 25px auto 0 auto; 
    text-align: center; 
    padding-left: 20px; 
    padding-right: 20px; 
    box-shadow: 7px 7px 5px #838485; 
} 

.product-card .btn { 
    position: absolute; 
    min-width: 200px; 
    bottom: 15px; 
    left: 60px; 
} 
+0

为什么你需要这是绝对定位? –

+0

不同的产品标题链接和简短的产品说明并不总是具有相同数量的字符。如果我只是在.btn元素上做一个顶部边距。并非所有按钮都会排列在布局中。如果我绝对定位按钮,不管副本和标题的长度如何,它们都不会移动。 –

+0

然后绝对放置按钮的容器,然后将'text-align:center;'应用到该容器。 –

回答

0

正如我说我的意见,做一个包装器按钮,position:absolute;是到了谷底。然后,只要您从按钮中移除样式,它就会自行居中,因为包装上有text-align:center;

.product-img-wrapper { 
 
    text-align: center; 
 
} 
 

 
.product-img-wrapper img { 
 
    width: 200px; 
 
    height: 200px; 
 
} 
 

 
.product-wrapper { 
 
    position: relative; 
 
    margin: 50px 0; 
 
} 
 

 
.product-card { 
 
    position: relative; 
 
    max-width: 330px; 
 
    height: 450px; 
 
    border: 1px solid #eee; 
 
    margin: 25px auto 0 auto; 
 
    text-align: center; 
 
    padding-left: 20px; 
 
    padding-right: 20px; 
 
    box-shadow: 7px 7px 5px #838485; 
 
} 
 

 
.product-card .card-bottom { 
 
    position: absolute; 
 
    bottom: 15px; 
 
    width:100%; 
 
    left:0; 
 
}
<div class="container"> 
 
       <div class="row"> 
 
        <div class="col-md-4"> 
 
         <div class="product-wrapper"> 
 
          <div class="product-card"> 
 
           <a href="lathes-single.html" class="product-img-wrapper"><img src="../assets/img/46-455.jpg" alt=""></a> 
 
           <h4> 46-460 12 1/2 in. Variable Speed MIDI-LATHE® </h4> 
 
           <p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.</p> 
 
           <div class="card-bottom"><a href="lathes-single.html" class="btn btn-lg btn-primary">View Product</a></div> 
 
          </div> 
 
         </div> 
 
        </div> 
 
       </div> 
 
</div>

+0

工作。那是我除了宽度之外的确切代码:100%?这是如何影响其容器内的中心定位? –

+0

它使容器占据卡的整个宽度,然后里面的任何东西都将是容器和卡的中心,因为它们的宽度相同。不要忘记标记为已接受的答案! –

0

您.btn改用此。这将使你的btn水平居中。 css3: translateX to center element horizontally

left: 50%; 
-webkit-transform: translateX(-50%); 
-moz-transform: translateX(-50%); 
transform: translateX(-50%); 
+1

我宁可不使用其他黑客来解决这个问题。 CSS转换不应该成为定位问题的方法。尽管它确实达到了结果。感谢您的输入! –

+0

您还可以使用left:50%和margin-left:-100px;以您的.btn为中心 – Robert