简体   繁体   English

我怎样才能横向居中3个div?

[英]How can I horizontally center 3 divs?

So I have 3 cards that I am going to put my projects inside, and I need them to be perfectly centered horizontally. 所以我有3张卡片,我将把我的项目放在里面,我需要它们完全水平居中。 I have tried many things but none have worked so far. 我尝试过很多东西,但到目前为止还没有。

Here is the code for the cards. 这是卡片的代码。

 .card { background: #fff; border-radius: 3px; display: inline-block; height: 300px; margin: 1rem; position: relative; width: 290px; overflow: hidden; opacity: 1; } .card .topImage { display: inline-flex; width: 100%; height: 220px; overflow: hidden; align-content: center; } .topImage { background-color: rgba(0, 0, 0, .3); } .card .topImage img { height: 220px; } .card .bottom { height: 80px; width: 100%; } .card .bottom p { text-align: left; height: 80px; width: 100%; box-sizing: border-box; margin: 0; padding: 0; padding-left: 20px; display: flex; align-items: center; text-decoration: none; color: #444; font-size: 18px; font-family: Roboto, sans-serif; } .card-1 { box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); transition: all 0.3s cubic-bezier(.25,.8,.25,1); } .card-1:hover { box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); cursor: pointer; } 
  <div class="card card-1"> <div class="topImage"> </div> <div class="bottom"> <p>Project 1</p> </div> </div> <div class="card card-1"> <div class="topImage"> </div> <div class="bottom"> <p>Project 2</p> </div> </div> <div class="card card-1"> <div class="topImage"> </div> <div class="bottom"> <p>Project 3</p> </div> </div> 

Just use flexbox. 只需使用flexbox。 Make a container for the cards and put display: flex; 为卡片制作一个容器并放置display:flex; on it and then justify-content: center to center them no matter the size of the new container div 在它上面然后证明内容:无论新容器div的大小如何,都将它们置于中心位置

  .card { background: #fff; border-radius: 3px; display: inline-block; height: 300px; margin: 1rem; position: relative; width: 290px; overflow: hidden; opacity: 1; } .card .topImage { display: inline-flex; width: 100%; height: 220px; overflow: hidden; align-content: center; } .topImage { background-color: rgba(0, 0, 0, .3); } .card .topImage img { height: 220px; } .card .bottom { height: 80px; width: 100%; } .card .bottom p { text-align: left; height: 80px; width: 100%; box-sizing: border-box; margin: 0; padding: 0; padding-left: 20px; display: flex; align-items: center; text-decoration: none; color: #444; font-size: 18px; font-family: Roboto, sans-serif; } .card-1 { box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); transition: all 0.3s cubic-bezier(.25,.8,.25,1); } .card-1:hover { box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); cursor: pointer; } .card-container { display: flex; justify-content: center; } 
 <div class="card-container"> <div class="card card-1"> <div class="topImage"> </div> <div class="bottom"> <p>Project 1</p> </div> </div> <div class="card card-1"> <div class="topImage"> </div> <div class="bottom"> <p>Project 2</p> </div> </div> <div class="card card-1"> <div class="topImage"> </div> <div class="bottom"> <p>Project 3</p> </div> </div> </div> 

Using flexbox this is easy. 使用flexbox这很容易。 On the element that contains your divs just add display: flex; 在包含div的元素上只需添加display: flex; and justify-content: center; justify-content: center; :

 .card { background: #fff; border-radius: 3px; display: inline-block; height: 300px; margin: 1rem; position: relative; width: 290px; overflow: hidden; opacity: 1; } .card .topImage { display: inline-flex; width: 100%; height: 220px; overflow: hidden; align-content: center; } .topImage { background-color: rgba(0, 0, 0, .3); } .card .topImage img { height: 220px; } .card .bottom { height: 80px; width: 100%; } .card .bottom p { text-align: left; height: 80px; width: 100%; box-sizing: border-box; margin: 0; padding: 0; padding-left: 20px; display: flex; align-items: center; text-decoration: none; color: #444; font-size: 18px; font-family: Roboto, sans-serif; } .card-1 { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); transition: all 0.3s cubic-bezier(.25, .8, .25, 1); } .card-1:hover { box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22); cursor: pointer; } body { display: flex; justify-content: center; } 
 <div class="card card-1"> <div class="topImage"> </div> <div class="bottom"> <p>Project 1</p> </div> </div> <div class="card card-1"> <div class="topImage"> </div> <div class="bottom"> <p>Project 2</p> </div> </div> <div class="card card-1"> <div class="topImage"> </div> <div class="bottom"> <p>Project 3</p> </div> </div> 

Create a parent with text-align: center 使用text-align: center创建父text-align: center

 .card { background: #fff; border-radius: 3px; display: inline-block; height: 300px; margin: 1rem; position: relative; width: 290px; overflow: hidden; opacity: 1; } .card .topImage { display: inline-flex; width: 100%; height: 220px; overflow: hidden; align-content: center; } .topImage { background-color: rgba(0, 0, 0, .3); } .card .topImage img { height: 220px; } .card .bottom { height: 80px; width: 100%; } .card .bottom p { text-align: left; height: 80px; width: 100%; box-sizing: border-box; margin: 0; padding: 0; padding-left: 20px; display: flex; align-items: center; text-decoration: none; color: #444; font-size: 18px; font-family: Roboto, sans-serif; } .card-1 { box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); transition: all 0.3s cubic-bezier(.25,.8,.25,1); } .card-1:hover { box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); cursor: pointer; } .parent { text-align: center; } 
 <div class="parent"> <div class="card card-1"> <div class="topImage"> </div> <div class="bottom"> <p>Project 1</p> </div> </div> <div class="card card-1"> <div class="topImage"> </div> <div class="bottom"> <p>Project 2</p> </div> </div> <div class="card card-1"> <div class="topImage"> </div> <div class="bottom"> <p>Project 3</p> </div> </div> </div> 

Use translateX and left rules to position them. 使用translateXleft规则来定位它们。

 .card { background: #fff; border-radius: 3px; display: inline-block; height: 300px; margin: 1rem; position: relative; width: 290px; overflow: hidden; opacity: 1; left: 50%; -webkit-transform: translateX(-50%); transform: translateX(-50%); } .card .topImage { display: inline-flex; width: 100%; height: 220px; overflow: hidden; align-content: center; } .topImage { background-color: rgba(0, 0, 0, .3); } .card .topImage img { height: 220px; } .card .bottom { height: 80px; width: 100%; } .card .bottom p { text-align: left; height: 80px; width: 100%; box-sizing: border-box; margin: 0; padding: 0; padding-left: 20px; display: flex; align-items: center; text-decoration: none; color: #444; font-size: 18px; font-family: Roboto, sans-serif; } .card-1 { box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); transition: all 0.3s cubic-bezier(.25,.8,.25,1); } .card-1:hover { box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); cursor: pointer; } 
  <div class="card card-1"> <div class="topImage"> </div> <div class="bottom"> <p>Project 1</p> </div> </div> <div class="card card-1"> <div class="topImage"> </div> <div class="bottom"> <p>Project 2</p> </div> </div> <div class="card card-1"> <div class="topImage"> </div> <div class="bottom"> <p>Project 3</p> </div> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM