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

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>

Related

Background color doesn't extend to the bottom of scrollable div

I have two flex items inside a scrollable div, but the grey background-color of the flex items doesn't extend to the very end of the scroll. How would I extend it to the full width?
.my-div{
display: flex;
margin: auto;
width: 400px;
height: 500px;
overflow-y: auto;
background-color: #aaa;
}
.left{
background-color: #555;
height: 100%;
}
.right{
font-size: 20px;
}
<div class="my-div">
<div class="left">
<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.
</p>
</div>
<div class="right">
<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>
</div>
</div>
.main-div {
margin: auto;
width: 400px;
height: 500px;
overflow-y: auto;
}
.my-div{
display: flex;
background-color: #aaa;
}
.left{
background-color: #555;
}
.right{
font-size: 20px;
}
<div class="main-div">
<div class="my-div">
<div class="left">
<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.
</p>
</div>
<div class="right">
<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>
</div>
</div>
</div>

Is it possible to create a button using nothing but CSS that changes the appearance of a page?

I'm using a website that allows members to alter the appearance of their own page with CSS. No HTML permitted, only CSS. I've deliberately made my page as bright and clashing and "graphic design is my passion" as possible. This is not a serious site and I'm not taking it seriously.
However, I would like to implement a button that removes the most visually offensive elements of the design and makes it possible to actually read my page, should anyone want to.
I'm fairly confident this isn't possible with only CSS, but I thought I'd ask just to be certain.
This is an extension of my comment to the OP's question:
.content{
width: 500px;
background: #e1e1e1;
margin-top: 30px;
}
.remove-el{
width: 30px;
height: 30px;
background: red;
}
input[type="checkbox"]{
-webkit-appearance: none;
}
input[type="checkbox"] ~ label{
background: teal;
color: #fff;
padding: 5px;
}
input[type="checkbox"]:checked ~ label{
background: #e1e1e1;
color: #aaa;
}
input[type="checkbox"]:checked ~ .content .remove-el{
display: none;
}
<input type="checkbox" id="more-readable">
<label for="more-readable">Make it more readable</label>
<div class="content">
<div class="remove-el"></div>
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Sunt nostrum quasi labore, neque incidunt enim soluta velit in possimus, amet cupiditate optio sequi ipsum natus aperiam quibusdam eos molestiae. Excepturi.</p>
<p>Rerum consequuntur provident, vel tempora dolore deleniti impedit quia ab exercitationem laboriosam quaerat perspiciatis doloremque accusamus, nesciunt sed veniam libero soluta quasi recusandae unde nostrum sapiente nam. Culpa, fugiat omnis!</p>
<div class="remove-el"></div>
<p>Quibusdam, voluptatibus ipsa reprehenderit reiciendis suscipit maxime vero praesentium nobis ex perspiciatis quo laudantium? Alias aliquam voluptatum, exercitationem ea modi corrupti aspernatur a. Illo sint distinctio quos quod quas quasi!</p>
<p>Autem praesentium inventore soluta atque ut, consectetur minima itaque perspiciatis sint nobis assumenda eum vitae culpa nemo fugiat facere in sapiente eaque a voluptatibus aut recusandae commodi ipsam? Iste, quae.</p>
<div class="remove-el"></div>
<p>Unde sequi nihil, molestias laudantium ex dolorem corporis dolore at minima perferendis consequuntur, nisi repellendus quibusdam sit reiciendis fugit officiis optio dicta veniam asperiores ab enim. Dolorem commodi illum saepe!</p>
<p>Eos labore quo, deserunt nobis hic molestias excepturi accusantium quidem aperiam quisquam sapiente delectus. Nulla enim delectus illum, sunt cupiditate et incidunt ducimus alias eligendi labore iste! Iste, sapiente ad.</p>
<div class="remove-el"></div>
<p>Sint, nisi sunt. Neque, libero est rerum adipisci cum commodi aliquid architecto eveniet natus culpa eligendi earum ratione? Excepturi sed hic impedit esse inventore fugit? Ut minus quia odio quis!</p>
<p>Corrupti nesciunt dolor amet sunt autem dicta minima expedita ducimus illum! Mollitia molestiae nihil veniam cupiditate! Veritatis explicabo voluptatem soluta, nemo libero illum. A magni molestiae provident possimus laudantium dolorum.</p>
<div class="remove-el"></div>
<div class="remove-el"></div>
<p>Itaque numquam, provident molestias odit eum deleniti ab temporibus iure earum non pariatur a aliquid minus? Eius adipisci quis delectus praesentium ab minus quaerat debitis inventore quo! Hic, facilis vel.</p>
<div class="remove-el"></div>
<p>Atque esse pariatur porro non quo minus nesciunt cumque perspiciatis vel ad deserunt culpa eius facere aut adipisci, fuga, mollitia nam enim dolore veritatis vitae, dolorem obcaecati? Eos, quidem in.</p>
</div>

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

with css column-count / column-width, can I make text flow around large images?

https://jsfiddle.net/6g6176zs/1/ is a simple 2-column CSS layout, where the image is so wide it spans several columns, but unfortunately the text goes over the image.
I know you can put column-span:all on only the p's that contain images, but is there a way, without knowing which <p> contains a wide image (or table or what have you), to ensure the text flows around the image (like with floats)?
Ideally, text would flow such that it fills columns as well as possible up to column-width:
css:
body {
-webkit-column-count: 2;
-moz-column-count: 2;
column-count: 2;
-webkit-column-width: 50px;
-moz-column-width: 50px;
column-width: 50px;
}
html:
<html>
<head> <title>column-clear</title> </head>
<body>
<p> <img src="http://bildr.no/image/bHEvbVFz.jpeg"/> </p>
<p>Id reiciendis rerum illum ut minus eos reiciendis et. Odio vel non autem. Et in ut harum quaerat repellat maxime vel odit. Mollitia inventore officia voluptas et.Vitae assumenda harum et omnis. Qui eum in explicabo molestiae. Et reiciendis non vel blanditiis et maxime. Rerum odit recusandae ipsa. Ea ut in aut cum numquam dolores eos velit. Quia sit est velit fugiat ipsum ut doloremque mollitia.Sit dolorem sunt quia officia nihil corporis eos dolores. Dolores consequatur est quisquam laboriosam deserunt. Ipsa illo tempore tempora et sed. Est quisquam rem blanditiis ullam non unde magni. Non blanditiis aut fugit alias magnam.Hic qui minima et est quasi. Ducimus quos odio voluptatibus temporibus ipsa sunt. Harum reprehenderit dolores soluta ut itaque. Qui ipsa suscipit nisi.Debitis quibusdam exercitationem ex quos doloremque et minima ut. Suscipit saepe et voluptatem. Voluptatem suscipit ut odio. Possimus ut expedita vel ex sequi nesciunt dolor debitis. Sed iusto consequatur labore animi sint qui inventore blanditiis. Ut qui velit nobis esse. </p>
<p>Id reiciendis rerum illum ut minus eos reiciendis et. Odio vel non autem. Et in ut harum quaerat repellat maxime vel odit. Mollitia inventore officia voluptas et.Vitae assumenda harum et omnis. Qui eum in explicabo molestiae. Et reiciendis non vel blanditiis et maxime. Rerum odit recusandae ipsa. Ea ut in aut cum numquam dolores eos velit. Quia sit est velit fugiat ipsum ut doloremque mollitia.Sit dolorem sunt quia officia nihil corporis eos dolores. Dolores consequatur est quisquam laboriosam deserunt. Ipsa illo tempore tempora et sed. Est quisquam rem blanditiis ullam non unde magni. Non blanditiis aut fugit alias magnam.Hic qui minima et est quasi. Ducimus quos odio voluptatibus temporibus ipsa sunt. Harum reprehenderit dolores soluta ut itaque. Qui ipsa suscipit nisi.Debitis quibusdam exercitationem ex quos doloremque et minima ut. Suscipit saepe et voluptatem. Voluptatem suscipit ut odio. Possimus ut expedita vel ex sequi nesciunt dolor debitis. Sed iusto consequatur labore animi sint qui inventore blanditiis. Ut qui velit nobis esse. </p>
</body>
</html>

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