Fixed header, scrollable content, fixed footer layout
I created an example of what I want to achieve below. It uses position: fixed
for top and bottom bars. But I would like it to be inside css grid (I don't want to use margins for header and footer, I also don't want to add hidden div elements), is it possible?
* {
margin: 0;
}
html {
height: 100%;
}
body {
min-height: 100%;
display: grid;
grid-template-rows: auto 1fr auto;
}
header {
position: fixed;
width: 100%;
height: 100px;
background-color: #aaaaaa;
}
main {
margin-top: 100px;
margin-bottom: 50px;
background-color: #dddddd;
overflow: scroll;
}
footer {
position: fixed;
bottom: 0;
width: 100%;
height: 50px;
background-color: #444444;
}
<header>Header</header>
<main>
Main start
<br>
<br>
<br>
<br>
<br>
<br>
<br> Main inside
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br> Main end
</main>
<footer>Footer</footer>
https://codepen.io/stpoa/pen/zyPqaq
html css html5 css3 css-grid
add a comment |
I created an example of what I want to achieve below. It uses position: fixed
for top and bottom bars. But I would like it to be inside css grid (I don't want to use margins for header and footer, I also don't want to add hidden div elements), is it possible?
* {
margin: 0;
}
html {
height: 100%;
}
body {
min-height: 100%;
display: grid;
grid-template-rows: auto 1fr auto;
}
header {
position: fixed;
width: 100%;
height: 100px;
background-color: #aaaaaa;
}
main {
margin-top: 100px;
margin-bottom: 50px;
background-color: #dddddd;
overflow: scroll;
}
footer {
position: fixed;
bottom: 0;
width: 100%;
height: 50px;
background-color: #444444;
}
<header>Header</header>
<main>
Main start
<br>
<br>
<br>
<br>
<br>
<br>
<br> Main inside
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br> Main end
</main>
<footer>Footer</footer>
https://codepen.io/stpoa/pen/zyPqaq
html css html5 css3 css-grid
add a comment |
I created an example of what I want to achieve below. It uses position: fixed
for top and bottom bars. But I would like it to be inside css grid (I don't want to use margins for header and footer, I also don't want to add hidden div elements), is it possible?
* {
margin: 0;
}
html {
height: 100%;
}
body {
min-height: 100%;
display: grid;
grid-template-rows: auto 1fr auto;
}
header {
position: fixed;
width: 100%;
height: 100px;
background-color: #aaaaaa;
}
main {
margin-top: 100px;
margin-bottom: 50px;
background-color: #dddddd;
overflow: scroll;
}
footer {
position: fixed;
bottom: 0;
width: 100%;
height: 50px;
background-color: #444444;
}
<header>Header</header>
<main>
Main start
<br>
<br>
<br>
<br>
<br>
<br>
<br> Main inside
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br> Main end
</main>
<footer>Footer</footer>
https://codepen.io/stpoa/pen/zyPqaq
html css html5 css3 css-grid
I created an example of what I want to achieve below. It uses position: fixed
for top and bottom bars. But I would like it to be inside css grid (I don't want to use margins for header and footer, I also don't want to add hidden div elements), is it possible?
* {
margin: 0;
}
html {
height: 100%;
}
body {
min-height: 100%;
display: grid;
grid-template-rows: auto 1fr auto;
}
header {
position: fixed;
width: 100%;
height: 100px;
background-color: #aaaaaa;
}
main {
margin-top: 100px;
margin-bottom: 50px;
background-color: #dddddd;
overflow: scroll;
}
footer {
position: fixed;
bottom: 0;
width: 100%;
height: 50px;
background-color: #444444;
}
<header>Header</header>
<main>
Main start
<br>
<br>
<br>
<br>
<br>
<br>
<br> Main inside
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br> Main end
</main>
<footer>Footer</footer>
https://codepen.io/stpoa/pen/zyPqaq
* {
margin: 0;
}
html {
height: 100%;
}
body {
min-height: 100%;
display: grid;
grid-template-rows: auto 1fr auto;
}
header {
position: fixed;
width: 100%;
height: 100px;
background-color: #aaaaaa;
}
main {
margin-top: 100px;
margin-bottom: 50px;
background-color: #dddddd;
overflow: scroll;
}
footer {
position: fixed;
bottom: 0;
width: 100%;
height: 50px;
background-color: #444444;
}
<header>Header</header>
<main>
Main start
<br>
<br>
<br>
<br>
<br>
<br>
<br> Main inside
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br> Main end
</main>
<footer>Footer</footer>
* {
margin: 0;
}
html {
height: 100%;
}
body {
min-height: 100%;
display: grid;
grid-template-rows: auto 1fr auto;
}
header {
position: fixed;
width: 100%;
height: 100px;
background-color: #aaaaaa;
}
main {
margin-top: 100px;
margin-bottom: 50px;
background-color: #dddddd;
overflow: scroll;
}
footer {
position: fixed;
bottom: 0;
width: 100%;
height: 50px;
background-color: #444444;
}
<header>Header</header>
<main>
Main start
<br>
<br>
<br>
<br>
<br>
<br>
<br> Main inside
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br> Main end
</main>
<footer>Footer</footer>
html css html5 css3 css-grid
html css html5 css3 css-grid
edited Dec 31 '18 at 12:52
Michael_B
150k48243354
150k48243354
asked Dec 31 '18 at 12:31
stpoastpoa
2,0362615
2,0362615
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You don't need position: fixed
. You can make the layout work with grid properties alone.
body {
display: grid;
grid-template-rows: 100px 1fr 50px;
height: 100vh;
margin: 0;
}
main {
overflow: auto;
}
header { background-color: #aaaaaa; }
main { background-color: #dddddd; }
footer { background-color: #444444; }
<header>Header</header>
<main>
Main start<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main end
</main>
<footer>Footer</footer>
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53987558%2ffixed-header-scrollable-content-fixed-footer-layout%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You don't need position: fixed
. You can make the layout work with grid properties alone.
body {
display: grid;
grid-template-rows: 100px 1fr 50px;
height: 100vh;
margin: 0;
}
main {
overflow: auto;
}
header { background-color: #aaaaaa; }
main { background-color: #dddddd; }
footer { background-color: #444444; }
<header>Header</header>
<main>
Main start<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main end
</main>
<footer>Footer</footer>
add a comment |
You don't need position: fixed
. You can make the layout work with grid properties alone.
body {
display: grid;
grid-template-rows: 100px 1fr 50px;
height: 100vh;
margin: 0;
}
main {
overflow: auto;
}
header { background-color: #aaaaaa; }
main { background-color: #dddddd; }
footer { background-color: #444444; }
<header>Header</header>
<main>
Main start<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main end
</main>
<footer>Footer</footer>
add a comment |
You don't need position: fixed
. You can make the layout work with grid properties alone.
body {
display: grid;
grid-template-rows: 100px 1fr 50px;
height: 100vh;
margin: 0;
}
main {
overflow: auto;
}
header { background-color: #aaaaaa; }
main { background-color: #dddddd; }
footer { background-color: #444444; }
<header>Header</header>
<main>
Main start<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main end
</main>
<footer>Footer</footer>
You don't need position: fixed
. You can make the layout work with grid properties alone.
body {
display: grid;
grid-template-rows: 100px 1fr 50px;
height: 100vh;
margin: 0;
}
main {
overflow: auto;
}
header { background-color: #aaaaaa; }
main { background-color: #dddddd; }
footer { background-color: #444444; }
<header>Header</header>
<main>
Main start<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main end
</main>
<footer>Footer</footer>
body {
display: grid;
grid-template-rows: 100px 1fr 50px;
height: 100vh;
margin: 0;
}
main {
overflow: auto;
}
header { background-color: #aaaaaa; }
main { background-color: #dddddd; }
footer { background-color: #444444; }
<header>Header</header>
<main>
Main start<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main end
</main>
<footer>Footer</footer>
body {
display: grid;
grid-template-rows: 100px 1fr 50px;
height: 100vh;
margin: 0;
}
main {
overflow: auto;
}
header { background-color: #aaaaaa; }
main { background-color: #dddddd; }
footer { background-color: #444444; }
<header>Header</header>
<main>
Main start<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main inside<br><br><br><br><br><br><br>
Main end
</main>
<footer>Footer</footer>
edited Dec 31 '18 at 12:50
answered Dec 31 '18 at 12:44
Michael_BMichael_B
150k48243354
150k48243354
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53987558%2ffixed-header-scrollable-content-fixed-footer-layout%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown