how to properly resize navbar fixed in bootstrap - css

How to properly change default navbar fixed height in bootstrap 3.
Here's my snipped. When resize with this css:
.navbar-fixed-top{
height:100px;
}
It bricks shrink
I've also tried
.navbar-fixed-top{
max-height:100px;
}

Use padding, not a fixed height for the navbar. By default it's min-height: 50px so once the viewport is under 768px a fixed height will alter the mobile navigation collapse with regard to the background being removed since the navbar acts as the background for the links on mobile by expanding.
You'll have to adjust the values to reflect whatever you actually need them to be but this should at least get you started.
See working Snippet.
$(window).scroll(function() {
if ($(document).scrollTop() > 50) {
$('nav').addClass('shrink');
} else {
$('nav').removeClass('shrink');
}
});
body {
padding-top: 100px;
}
nav {
transition: all 300ms linear;
}
.navbar.navbar-default {
padding-top: 20px;
padding-bottom: 20px;
}
.navbar.navbar-default .navbar-brand {
padding-top: 5.5px;
}
.navbar.navbar-default .navbar-brand img {
width: 250px;
max-width: 200px;
}
#media screen and (min-width: 768px) {
.navbar-brand.navbar-brand-centered {
position: absolute;
left: 50%;
display: block;
width: 250px;
text-align: center;
}
.navbar.navbar-default > .container .navbar-brand-centered,
.navbar.navbar-default > .container-fluid .navbar-brand-centered {
margin-left: -125px;
}
nav.navbar.navbar-default.shrink {
min-height: 35px;
padding-top: 10px;
padding-bottom: 10px;
}
nav.shrink.navbar.navbar-default .navbar-brand {
padding-top: 0;
margin-top: -10px;
}
nav.shrink.navbar.navbar-default .navbar-nav a {
padding-top: 0;
padding-bottom: 0;
font-size: 15px;
}
nav.shrink.navbar.navbar-default .navbar-toggle {
padding: 4px 5px;
margin: 8px 15px 8px 0;
}
}
#media screen and (max-width: 767px) {
nav.navbar.navbar-default.shrink {
min-height: 35px;
padding-top: 5px;
padding-bottom: 5px;
}
nav.shrink.navbar.navbar-default .navbar-brand {
padding-top: 2px;
margin-top: 5px;
}
nav.shrink.navbar.navbar-default .navbar-toggle {
margin-top: 11px;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-brand-centered">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="navbar-brand navbar-brand-centered">
<img src="http://www.sacredpathsoftransformation.com/uploads/7/0/9/7/7097791/_____2174311.jpg" />
</div>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="navbar-brand-centered">
<ul class="nav navbar-nav">
<li>Link
</li>
<li>Link
</li>
<li>Link
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li>Link
</li>
<li>Link
</li>
<li>Link
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container-fluid -->
</nav>
<div class="container">
<div class="row">
<div class="col-lg-5 col-md-6 col-sm-8">
<h2>Lorem ipsum</h2>
<p>Dolor sit amet, consectetur adipisicing elit. Id maxime repellat repellendus porro voluptas laudantium similique eveniet quis perferendis beatae commodi sunt ullam provident dolorum doloribus esse accusamus dolores. Corrupti.</p>
<p>Consectetur incidunt voluptatibus ipsa nisi esse eos deleniti repudiandae at quo sit praesentium nemo optio perspiciatis sequi quaerat voluptates minus reprehenderit doloremque accusamus et quisquam nesciunt sunt consequatur explicabo excepturi!</p>
<p>Sequi facilis ea dolor asperiores quibusdam eveniet optio corporis et accusantium voluptatem architecto quis iste recusandae molestias dolorem soluta ex blanditiis illo impedit laborum iusto? Iure sapiente eos molestiae est?</p>
<p>Numquam delectus recusandae nesciunt rem itaque harum corporis maxime hic iste molestias adipisci excepturi ullam libero necessitatibus cum eum modi minus obcaecati est nemo quia velit earum perferendis consectetur porro?</p>
<p>Accusamus dicta consequatur quos ipsum rerum tempora assumenda ex excepturi itaque soluta magnam debitis voluptatibus neque eos porro. Neque tempora ea beatae delectus facere quas voluptas accusamus maxime enim consequuntur.</p>
<p>Saepe obcaecati facilis dolore numquam nam quod laudantium. Rerum esse voluptas eum aut porro beatae adipisci exercitationem ab voluptatum corporis quas placeat sapiente nisi ut officia eaque debitis. Corrupti eveniet!</p>
<p>Eius natus numquam tempore alias ipsam commodi aut similique corporis beatae velit maxime obcaecati voluptatibus cum repudiandae minus inventore doloremque optio saepe nihil eum reprehenderit quas consequuntur perspiciatis quo quam.</p>
<p>Ea perspiciatis incidunt unde ipsam cupiditate necessitatibus magnam quod odit. Beatae adipisci non praesentium tenetur dolores fugit repellat consequuntur unde aperiam eligendi ipsa doloribus corporis officiis ipsam quod numquam assumenda!</p>
<p>Ullam ut ex cum corporis numquam quia hic aut nisi itaque laboriosam eaque earum commodi nulla magni voluptate reiciendis laborum esse odit blanditiis aperiam veniam eos velit similique eveniet ad.</p>
<p>Esse veritatis inventore explicabo hic consequuntur ex autem praesentium quaerat blanditiis illo deleniti dolorum porro tenetur. Repellat sed repellendus natus cum molestias numquam vitae vel eum voluptatem praesentium tempora quae.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est nostrum consequatur odit eius blanditiis sit mollitia ut porro cumque nam repudiandae accusantium nisi excepturi corporis incidunt inventore ipsam? Officiis eum!</p>
<p>Nostrum minus dicta quod totam autem ipsum illo velit labore obcaecati est ducimus ullam sit iusto ea pariatur sint nulla perferendis modi dolorum cumque non laboriosam ratione maiores possimus numquam!</p>
<p>Deserunt ex dolor atque sapiente suscipit aspernatur et iste necessitatibus enim magni blanditiis quaerat rerum perspiciatis expedita magnam nihil neque natus quos quidem veritatis eligendi dolorem itaque laboriosam beatae dolores!</p>
<p>Nostrum tenetur rem cum tempora sapiente at possimus assumenda ex quos illum facilis quibusdam facere voluptatum. Necessitatibus tempore animi earum inventore quaerat sit velit totam rem nulla consequuntur dolorem architecto!</p>
<p>Illum doloremque ipsa magni fugiat explicabo nam officiis expedita architecto voluptatem beatae deserunt optio iusto nostrum facere voluptatum. Tempora dolore quasi vero aut voluptatem eaque nobis iusto enim dignissimos molestias!</p>
</div>
<!--/.col-xs-12 -->
<div class="col-lg-7 col-md-6 col-sm-4">
<h2>Lorem ipsum</h2>
<p>Dolor sit amet, consectetur adipisicing elit. Id maxime repellat repellendus porro voluptas laudantium similique eveniet quis perferendis beatae commodi sunt ullam provident dolorum doloribus esse accusamus dolores. Corrupti.</p>
<p>Consectetur incidunt voluptatibus ipsa nisi esse eos deleniti repudiandae at quo sit praesentium nemo optio perspiciatis sequi quaerat voluptates minus reprehenderit doloremque accusamus et quisquam nesciunt sunt consequatur explicabo excepturi!</p>
<p>Sequi facilis ea dolor asperiores quibusdam eveniet optio corporis et accusantium voluptatem architecto quis iste recusandae molestias dolorem soluta ex blanditiis illo impedit laborum iusto? Iure sapiente eos molestiae est?</p>
<p>Numquam delectus recusandae nesciunt rem itaque harum corporis maxime hic iste molestias adipisci excepturi ullam libero necessitatibus cum eum modi minus obcaecati est nemo quia velit earum perferendis consectetur porro?</p>
<p>Accusamus dicta consequatur quos ipsum rerum tempora assumenda ex excepturi itaque soluta magnam debitis voluptatibus neque eos porro. Neque tempora ea beatae delectus facere quas voluptas accusamus maxime enim consequuntur.</p>
<p>Saepe obcaecati facilis dolore numquam nam quod laudantium. Rerum esse voluptas eum aut porro beatae adipisci exercitationem ab voluptatum corporis quas placeat sapiente nisi ut officia eaque debitis. Corrupti eveniet!</p>
<p>Eius natus numquam tempore alias ipsam commodi aut similique corporis beatae velit maxime obcaecati voluptatibus cum repudiandae minus inventore doloremque optio saepe nihil eum reprehenderit quas consequuntur perspiciatis quo quam.</p>
<p>Ea perspiciatis incidunt unde ipsam cupiditate necessitatibus magnam quod odit. Beatae adipisci non praesentium tenetur dolores fugit repellat consequuntur unde aperiam eligendi ipsa doloribus corporis officiis ipsam quod numquam assumenda!</p>
<p>Ullam ut ex cum corporis numquam quia hic aut nisi itaque laboriosam eaque earum commodi nulla magni voluptate reiciendis laborum esse odit blanditiis aperiam veniam eos velit similique eveniet ad.</p>
<p>Esse veritatis inventore explicabo hic consequuntur ex autem praesentium quaerat blanditiis illo deleniti dolorum porro tenetur. Repellat sed repellendus natus cum molestias numquam vitae vel eum voluptatem praesentium tempora quae.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est nostrum consequatur odit eius blanditiis sit mollitia ut porro cumque nam repudiandae accusantium nisi excepturi corporis incidunt inventore ipsam? Officiis eum!</p>
</div>
</div>
<!--/.row -->
</div>
<!--/.container -->
Example 2
$(window).scroll(function() {
if ($(document).scrollTop() > 50) {
$('nav').addClass('shrink');
} else {
$('nav').removeClass('shrink');
}
});
body {
padding-top: 100px;
}
nav {
transition: all 300ms linear;
}
.navbar.navbar-default {
padding-top: 20px;
padding-bottom: 20px;
background: black;
}
.navbar.navbar-default .navbar-brand {
padding-top: 0px;
margin-top: -15px;
}
.navbar.navbar-default .navbar-brand img {
width: 200px;
}
#media screen and (min-width: 768px) {
.navbar-brand.navbar-brand-centered {
position: absolute;
left: 50%;
display: block;
width: 250px;
text-align: center;
}
.navbar.navbar-default > .container .navbar-brand-centered,
.navbar.navbar-default > .container-fluid .navbar-brand-centered {
margin-left: -125px;
}
nav.shrink.navbar.navbar-default {
min-height: 35px;
padding-top: 10px;
padding-bottom: 10px;
}
nav.shrink.navbar.navbar-default .navbar-brand {
padding-top: 0;
margin-top: -10px;
}
nav.shrink.navbar.navbar-default .navbar-brand img {
height: 40px;
}
nav.shrink.navbar.navbar-default .navbar-nav a {
padding-top: 0;
padding-bottom: 0;
font-size: 15px;
}
nav.shrink.navbar.navbar-default .navbar-toggle {
padding: 4px 5px;
margin: 8px 15px 8px 0;
}
}
#media screen and (max-width: 767px) {
nav.navbar.navbar-default.shrink {
min-height: 35px;
padding-top: 5px;
padding-bottom: 5px;
}
nav.shrink.navbar.navbar-default .navbar-brand {
padding-top: 2px;
margin-top: 5px;
}
nav.shrink.navbar.navbar-default .navbar-brand img {
height: 40px;
}
nav.shrink.navbar.navbar-default .navbar-toggle {
margin-top: 11px;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-brand-centered">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="navbar-brand navbar-brand-centered">
<img src="http://eventswork.com/wp-content/uploads/2013/12/250x100.png" />
</div>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="navbar-brand-centered">
<ul class="nav navbar-nav">
<li>Link
</li>
<li>Link
</li>
<li>Link
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li>Link
</li>
<li>Link
</li>
<li>Link
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container-fluid -->
</nav>
<div class="container">
<div class="row">
<div class="col-lg-5 col-md-6 col-sm-8">
<h2>Lorem ipsum</h2>
<p>Dolor sit amet, consectetur adipisicing elit. Id maxime repellat repellendus porro voluptas laudantium similique eveniet quis perferendis beatae commodi sunt ullam provident dolorum doloribus esse accusamus dolores. Corrupti.</p>
<p>Consectetur incidunt voluptatibus ipsa nisi esse eos deleniti repudiandae at quo sit praesentium nemo optio perspiciatis sequi quaerat voluptates minus reprehenderit doloremque accusamus et quisquam nesciunt sunt consequatur explicabo excepturi!</p>
<p>Sequi facilis ea dolor asperiores quibusdam eveniet optio corporis et accusantium voluptatem architecto quis iste recusandae molestias dolorem soluta ex blanditiis illo impedit laborum iusto? Iure sapiente eos molestiae est?</p>
<p>Numquam delectus recusandae nesciunt rem itaque harum corporis maxime hic iste molestias adipisci excepturi ullam libero necessitatibus cum eum modi minus obcaecati est nemo quia velit earum perferendis consectetur porro?</p>
<p>Accusamus dicta consequatur quos ipsum rerum tempora assumenda ex excepturi itaque soluta magnam debitis voluptatibus neque eos porro. Neque tempora ea beatae delectus facere quas voluptas accusamus maxime enim consequuntur.</p>
<p>Saepe obcaecati facilis dolore numquam nam quod laudantium. Rerum esse voluptas eum aut porro beatae adipisci exercitationem ab voluptatum corporis quas placeat sapiente nisi ut officia eaque debitis. Corrupti eveniet!</p>
<p>Eius natus numquam tempore alias ipsam commodi aut similique corporis beatae velit maxime obcaecati voluptatibus cum repudiandae minus inventore doloremque optio saepe nihil eum reprehenderit quas consequuntur perspiciatis quo quam.</p>
<p>Ea perspiciatis incidunt unde ipsam cupiditate necessitatibus magnam quod odit. Beatae adipisci non praesentium tenetur dolores fugit repellat consequuntur unde aperiam eligendi ipsa doloribus corporis officiis ipsam quod numquam assumenda!</p>
<p>Ullam ut ex cum corporis numquam quia hic aut nisi itaque laboriosam eaque earum commodi nulla magni voluptate reiciendis laborum esse odit blanditiis aperiam veniam eos velit similique eveniet ad.</p>
<p>Esse veritatis inventore explicabo hic consequuntur ex autem praesentium quaerat blanditiis illo deleniti dolorum porro tenetur. Repellat sed repellendus natus cum molestias numquam vitae vel eum voluptatem praesentium tempora quae.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est nostrum consequatur odit eius blanditiis sit mollitia ut porro cumque nam repudiandae accusantium nisi excepturi corporis incidunt inventore ipsam? Officiis eum!</p>
<p>Nostrum minus dicta quod totam autem ipsum illo velit labore obcaecati est ducimus ullam sit iusto ea pariatur sint nulla perferendis modi dolorum cumque non laboriosam ratione maiores possimus numquam!</p>
<p>Deserunt ex dolor atque sapiente suscipit aspernatur et iste necessitatibus enim magni blanditiis quaerat rerum perspiciatis expedita magnam nihil neque natus quos quidem veritatis eligendi dolorem itaque laboriosam beatae dolores!</p>
<p>Nostrum tenetur rem cum tempora sapiente at possimus assumenda ex quos illum facilis quibusdam facere voluptatum. Necessitatibus tempore animi earum inventore quaerat sit velit totam rem nulla consequuntur dolorem architecto!</p>
<p>Illum doloremque ipsa magni fugiat explicabo nam officiis expedita architecto voluptatem beatae deserunt optio iusto nostrum facere voluptatum. Tempora dolore quasi vero aut voluptatem eaque nobis iusto enim dignissimos molestias!</p>
</div>
<!--/.col-xs-12 -->
<div class="col-lg-7 col-md-6 col-sm-4">
<h2>Lorem ipsum</h2>
<p>Dolor sit amet, consectetur adipisicing elit. Id maxime repellat repellendus porro voluptas laudantium similique eveniet quis perferendis beatae commodi sunt ullam provident dolorum doloribus esse accusamus dolores. Corrupti.</p>
<p>Consectetur incidunt voluptatibus ipsa nisi esse eos deleniti repudiandae at quo sit praesentium nemo optio perspiciatis sequi quaerat voluptates minus reprehenderit doloremque accusamus et quisquam nesciunt sunt consequatur explicabo excepturi!</p>
<p>Sequi facilis ea dolor asperiores quibusdam eveniet optio corporis et accusantium voluptatem architecto quis iste recusandae molestias dolorem soluta ex blanditiis illo impedit laborum iusto? Iure sapiente eos molestiae est?</p>
<p>Numquam delectus recusandae nesciunt rem itaque harum corporis maxime hic iste molestias adipisci excepturi ullam libero necessitatibus cum eum modi minus obcaecati est nemo quia velit earum perferendis consectetur porro?</p>
<p>Accusamus dicta consequatur quos ipsum rerum tempora assumenda ex excepturi itaque soluta magnam debitis voluptatibus neque eos porro. Neque tempora ea beatae delectus facere quas voluptas accusamus maxime enim consequuntur.</p>
<p>Saepe obcaecati facilis dolore numquam nam quod laudantium. Rerum esse voluptas eum aut porro beatae adipisci exercitationem ab voluptatum corporis quas placeat sapiente nisi ut officia eaque debitis. Corrupti eveniet!</p>
<p>Eius natus numquam tempore alias ipsam commodi aut similique corporis beatae velit maxime obcaecati voluptatibus cum repudiandae minus inventore doloremque optio saepe nihil eum reprehenderit quas consequuntur perspiciatis quo quam.</p>
<p>Ea perspiciatis incidunt unde ipsam cupiditate necessitatibus magnam quod odit. Beatae adipisci non praesentium tenetur dolores fugit repellat consequuntur unde aperiam eligendi ipsa doloribus corporis officiis ipsam quod numquam assumenda!</p>
<p>Ullam ut ex cum corporis numquam quia hic aut nisi itaque laboriosam eaque earum commodi nulla magni voluptate reiciendis laborum esse odit blanditiis aperiam veniam eos velit similique eveniet ad.</p>
<p>Esse veritatis inventore explicabo hic consequuntur ex autem praesentium quaerat blanditiis illo deleniti dolorum porro tenetur. Repellat sed repellendus natus cum molestias numquam vitae vel eum voluptatem praesentium tempora quae.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est nostrum consequatur odit eius blanditiis sit mollitia ut porro cumque nam repudiandae accusantium nisi excepturi corporis incidunt inventore ipsam? Officiis eum!</p>
</div>
</div>
<!--/.row -->
</div>
<!--/.container -->

Related

How to fix a div relative to the parent div on scroll

I'm trying to position a div to the bottom right of the parent div. As shown in the image.
The parent div is filled with text so I have used the overflow-y property on the parent.
But when I tried to scroll the parent div, the child container started scrolling with it. I'm expecting the bottom container stay as it is at bottom right even on scroll.
Attatching the codesandbox link: https://codesandbox.io/s/relaxed-night-g96xce?file=/index.html
Code:
.text {
color: white;
font-size: 15px;
text-align: right;
}
.usage_body {
border: 1px solid #000;
width: 300px;
height: 300px;
padding: 10px;
overflow-y: scroll;
position: relative;
}
.chart-wrapper__graphLabel {
position: absolute;
bottom: 0;
right: 0;
width: 300px;
height: 30px;
background-color: #00f;
}
<div class="usage_body">
<div class="chart-wrapper">
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Voluptas tempora nisi vitae tempore at voluptate similique recusandae? Modi quas qui nesciunt libero, autem, est officia ducimus nobis velit cum asperiores saepe, facilis nam corrupti ad eaque
laudantium provident nihil magnam. Delectus facere iure distinctio officiis, fuga rem molestiae magnam quam iusto enim. Repellat minima at, nostrum placeat consequuntur iusto quaerat molestias, pariatur aut odio, maiores cumque? Porro a sed nulla
architecto consequatur maxime praesentium asperiores ea, quasi enim veniam exercitationem neque necessitatibus, libero nemo modi, aspernatur ex sapiente quod. Nihil similique cum nobis quibusdam unde itaque et accusantium impedit. Veniam, illum! Eum
dolorum suscipit molestiae nihil officia nostrum deserunt laborum hic perferendis dolores asperiores illo perspiciatis, nemo tenetur harum recusandae explicabo quis ipsum amet ipsam vel fugiat assumenda eaque quia. Fugiat asperiores fugit voluptatum
aspernatur, animi facilis eos. Quod laudantium sunt eaque recusandae porro debitis consectetur nemo in placeat unde praesentium, obcaecati esse deserunt. Voluptate sit, ullam veniam doloribus optio blanditiis magni vero tempora sapiente! Explicabo
molestiae vel distinctio inventore, repellendus est mollitia tempora quae. Eius animi quisquam tenetur? Dolores placeat dolore sed nobis laboriosam. Dolore, unde! Recusandae amet natus odio totam cumque magnam unde mollitia pariatur iusto expedita.
Est?
</div>
<div class="chart-wrapper__graphLabel">
<p class="text">
position me
</p>
</div>
</div>
You can use position:sticky as per the comments but the padding is also applied to the sticky element so you also have to set the padding-bottom to 0 or use translate to fix it to the very bottom of the frame like this.
Padding-bottom
.text {
color: white;
font-size: 15px;
text-align: right;
margin:0;
}
.usage_body {
border: 1px solid #000;
width: 300px;
height: 300px;
padding: 10px;
padding-bottom:0;
overflow-y: scroll;
position: relative;
}
.chart-wrapper__graphLabel {
position: sticky;
bottom: 0;
right: 0;
width: 300px;
height: 30px;
background-color: #00f;
}
<div class="usage_body">
<div class="chart-wrapper">
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Voluptas tempora nisi vitae tempore at voluptate similique recusandae? Modi quas qui nesciunt libero, autem, est officia ducimus nobis velit cum asperiores saepe, facilis nam corrupti ad eaque
laudantium provident nihil magnam. Delectus facere iure distinctio officiis, fuga rem molestiae magnam quam iusto enim. Repellat minima at, nostrum placeat consequuntur iusto quaerat molestias, pariatur aut odio, maiores cumque? Porro a sed nulla
architecto consequatur maxime praesentium asperiores ea, quasi enim veniam exercitationem neque necessitatibus, libero nemo modi, aspernatur ex sapiente quod. Nihil similique cum nobis quibusdam unde itaque et accusantium impedit. Veniam, illum! Eum
dolorum suscipit molestiae nihil officia nostrum deserunt laborum hic perferendis dolores asperiores illo perspiciatis, nemo tenetur harum recusandae explicabo quis ipsum amet ipsam vel fugiat assumenda eaque quia. Fugiat asperiores fugit voluptatum
aspernatur, animi facilis eos. Quod laudantium sunt eaque recusandae porro debitis consectetur nemo in placeat unde praesentium, obcaecati esse deserunt. Voluptate sit, ullam veniam doloribus optio blanditiis magni vero tempora sapiente! Explicabo
molestiae vel distinctio inventore, repellendus est mollitia tempora quae. Eius animi quisquam tenetur? Dolores placeat dolore sed nobis laboriosam. Dolore, unde! Recusandae amet natus odio totam cumque magnam unde mollitia pariatur iusto expedita.
Est?
</div>
<div class="chart-wrapper__graphLabel">
<p class="text">
position me
</p>
</div>
</div>
Translate with css variable
.text {
color: white;
font-size: 15px;
text-align: right;
margin:0;
}
.usage_body {
--padding: 10px;
border: 1px solid #000;
width: 300px;
height: 300px;
padding: var(--padding);
overflow-y: scroll;
position: relative;
}
.chart-wrapper__graphLabel {
position: sticky;
bottom: 0;
right: 0;
width: 300px;
height: 30px;
transform:translateY(var(--padding));
background-color: #00f;
}
<div class="usage_body">
<div class="chart-wrapper">
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Voluptas tempora nisi vitae tempore at voluptate similique recusandae? Modi quas qui nesciunt libero, autem, est officia ducimus nobis velit cum asperiores saepe, facilis nam corrupti ad eaque
laudantium provident nihil magnam. Delectus facere iure distinctio officiis, fuga rem molestiae magnam quam iusto enim. Repellat minima at, nostrum placeat consequuntur iusto quaerat molestias, pariatur aut odio, maiores cumque? Porro a sed nulla
architecto consequatur maxime praesentium asperiores ea, quasi enim veniam exercitationem neque necessitatibus, libero nemo modi, aspernatur ex sapiente quod. Nihil similique cum nobis quibusdam unde itaque et accusantium impedit. Veniam, illum! Eum
dolorum suscipit molestiae nihil officia nostrum deserunt laborum hic perferendis dolores asperiores illo perspiciatis, nemo tenetur harum recusandae explicabo quis ipsum amet ipsam vel fugiat assumenda eaque quia. Fugiat asperiores fugit voluptatum
aspernatur, animi facilis eos. Quod laudantium sunt eaque recusandae porro debitis consectetur nemo in placeat unde praesentium, obcaecati esse deserunt. Voluptate sit, ullam veniam doloribus optio blanditiis magni vero tempora sapiente! Explicabo
molestiae vel distinctio inventore, repellendus est mollitia tempora quae. Eius animi quisquam tenetur? Dolores placeat dolore sed nobis laboriosam. Dolore, unde! Recusandae amet natus odio totam cumque magnam unde mollitia pariatur iusto expedita.
Est?
</div>
<div class="chart-wrapper__graphLabel">
<p class="text">
position me
</p>
</div>
</div>
Using margin on the child element
Possibly a more straightforward approach would be to apply a margin to the content div then you can just position the footer right where you want it
.text {
color: white;
font-size: 15px;
text-align: right;
margin:0;
}
.usage_body {
border: 1px solid #000;
width: 300px;
height: 300px;
overflow-y: scroll;
position: relative;
}
.chart-wrapper {
margin:10px;
}
.chart-wrapper__graphLabel {
--left-margin: 10px;
position: sticky;
bottom: 0;
/* note, setting right:0 does not appear to work on widths less than 100% so used left:0 and transform:translateX instead */
left: 0;
width: calc(100% - var(--left-margin));
height: 30px;
transform: translateX(var(--left-margin));
background-color: #00f;
}
<div class="usage_body">
<div class="chart-wrapper">
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Voluptas tempora nisi vitae tempore at voluptate similique recusandae? Modi quas qui nesciunt libero, autem, est officia ducimus nobis velit cum asperiores saepe, facilis nam corrupti ad eaque
laudantium provident nihil magnam. Delectus facere iure distinctio officiis, fuga rem molestiae magnam quam iusto enim. Repellat minima at, nostrum placeat consequuntur iusto quaerat molestias, pariatur aut odio, maiores cumque? Porro a sed nulla
architecto consequatur maxime praesentium asperiores ea, quasi enim veniam exercitationem neque necessitatibus, libero nemo modi, aspernatur ex sapiente quod. Nihil similique cum nobis quibusdam unde itaque et accusantium impedit. Veniam, illum! Eum
dolorum suscipit molestiae nihil officia nostrum deserunt laborum hic perferendis dolores asperiores illo perspiciatis, nemo tenetur harum recusandae explicabo quis ipsum amet ipsam vel fugiat assumenda eaque quia. Fugiat asperiores fugit voluptatum
aspernatur, animi facilis eos. Quod laudantium sunt eaque recusandae porro debitis consectetur nemo in placeat unde praesentium, obcaecati esse deserunt. Voluptate sit, ullam veniam doloribus optio blanditiis magni vero tempora sapiente! Explicabo
molestiae vel distinctio inventore, repellendus est mollitia tempora quae. Eius animi quisquam tenetur? Dolores placeat dolore sed nobis laboriosam. Dolore, unde! Recusandae amet natus odio totam cumque magnam unde mollitia pariatur iusto expedita.
Est?
</div>
<div class="chart-wrapper__graphLabel">
<p class="text">
position me
</p>
</div>
</div>

Image distortion during parallax

I am making a parallax scrolling website using html css only. The parallax works but on scrolling, I am seeing that the image is being cut in the center. I am not able to find as to why this is happening. I am attaching the code as well the images of the issue I am facing.
HTML CODE -
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css">
<title>Parallax Website</title>
</head>
<body>
<div class="wrapper">
<header>
<img src="Images/Mountains.jpg" class="background">
<img src="Images/Clouds.png" class="foreground">
<h1 class="title">WELCOME</h1>
</header>
<section>
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Dolorem nemo cumque quam, laudantium natus inventore amet illo aliquid quis assumenda accusantium magnam, velit praesentium minus voluptates ipsam error consectetur non?
Distinctio eum deleniti, esse sed laudantium blanditiis ipsa, id minus vel perspiciatis, optio at tempore. Labore sunt aliquid minima ipsam, laudantium, pariatur voluptatibus optio, dignissimos facere nulla maiores odio enim?
Fuga fugiat tempora impedit maxime explicabo reprehenderit repudiandae, laboriosam dicta alias officia cumque, illum sed quae corporis aliquid qui optio maiores obcaecati ullam nisi odit perspiciatis esse enim vitae. Laborum!
Ab odit incidunt perspiciatis eos eum aut, dolor deserunt quisquam odio optio possimus, quas eaque nulla sint exercitationem dolores. Tempora eligendi, reprehenderit dolorem voluptas cum distinctio blanditiis labore omnis quas.
Et ratione hic reprehenderit architecto inventore deleniti quia velit rem vero nulla adipisci tenetur molestiae saepe nobis necessitatibus iure iste tempore beatae mollitia ad, ipsum dicta, est veniam? Quo, voluptates?
Maxime quas architecto ipsa reiciendis quod id aspernatur voluptatem impedit tenetur sequi quis, porro explicabo iure tempora quisquam aut asperiores! Quis modi quidem quos suscipit magni inventore voluptas. Ipsam, ab!
Fugit quod obcaecati possimus, molestiae enim aspernatur. Iste obcaecati, nemo exercitationem quisquam dolorum expedita placeat, consequuntur libero delectus officiis atque ullam dolor maxime labore porro eaque blanditiis, eius architecto aspernatur.
Aperiam neque similique debitis distinctio, facilis, rerum tenetur culpa sunt facere quisquam, veniam officia nam doloribus dolorem quidem veritatis odit dolor cupiditate! Aperiam nostrum tempore unde? Perspiciatis maxime corrupti inventore!
Perferendis odit quisquam odio, sunt consectetur atque quod minus quasi porro, officia, omnis numquam iusto et consequatur eaque nisi optio dolores dolore! Ratione, nesciunt deserunt? Tenetur praesentium esse iste accusamus.
Quaerat repellendus harum dolorum nostrum omnis neque voluptate enim architecto fugiat eos blanditiis necessitatibus distinctio, incidunt recusandae expedita debitis quam modi atque magnam, quos facilis, rem officia alias! Voluptates, distinctio.
Debitis mollitia nisi maiores accusantium asperiores aliquam impedit explicabo ullam laborum aut quibusdam dolorum quae facere animi, sit nihil? Corporis, natus suscipit cupiditate et laudantium sequi harum. Unde, ipsam voluptatibus!
Facilis, voluptates voluptatem eligendi ut, sit et nihil quidem quaerat suscipit veritatis iusto? Accusamus quo illo aliquid! Atque nulla est, iusto necessitatibus porro quas, eaque omnis voluptatem numquam nesciunt quisquam?
Quas, odio porro fugit, praesentium illum molestias neque voluptates iure, accusamus voluptatem in? Cupiditate qui asperiores dolore magni, modi nesciunt corporis. Nobis aut iusto, cumque totam autem rem iste mollitia.
Beatae nobis ea debitis incidunt quo cum unde, eos officiis ut exercitationem facere consequatur temporibus quas aliquid, sapiente a tempore? Officia, cum aliquid temporibus at eius perferendis earum sed mollitia.
Eos dignissimos quaerat velit maxime enim, veniam dicta? Sit tempore culpa incidunt dolore! Deleniti facere, nesciunt corporis nisi exercitationem nulla ea! Ad, odit blanditiis nulla cum quasi officia perferendis explicabo.
</section>
</div>
</body>
</html>
CSS CODE -
body {
margin: 0;
}
.wrapper {
height: 100vh;
overflow-y: auto;
overflow-x: hidden;
perspective: 10px;
}
header {
position: relative;
display: flex;
justify-content: center;
align-items: center;
height: 100%;
transform-style: preserve-3d;
z-index: -1;
}
.background,
.foreground {
position: absolute;
height: 100%;
width: 100%;
object-fit: cover;
z-index: -1;
}
.background {
transform: translateZ(-20px) scale(4);
}
.foreground {
top: 200px;
transform: translateZ(-10px) scale(2);
}
.title {
font-size: 7rem;
color: black;
}
section {
font-size: 2rem;
font-family: 'Courier New', Courier, monospace;
background-color: #333;
color: #fff;
}
Image 1- No Issue till a certain point
Image 2- Image distortion

media queries not behave accurately

I am trying to create responsive navigation bar. So that I wrote media queries for screen size 600px or less.
body {
margin: 0;
}
ul.topnav {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
}
ul.topnav li {
float: left;
}
ul.topnav li a {
display: block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
ul.topnav li a:hover:not(.active) {
background-color: #111;
}
ul.topnav li a.active {
background-color: #04aa6d;
}
ul.topnav li.right {
float: right;
}
.content {
padding: 0px 16px;
text-align: justify;
}
#media screen and (max-width: 600px) {
ul.topnav li.right,
ul.topnav li {
float: none;
}
}
<ul class="topnav">
<li>Home</li>
<li>About</li>
<li>Contact</li>
<li>FAQ</li>
</ul>
<div class="content">
<h2>Responsive Topnav Example</h2>
<p>
This example use media queries to stack the topnav vertically when the screen size is 600px or less.
</p>
<p>
You will learn more about media queries and responsive web design later in our CSS Tutorial.
</p>
<h4>Resize the browser window to see the effect.</h4>
</div>
In the div element when I put a small amount of content like as written, media queries works fine. Navigation bar changed horizontally to vertically when the screen size 600px as expected.
But when I use a large number of content such as 1000 word Lorem ipsum, media queries start working when the screen size 583px.
navigation not changing at 600px when the div contain large content
such as 1000 words
***:
navigation not changing at 583px:
***
Please help me to find out where I did wrong.
Find the code sample in codesandbox: https://codesandbox.io/s/reverent-frog-4w026
The reason you're not getting the responsive view is because the browser's native scrollbar is taking up the space its width is 17px that's why you're getting the responsive view only on 583px not on 600px.
Browser scrollbar width - codepen reference: https://codepen.io/sambible/post/browser-scrollbar-widths
custom scrollbar reference - https://www.w3schools.com/howto/howto_css_custom_scrollbar.asp
Plus this isn't a issue if you want to check responsive view use browser dev tools' toggle device toolbar. However to make things clear for you to see, I have made changes to your codesandbox .
Additionally I add a snippet here
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Sofia"
/>
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
/>
<style></style>
<title>Learn CSS with W3School</title>
<style>
body {
margin: 0;
}
::-webkit-scrollbar {
width: 0px;
}
::-webkit-scrollbar-track {
background: #f1f1f1;
}
::-webkit-scrollbar-thumb {
background: #888;
}
::-webkit-scrollbar-thumb:hover {
background: #555;
}
ul.topnav {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
}
ul.topnav li {
float: left;
}
ul.topnav li a {
display: block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
ul.topnav li a:hover:not(.active) {
background-color: #111;
}
ul.topnav li a.active {
background-color: #04aa6d;
}
ul.topnav li.right {
float: right;
}
.content {
padding: 0px 16px;
text-align: justify;
}
#media screen and (max-width: 600px) {
ul.topnav li.right,
ul.topnav li {
float: none;
}
}
</style>
</head>
<body>
<ul class="topnav">
<li>Home</li>
<li>About</li>
<li>Contact</li>
<li>FAQ</li>
</ul>
<div class="content">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus sint,
quis soluta possimus, rerum provident explicabo sequi ipsa esse tenetur
aperiam aut vitae ut illum. Ea omnis vel porro quo dignissimos dolorum,
assumenda nesciunt est quis asperiores dolore, accusamus similique.
Tempore ab et ipsam ratione! Tempora non sunt, aperiam sit nesciunt hic
tempore magnam velit reprehenderit qui nostrum? Necessitatibus, sit natus
aliquid libero omnis ipsum vel assumenda magni qui totam dolorum in unde
est asperiores? Possimus porro repellat sint, magnam commodi eveniet
laudantium laboriosam a eos fugiat! Cupiditate molestias similique
repellendus in non ut necessitatibus aliquam aspernatur sed, esse
consequatur quidem corporis nihil recusandae modi facilis exercitationem
nemo praesentium totam? Fugit explicabo asperiores ea mollitia recusandae
incidunt atque dolores illo corrupti consectetur obcaecati perferendis
tempora soluta velit aperiam sunt, reiciendis rerum eaque similique
cupiditate dignissimos error ipsam repellat perspiciatis? Est blanditiis a
perferendis nam nisi, eligendi adipisci! Corporis molestiae adipisci
ducimus cum, aperiam reiciendis aliquid, iure quidem sapiente, id eaque
culpa nemo odio expedita ipsum cumque unde ab et error optio? Earum nemo
nulla sint et laboriosam? Vel saepe error voluptatibus accusamus enim
atque repellendus explicabo a quas beatae eligendi libero rem aperiam
corrupti, est possimus ea, ullam amet! Dolorem hic, eveniet autem vel odio
obcaecati excepturi qui dignissimos delectus cumque. Rerum numquam eveniet
excepturi incidunt non odit doloribus minus perferendis aliquam laborum.
Tempore, mollitia. Perspiciatis excepturi laudantium ullam aperiam?
Eveniet minima fugit est dicta voluptas quasi quos molestiae dolore ipsum
a harum ea, facere suscipit beatae dolores! Dolores dolore sapiente
explicabo esse? Dolore, ratione facere molestias ad excepturi accusantium
adipisci, rerum necessitatibus suscipit error quam, veritatis dicta? Ut
maxime incidunt quae recusandae aliquam? Iusto et minus qui enim sed
necessitatibus reiciendis iure, deserunt sunt ducimus quos a? Aspernatur,
incidunt mollitia nulla, sunt sint nihil dignissimos totam expedita quas
cupiditate natus vitae impedit voluptates eum. Unde asperiores iste fugit
placeat quae, dolorum eligendi sunt corrupti ullam suscipit aperiam!
Officia consequatur accusamus adipisci. Consectetur facilis perferendis
eum deserunt dolores provident, dolorum, dolor reiciendis earum cumque
excepturi similique atque minus mollitia molestiae eligendi sequi labore
voluptates porro doloremque obcaecati. Saepe fuga error excepturi esse
minima fugit facere nobis quam, doloribus veritatis sed officia nisi
obcaecati omnis aliquid rerum, aspernatur expedita. Doloribus ea officia
assumenda repellendus quasi cumque animi alias distinctio. Nobis quisquam
in ipsam voluptate sed nemo, blanditiis facilis adipisci quis eos iste
repudiandae quas sunt quam? Molestias temporibus est provident officia
possimus accusantium. Architecto voluptatum modi nesciunt, in, commodi
sequi eum similique ut officiis fuga dignissimos totam ratione, dolorem
ullam expedita neque consectetur! Deleniti, exercitationem. Reiciendis
facere optio dolorum, est non nesciunt id unde nulla doloremque ex? Minus
natus, porro aspernatur perspiciatis quas sapiente quam odit tempore nihil
dignissimos quos et fugiat ipsum rerum deleniti, atque velit aut. At a
cum, quia perspiciatis debitis quasi quos veritatis ducimus iure ullam
minus! Possimus eaque pariatur earum, fuga sit est distinctio obcaecati
facere ipsa debitis? Libero hic quo consectetur enim iste corporis
perferendis laborum animi? Omnis commodi delectus eligendi laboriosam
repudiandae. Rem, error ducimus unde tempore minus delectus aspernatur
libero assumenda dolorum quia reiciendis molestias provident vero? Tenetur
magnam aut dolores numquam recusandae nobis consequatur doloremque error!
Atque expedita ipsa nihil quos consectetur enim error saepe adipisci
reiciendis quae at, nemo asperiores eaque provident officia inventore
itaque aut repudiandae alias cum. Laboriosam aliquid, tempore neque fugiat
dolorum nemo repellendus. Debitis aperiam reiciendis inventore odio nulla
illum quidem at commodi qui accusamus saepe architecto, voluptate, quia,
impedit officia a omnis rem dolores aliquam illo asperiores perferendis.
Reiciendis harum porro repellat, itaque iusto nesciunt quam est modi
facere omnis nemo cumque vel accusamus ab hic animi repudiandae quidem,
laudantium assumenda at alias ex dolores. Quidem cumque iure ipsum.
Molestias provident exercitationem placeat ipsam ullam at eveniet,
mollitia sit maiores, voluptatibus itaque quo explicabo accusamus
doloremque recusandae ipsum veritatis modi alias impedit! Sequi magni, vel
corporis illo repudiandae in aperiam voluptates quasi optio porro facere
maiores. Deleniti inventore, omnis qui hic at nisi aut, fugit saepe nulla
autem doloremque praesentium totam vero corrupti, mollitia exercitationem
reprehenderit perspiciatis harum eveniet. Facilis laudantium autem earum
sit tempore fuga aperiam cum ratione excepturi iure maxime, possimus odio,
deserunt harum impedit laborum perspiciatis asperiores totam velit
ducimus. Sequi repellat, eum ullam accusamus corrupti dolores in
laboriosam quam officia commodi qui magnam, ratione, quisquam voluptas
nulla? Aliquam fugiat odio quibusdam molestiae error autem qui repudiandae
assumenda provident iusto. Harum ex laborum unde facilis doloremque natus
omnis aspernatur vitae eveniet dignissimos molestias, perferendis
explicabo hic veniam nisi, possimus aut laboriosam deleniti adipisci
deserunt. Eos magnam non modi nobis ipsum perspiciatis, itaque obcaecati,
facere tempora dolorem, beatae temporibus eveniet impedit dolorum error
unde deserunt atque aut. Modi quisquam numquam sunt dolores, voluptatum
quo quod, ipsam consequuntur repellat ducimus quos non earum voluptatibus
ex omnis at corrupti. Quod minus odit incidunt beatae, nobis praesentium
eum quos possimus culpa cum temporibus enim deserunt deleniti placeat,
optio labore. Dolorem cumque harum at, hic ad ex laudantium itaque amet
eum quo necessitatibus quod voluptatibus fuga accusamus iure veritatis
fugit deserunt maxime ullam, modi incidunt adipisci quia? Repellendus sed
quas adipisci praesentium neque maiores, provident magni commodi nam
voluptatum eum obcaecati ex incidunt cupiditate porro. Alias nam optio
veritatis iusto consectetur porro, maxime ullam incidunt. Maiores aut modi
corporis laudantium! Deserunt et eligendi veritatis ipsa explicabo minima
quae fuga nam magnam, quos ut maiores porro molestiae voluptatem
dignissimos architecto rem officia fugiat consectetur quam repellendus
commodi saepe quis placeat? Minus repudiandae quod dolore amet, obcaecati
suscipit? Nesciunt blanditiis porro aperiam, atque assumenda dolor totam
architecto voluptatibus praesentium, placeat facilis? Porro sapiente
inventore suscipit, doloremque ab repudiandae perspiciatis ipsa, pariatur
aliquid est voluptatum quibusdam cupiditate assumenda rerum dolor ex. Ut,
reiciendis. Mollitia blanditiis, aspernatur ratione sit doloribus quod.
Dolore minus ullam aliquam eum illum quod ipsa! Sit totam hic nam alias
repellendus provident, culpa maxime asperiores molestias nostrum
reiciendis quia voluptatem blanditiis ut, deleniti doloremque placeat
molestiae sed possimus beatae explicabo est. Excepturi repellendus nisi,
exercitationem, aut voluptatibus cumque illo, dolorum quaerat quo velit
nostrum error voluptas numquam maiores!
</div>
</body>
</html>
What I did here is I have set the browser's scrollbar width to 0px (this will work only on chrome) so it allow you to see responsive view without any interference.
As I said earlier this is not an issue, use toggle device toolbar button while checking responsive for web pages

CSS Grid layout for dynamic content

I wonder how can I set (with CSS grid only) layout for content that could be dynamic.
Let's say I have a Header, Body, and a sidebar.
the sidebar can be displayed, or not.
How can I apply such behaviour with CSS grid?
I want the header and the chart content to stretch over the .sidebar area when the .sidebar is not displayed
// Comment OR uncomment the .sidebar HTML tag
html, body {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
display: flex;
}
.wrapper {
background: #fed;
height: 100%;
display: grid;
grid-template-columns: auto 300px;
grid-template-rows: 80px auto;
grid-auto-rows: 100px;
grid-template-areas:
"header sidebar"
"chart sidebar";
}
.header {
background: hotpink;
grid-column: 1/ 2;
grid-row: 1 /1;
overflow: auto;
}
.chart {
background: lightblue;
grid-column: 1/ 2;
grid-row: 2 / 2;
}
.sidebar {
background: rgba(255, 209, 62, 0.7);
grid-column: 2/ 2;
grid-row: 1 /span 2;
}
<div class="wrapper">
<div class="header"><div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio officiis deserunt cum, iusto veniam, perspiciatis atque dolore eum ab. Accusamus ratione repellat, laboriosam magnam exercitationem illum tempore quidem nam eveniet!</div>
<div>Iste nobis eveniet quibusdam aspernatur necessitatibus dolore perspiciatis fuga, quaerat ipsum minus eum placeat iure quas! Adipisci optio fugit laudantium voluptatem maiores, reiciendis laboriosam cupiditate blanditiis, quia consequatur voluptas! Nihil.</div>
<div>Nam dolorem atque, maxime ipsa aspernatur quo eveniet necessitatibus, dignissimos incidunt, sapiente quas eius tempore provident rem accusantium explicabo quia. Suscipit dolorem quo, voluptatum corporis. Enim minus repellat iure illum.</div>
<div>Ad voluptas, hic a vitae recusandae sit dignissimos beatae nemo eaque iusto culpa repudiandae quas asperiores repellendus nesciunt mollitia atque pariatur, reprehenderit rerum. Perspiciatis quod blanditiis deserunt iure consectetur tempore.</div>
<div>Placeat id, non quos incidunt rem, cumque, enim quidem consectetur obcaecati, dolor nihil beatae! Officiis necessitatibus nobis esse quaerat! Consectetur maiores praesentium libero hic at rem iste, assumenda vitae aperiam.</div>
<div>Illo tenetur libero nemo perspiciatis, quisquam minima sequi voluptate, dignissimos maiores hic aliquam et nobis quo iure, doloribus inventore repudiandae assumenda. Ad labore, quas alias explicabo excepturi saepe ullam repellendus!</div>
<div>Sint iure, hic quis eaque, deleniti asperiores quasi obcaecati cumque modi, iste laborum? Unde fugit quos itaque, molestias dolorum vero distinctio iste nisi ex repellat ut, voluptatem, ratione consectetur nihil?</div>
<div>Laudantium veniam aliquam provident doloremque excepturi eveniet iste illo consequatur eaque aut, ad, quae fugiat molestiae vitae autem laboriosam nulla accusantium. Tempora necessitatibus natus adipisci ab non, nihil quasi corporis!</div>
<div>Explicabo cumque unde tempore nihil, id. Nobis, iure veniam, dignissimos ullam nemo cumque voluptates voluptate atque eius unde tempora et, eos porro quo aut debitis. Consequatur neque, quaerat quae deleniti.</div>
<div>Repellat doloribus ipsa officia, debitis aspernatur blanditiis sit dignissimos nesciunt cum. Perspiciatis molestiae distinctio quas magni similique, mollitia obcaecati modi est ab quasi, ut. Sit libero adipisci sint consectetur molestias.</div></div>
<div class="chart">chart</div>
<!-- Comment / uncomment the sidebar -->
<div class="sidebar">sidebar</div>
</div>
No need to define the area for the sidebar. You can define the template to be one column and then force the sidebar to be on a second column which will create that column only when the sidebar is there (you will have an implicit defined grid)
// Comment OR uncomment the .sidebar HTML tag
body {
padding: 0;
margin: 0;
}
.wrapper {
background: #fed;
min-height: 100vh;
display: grid;
grid-template-rows: 80px auto;
grid-auto-rows: 100px;
}
.header {
background: hotpink;
overflow: auto;
}
.chart {
background: lightblue;
}
.sidebar {
background: rgba(255, 209, 62, 0.7);
grid-column: 2/ 2;
grid-row: 1 /span 2;
width:300px;
}
<div class="wrapper">
<div class="header"><div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio officiis deserunt cum, iusto veniam, perspiciatis atque dolore eum ab. Accusamus ratione repellat, laboriosam magnam exercitationem illum tempore quidem nam eveniet!</div>
<div>Iste nobis eveniet quibusdam aspernatur necessitatibus dolore perspiciatis fuga, quaerat ipsum minus eum placeat iure quas! Adipisci optio fugit laudantium voluptatem maiores, reiciendis laboriosam cupiditate blanditiis, quia consequatur voluptas! Nihil.</div>
<div>Nam dolorem atque, maxime ipsa aspernatur quo eveniet necessitatibus, dignissimos incidunt, sapiente quas eius tempore provident rem accusantium explicabo quia. Suscipit dolorem quo, voluptatum corporis. Enim minus repellat iure illum.</div>
<div>Ad voluptas, hic a vitae recusandae sit dignissimos beatae nemo eaque iusto culpa repudiandae quas asperiores repellendus nesciunt mollitia atque pariatur, reprehenderit rerum. Perspiciatis quod blanditiis deserunt iure consectetur tempore.</div>
<div>Placeat id, non quos incidunt rem, cumque, enim quidem consectetur obcaecati, dolor nihil beatae! Officiis necessitatibus nobis esse quaerat! Consectetur maiores praesentium libero hic at rem iste, assumenda vitae aperiam.</div>
<div>Illo tenetur libero nemo perspiciatis, quisquam minima sequi voluptate, dignissimos maiores hic aliquam et nobis quo iure, doloribus inventore repudiandae assumenda. Ad labore, quas alias explicabo excepturi saepe ullam repellendus!</div>
<div>Sint iure, hic quis eaque, deleniti asperiores quasi obcaecati cumque modi, iste laborum? Unde fugit quos itaque, molestias dolorum vero distinctio iste nisi ex repellat ut, voluptatem, ratione consectetur nihil?</div>
<div>Laudantium veniam aliquam provident doloremque excepturi eveniet iste illo consequatur eaque aut, ad, quae fugiat molestiae vitae autem laboriosam nulla accusantium. Tempora necessitatibus natus adipisci ab non, nihil quasi corporis!</div>
<div>Explicabo cumque unde tempore nihil, id. Nobis, iure veniam, dignissimos ullam nemo cumque voluptates voluptate atque eius unde tempora et, eos porro quo aut debitis. Consequatur neque, quaerat quae deleniti.</div>
<div>Repellat doloribus ipsa officia, debitis aspernatur blanditiis sit dignissimos nesciunt cum. Perspiciatis molestiae distinctio quas magni similique, mollitia obcaecati modi est ab quasi, ut. Sit libero adipisci sint consectetur molestias.</div></div>
<div class="chart">chart</div>
<!-- Comment / uncomment the sidebar -->
<div class="sidebar">sidebar</div>
</div>
Without sidebar:
// Comment OR uncomment the .sidebar HTML tag
body {
padding: 0;
margin: 0;
}
.wrapper {
background: #fed;
min-height: 100vh;
display: grid;
grid-template-rows: 80px auto;
grid-auto-rows: 100px;
}
.header {
background: hotpink;
overflow: auto;
}
.chart {
background: lightblue;
}
.sidebar {
background: rgba(255, 209, 62, 0.7);
grid-column: 2/ 2;
grid-row: 1 /span 2;
width:300px;
}
<div class="wrapper">
<div class="header"><div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio officiis deserunt cum, iusto veniam, perspiciatis atque dolore eum ab. Accusamus ratione repellat, laboriosam magnam exercitationem illum tempore quidem nam eveniet!</div>
<div>Iste nobis eveniet quibusdam aspernatur necessitatibus dolore perspiciatis fuga, quaerat ipsum minus eum placeat iure quas! Adipisci optio fugit laudantium voluptatem maiores, reiciendis laboriosam cupiditate blanditiis, quia consequatur voluptas! Nihil.</div>
<div>Nam dolorem atque, maxime ipsa aspernatur quo eveniet necessitatibus, dignissimos incidunt, sapiente quas eius tempore provident rem accusantium explicabo quia. Suscipit dolorem quo, voluptatum corporis. Enim minus repellat iure illum.</div>
<div>Ad voluptas, hic a vitae recusandae sit dignissimos beatae nemo eaque iusto culpa repudiandae quas asperiores repellendus nesciunt mollitia atque pariatur, reprehenderit rerum. Perspiciatis quod blanditiis deserunt iure consectetur tempore.</div>
<div>Placeat id, non quos incidunt rem, cumque, enim quidem consectetur obcaecati, dolor nihil beatae! Officiis necessitatibus nobis esse quaerat! Consectetur maiores praesentium libero hic at rem iste, assumenda vitae aperiam.</div>
<div>Illo tenetur libero nemo perspiciatis, quisquam minima sequi voluptate, dignissimos maiores hic aliquam et nobis quo iure, doloribus inventore repudiandae assumenda. Ad labore, quas alias explicabo excepturi saepe ullam repellendus!</div>
<div>Sint iure, hic quis eaque, deleniti asperiores quasi obcaecati cumque modi, iste laborum? Unde fugit quos itaque, molestias dolorum vero distinctio iste nisi ex repellat ut, voluptatem, ratione consectetur nihil?</div>
<div>Laudantium veniam aliquam provident doloremque excepturi eveniet iste illo consequatur eaque aut, ad, quae fugiat molestiae vitae autem laboriosam nulla accusantium. Tempora necessitatibus natus adipisci ab non, nihil quasi corporis!</div>
<div>Explicabo cumque unde tempore nihil, id. Nobis, iure veniam, dignissimos ullam nemo cumque voluptates voluptate atque eius unde tempora et, eos porro quo aut debitis. Consequatur neque, quaerat quae deleniti.</div>
<div>Repellat doloribus ipsa officia, debitis aspernatur blanditiis sit dignissimos nesciunt cum. Perspiciatis molestiae distinctio quas magni similique, mollitia obcaecati modi est ab quasi, ut. Sit libero adipisci sint consectetur molestias.</div></div>
<div class="chart">chart</div>
<!-- Comment / uncomment the sidebar
<div class="sidebar">sidebar</div>
-->
</div>

Block level elements acting like Flexbox elements

I've run into a curious problem when trying to create a flexbox accordion. The problem is that sometimes the contents of a given accordion will act like flexbox elements even if I set display to block. This is best described by showing an example:
http://codepen.io/jcummins/pen/KpWzNY
$('item div.header').click(function(e){
$( this ).parent().toggleClass( "active" );
});
body {
height:100%;
width:100%;
background-color: #ccc;
margin:0;
padding:0;
}
container {
display:block;
position:absolute;
height: 100%;
width: 100%;
/* Formatting styles: safe to remove */ background-color: #999;
}
items {
height:100%;
display: -webkit-box;
display: -moz-box;
display: box;
-webkit-box-orient: vertical;
-moz-box-orient: vertical;
box-orient: vertical;
box-pack:top;
box-align:center;
/* Formatting styles: safe to remove */ background-color: #fc0;
}
item {
display:flex;
/* Formatting styles: safe to remove */
box-shadow:0 1px 3px rgba(0,0,0,.3);
margin-bottom: 6px;
margin-top: 6px;
margin-left: 8px;
margin-right: 8px;
border-bottom: 3px green solid;
background:#fff;
border-radius:5px;
padding-left: 20px;
padding-top: 10px;
padding-bottom: 10px;
font-family: Arial, sans-serif;
font-weight:bold;
}
.active {
-webkit-box-flex: 9;
-moz-box-flex: 9;
box-flex: 9;
}
.header {
display:block;
width:100%;
}
/* Hide the contents and only show it when the selected menu becomes active */
contents {
display:none;
overflow:scroll;
}
.active contents {
display:block;*/
/*width:100%;
overflow:scroll;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<container>
<items>
<item>
<div class="header">Item 1</div>
<contents>
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quidem quos enim explicabo non ipsum dicta minima, architecto, aliquid iusto itaque repudiandae tenetur aliquam nihil odio. Distinctio alias maxime aperiam impedit.</div>
<div>Quasi aliquam inventore hic veniam nobis nesciunt ratione quod unde, excepturi reprehenderit, error. Fuga tempora excepturi voluptas nihil labore veniam animi! Possimus distinctio ea molestias voluptate aspernatur corrupti porro libero!</div>
<div>Nostrum deserunt quia modi necessitatibus id ipsum asperiores. Facilis suscipit, nisi culpa veritatis iusto autem iste eos dolore quibusdam ex quis dolorum blanditiis ipsa at architecto earum cum cumque dolor.</div>
<div>Eaque, libero, nihil. Accusantium corporis id fugit doloremque reiciendis temporibus, cumque minus, aliquid aperiam qui voluptates! Ipsum repudiandae inventore porro iusto mollitia, ex aliquid reiciendis quisquam odit ea, eligendi illo?</div>
<div>Enim, vitae natus distinctio adipisci rem possimus minus aliquid voluptas corporis velit, ipsa, est eligendi alias veniam fugit eius non hic quibusdam quod placeat dolorum laboriosam, quaerat explicabo. Sint, odio.</div>
</contents>
</item>
<item class="active">
<div class="header">Item 2</div>
<contents>
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque nobis soluta architecto similique molestiae saepe porro accusamus natus ab, eum nihil quidem tempore harum suscipit autem voluptates, quia quae aliquam.</div>
<div>Dolorum ut mollitia nisi. Sapiente necessitatibus, ducimus minima commodi suscipit dolor modi dolorum ipsa, dolores, aliquid porro neque voluptas a cupiditate blanditiis qui sed est iste dolore eos rerum doloremque!</div>
<div>Minima itaque ad officia quas dolore expedita, ab hic tempora, enim cum consectetur! Doloribus ut, reiciendis ipsam veniam voluptates, labore voluptatem perferendis earum illo voluptatum inventore a voluptas porro cum?</div>
<div>Perferendis quasi nesciunt laboriosam debitis veniam quisquam officiis est, cumque ut consectetur quod eligendi odio ab sapiente! Vel laboriosam quisquam odit, doloremque veritatis reiciendis perspiciatis molestiae illum repellendus, velit amet.</div>
<div>Numquam ipsum, dolorum, nihil perspiciatis aspernatur blanditiis explicabo corporis assumenda dolorem facilis debitis et est fuga sit. Totam, veniam unde soluta rem recusandae explicabo, enim, modi pariatur tempore repellendus quo!</div>
<div>In, nisi minima ex autem consequatur. Sequi mollitia, velit officiis nisi, eos laudantium quibusdam accusamus dolores dicta tenetur vitae pariatur rem consequatur a praesentium aliquam quidem at fuga eligendi quam!</div>
<div>Minima minus impedit iste, deleniti asperiores nulla est, nisi optio repudiandae ducimus, corporis aperiam. Quod neque magnam, provident minima minus corporis debitis officiis laborum voluptas consectetur accusantium numquam placeat eum.</div>
<div>Labore maxime exercitationem, pariatur quaerat, nisi repellat ad reprehenderit modi et sint eum veniam iure odio dignissimos, ullam. Culpa quos, est dolorum dolores asperiores quia commodi laudantium tempora doloribus soluta.</div>
<div>Aspernatur voluptatem, dolorem vel eligendi. Veritatis, ut eius officia cupiditate dicta quisquam dolores voluptatem, quo saepe. Sequi ducimus quo provident tempore accusamus alias ipsum soluta consequatur quidem, aut, et, dolorum.</div>
<div>Doloribus beatae excepturi, et sunt libero laborum. Eius perspiciatis vitae, corporis temporibus molestias eum sit dolorum eos a fugit maiores earum suscipit labore, adipisci magnam reiciendis animi rerum culpa inventore.</div>
<div>Optio itaque fugit dolorum, labore inventore. Illo beatae, quas eius dolorem quasi, quaerat. Voluptatibus laboriosam, laudantium, similique corrupti minus, tempora explicabo atque aspernatur ab, possimus quibusdam adipisci mollitia iste neque.</div>
<div>Accusamus vel dolorem libero consectetur facere, quo quod maiores, illum enim tenetur! Odio dicta repellendus, earum optio officiis consequatur dolore laboriosam fugit laudantium ad harum distinctio nesciunt accusantium vero, quaerat.</div>
<div>Eaque voluptatibus excepturi minima fuga ab voluptas ex dolore perspiciatis earum. Fugit eius natus, libero voluptates sunt autem quod consequuntur tempore! Velit rem tenetur est molestias quod quae modi inventore.</div>
<div>Quasi, quo nulla, hic ut veniam tempora dolorum veritatis eum animi repudiandae nisi eaque numquam temporibus consequatur odio voluptatum obcaecati mollitia neque amet, sunt quidem iure laboriosam eveniet. Quo, quas!</div>
<div>Officia fuga ipsum ullam deserunt rem praesentium quasi! Alias consectetur esse nobis commodi nam, placeat nesciunt, aspernatur quia asperiores officia fugiat delectus, nulla corporis saepe distinctio culpa aliquid adipisci amet.</div>
</contents>
</item>
<item>Item 3</item>
<item>Item 4</item>
<item>Item 5</item>
</items>
</container>
My expected behavior would be that Item 1 would be on one line and the <contents> would be on another line. Instead, it seems to be a 50-50 split.
Specifically it seems that this rule is not doing what I expect:
.header {
display: block;
width: 100%;
}
display: flex; applies to the containing element, and tells it that all of it's children should now be in a flex context.
Your style rule doesn't actually add anything, because by default the .header element is already a block element.
If you want a flex context for all elements except the header, you will likely want to wrap only those elements in an additional container, and set that container to be display: flex;, rather than overall main container
My expected behavior would be that Item 1 would be on one line and the
<contents> would be on another line.
That doesn't happen because the initial value of flex-wrap is nowrap. If you want multiple lines, use wrap:
item {
flex-wrap: wrap;
}
$('item div.header').click(function(e){
$( this ).parent().toggleClass( "active" );
});
body {
height:100%;
width:100%;
background-color: #ccc;
margin:0;
padding:0;
}
container {
display:block;
position:absolute;
height: 100%;
width: 100%;
/* Formatting styles: safe to remove */ background-color: #999;
}
items {
height:100%;
display: -webkit-box;
display: -moz-box;
display: box;
-webkit-box-orient: vertical;
-moz-box-orient: vertical;
box-orient: vertical;
box-pack:top;
box-align:center;
/* Formatting styles: safe to remove */ background-color: #fc0;
}
item {
display:flex;
flex-wrap: wrap;
/* Formatting styles: safe to remove */
box-shadow:0 1px 3px rgba(0,0,0,.3);
margin-bottom: 6px;
margin-top: 6px;
margin-left: 8px;
margin-right: 8px;
border-bottom: 3px green solid;
background:#fff;
border-radius:5px;
padding-left: 20px;
padding-top: 10px;
padding-bottom: 10px;
font-family: Arial, sans-serif;
font-weight:bold;
}
.active {
-webkit-box-flex: 9;
-moz-box-flex: 9;
box-flex: 9;
}
.header {
display:block;
width:100%;
}
/* Hide the contents and only show it when the selected menu becomes active */
contents {
display:none;
overflow:scroll;
}
.active contents {
display:block;*/
/*width:100%;
overflow:scroll;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<container>
<items>
<item>
<div class="header">Item 1</div>
<contents>
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quidem quos enim explicabo non ipsum dicta minima, architecto, aliquid iusto itaque repudiandae tenetur aliquam nihil odio. Distinctio alias maxime aperiam impedit.</div>
<div>Quasi aliquam inventore hic veniam nobis nesciunt ratione quod unde, excepturi reprehenderit, error. Fuga tempora excepturi voluptas nihil labore veniam animi! Possimus distinctio ea molestias voluptate aspernatur corrupti porro libero!</div>
<div>Nostrum deserunt quia modi necessitatibus id ipsum asperiores. Facilis suscipit, nisi culpa veritatis iusto autem iste eos dolore quibusdam ex quis dolorum blanditiis ipsa at architecto earum cum cumque dolor.</div>
<div>Eaque, libero, nihil. Accusantium corporis id fugit doloremque reiciendis temporibus, cumque minus, aliquid aperiam qui voluptates! Ipsum repudiandae inventore porro iusto mollitia, ex aliquid reiciendis quisquam odit ea, eligendi illo?</div>
<div>Enim, vitae natus distinctio adipisci rem possimus minus aliquid voluptas corporis velit, ipsa, est eligendi alias veniam fugit eius non hic quibusdam quod placeat dolorum laboriosam, quaerat explicabo. Sint, odio.</div>
</contents>
</item>
<item class="active">
<div class="header">Item 2</div>
<contents>
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque nobis soluta architecto similique molestiae saepe porro accusamus natus ab, eum nihil quidem tempore harum suscipit autem voluptates, quia quae aliquam.</div>
<div>Dolorum ut mollitia nisi. Sapiente necessitatibus, ducimus minima commodi suscipit dolor modi dolorum ipsa, dolores, aliquid porro neque voluptas a cupiditate blanditiis qui sed est iste dolore eos rerum doloremque!</div>
<div>Minima itaque ad officia quas dolore expedita, ab hic tempora, enim cum consectetur! Doloribus ut, reiciendis ipsam veniam voluptates, labore voluptatem perferendis earum illo voluptatum inventore a voluptas porro cum?</div>
<div>Perferendis quasi nesciunt laboriosam debitis veniam quisquam officiis est, cumque ut consectetur quod eligendi odio ab sapiente! Vel laboriosam quisquam odit, doloremque veritatis reiciendis perspiciatis molestiae illum repellendus, velit amet.</div>
<div>Numquam ipsum, dolorum, nihil perspiciatis aspernatur blanditiis explicabo corporis assumenda dolorem facilis debitis et est fuga sit. Totam, veniam unde soluta rem recusandae explicabo, enim, modi pariatur tempore repellendus quo!</div>
<div>In, nisi minima ex autem consequatur. Sequi mollitia, velit officiis nisi, eos laudantium quibusdam accusamus dolores dicta tenetur vitae pariatur rem consequatur a praesentium aliquam quidem at fuga eligendi quam!</div>
<div>Minima minus impedit iste, deleniti asperiores nulla est, nisi optio repudiandae ducimus, corporis aperiam. Quod neque magnam, provident minima minus corporis debitis officiis laborum voluptas consectetur accusantium numquam placeat eum.</div>
<div>Labore maxime exercitationem, pariatur quaerat, nisi repellat ad reprehenderit modi et sint eum veniam iure odio dignissimos, ullam. Culpa quos, est dolorum dolores asperiores quia commodi laudantium tempora doloribus soluta.</div>
<div>Aspernatur voluptatem, dolorem vel eligendi. Veritatis, ut eius officia cupiditate dicta quisquam dolores voluptatem, quo saepe. Sequi ducimus quo provident tempore accusamus alias ipsum soluta consequatur quidem, aut, et, dolorum.</div>
<div>Doloribus beatae excepturi, et sunt libero laborum. Eius perspiciatis vitae, corporis temporibus molestias eum sit dolorum eos a fugit maiores earum suscipit labore, adipisci magnam reiciendis animi rerum culpa inventore.</div>
<div>Optio itaque fugit dolorum, labore inventore. Illo beatae, quas eius dolorem quasi, quaerat. Voluptatibus laboriosam, laudantium, similique corrupti minus, tempora explicabo atque aspernatur ab, possimus quibusdam adipisci mollitia iste neque.</div>
<div>Accusamus vel dolorem libero consectetur facere, quo quod maiores, illum enim tenetur! Odio dicta repellendus, earum optio officiis consequatur dolore laboriosam fugit laudantium ad harum distinctio nesciunt accusantium vero, quaerat.</div>
<div>Eaque voluptatibus excepturi minima fuga ab voluptas ex dolore perspiciatis earum. Fugit eius natus, libero voluptates sunt autem quod consequuntur tempore! Velit rem tenetur est molestias quod quae modi inventore.</div>
<div>Quasi, quo nulla, hic ut veniam tempora dolorum veritatis eum animi repudiandae nisi eaque numquam temporibus consequatur odio voluptatum obcaecati mollitia neque amet, sunt quidem iure laboriosam eveniet. Quo, quas!</div>
<div>Officia fuga ipsum ullam deserunt rem praesentium quasi! Alias consectetur esse nobis commodi nam, placeat nesciunt, aspernatur quia asperiores officia fugiat delectus, nulla corporis saepe distinctio culpa aliquid adipisci amet.</div>
</contents>
</item>
<item>Item 3</item>
<item>Item 4</item>
<item>Item 5</item>
</items>
</container>

Resources