如何使html卡对齐行和列?

时间:2018-05-20 10:36:12

标签: javascript html css

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

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

以下是该卡的相关代码:

showDialog
public void showDialog(String msg, Context context) {
    pDialog = new ProgressDialog(context);
    pDialog.setMessage(msg);
    pDialog.show();
}

2 个答案:

答案 0 :(得分:1)

  

这些卡中的多个需要在行中彼此对齐   和列

我打算写一个 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>

答案 1 :(得分:0)

我已将您的卡片包装成包装.card-wrapper

.card-wrapper {
  display: flex;
  flex-wrap: wrap;
}

并从该ID #make-3D-space

中禁用这些样式
/*     position:absolute;    
    top:80px;
    left:50%;    
/*     margin-left:-167px; */

$(document).ready(function() {

  // Lift card and show stats on Mouseover
  $('.product-card').hover(function() {
    $(this).addClass('animate');
    $('div.carouselNext, div.carouselPrev').addClass('visible');
  }, function() {
    $(this).removeClass('animate');
    $('div.carouselNext, div.carouselPrev').removeClass('visible');
  });

  // Flip card to the back side
  $('.view_details').click(function() {
    $('div.carouselNext, div.carouselPrev').removeClass('visible');
    $('.product-card').addClass('flip-10');
    setTimeout(function() {
      $('.product-card').removeClass('flip-10').addClass('flip90').find('div.shadow').show().fadeTo(80, 1, function() {
        $('.product-front, .product-front div.shadow').hide();
      });
    }, 50);

    setTimeout(function() {
      $('.product-card').removeClass('flip90').addClass('flip190');
      $('.product-back').show().find('div.shadow').show().fadeTo(90, 0);
      setTimeout(function() {
        $('.product-card').removeClass('flip190').addClass('flip180').find('div.shadow').hide();
        setTimeout(function() {
          $('.product-card').css('transition', '100ms ease-out');
          $('.cx, .cy').addClass('s1');
          setTimeout(function() {
            $('.cx, .cy').addClass('s2');
          }, 100);
          setTimeout(function() {
            $('.cx, .cy').addClass('s3');
          }, 200);
          $('div.carouselNext, div.carouselPrev').addClass('visible');
        }, 100);
      }, 100);
    }, 150);
  });

  // Flip card back to the front side
  $('.flip-back').click(function() {

    $('.product-card').removeClass('flip180').addClass('flip190');
    setTimeout(function() {
      $('.product-card').removeClass('flip190').addClass('flip90');

      $('.product-back div.shadow').css('opacity', 0).fadeTo(100, 1, function() {
        $('.product-back, .product-back div.shadow').hide();
        $('.product-front, .product-front div.shadow').show();
      });
    }, 50);

    setTimeout(function() {
      $('.product-card').removeClass('flip90').addClass('flip-10');
      $('.product-front div.shadow').show().fadeTo(100, 0);
      setTimeout(function() {
        $('.product-front div.shadow').hide();
        $('.product-card').removeClass('flip-10').css('transition', '100ms ease-out');
        $('.cx, .cy').removeClass('s1 s2 s3');
      }, 100);
    }, 150);

  });


  /* ----  Image Gallery Carousel   ---- */

  var carousel = $('.carousel ul');
  var carouselSlideWidth = 335;
  var carouselWidth = 0;
  var isAnimating = false;

  // building the width of the casousel
  $('.carousel li').each(function() {
    carouselWidth += carouselSlideWidth;
  });
  $(carousel).css('width', carouselWidth);

  // Load Next Image
  $('div.carouselNext').on('click', function() {
    var currentLeft = Math.abs(parseInt($(carousel).css("left")));
    var newLeft = currentLeft + carouselSlideWidth;
    if (newLeft == carouselWidth || isAnimating === true) {
      return;
    }
    $('.carousel ul').css({
      'left': "-" + newLeft + "px",
      "transition": "300ms ease-out"
    });
    isAnimating = true;
    setTimeout(function() {
      isAnimating = false;
    }, 300);
  });

  // Load Previous Image
  $('div.carouselPrev').on('click', function() {
    var currentLeft = Math.abs(parseInt($(carousel).css("left")));
    var newLeft = currentLeft - carouselSlideWidth;
    if (newLeft < 0 || isAnimating === true) {
      return;
    }
    $('.carousel ul').css({
      'left': "-" + newLeft + "px",
      "transition": "300ms ease-out"
    });
    isAnimating = true;
    setTimeout(function() {
      isAnimating = false;
    }, 300);
  });
});
/* Generals resets and unimportant stuff */

* {
  margin: 0px;
  padding: 0px;
}

body {
  background: #eaebec;
  font-family: "Open Sans", sans-serif;
}

.card-wrapper {
  display: flex;
  flex-wrap: wrap;
}

#view-code {
  color: #48cfad;
  font-size: 14px;
  text-transform: uppercase;
  font-weight: 700;
  text-decoration: none;
  position: absolute;
  top: 640px;
  left: 50%;
  margin-left: -35px;
}

#view-code:hover {
  color: #34c29e;
}


/* --- Product Card ---- */

#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));
}

.product-back div.shadow {
  z-index: 10;
  opacity: 1;
  background: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.1));
  background: -o-linear-gradient(right, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.1));
  background: -moz-linear-gradient(right, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.1));
  background: linear-gradient(to right, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.1));
}

.flip-back {
  position: absolute;
  top: 20px;
  right: 20px;
  width: 30px;
  height: 30px;
  cursor: pointer;
}

.cx,
.cy {
  background: #d2d5dc;
  position: absolute;
  width: 0px;
  top: 15px;
  right: 15px;
  height: 3px;
  -webkit-transition: all 250ms ease-in-out;
  -moz-transition: all 250ms ease-in-out;
  -ms-transition: all 250ms ease-in-out;
  -o-transition: all 250ms ease-in-out;
  transition: all 250ms ease-in-out;
}

.flip-back:hover .cx,
.flip-back:hover .cy {
  background: #979ca7;
  -webkit-transition: all 250ms ease-in-out;
  -moz-transition: all 250ms ease-in-out;
  -ms-transition: all 250ms ease-in-out;
  -o-transition: all 250ms ease-in-out;
  transition: all 250ms ease-in-out;
}

.cx.s1,
.cy.s1 {
  right: 0;
  width: 30px;
  -webkit-transition: all 100ms ease-out;
  -moz-transition: all 100ms ease-out;
  -ms-transition: all 100ms ease-out;
  -o-transition: all 100ms ease-out;
  transition: all 100ms ease-out;
}

.cy.s2 {
  -ms-transform: rotate(50deg);
  -webkit-transform: rotate(50deg);
  transform: rotate(50deg);
  -webkit-transition: all 100ms ease-out;
  -moz-transition: all 100ms ease-out;
  -ms-transition: all 100ms ease-out;
  -o-transition: all 100ms ease-out;
  transition: all 100ms ease-out;
}

.cy.s3 {
  -ms-transform: rotate(45deg);
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
  -webkit-transition: all 100ms ease-out;
  -moz-transition: all 100ms ease-out;
  -ms-transition: all 100ms ease-out;
  -o-transition: all 100ms ease-out;
  transition: all 100ms ease-out;
}

.cx.s1 {
  right: 0;
  width: 30px;
  -webkit-transition: all 100ms ease-out;
  -moz-transition: all 100ms ease-out;
  -ms-transition: all 100ms ease-out;
  -o-transition: all 100ms ease-out;
  transition: all 100ms ease-out;
}

.cx.s2 {
  -ms-transform: rotate(140deg);
  -webkit-transform: rotate(140deg);
  transform: rotate(140deg);
  -webkit-transition: all 100ms ease-out;
  -moz-transition: all 100ms ease-out;
  -ms-transition: all 100ease-out;
  -o-transition: all 100ms ease-out;
  transition: all 100ms ease-out;
}

.cx.s3 {
  -ms-transform: rotate(135deg);
  -webkit-transform: rotate(135deg);
  transform: rotate(135deg);
  -webkit-transition: all 100ease-out;
  -moz-transition: all 100ms ease-out;
  -ms-transition: all 100ms ease-out;
  -o-transition: all 100ms ease-out;
  transition: all 100ms ease-out;
}

.carousel {
  width: 335px;
  height: 500px;
  overflow: hidden;
  position: relative;
}

.carousel ul {
  position: absolute;
  top: 0;
  left: 0;
}

.carousel li {
  width: 335px;
  height: 500px;
  float: left;
  overflow: hidden;
}

.arrows-perspective {
  width: 335px;
  height: 55px;
  position: absolute;
  top: 218px;
  transform-style: preserve-3d;
  transition: transform 5s;
  perspective: 335px;
}

.carouselPrev,
.carouselNext {
  width: 50px;
  height: 55px;
  background: #ccc;
  position: absolute;
  top: 0;
  transition: all 200ms ease-out;
  opacity: 0.9;
  cursor: pointer;
}

.carouselNext {
  top: 0;
  right: -26px;
  -webkit-transform: rotateY( -117deg);
  -moz-transform: rotateY( -117deg);
  -o-transform: rotateY( -117deg);
  transform: rotateY( -117deg);
  transition: all 200ms ease-out;
}

.carouselNext.visible {
  right: 0;
  opacity: 0.8;
  background: #efefef;
  -webkit-transform: rotateY( 0deg);
  -moz-transform: rotateY( 0deg);
  -o-transform: rotateY( 0deg);
  transform: rotateY( 0deg);
  transition: all 200ms ease-out;
}

.carouselPrev {
  left: -26px;
  top: 0;
  -webkit-transform: rotateY( 117deg);
  -moz-transform: rotateY( 117deg);
  -o-transform: rotateY( 117deg);
  transform: rotateY( 117deg);
  transition: all 200ms ease-out;
}

.carouselPrev.visible {
  left: 0;
  opacity: 0.8;
  background: #eee;
  -webkit-transform: rotateY( 0deg);
  -moz-transform: rotateY( 0deg);
  -o-transform: rotateY( 0deg);
  transform: rotateY( 0deg);
  transition: all 200ms ease-out;
}

.carousel .x,
.carousel .y {
  height: 2px;
  width: 15px;
  background: #48cfad;
  position: absolute;
  top: 31px;
  left: 17px;
  -ms-transform: rotate(45deg);
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}

.carousel .x {
  -ms-transform: rotate(135deg);
  -webkit-transform: rotate(135deg);
  transform: rotate(135deg);
  top: 21px;
}

.carousel .carouselNext .x {
  -ms-transform: rotate(45deg);
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}

.carousel .carouselNext .y {
  -ms-transform: rotate(135deg);
  -webkit-transform: rotate(135deg);
  transform: rotate(135deg);
}
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,600,700' rel='stylesheet' type='text/css'>

<div class="card-wrapper">
  
  <div id="make-3D-space">
    <div class="product-card">
        <div class="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 class="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 class="product-back">
	        <div class="shadow"></div>
            <div class="carousel">
                <ul>
                    <li><img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/245657/t-shirt-large.png" alt="" /></li>
                    <li><img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/245657/t-shirt-large2.png" alt="" /></li>
                    <li><img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/245657/t-shirt-large3.png" alt="" /></li>
                </ul>
                <div class="arrows-perspective">
                    <div class="carouselPrev">
                        <div class="y"></div>
	                    <div class="x"></div>
                    </div>
                    <div class="carouselNext">
                        <div class="y"></div>
	                    <div class="x"></div>
                    </div>
                </div>
            </div>
            <div class="flip-back">
            	<div class="cy"></div>
                <div class="cx"></div>
            </div>
        </div>	  
    </div>	
</div>	
  
  <div id="make-3D-space">
    <div class="product-card">
        <div class="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 class="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 class="product-back">
	        <div class="shadow"></div>
            <div class="carousel">
                <ul>
                    <li><img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/245657/t-shirt-large.png" alt="" /></li>
                    <li><img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/245657/t-shirt-large2.png" alt="" /></li>
                    <li><img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/245657/t-shirt-large3.png" alt="" /></li>
                </ul>
                <div class="arrows-perspective">
                    <div class="carouselPrev">
                        <div class="y"></div>
	                    <div class="x"></div>
                    </div>
                    <div class="carouselNext">
                        <div class="y"></div>
	                    <div class="x"></div>
                    </div>
                </div>
            </div>
            <div class="flip-back">
            	<div class="cy"></div>
                <div class="cx"></div>
            </div>
        </div>	  
    </div>	
</div>	
  
  <div id="make-3D-space">
    <div class="product-card">
        <div class="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 class="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 class="product-back">
	        <div class="shadow"></div>
            <div class="carousel">
                <ul>
                    <li><img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/245657/t-shirt-large.png" alt="" /></li>
                    <li><img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/245657/t-shirt-large2.png" alt="" /></li>
                    <li><img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/245657/t-shirt-large3.png" alt="" /></li>
                </ul>
                <div class="arrows-perspective">
                    <div class="carouselPrev">
                        <div class="y"></div>
	                    <div class="x"></div>
                    </div>
                    <div class="carouselNext">
                        <div class="y"></div>
	                    <div class="x"></div>
                    </div>
                </div>
            </div>
            <div class="flip-back">
            	<div class="cy"></div>
                <div class="cx"></div>
            </div>
        </div>	  
    </div>	
</div>	
  
  
</div>



	<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>