user16333885
user16333885

Reputation:

How to place two columns in a row properly in this situation

I'm using Bootstrap I have coded this:

<div class="container">
    <div class="row">
        <div class="col-xl-4 col-lg-12 col-md-12 col-sm-12 col-12 mb-xl-0 mb-lg-5 mb-md-5 mb-sm-5 mb-5">
            <div class="slider-slick-img container">
                <div class="slider-for">
                IMAGE GOES HERE
                </div>

                <div class="slider-nav mt-5">
                    <div class="item px-2">
                    THUBMNAIL GOES HERE
                    </div>
                </div>
            </div>
        </div>  
        <div class="col-xl-8 col-lg-12 col-md-12 col-sm-12 col-12 mb-xl-0 mb-lg-5 mb-md-5 mb-sm-5 mb-5">
            <div class="">
            CONTENT GOES HERE
            ...
            </div>
        </div>
    </div>
</div>  

And the result of this code goes here:

enter image description here

As you can see it separates the columns of images and the column of contents (product title, product description & etc).

However they are both placed in one row class.

So how to properly place them together in one row as the expected result shows here?

Expected Result:

enter image description here


UPDATE #1

If I remove col-lg-12 col-md-12 col-sm-12 from <div class="col-xl-4 col-lg-12 col-md-12 col-sm-12 col-12 mb-xl-0 mb-lg-5 mb-md-5 mb-sm-5 mb-5"> of the images column & content column, and also add col-6 instead of col-12 to both column classes, this result will appears:

enter image description here

However, as you can see, the content looks thinner and still have differences with the Expected Result image.

So how to solve this issue?

Upvotes: 4

Views: 1400

Answers (7)

im3dabasia
im3dabasia

Reputation: 68

You should also include the meta tag "viewport" for your html code to be processed correctly by the browser.

<meta name="viewport" content= "width=device-width, initial-scale=1.0", shrink-to-fit=no"> 

You can try putting this in the section of your work.

Upvotes: 0

Savageville
Savageville

Reputation: 22

I solved your issue by opting for full responsive col's using grid system as shown in my code.

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

<div class="container">
    <div class="row">
            <div class="col">
                <div class="">
                CONTENT GOES HERE
                ...
              </div>
            </div>
            <div class="col">
                <div class="">
                IMAGE GOES HERE
                </div>

                <div class="">
                    <div class="px-2">
                    THUBMNAIL GOES HERE
                    </div>
                </div>
            </div>
    </div>
</div> 

Upvotes: 0

Hossein Azizdokht
Hossein Azizdokht

Reputation: 995

You should not set 12 on lg screen for both div, set 8,4 on xl,lg set 6,6 on md and set 12,12 on sm.

<div class="container">
    <div class="row">
        <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12 col-12 mb-xl-0 mb-lg-5 mb-md-5 mb-sm-5 mb-5">
            <div class="slider-slick-img container">
                <div class="slider-for">
                IMAGE GOES HERE
                </div>

                <div class="slider-nav mt-5">
                    <div class="item px-2">
                    THUBMNAIL GOES HERE
                    </div>
                </div>
            </div>
        </div>  
        <div class="col-xl-8 col-lg-8 col-md-6 col-sm-12 col-12 mb-xl-0 mb-lg-5 mb-md-5 mb-sm-5 mb-5">
            <div class="">
            CONTENT GOES HERE
            ...
            </div>
        </div>
    </div>
</div> 

Upvotes: 0

Abhishek Rawat
Abhishek Rawat

Reputation: 131

Remove container class applied with slider-slick-img. It is not needed. And kindly share the link to your code where we can check with actual content(images and add to cart box). Else, with these texts, it is working fine here.

Upvotes: 0

kiran
kiran

Reputation: 693

You're repeating the classes and simply complicated everything here, you have to define where you want break to full row it'll automatically break at that screen size, you needn't explicitly add another class, adding too many classes will confuse you and anyone who has to understand the code later. https://getbootstrap.com/docs/4.0/layout/grid/

<header>
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
</header>
<div class="container">
  <div class="row">
  <div class="col-sm-6 ">
      <div class="">
        <h1>
          Cat
        </h1>
        <p>
          The cat is a domestic species of small carnivorous mammal. It is the only domesticated species in the family Felidae and is often referred to as the domestic cat to distinguish it from the wild members of the family.
        </p>
      </div>
    </div>
    <div class="col-sm-6 ">
      <div class="slider-slick-img container">
        <div class="slider-for">
          <img src="https://static.toiimg.com/photo/msid-67586673/67586673.jpg?3918697" width="100%" />
      
        </div>
        <div class="slider-nav mt-5">
          <div class="item px-2">
            <img src="https://static.toiimg.com/photo/msid-67586673/67586673.jpg?3918697" width="100px" />
                 </div>
        </div>
      </div>
    </div>
    
  </div>
</div>

Upvotes: 2

giulp
giulp

Reputation: 2408

Putting the div with content first and the one with the image after appears to mirror this layout correctly.

To define columns of equal width nothing more is needed than using class .col on each of them, as per official documentation (Bootstrap 5.0)

expected


actual

<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container">
    <div class="row">
            <div class="col">
                <div class="">
                CONTENT GOES HERE
                ...
              </div>
            </div>
            <div class="col">
                <div class="">
                IMAGE GOES HERE
                </div>

                <div class="">
                    <div class="">
                    THUBMNAIL GOES HERE
                    </div>
                </div>
            </div>
    </div>
</div> 

Upvotes: 0

Space guy
Space guy

Reputation: 415

In both of your columns you have added the class col-12 which means that by default those columns will take all the row UNTIL you reach the first breakpoint which in this case would be col-sm. In order to fix this you have to specify col-6 instead of col-12 and if you check it in a screen size smaller than sm you'll notice each column is taking up to 6 places in the grid layout.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
</head>
<body>
    <div class="container-fluid">
        <div class="row">
            <div class="col-6">
                <div class="slider-slick-img container">
                    <div class="slider-for">
                    IMAGE GOES HERE
                    </div>
    
                    <div class="slider-nav mt-5">
                        <div class="item px-2">
                        THUBMNAIL GOES HERE
                        </div>
                    </div>
                </div>
            </div>  
            <div class="col-6">
                CONTENT GOES HERE
            </div>
        </div>
    </div>   
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
</body>
</html>

Upvotes: 1

Related Questions