Mike.Whitehead
Mike.Whitehead

Reputation: 818

CSS - Columns not stacking properly with bootstrap

I'm trying to get a section of columns to stack in two rows of four. When I recreate it here and on codepen the columns stack properly - as I want them but on my site they're stacking in sets of three. There must be a rule I'm missing but I can't see it. This is how it looks on my site -

Section - What we do

All the margin / width rules are part of the section styling so I'm not sure why it would look like this here. I'm sure this is something really straightforward but I can't seem to spot it. Any help would be appreciated.

#whatwedo {
  width: 100%;
  max-width: 100%;
  height: 600px;
}



*{
  margin: 0;
  padding: 0;
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
}

h1{
  font-size: 2.5rem;
  font-family: 'Montserrat';
  font-weight: normal;
  color: #444;
  text-align: center;
  margin: 2rem 0;
}

.container-fluid {
  width: 90%; 
  margin: 0 auto;
  max-width: 80rem;
}

.cols{
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
}

.col-sm-3 {
  width: calc(25% - 2rem);
  margin: 1rem;
  cursor: pointer;
}

.container{
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  -webkit-perspective: 1000px;
          perspective: 1000px;
}

.front,
.back{
  background-size: cover;
  background-position: center;
  -webkit-transition: -webkit-transform .7s cubic-bezier(0.4, 0.2, 0.2, 1);
  transition: -webkit-transform .7s cubic-bezier(0.4, 0.2, 0.2, 1);
  -o-transition: transform .7s cubic-bezier(0.4, 0.2, 0.2, 1);
  transition: transform .7s cubic-bezier(0.4, 0.2, 0.2, 1);
  transition: transform .7s cubic-bezier(0.4, 0.2, 0.2, 1), -webkit-transform .7s cubic-bezier(0.4, 0.2, 0.2, 1);
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  text-align: center;
  /* size of box */
  min-height: 300px;
  width: 300px;
  height: auto;
  border-radius: 10px;
  color: #fff;
  font-size: 1.5rem;
}

.back{
  background: #cedce7;
  background: -webkit-linear-gradient(45deg,  #cedce7 0%,#596a72 100%);
  background: -o-linear-gradient(45deg,  #cedce7 0%,#596a72 100%);
  background: linear-gradient(45deg,  #cedce7 0%,#596a72 100%);
}

.front:after{
  position: absolute;
    top: 0;
    left: 0;
    z-index: 1;
    width: 100%;
    height: 100%;
    content: '';
    display: block;
    /* background shade - was .6 originally */
    opacity: .4;
    background-color: #000;
    -webkit-backface-visibility: hidden;
            backface-visibility: hidden;
    border-radius: 10px;
}
.container:hover .front,
.container:hover .back{
    -webkit-transition: -webkit-transform .7s cubic-bezier(0.4, 0.2, 0.2, 1);
    transition: -webkit-transform .7s cubic-bezier(0.4, 0.2, 0.2, 1);
    -o-transition: transform .7s cubic-bezier(0.4, 0.2, 0.2, 1);
    transition: transform .7s cubic-bezier(0.4, 0.2, 0.2, 1);
    transition: transform .7s cubic-bezier(0.4, 0.2, 0.2, 1), -webkit-transform .7s cubic-bezier(0.4, 0.2, 0.2, 1);
}

.back{
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
}

.inner{
    -webkit-transform: translateY(-50%) translateZ(60px) scale(0.94);
            transform: translateY(-50%) translateZ(60px) scale(0.94);
    top: 50%;
    position: absolute;
    left: 0;
    width: 100%;
    padding: 2rem;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    outline: 1px solid transparent;
    -webkit-perspective: inherit;
            perspective: inherit;
    z-index: 2;
}

.container .back{
    -webkit-transform: rotateY(180deg);
            transform: rotateY(180deg);
    -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
}

.container .front{
    -webkit-transform: rotateY(0deg);
            transform: rotateY(0deg);
    -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
}

.container:hover .back{
  -webkit-transform: rotateY(0deg);
          transform: rotateY(0deg);
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
}

.container:hover .front{
  -webkit-transform: rotateY(-180deg);
          transform: rotateY(-180deg);
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
}

.front .inner p{
  font-size: 2rem;
  margin-bottom: 2rem;
  position: relative;
}

.front .inner p:after{
  content: '';
  width: 4rem;
  height: 2px;
  position: absolute;
  background: #C6D4DF;
  display: block;
  left: 0;
  right: 0;
  margin: 0 auto;
  bottom: -.75rem;
}

.front .inner span{
  color: rgba(255,255,255,0.7);
  font-family: 'Montserrat';
  font-weight: 300;
}
<body>
  	<section id="whatwedo">

		<div class="container-fluid">
  <h1>What we do</h1>
  
  <div class="cols">
			<div class="col-sm-3" ontouchstart="this.classList.toggle('hover');">
				<div class="container">
					<div class="front" style="background-image: url(images/what_we_do2.png)">
						<div class="inner">
							<p>Brand Identity</p>
              <span>Lorem ipsum</span>
						</div>
					</div>
					<div class="back">
						<div class="inner">
						  <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Alias cum repellat velit quae suscipit c.</p>
						</div>
					</div>
				</div>
			</div>
			<div class="col-sm-3" ontouchstart="this.classList.toggle('hover');">
				<div class="container">
					<div class="front" style="background-image: url(images/what_we_do4.jpg);">
						<div class="inner">
							<p>Graphic Design</p>
              <span>Lorem ipsum</span>
						</div>
					</div>
					<div class="back">
						<div class="inner">
							<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Alias cum repellat velit quae suscipit c.</p>
						</div>
					</div>
				</div>
			</div>
			<div class="col-sm-3" ontouchstart="this.classList.toggle('hover');">
				<div class="container">
					<div class="front" style="background-image: url(images/what_we_do7.jpg)">
						<div class="inner">
							<p>Editorial Design</p>
              <span>Lorem ipsum</span>
						</div>
					</div>
					<div class="back">
						<div class="inner">
							<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Alias cum repellat velit quae suscipit c.</p>
						</div>
					</div>
				</div>
			</div>
			<div class="col-sm-3" ontouchstart="this.classList.toggle('hover');">
				<div class="container">
					<div class="front" style="background-image: url(images/what_we_do1.jpg)">
						<div class="inner">
							<p>Brand Guidelines</p>
              <span>Lorem ipsum</span>
						</div>
					</div>
					<div class="back">
						<div class="inner">
							<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Alias cum repellat velit quae suscipit c.</p>
						</div>
					</div>
				</div>
			</div>
			
			<div class="col-sm-3" ontouchstart="this.classList.toggle('hover');">
				<div class="container">
					<div class="front" style="background-image: url(images/what_we_do3.jpg)">
						<div class="inner">
							<p>Print Management</p>
              <span>Lorem ipsum</span>
						</div>
					</div>
					<div class="back">
						<div class="inner">
							<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Alias cum repellat velit quae suscipit c.</p>
						</div>
					</div>
				</div>
			</div>
			<div class="col-sm-3" ontouchstart="this.classList.toggle('hover');">
				<div class="container">
					<div class="front" style="background-image: url(images/what_we_do6.jpg)">
						<div class="inner">
							<p>Signage</p>
              <span>Lorem ipsum</span>
						</div>
					</div>
					<div class="back">
						<div class="inner">
							<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Alias cum repellat velit quae suscipit c.</p>
						</div>
					</div>
				</div>
			</div>
			<div class="col-sm-3" ontouchstart="this.classList.toggle('hover');">
				<div class="container">
					<div class="front" style="background-image: url(images/what_we_do5.jpg)">
						<div class="inner">
							<p>Creative Direction</p>
              <span>Lorem ipsum</span>
						</div>
					</div>
					<div class="back">
						<div class="inner">
							<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Alias cum repellat velit quae suscipit c.</p>
						</div>
					</div>
				</div>
			</div>
			<div class="col-sm-3" ontouchstart="this.classList.toggle('hover');">
				<div class="container">
					<div class="front" style="background-image: url(images/what_we_do4.jpg)">
						<div class="inner">
							<p>Illustration & Animation</p>
              <span>Lorem ipsum</span>
						</div>
					</div>
					<div class="back">
						<div class="inner">
							<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Alias cum repellat velit quae suscipit c.</p>
						</div>
					</div>
				</div>
			</div>
			
		</div>
 </div>
      
  </section>      
      
  
  
  
</body>

Upvotes: 1

Views: 52

Answers (2)

Kaustubh Kallianpur
Kaustubh Kallianpur

Reputation: 369

First, make sure you have the correct Bootstrap CDN.
You must be knowing about the Bootstrap Grid System. It divides a given row into 12 equal columns, of which you can use it with the class "col-**-*"..
You need 4 columns in two rows, your code must be like,

<div class="container">
<div class="row">
    <div class="col-sm-3">
        Your code here
    </div>
    <div class="col-sm-3">
        Your code here
    </div>
    <div class="col-sm-3">
        Your code here
    </div>
    <div class="col-sm-3">
        Your code here
    </div>
</div> <!-- end the first row -->

<div class="row">
    <div class="col-sm-3">
        Your code here
    </div>
    <div class="col-sm-3">
        Your code here
    </div>
    <div class="col-sm-3">
        Your code here
    </div>
    <div class="col-sm-3">
        Your code here
    </div>
</div> <!-- end the second row -->
</div> <!-- end the container -->

Also, do not use a inside a "col-**-*" tag. A container, has more width and will mess up with your column. Hence, do remove that... Hope this works!! :D

    <div class="col-sm-3" ontouchstart="this.classList.toggle('hover');">
            <div class="front" style="background-image: url(images/what_we_do2.png)">
                <div class="inner">
                    <p>Brand Identity</p>
      <span>Lorem ipsum</span>
                </div>
            </div>
            <div class="back">
                <div class="inner">
                  <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Alias cum repellat velit quae suscipit c.</p>
                </div>
            </div>
    </div>

Upvotes: 1

Farhad Bagherlo
Farhad Bagherlo

Reputation: 6699

use col in row Class

Bootstrap Grid system

 <div class="row">
    <div class="col-sm-3"> </div>
    <div class="col-sm-3"> </div>
    <div class="col-sm-3"> </div>
    <div class="col-sm-3"> </div>
 </div>

Upvotes: 1

Related Questions