I'm trying to find the best (or the good) way to implement such a structure using only CSS:
Basically, the height of "title" block depends on the size of the image in the "logo" block and this block should be presented exactly to the right from "logo" block. The same applies for the "menu" block, which should be located exactly under the "logo" block and have the same width.
I've tried to implement it in "hardcode" style, just for you to see what I mean: https://jsfiddle.net/DmitryGinzburg/kt7g1esu/
HTML:
<div id="top">
<div id="logo">
<img src="http://placekitten.com/200/100"/>
</div>
<div id="account">
Hello, abacabaUser
</div>
</div>
<div id="bottom">
<div id="menu">
<ul class="nav_bar">
<li>Anchor1</li>
<li>Anchor2</li>
<li>Anchor3</li>
</ul>
</div>
<div id="content">
Duis laoreet hendrerit aliquam. Ut cursus pellentesque ex in vehicula. Integer aliquet velit sed neque ultrices, id condimentum nibh accumsan. Sed maximus molestie nulla, et viverra eros sollicitudin id. Sed in dapibus mi, eget faucibus urna. Ut nulla lacus, cursus in lorem ut, rhoncus tempus velit. Vivamus lobortis egestas finibus. Proin eget mauris ut nisi euismod aliquam quis nec odio. Nulla ac turpis ac urna euismod porttitor. Proin lacus lectus, bibendum in mauris ac, sollicitudin laoreet mi. Quisque posuere lobortis imperdiet. Etiam id quam eu mauris congue faucibus sit amet non libero. Sed et massa in lacus posuere imperdiet vitae in lacus. Nulla mauris nisl, venenatis eu gravida sit amet, ultricies eu tellus.
</div>
</div>
CSS:
div {position: absolute;}
.nav_bar {
list-style-type: none;
margin: 0;
padding: 0;
}
#account {left: 500px;}
#menu {top: 100px;}
#content {
top: 100px;
left: 200px;
width: 400px;
}
The problem that I face is that the blocks can depend one on another only if they have the same parent and in this case it's hardly implementable, because this way I can fix only one parameter (height/width).
What is the supposed way to do it?
P.S: I know I can do it with "table" style, but that's what everybody is trying to avoid in every article I read about this topic.
CSS Tables would be the way to go here...not ACTUAL tables, but table layout.
.nav_bar {
list-style-type: none;
margin: 0;
padding: 0;
}
#logo,
#menu,
#account,
#content {
display: table-cell;
}
#account {
vertical-align: middle;
text-align: center;
}
#top,
#bottom {
display: table-row;
}
<div id="top">
<div id="logo">
<img src="http://placekitten.com/200/100" />
</div>
<div id="account">
Hello, abacabaUser
</div>
</div>
<div id="bottom">
<div id="menu">
<ul class="nav_bar">
<li>Anchor1</li>
<li>Anchor2</li>
<li>Anchor3</li>
</ul>
</div>
<div id="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam tempor turpis orci, a sodales arcu laoreet sit amet. Vestibulum nibh enim, iaculis sed risus in, egestas auctor mi. Ut a aliquam mauris, vel posuere est. Fusce a nisi vitae urna convallis
porta. Suspendisse sed tristique augue. Proin at mollis quam. Aliquam odio elit, auctor sed tortor sed, malesuada dignissim nulla. Ut ultrices neque urna, eu accumsan turpis viverra id. Nunc rhoncus ex eget urna facilisis tempor. Nullam id pretium
elit. Vestibulum libero lorem, semper sed ex sed, interdum dignissim tortor. Aliquam sollicitudin neque diam, non pharetra est hendrerit a. Vivamus hendrerit venenatis orci et scelerisque. Class aptent taciti sociosqu ad litora torquent per conubia
nostra, per inceptos himenaeos. Integer commodo risus libero, nec elementum orci hendrerit sed. Nunc eleifend sapien ac vehicula porttitor. Vivamus laoreet purus lectus, faucibus pretium erat fringilla ut. Etiam accumsan justo at metus porttitor condimentum.
Quisque vel lorem a lacus volutpat ornare vitae quis turpis. Suspendisse potenti. Nam cursus odio sed ipsum semper, sed interdum mi sollicitudin. Suspendisse rutrum justo at eleifend vestibulum. Maecenas ut urna nibh. Mauris eget turpis metus. Aenean
lobortis fermentum augue, vitae interdum justo ullamcorper nec. Donec viverra, nisl scelerisque iaculis suscipit, lectus odio fringilla massa, nec tincidunt neque velit vitae mi. Proin pharetra fringilla ligula. Class aptent taciti sociosqu ad litora
torquent per conubia nostra, per inceptos himenaeos. Aliquam porta leo in dolor commodo, faucibus pretium elit fringilla. In eleifend lorem quis enim feugiat, id fringilla ipsum malesuada. Morbi non feugiat urna, ullamcorper tincidunt nibh. Nam lacinia,
velit sed ultrices faucibus, erat tortor tincidunt tellus, cursus imperdiet turpis ante eu arcu. Integer sed facilisis libero, vitae mattis nisl. Proin cursus, sem at tempor convallis, ligula ligula egestas erat, eget molestie justo elit vitae dui.
Praesent leo velit, luctus vitae suscipit id, placerat a velit. Proin posuere enim vel lobortis gravida. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur bibendum dui quis velit ornare rhoncus.
Phasellus blandit vulputate ligula, at molestie ligula consequat sit amet. Mauris faucibus luctus mauris, in gravida nulla facilisis pellentesque. Nunc vitae odio rutrum odio hendrerit mattis eu eu tellus. Vivamus tincidunt, nulla et varius mollis,
dolor ligula viverra nibh, sed porttitor urna nisl nec quam. Duis laoreet hendrerit aliquam. Ut cursus pellentesque ex in vehicula. Integer aliquet velit sed neque ultrices, id condimentum nibh accumsan. Sed maximus molestie nulla, et viverra eros
sollicitudin id. Sed in dapibus mi, eget faucibus urna. Ut nulla lacus, cursus in lorem ut, rhoncus tempus velit. Vivamus lobortis egestas finibus. Proin eget mauris ut nisi euismod aliquam quis nec odio. Nulla ac turpis ac urna euismod porttitor.
Proin lacus lectus, bibendum in mauris ac, sollicitudin laoreet mi. Quisque posuere lobortis imperdiet. Etiam id quam eu mauris congue faucibus sit amet non libero. Sed et massa in lacus posuere imperdiet vitae in lacus. Nulla mauris nisl, venenatis
eu gravida sit amet, ultricies eu tellus.
</div>
</div>
CSS table layout is perfectly acceptable for non-tabular data BUT I do not think this is a perfect solution. If the menu were wider than the image it's width would take precedence but given current layout methods it's probably the optimal one.
CSS Grids, when they are properly supported, might be the ideal solution.
Related
I have a bootstrap container for my page content, but no container for my header. My header is very simple and bootstrapping it seems overkill. The issue i'm running into is my non bootstrap sticky header is sticky only up until the page hits the bootstrap content. Then the sticky header stops in its tracks. DO you know where i'm going wrong?
HTML
(the 500px div is there for me to test the sticky header. The header is sticky for all 500px, until the page gets to the bootstrap container. Then the sticky header stops in its tracks.)
<header>
<div class="navMenu">
<div class="navLinkWrapper">
<a class="nav-link" onclick="slideTo('#aboutSection');">ABOUT</a>
<a class="nav-link" onclick="slideTo('#projectsSection');">PROJECTS</a>
<a class="nav-link" onclick="slideTo('#contactSection');">CONTACT</a>
</div>
</div>
<div style="height: 500px;">
</div>
</header>
<main>
<div class="container-fluid">
<div class="row" id="aboutSection">
<div class="col-lg-12">
<div class="terminal mx-auto">
<div class="form-inline aboutHeader">
CSS
.navMenu {
background-color: rgb(77, 22, 59);
position: sticky;
top: 0;
}
.navLinkWrapper {
width: 590px;
margin: 0 auto;
}
.nav-link {
font-family: 'Ubuntu Mono', monospace;
font-size: 30px;
color: limegreen !important;
cursor: pointer;
transition: all 0.3s ease;
display: inline-block;
letter-spacing: 3px;
text-align: center;
margin-left: 20px;
margin-right: 20px;
}
.nav-link:hover {
color: white !important;
}
The sticky element will only stick to its parent.
Try adding your sticky css to header:
header {
padding: 20px;
color: white;
background-color: rgb(77, 22, 59);
position: sticky;
top: 0;
}
<body>
<header>
<div class="navMenu">
<div class="navLinkWrapper">
<a class="nav-link" onclick="slideTo('#aboutSection');">ABOUT</a>
<a class="nav-link" onclick="slideTo('#projectsSection');">PROJECTS</a>
<a class="nav-link" onclick="slideTo('#contactSection');">CONTACT</a>
</div>
</div>
</header>
<main>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum. Praesent mauris. Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia arcu eget nulla. </p>
<p>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. Fusce ac turpis quis ligula lacinia aliquet. Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh. </p>
<p>Quisque volutpat condimentum velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam nec ante. Sed lacinia, urna non tincidunt mattis, tortor neque adipiscing diam, a cursus ipsum ante quis turpis. Nulla facilisi. Ut fringilla. Suspendisse potenti. Nunc feugiat mi a tellus consequat imperdiet. Vestibulum sapien. Proin quam. Etiam ultrices. Suspendisse in justo eu magna luctus suscipit. </p>
<p>Sed lectus. Integer euismod lacus luctus magna. Quisque cursus, metus vitae pharetra auctor, sem massa mattis sem, at interdum magna augue eget diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Morbi lacinia molestie dui. Praesent blandit dolor. Sed non quam. In vel mi sit amet augue congue elementum. Morbi in ipsum sit amet pede facilisis laoreet. Donec lacus nunc, viverra nec, blandit vel, egestas et, augue. Vestibulum tincidunt malesuada tellus. Ut ultrices ultrices enim. Curabitur sit amet mauris. Morbi in dui quis est pulvinar ullamcorper. Nulla facilisi. </p>
<p>Integer lacinia sollicitudin massa. Cras metus. Sed aliquet risus a tortor. Integer id quam. Morbi mi. Quisque nisl felis, venenatis tristique, dignissim in, ultrices sit amet, augue. Proin sodales libero eget ante. Nulla quam. Aenean laoreet. Vestibulum nisi lectus, commodo ac, facilisis ac, ultricies eu, pede. Ut orci risus, accumsan porttitor, cursus quis, aliquet eget, justo. Sed pretium blandit orci. Ut eu diam at pede suscipit sodales. </p>
<p>Aenean lectus elit, fermentum non, convallis id, sagittis at, neque. Nullam mauris orci, aliquet et, iaculis et, viverra vitae, ligula. Nulla ut felis in purus aliquam imperdiet. Maecenas aliquet mollis lectus. Vivamus consectetuer risus et tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum. Praesent mauris. </p>
<p>Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia arcu eget nulla. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. </p>
<p>Fusce ac turpis quis ligula lacinia aliquet. Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh. Quisque volutpat condimentum velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam nec ante. Sed lacinia, urna non tincidunt mattis, tortor neque adipiscing diam, a cursus ipsum ante quis turpis. Nulla facilisi. Ut fringilla. Suspendisse potenti. Nunc feugiat mi a tellus consequat imperdiet. </p>
<p>Vestibulum sapien. Proin quam. Etiam ultrices. Suspendisse in justo eu magna luctus suscipit. Sed lectus. Integer euismod lacus luctus magna. Quisque cursus, metus vitae pharetra auctor, sem massa mattis sem, at interdum magna augue eget diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Morbi lacinia molestie dui. Praesent blandit dolor. Sed non quam. In vel mi sit amet augue congue elementum. Morbi in ipsum sit amet pede facilisis laoreet. Donec lacus nunc, viverra nec, blandit vel, egestas et, augue. </p>
<p>Vestibulum tincidunt malesuada tellus. Ut ultrices ultrices enim. Curabitur sit amet mauris. Morbi in dui quis est pulvinar ullamcorper. Nulla facilisi. Integer lacinia sollicitudin massa. Cras metus. Sed aliquet risus a tortor. Integer id quam. Morbi mi. Quisque nisl felis, venenatis tristique, dignissim in, ultrices sit amet, augue. Proin sodales libero eget ante. Nulla quam. </p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum. Praesent mauris. Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia arcu eget nulla. </p>
<p>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. Fusce ac turpis quis ligula lacinia aliquet. Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh. </p>
<p>Quisque volutpat condimentum velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam nec ante. Sed lacinia, urna non tincidunt mattis, tortor neque adipiscing diam, a cursus ipsum ante quis turpis. Nulla facilisi. Ut fringilla. Suspendisse potenti. Nunc feugiat mi a tellus consequat imperdiet. Vestibulum sapien. Proin quam. Etiam ultrices. Suspendisse in justo eu magna luctus suscipit. </p>
<p>Sed lectus. Integer euismod lacus luctus magna. Quisque cursus, metus vitae pharetra auctor, sem massa mattis sem, at interdum magna augue eget diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Morbi lacinia molestie dui. Praesent blandit dolor. Sed non quam. In vel mi sit amet augue congue elementum. Morbi in ipsum sit amet pede facilisis laoreet. Donec lacus nunc, viverra nec, blandit vel, egestas et, augue. Vestibulum tincidunt malesuada tellus. Ut ultrices ultrices enim. Curabitur sit amet mauris. Morbi in dui quis est pulvinar ullamcorper. Nulla facilisi. </p>
<p>Integer lacinia sollicitudin massa. Cras metus. Sed aliquet risus a tortor. Integer id quam. Morbi mi. Quisque nisl felis, venenatis tristique, dignissim in, ultrices sit amet, augue. Proin sodales libero eget ante. Nulla quam. Aenean laoreet. Vestibulum nisi lectus, commodo ac, facilisis ac, ultricies eu, pede. Ut orci risus, accumsan porttitor, cursus quis, aliquet eget, justo. Sed pretium blandit orci. Ut eu diam at pede suscipit sodales. </p>
<p>Aenean lectus elit, fermentum non, convallis id, sagittis at, neque. Nullam mauris orci, aliquet et, iaculis et, viverra vitae, ligula. Nulla ut felis in purus aliquam imperdiet. Maecenas aliquet mollis lectus. Vivamus consectetuer risus et tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum. Praesent mauris. </p>
<p>Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia arcu eget nulla. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. </p>
<p>Fusce ac turpis quis ligula lacinia aliquet. Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh. Quisque volutpat condimentum velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam nec ante. Sed lacinia, urna non tincidunt mattis, tortor neque adipiscing diam, a cursus ipsum ante quis turpis. Nulla facilisi. Ut fringilla. Suspendisse potenti. Nunc feugiat mi a tellus consequat imperdiet. </p>
<p>Vestibulum sapien. Proin quam. Etiam ultrices. Suspendisse in justo eu magna luctus suscipit. Sed lectus. Integer euismod lacus luctus magna. Quisque cursus, metus vitae pharetra auctor, sem massa mattis sem, at interdum magna augue eget diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Morbi lacinia molestie dui. Praesent blandit dolor. Sed non quam. In vel mi sit amet augue congue elementum. Morbi in ipsum sit amet pede facilisis laoreet. Donec lacus nunc, viverra nec, blandit vel, egestas et, augue. </p>
<p>Vestibulum tincidunt malesuada tellus. Ut ultrices ultrices enim. Curabitur sit amet mauris. Morbi in dui quis est pulvinar ullamcorper. Nulla facilisi. Integer lacinia sollicitudin massa. Cras metus. Sed aliquet risus a tortor. Integer id quam. Morbi mi. Quisque nisl felis, venenatis tristique, dignissim in, ultrices sit amet, augue. Proin sodales libero eget ante. Nulla quam. </p>
</main>
</body>
If I use the CSS overflow property:
overflow: scroll;
I get a thin scrollbar by default. How can I style it to get a fat (and flat) scrollbar?
You can find here an answer for how to change the scrollbar's design on multiple browsers: https://stackoverflow.com/a/14150577/1564840
But that means different css settings for each browser (ie/chrome/mozilla..). That's why I suggest you to use a javascript library, here are a few examples: http://www.jqueryrain.com/2012/07/jquery-scrollbar-plugin-examples/ . These js libraries offer support for most of the browsers.
If you choose to edit CSS, be careful because the "position" property influences the scroll display. You might find some problems on safari browsers or on mobile devices.
It should work for you...
/* scrollbar */
::-webkit-scrollbar {
width: 100px;
}
/* track */
::-webkit-scrollbar-track {
background: #f1f1f1;
background-clip: content-box; /* it is important */
}
/* buttons */
::-webkit-scrollbar-button {
background: black;
}
/* handle */
::-webkit-scrollbar-thumb {
background: #c1c1c1;
}
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum. Praesent mauris. Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia arcu eget nulla. </p>
<p>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. Fusce ac turpis quis ligula lacinia aliquet. Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh. </p>
<p>Quisque volutpat condimentum velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam nec ante. Sed lacinia, urna non tincidunt mattis, tortor neque adipiscing diam, a cursus ipsum ante quis turpis. Nulla facilisi. Ut fringilla. Suspendisse potenti. Nunc feugiat mi a tellus consequat imperdiet. Vestibulum sapien. Proin quam. Etiam ultrices. Suspendisse in justo eu magna luctus suscipit. </p>
<p>Sed lectus. Integer euismod lacus luctus magna. Quisque cursus, metus vitae pharetra auctor, sem massa mattis sem, at interdum magna augue eget diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Morbi lacinia molestie dui. Praesent blandit dolor. Sed non quam. In vel mi sit amet augue congue elementum. Morbi in ipsum sit amet pede facilisis laoreet. Donec lacus nunc, viverra nec, blandit vel, egestas et, augue. Vestibulum tincidunt malesuada tellus. Ut ultrices ultrices enim. Curabitur sit amet mauris. </p>
<p>Morbi in dui quis est pulvinar ullamcorper. Nulla facilisi. Integer lacinia sollicitudin massa. Cras metus. Sed aliquet risus a tortor. Integer id quam. Morbi mi. Quisque nisl felis, venenatis tristique, dignissim in, ultrices sit amet, augue. Proin sodales libero eget ante. Nulla quam. Aenean laoreet. Vestibulum nisi lectus, commodo ac, facilisis ac, ultricies eu, pede. Ut orci risus, accumsan porttitor, cursus quis, aliquet eget, justo. Sed pretium blandit orci. </p>
<p>Ut eu diam at pede suscipit sodales. Aenean lectus elit, fermentum non, convallis id, sagittis at, neque. Nullam mauris orci, aliquet et, iaculis et, viverra vitae, ligula. Nulla ut felis in purus aliquam imperdiet. Maecenas aliquet mollis lectus. Vivamus consectetuer risus et tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. </p>
<p>Duis sagittis ipsum. Praesent mauris. Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia arcu eget nulla. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque nibh. Aenean quam. In scelerisque sem at dolor. </p>
<p>Maecenas mattis. Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. Fusce ac turpis quis ligula lacinia aliquet. Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh. Quisque volutpat condimentum velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam nec ante. Sed lacinia, urna non tincidunt mattis, tortor neque adipiscing diam, a cursus ipsum ante quis turpis. </p>
<p>Nulla facilisi. Ut fringilla. Suspendisse potenti. Nunc feugiat mi a tellus consequat imperdiet. Vestibulum sapien. Proin quam. Etiam ultrices. Suspendisse in justo eu magna luctus suscipit. Sed lectus. Integer euismod lacus luctus magna. Quisque cursus, metus vitae pharetra auctor, sem massa mattis sem, at interdum magna augue eget diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Morbi lacinia molestie dui. Praesent blandit dolor. Sed non quam. </p>
<p>In vel mi sit amet augue congue elementum. Morbi in ipsum sit amet pede facilisis laoreet. Donec lacus nunc, viverra nec, blandit vel, egestas et, augue. Vestibulum tincidunt malesuada tellus. Ut ultrices ultrices enim. Curabitur sit amet mauris. Morbi in dui quis est pulvinar ullamcorper. Nulla facilisi. Integer lacinia sollicitudin massa. Cras metus. Sed aliquet risus a tortor. Integer id quam. </p>
Changing the scrollbar is never a good idea . There are solutions for changing the scrollbar with javascript or with just CSS ( for webkit browsers ), but i don't recommend it . Scrollbar is rendered by the browser and custom scrollbars with javascript never behave like a default browser one and might cause issues and also cross-browser incompatibilities .
You can find all sorts of scripts,plugins,codes for modifiying the scrollbar.
But anyway., here's an example of a custom scrollbar with only CSS ( webkit )
div {
height:1200px;
width:100%;
background:red;
}
::-webkit-scrollbar {
width: 20px;
height: 20px;
}
::-webkit-scrollbar-button {
background: blue
}
::-webkit-scrollbar-track-piece {
background: yellow
}
::-webkit-scrollbar-thumb {
background: green
}
<div>
</div>
Say I've got an image that I float to the top right, how can I make all other elements ignore it and run through it like there's nothing's there? It's transparent and text should be able to go through the image to get to the end of the line instead of ending at the left side of the image. How is this possible and if it is can it be done without using JavaScript?
You could use a combination of relative and absolute positioning in the following way:
relatively position the P element containing the text
absolutely position the img inside it.
div {
position: relative;
}
p {
position: relative;
z-index: 2;
}
img {
position: absolute;
right: 0;
top:0;
z-index: 1;
}
<div>
<img src="http://placehold.it/300x150">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam turpis dui, mattis nec nisi eu, rhoncus bibendum magna. Cras dignissim ante eget elit imperdiet, nec egestas lorem hendrerit. Vivamus non fringilla ex. Nulla lobortis risus massa, a pulvinar lacus ultrices nec. Vivamus sed viverra nunc. Quisque eget massa tellus. Fusce mattis, nisl quis consequat mollis, dui tortor consequat nisl, vitae vestibulum arcu lectus quis lacus. Vestibulum fringilla facilisis tristique. Morbi pellentesque blandit tristique. Ut tortor elit, rhoncus vitae maximus at, mollis sed lacus. Maecenas faucibus metus et tortor aliquam, nec aliquet ante hendrerit.
Sed non commodo odio. Phasellus nec lacus in ipsum tincidunt suscipit non vitae augue. Sed ultrices enim a eros sodales laoreet. Integer quis nisl congue, lacinia leo ut, vulputate ex. Fusce lacinia faucibus purus, vitae consequat orci cursus ac. Sed pharetra ac turpis id posuere. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nec ligula tortor. Vestibulum rhoncus felis quis dictum mattis. Donec gravida vestibulum pulvinar.
Vestibulum pellentesque iaculis leo. Donec at tincidunt ligula, non placerat metus. Fusce aliquam vel risus quis egestas. Suspendisse nec vestibulum tellus. Pellentesque rhoncus quam et blandit condimentum. Ut vitae neque tempor, molestie lectus at, feugiat ipsum. Integer suscipit dui ut dolor interdum laoreet. Integer pharetra lectus ut rutrum fringilla. Sed sed mauris posuere, lobortis ipsum id, aliquet orci. Nam in felis egestas, mattis dolor id, vulputate dolor. Nunc venenatis risus dolor, id tempor ipsum suscipit in. In scelerisque libero justo, sed euismod dolor hendrerit non. Curabitur mattis orci ac massa mollis, vel suscipit velit lobortis. Praesent semper, elit eu auctor congue, risus erat semper tellus, quis dignissim felis massa eu ante. Ut laoreet metus ligula. Quisque dictum sem et ultricies fringilla.
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vivamus maximus pulvinar odio in lacinia. Maecenas dapibus leo vel sollicitudin scelerisque. Vivamus aliquam eleifend lorem eget dignissim. Praesent egestas convallis convallis. Suspendisse mollis metus quam. In scelerisque turpis sapien, luctus faucibus turpis accumsan at. Praesent consectetur malesuada sapien, ac viverra massa semper sed. Nunc a urna eleifend, sollicitudin lacus eu, tristique sapien. Sed et ipsum sit amet sem ornare sagittis vel quis ante. Nunc tincidunt eros quis massa porttitor, ac consectetur nibh venenatis. Vivamus condimentum lacus at ornare dictum. Aenean nec tempus felis. Ut facilisis ornare mauris, id pulvinar nunc posuere quis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
Praesent vitae pellentesque orci. Quisque dignissim ex id pellentesque dignissim. Maecenas auctor elit et luctus mattis. Sed lacus justo, varius ac magna vel, lacinia varius odio. Curabitur vestibulum vitae felis a viverra. Praesent faucibus arcu eros. Morbi eleifend nisl non blandit varius. Nulla pellentesque ipsum et nulla mollis placerat. Praesent accumsan ipsum at nulla ultricies vehicula.</p>
</div>
Use absolute positioning for the element and relative positioning on its parent to establish an initial containing block
Strange. Very strange. So I've got a paragraph of Lorem Ipsum in a XML file:
<?xml version="1.0" encoding="UTF-8"?>
<post>
<title>Test</title>
<content>Some test content<br/><br/><br/>TestTest Test.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent pulvinar eu magna bibendum dictum. Pellentesque interdum mi ac imperdiet tristique. Phasellus nec sapien elit. Donec convallis ante non vestibulum ultrices. Quisque ullamcorper est lectus, a sollicitudin sapien faucibus ac. Nam gravida rhoncus elementum. Nullam et velit dapibus, dignissim sem sit amet, luctus magna. Cras mollis eros dapibus, imperdiet purus convallis, dictum magna. Aliquam nisl lacus, venenatis vel lacinia quis, finibus at est. Nulla maximus sed enim in pretium. Fusce eu placerat dui. Curabitur mi magna, malesuada efficitur tellus sit amet, rutrum tristique erat. Phasellus sit amet orci purus. Pellentesque congue orci a tincidunt condimentum. Nullam semper, metus a tincidunt pulvinar, felis nibh faucibus mauris, a ultricies mauris tortor vitae sem. Praesent sed aliquet mauris.
Pellentesque odio lorem, dictum sed ipsum eget, viverra luctus libero. In tincidunt nisl eu nunc elementum, ut facilisis massa volutpat. In enim nibh, gravida vitae tempus eget, semper at orci. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam erat volutpat. Duis mattis tellus id lacus tempor tempus. Proin posuere leo quis neque imperdiet, sit amet facilisis lectus consectetur. Ut quam velit, elementum vel ultrices in, consectetur vel arcu. Praesent enim risus, fermentum vitae eros quis, dignissim convallis ligula. Vestibulum ultrices tempus diam id dapibus.
Quisque vel elit diam. Vivamus sed rhoncus nunc, id tincidunt augue. Vivamus et cursus mauris. Etiam finibus, risus accumsan pulvinar facilisis, ex erat vulputate nunc, sit amet elementum velit augue ut arcu. Etiam quis pretium urna, a rutrum ex. In lacinia metus nec urna pellentesque, sed accumsan nisi imperdiet. Phasellus porttitor porttitor lacus, nec aliquam magna scelerisque quis. Nullam auctor diam nisl, sed accumsan nisi ullamcorper ut. Sed nec ligula neque. Maecenas enim est, pharetra sit amet pulvinar nec, varius at tellus. In convallis tincidunt ex eu porttitor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus nec luctus ex, et ultrices turpis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
Fusce aliquet aliquet turpis, volutpat tristique lacus euismod id. Maecenas eu tortor eget tellus sodales fringilla. Sed ultricies ante eu consectetur luctus. Ut lobortis ullamcorper lacinia. Nam mattis felis ullamcorper leo ornare finibus. In quis commodo ligula. Nulla auctor purus maximus massa suscipit, at hendrerit arcu congue. Proin tincidunt porttitor quam, ut scelerisque urna feugiat sit amet. Donec mollis magna auctor finibus faucibus. Fusce fermentum ornare lobortis. Ut a eros a enim laoreet venenatis. Etiam eget elementum tortor. Nulla in risus eu erat ullamcorper pellentesque.
Nunc ac tincidunt massa, at vestibulum mi. Fusce iaculis, sem sed dictum volutpat, felis orci faucibus urna, vel imperdiet neque quam at tortor. Praesent porta arcu auctor, auctor massa sit amet, pretium eros. Nullam ligula neque, faucibus varius nulla et, dictum commodo dui. Nullam tempor accumsan malesuada. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc in sodales odio. Cras posuere sagittis sem. Proin non augue vitae tortor vulputate imperdiet. Aenean tincidunt, leo at rhoncus lacinia, urna neque placerat mi, vitae dapibus mauris nibh at quam. Aenean in cursus ipsum, sed varius nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras pellentesque suscipit lacus. Aliquam erat volutpat. Nulla scelerisque, ligula quis porta dapibus, mi lacus fermentum justo, eget pulvinar odio mauris non sem.
</content>
<date>April 1st 2015</date>
</post>
And this gets centered (along with the title "Test") To the center of the page, with text-align:0 along the margin stuff, and left:0 and right:0.
Here's the jsfiddle of the big text:
http://jsfiddle.net/6k5szuf0/embedded/result
And here's the jsfiddle of it not working
http://jsfiddle.net/6k5szuf0/1/embedded/result
Keep in mind, all I changed was the <content>.
You need to use text-align in #content div:
#content {
margin-top:20px;
position:absolute;
top:100%;
text-align: center;
width: 100%;/*also set it's width when you use absolute position*/
}
Here's the result.
Also a side note: you don't need to use:
.center {
text-align:center;
left: 0;
right: 0;
margin: 0 auto;
margin-left: auto;
margin-right: auto;
}
.post_content {
left: 0;
right: 0;
}
Notice: When you use left, right, bottom, or top you need to define the position, without setting the position explicitly to relative, absolute or fixed the values won't work as it would be in static position and in static position can't define those values.
I have a web site with a lot of text. To make it more readable when printed, I'd like to create a paginated two-column layout, that is I want two columns per page and the text of column one should wrap to column two and from that to the next page (instead of cutting two very tall columns into pages):
Wanted Not Wanted
1 2 1 4
--- ---
3 4 2 5
--- ---
5 6 3 6
Does someone have a working example for this?
You can use this css
#media print {
body{
column-count: 2;
-webkit-column-count: 2;
-moz-column-count: 2;
}
}
Also you can add a single column title.
CSS
#media print {
.two {
column-count: 2;
-webkit-column-count: 2;
-moz-column-count: 2;
}
.one {
column-count: 1;
-webkit-column-count: 1;
-moz-column-count: 1;
}
}
HTML
<section class="one">
<h1>My awesome project</h1>
</section>
<section class="two">
Very long content
</section>
Example
h1 {
text-align: center
}
count::before {
counter-increment: section;
content: "\A I am flag " counter(section) ".\A ";
font-weight: bold;
white-space: pre;
}
#media print {
.two {
column-count: 2;
-webkit-column-count: 2;
-moz-column-count: 2;
}
.one {
column-count: 1;
-webkit-column-count: 1;
-moz-column-count: 1;
}
input[type="button"] {
display: none
}
}
<input type="button" onclick="print()" value=" --> Click Here to print! <--">
<section class="one">
<h1>My awesome project</h1>
<h2>Chapter 1</h2>
</section>
<section class="two">
<count/>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam blandit libero eu diam dignissim, eget scelerisque lorem facilisis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vivamus tempor lacus sit amet faucibus sodales. Sed mattis sed
felis ut lacinia. Proin pretium augue nec condimentum fermentum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi dignissim vulputate sagittis. Integer diam justo, suscipit a metus sed, facilisis condimentum
nibh. Nulla ut accumsan lorem, semper iaculis lectus. Pellentesque a nulla id elit accumsan gravida venenatis at urna. Quisque convallis pellentesque arcu, nec cursus nibh bibendum vel. Praesent porta est sit amet nisi hendrerit bibendum. Sed condimentum,
mi vel accumsan pellentesque, magna orci tincidunt nulla, at imperdiet nunc odio nec metus. Sed ac interdum diam. Donec eget lacus at nisi cursus luctus. Curabitur id quam tellus. Maecenas euismod magna non faucibus lobortis. Morbi varius nunc vitae
dictum pellentesque. Proin condimentum porttitor felis, a eleifend lorem viverra at. Quisque lobortis aliquet ex et malesuada. Curabitur mattis elit nec felis efficitur, et tincidunt nulla eleifend. Curabitur ac pulvinar est. Cras semper vitae mauris
vitae congue. Nunc sit amet pharetra erat. Sed mattis nunc ac rhoncus euismod. Nam sapien justo, consequat in tortor vitae, vulputate varius diam. Nulla ut velit consequat enim dictum mattis sit amet quis purus. Ut malesuada sapien vel massa dapibus
vehicula. Nunc consequat neque eros, eget consectetur nisl suscipit vel. Nam eget bibendum felis. Donec pellentesque neque ultricies mi imperdiet, eu aliquet velit tempus. Sed ornare tincidunt velit, ac venenatis neque. Fusce condimentum fringilla est,
eu malesuada sem faucibus hendrerit. Cras vitae placerat dui. Nam pellentesque tortor ac metus convallis mattis. Pellentesque maximus fermentum porttitor. Vestibulum vehicula enim feugiat, cursus sem non, luctus nisl. Morbi rhoncus dignissim ante et
fringilla. Vivamus et augue in orci consectetur faucibus at ut ante. Etiam ipsum massa, semper ut congue a, consequat eu turpis.
<count/>
Nunc rutrum erat eget lorem vehicula blandit. Vivamus dictum sem diam, semper pellentesque ipsum finibus suscipit. Aenean fringilla dapibus felis, vitae faucibus lectus ultrices a. Etiam et mi eget ex posuere venenatis. Vestibulum efficitur lacinia augue
vel scelerisque. Nunc cursus nisl a odio laoreet, sit amet ornare risus faucibus. Nulla facilisi. Ut aliquam egestas justo, id dignissim urna sodales in. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Maecenas
ut elementum mi, eget varius sapien. Praesent lectus purus, vehicula euismod fringilla vestibulum, iaculis quis dui. In elit augue, aliquam nec nisi at, vehicula sodales tortor. Proin feugiat blandit eros, at elementum erat. Etiam mi orci, euismod vitae
mollis vel, facilisis in ipsum. Donec porta dolor sed hendrerit tempor. Morbi et eros sit amet lorem tristique luctus sed non felis. Aenean eros dui, hendrerit sed odio quis, cursus sollicitudin felis. Nullam tincidunt sed mi nec dictum. Curabitur velit
purus, gravida nec luctus at, vehicula ut lacus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque vitae est eu ipsum scelerisque ullamcorper sit amet commodo elit. Nulla ut commodo tortor.
<count/>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam blandit libero eu diam dignissim, eget scelerisque lorem facilisis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vivamus tempor lacus sit amet faucibus sodales. Sed mattis sed
felis ut lacinia. Proin pretium augue nec condimentum fermentum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi dignissim vulputate sagittis. Integer diam justo, suscipit a metus sed, facilisis condimentum
nibh. Nulla ut accumsan lorem, semper iaculis lectus. Pellentesque a nulla id elit accumsan gravida venenatis at urna. Quisque convallis pellentesque arcu, nec cursus nibh bibendum vel. Praesent porta est sit amet nisi hendrerit bibendum. Sed condimentum,
mi vel accumsan pellentesque, magna orci tincidunt nulla, at imperdiet nunc odio nec metus. Sed ac interdum diam. Donec eget lacus at nisi cursus luctus. Curabitur id quam tellus. Maecenas euismod magna non faucibus lobortis. Morbi varius nunc vitae
dictum pellentesque. Proin condimentum porttitor felis, a eleifend lorem viverra at. Quisque lobortis aliquet ex et malesuada. Curabitur mattis elit nec felis efficitur, et tincidunt nulla eleifend. Curabitur ac pulvinar est. Cras semper vitae mauris
vitae congue. Nunc sit amet pharetra erat. Sed mattis nunc ac rhoncus euismod. Nam sapien justo, consequat in tortor vitae, vulputate varius diam. Nulla ut velit consequat enim dictum mattis sit amet quis purus. Ut malesuada sapien vel massa dapibus
vehicula.
<count/>
Nunc consequat neque eros, eget consectetur nisl suscipit vel. Nam eget bibendum felis. Donec pellentesque neque ultricies mi imperdiet, eu aliquet velit tempus. Sed ornare tincidunt velit, ac venenatis neque. Fusce condimentum fringilla est, eu malesuada
sem faucibus hendrerit. Cras vitae placerat dui. Nam pellentesque tortor ac metus convallis mattis. Pellentesque maximus fermentum porttitor. Vestibulum vehicula enim feugiat, cursus sem non, luctus nisl. Morbi rhoncus dignissim ante et fringilla. Vivamus
et augue in orci consectetur faucibus at ut ante. Etiam ipsum massa, semper ut congue a, consequat eu turpis. Nunc rutrum erat eget lorem vehicula blandit. Vivamus dictum sem diam, semper pellentesque ipsum finibus suscipit. Aenean fringilla dapibus
felis, vitae faucibus lectus ultrices a. Etiam et mi eget ex posuere venenatis. Vestibulum efficitur lacinia augue vel scelerisque. Nunc cursus nisl a odio laoreet, sit amet ornare risus faucibus. Nulla facilisi. Ut aliquam egestas justo, id dignissim
urna sodales in. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Maecenas ut elementum mi, eget varius sapien. Praesent lectus purus, vehicula euismod fringilla vestibulum, iaculis quis dui. In elit augue,
aliquam nec nisi at, vehicula sodales tortor. Proin feugiat blandit eros, at elementum erat.
<count/>
Etiam mi orci, euismod vitae mollis vel, facilisis in ipsum. Donec porta dolor sed hendrerit tempor. Morbi et eros sit amet lorem tristique luctus sed non felis. Aenean eros dui, hendrerit sed odio quis, cursus sollicitudin felis. Nullam tincidunt sed
mi nec dictum. Curabitur velit purus, gravida nec luctus at, vehicula ut lacus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque vitae est eu ipsum scelerisque ullamcorper sit amet commodo elit. Nulla
ut commodo tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam blandit libero eu diam dignissim, eget scelerisque lorem facilisis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vivamus tempor lacus sit amet faucibus
sodales. Sed mattis sed felis ut lacinia. Proin pretium augue nec condimentum fermentum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi dignissim vulputate sagittis. Integer diam justo, suscipit a metus
sed, facilisis condimentum nibh. Nulla ut accumsan lorem, semper iaculis lectus. Pellentesque a nulla id elit accumsan gravida venenatis at urna. Quisque convallis pellentesque arcu, nec cursus nibh bibendum vel. Praesent porta est sit amet nisi hendrerit
bibendum. Sed condimentum, mi vel accumsan pellentesque, magna orci tincidunt nulla, at imperdiet nunc odio nec metus.
<count/>
Sed ac interdum diam. Donec eget lacus at nisi cursus luctus. Curabitur id quam tellus. Maecenas euismod magna non faucibus lobortis. Morbi varius nunc vitae dictum pellentesque. Proin condimentum porttitor felis, a eleifend lorem viverra at. Quisque
lobortis aliquet ex et malesuada. Curabitur mattis elit nec felis efficitur, et tincidunt nulla eleifend. Curabitur ac pulvinar est. Cras semper vitae mauris vitae congue. Nunc sit amet pharetra erat. Sed mattis nunc ac rhoncus euismod. Nam sapien justo,
consequat in tortor vitae, vulputate varius diam. Nulla ut velit consequat enim dictum mattis sit amet quis purus. Ut malesuada sapien vel massa dapibus vehicula. Nunc consequat neque eros, eget consectetur nisl suscipit vel. Nam eget bibendum felis.
Donec pellentesque neque ultricies mi imperdiet, eu aliquet velit tempus. Sed ornare tincidunt velit, ac venenatis neque. Fusce condimentum fringilla est, eu malesuada sem faucibus hendrerit. Cras vitae placerat dui. Nam pellentesque tortor ac metus
convallis mattis. Pellentesque maximus fermentum porttitor. Vestibulum vehicula enim feugiat, cursus sem non, luctus nisl. Morbi rhoncus dignissim ante et fringilla. Vivamus et augue in orci consectetur faucibus at ut ante. Etiam ipsum massa, semper
ut congue a, consequat eu turpis.
<count/>
Nunc rutrum erat eget lorem vehicula blandit. Vivamus dictum sem diam, semper pellentesque ipsum finibus suscipit. Aenean fringilla dapibus felis, vitae faucibus lectus ultrices a. Etiam et mi eget ex posuere venenatis. Vestibulum efficitur lacinia augue
vel scelerisque. Nunc cursus nisl a odio laoreet, sit amet ornare risus faucibus. Nulla facilisi. Ut aliquam egestas justo, id dignissim urna sodales in. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Maecenas
ut elementum mi, eget varius sapien. Praesent lectus purus, vehicula euismod fringilla vestibulum, iaculis quis dui. In elit augue, aliquam nec nisi at, vehicula sodales tortor. Proin feugiat blandit eros, at elementum erat.
</section>
<input type="button" onclick="print()" value=" --> Click Here to print! <--">
You can use the #media print css parameter to define different styles only for printing.
If you can show me an example of HTML I can give you a proper solution, but in general you can define your div's or table's with with float:left; under #media print.
You could possibly do this with CSS print styling, but you need to be careful with tables as well as floating divs, it doesn't always work. page-break-before