Home > front end >  Clear fix code problem when content is long
Clear fix code problem when content is long

Time:12-10

I am creating a two column layout with one column having fixed and the other not.

For clear fix I am using the following code:

  content: "";
  display: table;
  clear: both;

But when I have long content in my columns the horizontal scroll bar is visible.

How do control this? Can I, or should I, increase my clearfix code?

div.panel:after {
  content: "";
  display: table;
  clear: both;
}

div.fixed {    
  margin-right: 40px;
  text-align: right;
  width: 360px;
  float: left;
}
  
div.fluid {               
  margin-right: -400px;
  width: 100%;
  float: left;             
}
  
div.frame {
  margin-right: 400px;
  text-align: left;
} 
<h1>The example</h1>

<div >

  <div >
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Luctus accumsan tortor posuere ac ut consequat semper viverra nam. Sagittis eu volutpat odio facilisis mauris sit amet. Turpis cursus in hac habitasse platea dictumst quisque sagittis. Sagittis nisl rhoncus mattis rhoncus urna neque viverra. Vel fringilla est ullamcorper eget nulla. Et malesuada fames ac turpis egestas maecenas pharetra. Id semper risus in hendrerit gravida rutrum quisque non tellus. Viverra accumsan in nisl nisi scelerisque eu. Orci dapibus ultrices in iaculis nunc. Laoreet non curabitur gravida arcu ac. Sociis natoque penatibus et magnis dis parturient montes.
  </div>

  <div >
    <div >
      Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Luctus accumsan tortor posuere ac ut consequat semper viverra nam. Sagittis eu volutpat odio facilisis mauris sit amet. Turpis cursus in hac habitasse platea dictumst quisque sagittis. Sagittis nisl rhoncus mattis rhoncus urna neque viverra. Vel fringilla est ullamcorper eget nulla. Et malesuada fames ac turpis egestas maecenas pharetra. Id semper risus in hendrerit gravida rutrum quisque non tellus. Viverra accumsan in nisl nisi scelerisque eu. Orci dapibus ultrices in iaculis nunc. Laoreet non curabitur gravida arcu ac. Sociis natoque penatibus et magnis dis parturient montes.
    </div>
  </div>

 </div>

 <p> End of example</p>

CodePudding user response:

I can see the problem is with the margin-right property. Why it must be right? It will create an invisible space to the right, thus the hoz scrollbar. You can simply change that to margin-left with the same value and it still work (without the hoz scrollbar).

div.panel:after {
  content: "";
  display: table;
  clear: both;
}

div.fixed {    
  margin-right: 40px;
  text-align: right;
  width: 360px;
  float: left;
}
  
div.fluid {               
  margin-left: -400px;
  width: 100%;
  float: left;             
}
  
div.frame {
  margin-left: 400px;
  text-align: left;
} 
<h1>The example</h1>

<div >

  <div >
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Luctus accumsan tortor posuere ac ut consequat semper viverra nam. Sagittis eu volutpat odio facilisis mauris sit amet. Turpis cursus in hac habitasse platea dictumst quisque sagittis. Sagittis nisl rhoncus mattis rhoncus urna neque viverra. Vel fringilla est ullamcorper eget nulla. Et malesuada fames ac turpis egestas maecenas pharetra. Id semper risus in hendrerit gravida rutrum quisque non tellus. Viverra accumsan in nisl nisi scelerisque eu. Orci dapibus ultrices in iaculis nunc. Laoreet non curabitur gravida arcu ac. Sociis natoque penatibus et magnis dis parturient montes.
  </div>

  <div >
    <div >
      Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Luctus accumsan tortor posuere ac ut consequat semper viverra nam. Sagittis eu volutpat odio facilisis mauris sit amet. Turpis cursus in hac habitasse platea dictumst quisque sagittis. Sagittis nisl rhoncus mattis rhoncus urna neque viverra. Vel fringilla est ullamcorper eget nulla. Et malesuada fames ac turpis egestas maecenas pharetra. Id semper risus in hendrerit gravida rutrum quisque non tellus. Viverra accumsan in nisl nisi scelerisque eu. Orci dapibus ultrices in iaculis nunc. Laoreet non curabitur gravida arcu ac. Sociis natoque penatibus et magnis dis parturient montes.
    </div>
  </div>

 </div>

 <p> End of example</p>

Or you can use display: flex in class .panel and flex-shrink: 0 in class .fixed and remove the other classes codes, result is the same.

.panel {
  display: flex;
}
div.fixed {    
  margin-right: 40px;
  text-align: right;
  width: 360px;
  flex-shrink: 0;
}
<h1>The example</h1>

<div >

  <div >
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Luctus accumsan tortor posuere ac ut consequat semper viverra nam. Sagittis eu volutpat odio facilisis mauris sit amet. Turpis cursus in hac habitasse platea dictumst quisque sagittis. Sagittis nisl rhoncus mattis rhoncus urna neque viverra. Vel fringilla est ullamcorper eget nulla. Et malesuada fames ac turpis egestas maecenas pharetra. Id semper risus in hendrerit gravida rutrum quisque non tellus. Viverra accumsan in nisl nisi scelerisque eu. Orci dapibus ultrices in iaculis nunc. Laoreet non curabitur gravida arcu ac. Sociis natoque penatibus et magnis dis parturient montes.
  </div>

  <div >
    <div >
      Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Luctus accumsan tortor posuere ac ut consequat semper viverra nam. Sagittis eu volutpat odio facilisis mauris sit amet. Turpis cursus in hac habitasse platea dictumst quisque sagittis. Sagittis nisl rhoncus mattis rhoncus urna neque viverra. Vel fringilla est ullamcorper eget nulla. Et malesuada fames ac turpis egestas maecenas pharetra. Id semper risus in hendrerit gravida rutrum quisque non tellus. Viverra accumsan in nisl nisi scelerisque eu. Orci dapibus ultrices in iaculis nunc. Laoreet non curabitur gravida arcu ac. Sociis natoque penatibus et magnis dis parturient montes.
    </div>
  </div>

 </div>

 <p> End of example</p>

Edit: Another way to fix is just add overflow-x: hidden to class .panel and the hoz scroll will disappear.

  • Related