javascript - 如何使 html 卡片对齐到行和列中?

标签 javascript html css

我在这个链接找到了我想用于网站的卡片设计:https://codepen.io/virgilpana/pen/RNYQwB

当我将 html、css 和 js 添加到我的网站时,其中多个卡片需要在行和列中彼此相邻对齐,这些卡片似乎只是堆叠在一起。如何编辑代码以使它们在行和列中对齐?

这里是卡片的相关代码:

#make-3D-space {
  position: relative;
  perspective: 800px;
  width: 340px;
  height: 500px;
  transform-style: preserve-3d;
  transition: transform 5s;
  position: absolute;
  top: 80px;
  left: 50%;
  margin-left: -167px;
}

#product-front,
#product-back {
  width: 335px;
  height: 500px;
  background: #fff;
  position: absolute;
  left: -5px;
  top: -5px;
  -webkit-transition: all 100ms ease-out;
  -moz-transition: all 100ms ease-out;
  -o-transition: all 100ms ease-out;
  transition: all 100ms ease-out;
}

#product-back {
  display: none;
  transform: rotateY( 180deg);
}

#product-card.animate #product-back,
#product-card.animate #product-front {
  top: 0px;
  left: 0px;
  -webkit-transition: all 100ms ease-out;
  -moz-transition: all 100ms ease-out;
  -o-transition: all 100ms ease-out;
  transition: all 100ms ease-out;
}

#product-card {
  width: 325px;
  height: 490px;
  position: absolute;
  top: 10px;
  left: 10px;
  overflow: hidden;
  transform-style: preserve-3d;
  -webkit-transition: 100ms ease-out;
  -moz-transition: 100ms ease-out;
  -o-transition: 100ms ease-out;
  transition: 100ms ease-out;
}

div#product-card.flip-10 {
  -webkit-transform: rotateY( -10deg);
  -moz-transform: rotateY( -10deg);
  -o-transform: rotateY( -10deg);
  transform: rotateY( -10deg);
  transition: 50ms ease-out;
}

div#product-card.flip90 {
  -webkit-transform: rotateY( 90deg);
  -moz-transform: rotateY( 90deg);
  -o-transform: rotateY( 90deg);
  transform: rotateY( 90deg);
  transition: 100ms ease-in;
}

div#product-card.flip190 {
  -webkit-transform: rotateY( 190deg);
  -moz-transform: rotateY( 190deg);
  -o-transform: rotateY( 190deg);
  transform: rotateY( 190deg);
  transition: 100ms ease-out;
}

div#product-card.flip180 {
  -webkit-transform: rotateY( 180deg);
  -moz-transform: rotateY( 180deg);
  -o-transform: rotateY( 180deg);
  transform: rotateY( 180deg);
  transition: 150ms ease-out;
}

#product-card.animate {
  top: 5px;
  left: 5px;
  width: 335px;
  height: 500px;
  box-shadow: 0px 13px 21px -5px rgba(0, 0, 0, 0.3);
  -webkit-transition: 100ms ease-out;
  -moz-transition: 100ms ease-out;
  -o-transition: 100ms ease-out;
  transition: 100ms ease-out;
}

.stats-container {
  background: #fff;
  position: absolute;
  top: 386px;
  left: 0;
  width: 265px;
  height: 300px;
  padding: 27px 35px 35px;
  -webkit-transition: all 200ms ease-out;
  -moz-transition: all 200ms ease-out;
  -o-transition: all 200ms ease-out;
  transition: all 200ms ease-out;
}

#product-card.animate .stats-container {
  top: 272px;
  -webkit-transition: all 200ms ease-out;
  -moz-transition: all 200ms ease-out;
  -o-transition: all 200ms ease-out;
  transition: all 200ms ease-out;
}

.stats-container .product_name {
  font-size: 22px;
  color: #393c45;
}

.stats-container p {
  font-size: 16px;
  color: #b1b1b3;
  padding: 2px 0 20px 0;
}

.stats-container .product_price {
  float: right;
  color: #48cfad;
  font-size: 22px;
  font-weight: 600;
}

.image_overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: #48daa1;
  opacity: 0;
}

#product-card.animate .image_overlay {
  opacity: 0.7;
  -webkit-transition: all 200ms ease-out;
  -moz-transition: all 200ms ease-out;
  -o-transition: all 200ms ease-out;
  transition: all 200ms ease-out;
}

.product-options {
  padding: 2px 0 0;
}

.product-options strong {
  font-weight: 700;
  color: #393c45;
  font-size: 14px;
}

.product-options span {
  color: #969699;
  font-size: 14px;
  display: block;
  margin-bottom: 8px;
}

#view_details {
  position: absolute;
  top: 112px;
  left: 50%;
  margin-left: -85px;
  border: 2px solid #fff;
  color: #fff;
  font-size: 19px;
  text-align: center;
  text-transform: uppercase;
  font-weight: 700;
  padding: 10px 0;
  width: 172px;
  opacity: 0;
  -webkit-transition: all 200ms ease-out;
  -moz-transition: all 200ms ease-out;
  -o-transition: all 200ms ease-out;
  transition: all 200ms ease-out;
}

#view_details:hover {
  background: #fff;
  color: #48cfad;
  cursor: pointer;
}

#product-card.animate #view_details {
  opacity: 1;
  width: 152px;
  font-size: 15px;
  margin-left: -75px;
  top: 115px;
  -webkit-transition: all 200ms ease-out;
  -moz-transition: all 200ms ease-out;
  -o-transition: all 200ms ease-out;
  transition: all 200ms ease-out;
}

div.colors div {
  margin-top: 3px;
  width: 15px;
  height: 15px;
  margin-right: 5px;
  float: left;
}

div.colors div span {
  width: 15px;
  height: 15px;
  display: block;
  border-radius: 50%;
}

div.colors div span:hover {
  width: 17px;
  height: 17px;
  margin: -1px 0 0 -1px;
}

div.c-blue span {
  background: #6e8cd5;
}

div.c-red span {
  background: #f56060;
}

div.c-green span {
  background: #44c28d;
}

div.c-white span {
  background: #fff;
  width: 14px;
  height: 14px;
  border: 1px solid #e8e9eb;
}

div.shadow {
  width: 335px;
  height: 520px;
  opacity: 0;
  position: absolute;
  top: 0;
  left: 0;
  z-index: 3;
  display: none;
  background: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.2));
  background: -o-linear-gradient(right, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.2));
  background: -moz-linear-gradient(right, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.2));
  background: linear-gradient(to right, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.2));
}
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,600,700' rel='stylesheet' type='text/css'>

<a id="view-code" href="https://codepen.io/virgilpana/pen/RNYQwB" target="_blank">VIEW CODE</a>

<div id="make-3D-space">
  <div id="product-card">
    <div id="product-front">
      <div class="shadow"></div>
      <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/245657/t-shirt.png" alt="" />
      <div class="image_overlay"></div>
      <div id="view_details">View details</div>
      <div class="stats">
        <div class="stats-container">
          <span class="product_price">$39</span>
          <span class="product_name">Adidas Originals</span>
          <p>Men's running shirt</p>

          <div class="product-options">
            <strong>SIZES</strong>
            <span>XS, S, M, L, XL, XXL</span>
            <strong>COLORS</strong>
            <div class="colors">
              <div class="c-blue"><span></span></div>
              <div class="c-red"><span></span></div>
              <div class="c-white"><span></span></div>
              <div class="c-green"><span></span></div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

最佳答案

multiple of these cards need to be aligned beside one another in rows and columns

我本来打算写一个 CSS Grid 的例子,但是如果你有未知数量的卡片要在简单的行和列中对齐,CSS Flexbox 是这种布局的完美工具。

工作示例:

body {
background-color: rgb(63, 63, 255);
}

.card-container {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
max-width: 496px;
margin: 0 auto;
padding: 9px;
background-color: rgb(95, 95, 255);
}

.card {
width: 100px;
height: 140px;
margin: 12px;
background-color: rgb(255, 255, 255);
box-shadow: 0 0 12px rgb(63, 63, 63);
}
<div class="card-container">
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
</div>

关于javascript - 如何使 html 卡片对齐到行和列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50433930/

相关文章:

CSS 线性渐变透明度仅在 Safari 中行为不当

css - 为什么 lessc 将文件编码为 UCS-2 Little Endian?

html - 固定高度重叠粘性页脚

css - 当 div 可滚动时更改样式

javascript - 如何让 Jquery/Javascript 打字机识别空白字符?

javascript - 如何在 javascript 中创建动态变量?是否可以?

javascript - 为什么 polymer 预处理是我的 CSS?

javascript - 停止在添加另一个选项卡的 onsubmit 函数上进行重定向

javascript - 在 Controller 中获取 ngModel 值 - AngularJS?

javascript - 将变量从 ascx 传递到 javascript 时出现问题