Virtually infinite container (infinite width) - css

In the following situation, I don't want #blah to have linebreaks : I want its only limitation to be max-width: 20em;. It should not break lines here:
#container { position: absolute; width:100% }
#blah {
position: absolute;
font-size: 100px;
max-width: 20em;
}
<div id="container">
<div id="blah">Hahaha hahahah hah</div>
</div>
This is certainly caused by the fact the container is "only" 100% wide. Here
#container { position: absolute; width:10000% }
solves the problem.
But in my application I can have very very very large text, and very very very small text (see http://bigpicture.bi/demo).
Question:
How to make that #container is virtually infinite ? i.e. width: 100% is not enough, 1000% is not enough, and even 1000000% is not enough. Can I use width: infinity ?

Update
A different post and some comments have been deleted, which indicated that jQuery was okay to use, even though it wasn't tagged in the question.
My jQuery solution is below, but I've since come up with a much simpler solution: Add a width style to blah, which matches max-width. That way, container will automatically grow as needed:
#blah {
position: absolute;
font-size: 100px;
max-width: 20em;
width: 20em;
}
jQuery Solution (which may be useful for similar problems):
In the snippet below, I changed blah to a class instead of an ID.
You'll notice that max-width is ignored.
Click the Grow Container button. Each child of #container is cloned and given a static position, so we can determine its width. #container then grows as needed to match the width.
Now that #container has a width, its children can widen to match their max-width.
function growContainer() {
$('.blah').each(function() {
var clone= $(this).clone();
clone.css({position: 'static'});
$('body').append(clone);
var right= $(this).offset().left + clone.width();
$('#container').css({
width: Math.max($('#container').width(), right)
});
clone.remove();
});
} //growContainer
$('#BG').click(growContainer);
#container {
position: absolute;
}
#BG {
position: fixed;
}
.blah {
position: absolute;
max-width: 20em;
}
#blah1 {
font-size: 100px;
top: 50px;
background: red;
}
#blah2 {
left: 5000px;
font-size: 50px;
background: lightblue;
}
#blah3 {
top: 1000px;
font-size: 20px;
background: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="BG">Grow Container</button>
<div id="container">
<div class="blah" id="blah1">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </div>
<div class="blah" id="blah2">
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? </div>
<div class="blah" id="blah3">
At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat. </div>
</div>

Related

Bug in code to transition video to full-screen on hover

I'm working on coding a video effect that scales a video to the full viewport when hovering over it (the final implementation will not use the hover event. I'm just working on the CSS transitions between the two states). But the problem is that when I hover over the video, the height and width change smoothly, but the video position instantly jumps to the upper left-hand corner of the window rather than sliding up there smoothly. Here's a CodePen example illustrating the problem I'm having:
https://codepen.io/Jdo300/pen/abqevWo
HTML
<div id="menu">
Sidebar Menu
</div>
<div id="content">
<p>Lorem ipsum dolor sit amet. Non incidunt tenetur eos dicta nemo vel nisi dolorem sed placeat recusandae. Ab quibusdam nihil eum voluptas illum non nostrum ratione ex fugit ipsam et earum perferendis et quaerat quia. Qui esse illo et animi incidunt ab blanditiis voluptas et quam facilis vel unde beatae aut nulla earum eos laboriosam fuga! Est atque architecto sed quia veniam ut voluptas velit. Sit internos minima a obcaecati porro est sint enim est quia architecto et velit aperiam et iure consequatur At impedit nostrum. Nam rerum minus est quis dolorem aut suscipit voluptatem id commodi libero. Rem debitis exercitationem est alias quas ut quidem consequatur ut minus adipisci cum atque incidunt. </p><p>Aut nihil quia non galisum esse ad quaerat commodi. Sed porro sapiente in adipisci neque et rerum dicta aut dolore quia eos voluptatibus aliquid. Ea iste culpa in minima sunt et similique possimus aut perferendis laudantium eos velit galisum qui possimus quibusdam sed rerum minima. Aut eius consequatur et aliquid praesentium et quis expedita id aperiam rerum sed rerum quibusdam! Et neque ipsam aut minus nostrum ea omnis perferendis in molestiae delectus. </p><p>Qui ipsam galisum rem quisquam ipsam et repellat praesentium quo dolorem perspiciatis. Sit quia praesentium qui esse dolorem est natus molestias. Qui maxime aliquid non ipsum quidem et nobis molestiae nam doloremque provident. Et laudantium iusto non accusantium aperiam et quam libero id voluptatem facere. Ut minus reiciendis 33 voluptas voluptatem et minima error non nihil nobis ut corporis ratione vel nihil ratione. Ab tempora ipsa ut tempore ipsum sed neque natus et ducimus eveniet non blanditiis quia At commodi deserunt ut molestiae molestiae. Cum sapiente tempore et dolorum explicabo At facere excepturi et dolorum labore qui officia sunt sit consequuntur aperiam. In repellat praesentium aut soluta internos ut galisum iste qui rerum minima qui veniam culpa quo aspernatur exercitationem eos dolorum excepturi. Aut libero ipsum At assumenda architecto in tempore nulla a molestias excepturi. </p><p>Et dignissimos consequuntur et voluptatem rerum eum laborum amet sit ullam facere et sequi consequatur. Et voluptates ducimus At voluptates quis aut aspernatur saepe ad consequatur sunt ut dolore omnis! Ut labore reiciendis sed consequatur modi et quia asperiores et omnis distinctio non ipsum fugiat. Est doloribus perferendis nam mollitia quisquam et delectus quia. Vel eaque repudiandae quo sunt magnam et laboriosam aliquam et expedita labore aut officiis harum. </p><p>Aut earum repellat nesciunt culpa ab dolores deleniti eum nihil animi. Et esse officia est neque architecto qui iste exercitationem et rerum amet. Ea aliquam vitae est odit tenetur ut explicabo dignissimos 33 iure magni. Et repudiandae modi ut laudantium laboriosam et possimus ipsa id praesentium officiis. Et sint autem aut tenetur consectetur est cumque vero sed tenetur obcaecati cum cupiditate placeat. Non rerum quas aut dolore quia hic voluptatem libero vel blanditiis odio est impedit saepe. Hic pariatur enim et consequatur laborum nam consequuntur veritatis est mollitia deleniti eum dolor nesciunt. </p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<div id="video_container" align="center">
<iframe id="video" src="https://www.youtube.com/embed/w0pt7xSJJzM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<p>Lorem ipsum dolor sit amet. Et dolorem blanditiis est cupiditate libero id rerum magnam a facilis aperiam sed nisi nobis aut explicabo quod. Ad mollitia doloribus sit architecto delectus et reiciendis voluptatibus sed consequuntur perspiciatis et itaque sint. Ut illum iste vel doloribus omnis non saepe eius ut fuga perferendis aut sunt numquam aut voluptate eligendi. Qui enim placeat et omnis fugiat qui porro culpa non facere obcaecati quo modi laboriosam. </p><p>Et sunt labore est velit deserunt aut sunt culpa id aliquam ipsam aut molestiae iure eos delectus libero ab ipsum ipsum! In sint voluptatibus aut aperiam incidunt a quia galisum qui autem vitae ea doloremque facilis aut corrupti commodi est dolorum iusto. </p><p>Vel aspernatur quos sit debitis molestiae rem galisum distinctio. Ab tenetur dolores aut natus temporibus est veritatis velit sit laboriosam sit quae perspiciatis cum eveniet sapiente.</p>
<p>Lorem ipsum dolor sit amet. Et dolorem blanditiis est cupiditate libero id rerum magnam a facilis aperiam sed nisi nobis aut explicabo quod. Ad mollitia doloribus sit architecto delectus et reiciendis voluptatibus sed consequuntur perspiciatis et itaque sint. Ut illum iste vel doloribus omnis non saepe eius ut fuga perferendis aut sunt numquam aut voluptate eligendi. Qui enim placeat et omnis fugiat qui porro culpa non facere obcaecati quo modi laboriosam. </p><p>Et sunt labore est velit deserunt aut sunt culpa id aliquam ipsam aut molestiae iure eos delectus libero ab ipsum ipsum! In sint voluptatibus aut aperiam incidunt a quia galisum qui autem vitae ea doloremque facilis aut corrupti commodi est dolorum iusto. </p><p>Vel aspernatur quos sit debitis molestiae rem galisum distinctio. Ab tenetur dolores aut natus temporibus est veritatis velit sit laboriosam sit quae perspiciatis cum eveniet sapiente.</p>
</div>
CSS
body {
background: lightsalmon;
}
#menu {
position: fixed;
top: 0;
left:0;
width: 200px;
height: 100vh;
background: slategray;
}
#content {
position: absolute;
right: 0px;
left: 200px;
top: 0px;
height: 300vh;
background: lightgray;
padding: 20px;
}
#video_container {
width: 800px;
height: 480px;
background: blue;
transition: all .2s ease-in-out;
}
#video_container:hover {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: blue;
}
#video {
height: 100%;
width: 100%;
display: block;
}
It needs to have top and left defined before you can transition them to (0, 0).
See for example the effect works here. Now all you need to figure is how to calculate the required position. Hope that helps.
#video_container {
position: absolute;
width: 800px;
height: 480px;
top: 200px;
left: 300px;
background: blue;
transition: all .2s ease-in-out;
}
#video_container:hover {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: blue;
transition: all .2s ease-in-out;
}
#video {
height: 100%;
width: 100%;
display: block;
}
<p>Aut nihil quia non galisum esse ad quaerat commodi. Sed porro sapiente in adipisci neque et rerum dicta aut dolore quia eos voluptatibus aliquid. Ea iste culpa in minima sunt et similique possimus aut perferendis laudantium eos velit galisum qui possimus
quibusdam sed rerum minima. Aut eius consequatur et aliquid praesentium et quis expedita id aperiam rerum sed rerum quibusdam! Et neque ipsam aut minus nostrum ea omnis perferendis in molestiae delectus.
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<div id="video_container" align="center">
<iframe id="video" src="https://www.youtube.com/embed/w0pt7xSJJzM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<p>Lorem ipsum dolor sit amet. Et dolorem blanditiis est cupiditate libero id rerum magnam a facilis aperiam sed nisi nobis aut explicabo quod. Ad mollitia doloribus sit architecto delectus et reiciendis voluptatibus sed consequuntur perspiciatis et itaque
sint. Ut illum iste vel doloribus omnis non saepe eius ut fuga perferendis aut sunt numquam aut voluptate eligendi. Qui enim placeat et omnis fugiat qui porro culpa non facere obcaecati quo modi laboriosam. </p>

Two Bootstrap columns when left is fixed

I am trying to get a two column layout where left column has a fixed position. My problem is that the right column's content goes underneath the fixed one. Here is a basic structure:
<body style="overflow:auto">
<div class="container-fluid">
<div class="row">
<div class="col-xs-2 left">
1234
</div>
<div class="col-xs-10">
<div>
Content
</div>
</div>
</div>
</div>
</body>
CSS:
.left {
position: fixed;
z-index: 2;
width: 100px;
height: 100%;
background-color: #fff;
}
Fiddle
Just add margin-left:100px(width of the left div) to the second div.it should fix your problem
check this snippet
.left {
position: fixed;
z-index: 2;
width: 100px;
height: 100%;
background-color: red;
}
.col-xs-10 {
margin-left: 100px;
}
<body style="overflow:auto">
<div class="container-fluid">
<div class="row">
<div class="col-xs-2 left">
1234
</div>
<div class="col-xs-10">
<div>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborumAt vero eos et accusamus et iusto odio dignissimos
ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga.
Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus
autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur
aut perferendis doloribus asperiores repellat. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi
ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborumAt vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia
deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus,
omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a
sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.
</div>
</div>
</div>
</div>
</body>
Hope it helps

text-overflow:ellipsis; Can't get to work

Usually I accomplish this with PHP or JS if I needed to, but I'm trying to make this design responsive and for the life of me I cannot get the 3 dots to show up at the end of the cutoff string. Here's what I'm doing:
<article class="aBlogCont">
<h2><time class="aBlogDate" pubdate="pudate">12/18/13</time> : Welcome</h2>
<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?</p>
<hr />
</article>
And My CSS:
.aBlogCont{
width:29.33%;
padding-left:2%;
padding-right:2%;
height:350px;
overflow:hidden;
text-overflow:ellipsis;
display:inline;
float:left;
}
.aBlogCont > p{
overflow:hidden;
text-overflow:ellipsis;
}
From what I've read, this is correct. Here is my fiddle: http://jsfiddle.net/335F6/ Please let me know what I'm doing wrong.
Adding white-space: nowrap should fix it:
.aBlogCont > p{
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
demo
Try adding white-space:nowrap; to .aBlogCont

Creating a Scrollable Span

I have the following DIV which primarily has two sections - left and right. The right section has some images and I am not really worried about that. It's the span class="left" that's worrying. I am not able to add a scrollbar to it.
<div id="about">
<span class="quoted">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris </span><br/>
<span class="left"><span class="paragraph_title">ABOUT</span><br/>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?"<br/><br/>
At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat<br/><br/>
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciun<br/><br/>
</span>
<div class="right">
<ul>
<li><span class="paragraph_title">RECENT ACTIVITIES</span></li>
<li><img src="" alt="recent project"/>www.stackoverflow.com</li>
<li><img src="" alt="recent project"/>www.stackoverflow.com</li>
<li><img src="" alt="recent project"/>www.stackoverflow.com</li>
</ul>
</div>
</div>
and some CSS for the About Div that goes as
#about {
position: absolute;
padding: 0px 0px 0px 30px;
top: 210px;
opacity: 0;
display: none;
z-index: 8;
overflow: auto;
}
#about .quoted {
font-size: 21px;
font-weight: 300;
line-height: 27px;
color: #4bc9f2;
text-shadow: 0px 2px 2px #000;
}
#about .paragraph_title {
font-size: 14px;
font-weight: 700;
color: #4bc9f2;
line-height: 28px;
}
#about .left {
font-size: 13px;
font-weight: 300;
line-height: 16px;
color: #fff;
float: left;
padding: 60px 0px 0px 0px;
width: 490px;
}
How can I add a scroll bar to the Span tag and make it Scroll Vertically and NOT horizontally. You can assume the Span height to be anything.
How can I add a scroll bar to the Span tag and make it Scroll Vertically and NOT horizontally. You can assume the Span height to be anything.
In order to do this for a span, you'll need those CSS
display: block;
overflow: auto;
Then, you might need to apply a height if the span use a float or if there isn't an appropriate container.
If i'm not remembering wrong, vertical scroll could be done as:
overflow-y:scroll
Give height and overflow properties
style="height: 114px;overflow: scroll !important;"

CSS Sticky Footers with Unknown Height

Is there any way to stick a footer to the bottom of the browser screen or right after the content (depending on which is longer) using CSS without knowing the size of the footer in advance?
Right now I am using the absolute positioning in a container that holds the footer and the content with container's min-height as 100%, but if I change the footer I find I must change the padding at the bottom of the container to match its height.
http://pixelsvsbytes.com/blog/2011/09/sticky-css-footers-the-flexible-way/
Summary:
For a site with a header, content area, and footer:
Set html, body {height: 100%;}
Set your body (or a wrapper div) to display: table; width: 100%; height: 100%;
Set your header, footer, and content area to display: table-row;. Give your header and footer height: 1px;, and give your content area height: auto;
The header and footer will both expand to fit their content. The content area will expand to fit the larger of its content, or the available space.
https://jsfiddle.net/0cx30dqf/
If you're willing to jump into the HTML5 future, you can use flexbox...
body {
display: flex;
min-height: 100vh;
flex-direction: column;
}
main {
flex: 1;
}
My more detailed answer to the same question: How to make a fluid sticky footer (full example: http://jsfiddle.net/n5BaR/)
Solved by flexbox: http://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/
What is Flexbox from MDN: https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Flexible_boxes
Try this!
Uses Flex!
NO FIXED HEIGHT, JAVASCRIPT OR TABLES
Expands when more content, and when there isn't it sticks to bottom
Note: Does not work with IE 9 & Below
*{
margin: 0;
padding: 0;
}
html, body{
height: 100%;
}
body{
min-height: 100%;
display: flex;
flex-direction: column;
}
.content{
flex: 1;
background: #ddd;
}
<body>
<header>
Header
</header>
<div class='content'>
This is the page content
<br>
PS. Don't forget the margin: 0 and padding: 0 to avoid scrollbars (this can be also put into the body css)
</div>
<footer>
Footer
</footer>
</body>
For an app with a responsive footer (i.e. changes height on resize), you can use jquery to dynamically adjust the padding of the bottom for the parent element. Adding onto this post: Keep Footer at Bottom
HTML:
<div class=”main-container”>
<header>
this is a header
</header>
<section>
this is content
</section>
<footer>
this is a footer
</footer>
</div>
CSS:
html,
body {
height: 100%;
position: relative;
}
.main-container {
min-height: 100vh; /* will cover the 100% of viewport */
overflow: hidden;
display: block;
position: relative;
padding-bottom: 100px; /* height of your footer */
}
footer {
position: absolute;
bottom: 0;
width: 100%;
}
CoffeeScript:
footerEventListener = ->
$(window).on "resize", ->
setFooterHeight()
setFooterHeight = ->
// get footer height in px
bottomPadding = $("footer").css("height")
$(".main-wrapper").css("padding-bottom", "#{bottomPadding}")
// init footer events
setFooterHeight()
footerEventListener()
Check out the CodePen here.
since no one knows the answer for sticky footer w/o knowing the height of it, using css (crosbrowser solution), i was forced to calculate it
jquery:
if( $(document).height() < $(window).height() )
{
$('#content').height
(
$(window).height - $('#footer').height()
);
}
html structure:
<div id="content"></div>
<div id="footer"></div>
I think the best way is just add a class to your footer. Javascript will do the rest.
//This Pen is By Mohammad Abdus Salam
//portfolio.codeexposer.com
var footerHeight = $('footer.fixed_footer').height();
if($('footer').hasClass('fixed_footer')){
$( "section" ).last().css({
"margin-bottom": footerHeight + 'px'
});
}
#import url('https://fonts.googleapis.com/css?family=Raleway:400,700,800');
body{
margin: 0;
padding: 0;
text-align:center;
font-family: 'Raleway', sans-serif;
line-height: 30px;
}
section{
padding-top: 80px;
padding-bottom: 80px;
border-bottom:1px solid #ddd;
background: #ffffff;
z-index: 9;
}
h1{
font-size: 48px;
font-weight: 800;
text-transform: capitalize;
}
a{
text-decoration: none;
}
.container{
width: 700px;
display: inline-block;
box-sizing:border-box;
padding-left: 30px;
padding-right: 30px;
}
.logo{
height: 80px;
width: 80px;
display: inline-block;
}
.footer_top{
border-bottom: 1px solid #777;
padding-bottom: 60px;
}
.logo img{
width: 100%;
height: 100%;
}
.footer_bottom {}
.footer_bottom p{
color:#aaa;
}
.footer_top{
padding-top: 100px;
}
.footer_bottom p a{
color:#158;
}
footer{
width: 100%;
left: 0;
bottom:0px;
z-index: -1;
background: #222222;
}
.fixed_footer{
width: 100%;
position:fixed;
left: 0;
bottom:0;
z-index: -99;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section>
<div class="container">
<h1>This is Banner</h1>
<p>
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Dicta fugiat amet explicabo illum, soluta quisquam minus consectetur totam omnis non veniam possimus atque nisi earum aperiam quasi ut, quas temporibus minima eius, rem repellat. Sed eius quae eum qui odio molestiae porro. Aut ab impedit recusandae odit at? Quas ab laboriosam culpa, rerum nobis consequatur voluptate nemo expedita voluptatem porro aliquid dolorum maiores autem dolorem unde mollitia quae nam fugit. At quibusdam error consequatur suscipit? Necessitatibus asperiores, doloribus accusamus odit quidem deserunt cum reiciendis aliquid ipsam alias distinctio recusandae earum nam nulla ratione quia architecto beatae nihil expedita blanditiis animi sit, exercitationem tempora placeat. Accusamus ad odio natus, pariatur sed tenetur debitis. Soluta distinctio velit beatae asperiores eligendi? Neque quasi doloremque cumque placeat ea sapiente recusandae harum veritatis corrupti! Ad, alias, at cum debitis sit obcaecati vitae nesciunt aliquam nulla laudantium ut sunt veniam distinctio mollitia sed neque qui sint repudiandae adipisci deserunt perspiciatis consectetur optio blanditiis? Unde distinctio dolorum laboriosam dolorem ex in, porro facilis ad velit beatae excepturi ut aspernatur! At sunt tempora, placeat veritatis excepturi hic repellendus pariatur dolores deserunt cupiditate exercitationem laborum itaque sapiente nostrum non, quibusdam explicabo velit dolorum cum. Maiores, accusamus! Iusto, rem doloribus?
</p>
</div>
</section>
<section>
<div class="container">
<h1>This is About</h1>
<p>
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Dicta fugiat amet explicabo illum, soluta quisquam minus consectetur totam omnis non veniam possimus atque nisi earum aperiam quasi ut, quas temporibus minima eius, rem repellat. Sed eius quae eum qui odio molestiae porro. Aut ab impedit recusandae odit at? Quas ab laboriosam culpa, rerum nobis consequatur voluptate nemo expedita voluptatem porro aliquid dolorum maiores autem dolorem unde mollitia quae nam fugit. At quibusdam error consequatur suscipit? Necessitatibus asperiores, doloribus accusamus odit quidem deserunt cum reiciendis aliquid ipsam alias distinctio recusandae earum nam nulla ratione quia architecto beatae nihil expedita blanditiis animi sit, exercitationem tempora placeat. Accusamus ad odio natus, pariatur sed tenetur debitis. Soluta distinctio velit beatae asperiores eligendi? Neque quasi doloremque cumque placeat ea sapiente recusandae harum veritatis corrupti! Ad, alias, at cum debitis sit obcaecati vitae nesciunt aliquam nulla laudantium ut sunt veniam distinctio mollitia sed neque qui sint repudiandae adipisci deserunt perspiciatis consectetur optio blanditiis? Unde distinctio dolorum laboriosam dolorem ex in, porro facilis ad velit beatae excepturi ut aspernatur! At sunt tempora, placeat veritatis excepturi hic repellendus pariatur dolores deserunt cupiditate exercitationem laborum itaque sapiente nostrum non, quibusdam explicabo velit dolorum cum. Maiores, accusamus! Iusto, rem doloribus?
</p>
</div>
</section>
<section>
<div class="container">
<h1>This is Service</h1>
<p>
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Dicta fugiat amet explicabo illum, soluta quisquam minus consectetur totam omnis non veniam possimus atque nisi earum aperiam quasi ut, quas temporibus minima eius, rem repellat. Sed eius quae eum qui odio molestiae porro. Aut ab impedit recusandae odit at? Quas ab laboriosam culpa, rerum nobis consequatur voluptate nemo expedita voluptatem porro aliquid dolorum maiores autem dolorem unde mollitia quae nam fugit. At quibusdam error consequatur suscipit? Necessitatibus asperiores, doloribus accusamus odit quidem deserunt cum reiciendis aliquid ipsam alias distinctio recusandae earum nam nulla ratione quia architecto beatae nihil expedita blanditiis animi sit, exercitationem tempora placeat. Accusamus ad odio natus, pariatur sed tenetur debitis. Soluta distinctio velit beatae asperiores eligendi? Neque quasi doloremque cumque placeat ea sapiente recusandae harum veritatis corrupti! Ad, alias, at cum debitis sit obcaecati vitae nesciunt aliquam nulla laudantium ut sunt veniam distinctio mollitia sed neque qui sint repudiandae adipisci deserunt perspiciatis consectetur optio blanditiis? Unde distinctio dolorum laboriosam dolorem ex in, porro facilis ad velit beatae excepturi ut aspernatur! At sunt tempora, placeat veritatis excepturi hic repellendus pariatur dolores deserunt cupiditate exercitationem laborum itaque sapiente nostrum non, quibusdam explicabo velit dolorum cum. Maiores, accusamus! Iusto, rem doloribus?
</p>
</div>
</section>
<section>
<div class="container">
<h1>This is Portfolio</h1>
<p>
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Dicta fugiat amet explicabo illum, soluta quisquam minus consectetur totam omnis non veniam possimus atque nisi earum aperiam quasi ut, quas temporibus minima eius, rem repellat. Sed eius quae eum qui odio molestiae porro. Aut ab impedit recusandae odit at? Quas ab laboriosam culpa, rerum nobis consequatur voluptate nemo expedita voluptatem porro aliquid dolorum maiores autem dolorem unde mollitia quae nam fugit. At quibusdam error consequatur suscipit? Necessitatibus asperiores, doloribus accusamus odit quidem deserunt cum reiciendis aliquid ipsam alias distinctio recusandae earum nam nulla ratione quia architecto beatae nihil expedita blanditiis animi sit, exercitationem tempora placeat. Accusamus ad odio natus, pariatur sed tenetur debitis. Soluta distinctio velit beatae asperiores eligendi? Neque quasi doloremque cumque placeat ea sapiente recusandae harum veritatis corrupti! Ad, alias, at cum debitis sit obcaecati vitae nesciunt aliquam nulla laudantium ut sunt veniam distinctio mollitia sed neque qui sint repudiandae adipisci deserunt perspiciatis consectetur optio blanditiis? Unde distinctio dolorum laboriosam dolorem ex in, porro facilis ad velit beatae excepturi ut aspernatur! At sunt tempora, placeat veritatis excepturi hic repellendus pariatur dolores deserunt cupiditate exercitationem laborum itaque sapiente nostrum non, quibusdam explicabo velit dolorum cum. Maiores, accusamus! Iusto, rem doloribus?
</p>
</div>
</section>
<section>
<div class="container">
<h1>This is Banner</h1>
<p>
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Dicta fugiat amet explicabo illum, soluta quisquam minus consectetur totam omnis non veniam possimus atque nisi earum aperiam quasi ut, quas temporibus minima eius, rem repellat. Sed eius quae eum qui odio molestiae porro. Aut ab impedit recusandae odit at? Quas ab laboriosam culpa, rerum nobis consequatur voluptate nemo expedita voluptatem porro aliquid dolorum maiores autem dolorem unde mollitia quae nam fugit. At quibusdam error consequatur suscipit? Necessitatibus asperiores, doloribus accusamus odit quidem deserunt cum reiciendis aliquid ipsam alias distinctio recusandae earum nam nulla ratione quia architecto beatae nihil expedita blanditiis animi sit, exercitationem tempora placeat. Accusamus ad odio natus, pariatur sed tenetur debitis. Soluta distinctio velit beatae asperiores eligendi? Neque quasi doloremque cumque placeat ea sapiente recusandae harum veritatis corrupti! Ad, alias, at cum debitis sit obcaecati vitae nesciunt aliquam nulla laudantium ut sunt veniam distinctio mollitia sed neque qui sint repudiandae adipisci deserunt perspiciatis consectetur optio blanditiis? Unde distinctio dolorum laboriosam dolorem ex in, porro facilis ad velit beatae excepturi ut aspernatur! At sunt tempora, placeat veritatis excepturi hic repellendus pariatur dolores deserunt cupiditate exercitationem laborum itaque sapiente nostrum non, quibusdam explicabo velit dolorum cum. Maiores, accusamus! Iusto, rem doloribus?
</p>
</div>
</section>
<footer class="fixed_footer">
<div class="container">
<div class="footer_top">
<a class="logo" href="portfolio.codeexposer.com">
<img src="https://lh3.googleusercontent.com/-a700z77yIxk/AAAAAAAAAAI/AAAAAAAAABM/RzvY_qm9KQY/s512-p/photo.jpg" alt="">
</a>
</div>
<div class="footer_bottom">
<p>
All Rights Reserved By Mohammad Abdus Salam
</p>
</div>
</div>
</footer>
Take a look at this, cssstickyfooter, it works great in any browser.
Update: This is from 2010, might not be relevant with current standards

Resources