Box model for a Image board CSS - html

Hello guys and girls I Have been working on a Image board as a learning project for the past few week and have run into a bit of a snag with CSS styling mostly in how I should style the Post and it content. What I'm wanting to build would look something like this.
For now the way I'm doing this is by having a div hold a img and another div with the post_content and a header inside of that. and setting it to Display:flex,row
A problem with this would be that the post/header div would out grow the container post div and would make text run off screen. I tried fixing this by giving the post and the img a fixed size 20%/80%. this worked well till i resize the page and the gap between the img and the div grew larger as i size up the page.
here is a sample post any help would be awesome and as always ill be around to answer any questions.
#flex_content {
display: flex;
}
#flex_post {
width: 80%;
}
#post_header {
margin-bottom: 4px;
}
#thumbnail {
width: 10em;
height: auto;
}
#post {
background-color: #333 !important;
float: left;
width: 100%;
}
#post {
height: auto;
width: 100%;
border: 2px solid #F4E8AF;
margin-top: 5px;
margin-bottom: 5px;
padding: 5px;
word-wrap: break-word;
}
#img {
width: 20%
}
#post_contnet{
width:80%;
}
<div id='post'>
<div id="header">
1455249371.png
<br />
</div>
<div id="flex_content">
<div id="img">
<img id='thumbnail' src="images/1455249371 ">
</div>
<div id='flex_post'>
<div id="reply_header">
<b>Anonymous</b> 10:56
<ahref='chan.php?post=83'>>>No.83</a>
[<a href='thread.php?thread=67'>Reply</a>]
<br />
</div>
<div id='post_contnet'>
[Transparent]
<br />
</div>
</div>
</div>
</div>

Please Try this:
#thumbnail {
width: 10em;
height: auto;
float:left;
margin-right:10px;
}
<div id='post'>
<div id="flex_content">
<div id="img">
<img id='thumbnail' src="1455249371.png">
<div id="header">
1455249371.png
</div>
<b>Anonymous</b> 10:56
<a href='chan.php?post=83'>>>No.83</a>
[<a href='thread.php?thread=67'>Reply</a>]
<br />
<p>
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
<p>
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
</div>
</div>
</div>

I think I fixed this while just cleaning up my code all i did was remove the width:20% from the img tag and boom bam boom it works

Related

Without resizing div but user body overflow(x and y) to browse the element when browser is not a full screen

I want to design two vertical divs in the same row without changing the height and the width of divs when the browser is not a full screen. And the user can use the body (overflow scroll) to turn x and y-axis to keep reading that two DIVs elements,
but I have no idea to set it( I have tried float[left /right]).
<style type="text/css">
html, body{
height:100%;
margin:0;
padding:0;
}
body{
overflow: scroll;
}
</style>
<div style="display:flex;">
<div style="min-width:50%;height:100%;border:solid silver 1px;">LeftLeftLeftLeftLeftLeft.......repeat.....</div>
<div style="min-width:50%;height:100%;border:solid silver 1px;">RightRightRight.....repeat.......</div>
</div>
What about using display:flex in the body-tag - or better in a div container?
<div style="display:flex;">
<div style="min-width:400px;height:400px;border:solid silver 1px;">Left</div>
<div style="min-width:400px;height:400px;border:solid silver 1px;">Right</div>
</div>
This is the code for 2 divs in a row with overflow set to scroll with a set height of 200px and a width of 50%.
for the php / html use this
<div class="main">
<div class="left scroll">
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
</div>
<div class="right scroll">
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
</div>
and for the css try this
.main{
display: flex;
flex-direction: row;
}
.left{
background-color: red;
}
.right{
background-color: yellow;
}
.scroll{
overflow: scroll;
width: 50%;
height: 100px;
}
If you need to support very old browsers ( check https://caniuse.com/#search=flex ), then I suggest you use tables. Floats may also work if you can fix the width of the container. Otherwise, go with table.
<style type="text/css" rel="stylesheet">
.holder {
display:flex;
}
.holder>* {
flex-shrink:0;
box-sizing:border-box;
border:solid 1px silver;
width:50%;
overflow:hidden;
}
</style>
<div class="holder">
<div>Left</div>
<div>Right</div>
</div>

Why cannot resize height: 100%; a flex item? [duplicate]

This question already has answers here:
Chrome / Safari not filling 100% height of flex parent
(5 answers)
Why is percentage height not working on my div? [duplicate]
(2 answers)
Closed 5 years ago.
I would like to know why clm1 with height: 100%; does not resize the div when display flex is being used.
How to fix this problem, I need the div resize as clm2 content?
Why does not work my version?
I need the orange div to matchs the size of the blue div.
#container {
background-color: red;
width: 500px;
height: 400px;
}
#flex {
background-color: yellow;
display: flex;
flex-direction: row;
}
#clm1 {
background-color: orange;
width: 20%;
height: 100%;
}
#clm2 {
background-color: blue;
width: 80%;
}
<div id="container">
<div id="flex">
<div id="clm1">
1
</div>
<div id="clm2">
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has
survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop
publishing software like Aldus PageMaker including versions of Lorem Ipsum. Why do we use it? It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum
</div>
</div>
</div>
Because the parent height is not set. Add height:100% (or any height) to parent and it will work.
#container {
background-color: red;
width: 500px;
height: 400px;
}
#flex {
background-color: yellow;
display: flex;
flex-direction: row;
height: 100%;
}
#clm1 {
background-color: orange;
width: 20%;
height: 100%;
}
#clm2 {
background-color: blue;
width: 80%;
}
<div id="container">
<div id="flex">
<div id="clm1">
1
</div>
<div id="clm2">
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has
survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop
publishing software like Aldus PageMaker including versions of Lorem Ipsum. Why do we use it? It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum
</div>
</div>
</div>
Or simply remove the height:100% from child as with the default behavior of flex it will be stretched to parent height. This is due to the property align-items set to stretch by default.
#container {
background-color: red;
width: 500px;
height: 400px;
}
#flex {
background-color: yellow;
display: flex;
flex-direction: row;
}
#clm1 {
background-color: orange;
width: 20%;
}
#clm2 {
background-color: blue;
width: 80%;
}
<div id="container">
<div id="flex">
<div id="clm1">
1
</div>
<div id="clm2">
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has
survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop
publishing software like Aldus PageMaker including versions of Lorem Ipsum. Why do we use it? It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum
</div>
</div>
</div>
'cause your #clm2 is 100% height of... the #flex, which is auto height, not the #container that has a defined 400px.
So set the #flex to height 100% (or 400px) and it will work
#container {
background-color: red;
width: 500px;
height: 400px;
}
#flex {
background-color: yellow;
display: flex;
flex-direction: row;
height:100%;
}
#clm1 {
background-color: orange;
width: 20%;
height: 100%;
}
#clm2 {
background-color: blue;
width: 80%;
}
<div id="container">
<div id="flex">
<div id="clm1">
1
</div>
<div id="clm2">
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has
survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop
publishing software like Aldus PageMaker including versions of Lorem Ipsum. Why do we use it? It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum
</div>
</div>
</div>
You have clm1 and clm2 in the div flex and you set c1lm1 to height 100% clm2 to height 80%. Since height property fills in the parent, the total height would be 180% which is not possible. Try making the clm1 and clm2 height percentages add up to 100%

Img height on auto height div

https://jsfiddle.net/ry9gyb8n/
Hi guys , I have been trying to solve this problem since a couple of weeks.
I have an auto height container , the left div in the container is auto height as it can have various different content inside it.
The right div will always have an image but I dont know the height of the image.
How do I make it so the image doesnt exceed the height of the content on the left?
.container {
float: left;
width: 100%;
height: auto;
border: 2px solid black;
}
.leftContainer {
float: left;
width: 48%;
border: 2px solid black;
}
.rightContainer {
width: 50%;
float: left;
}
img {
max-width: 100%;
}
<div class="container">
<div class="leftContainer">
<p>
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has
survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop
publishing software like Aldus PageMaker including versions of Lorem Ipsum.
</p>
</div>
<div class="rightContainer">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/London_Bridge_Illuminated.jpg/1200px-London_Bridge_Illuminated.jpg">
</div>
</div>
I would go with flex to create the layout and make the image out of the flow using absolute position so it won't give its container a height and thus the height will be equal to the left one. Then simply adjust the properties of the image to make it fit the container as you need:
.container {
display:flex;
border: 2px solid black;
}
.leftContainer {
flex:1;
border: 2px solid black;
}
.rightContainer {
flex:1;
position:relative;
}
img {
position:absolute;
top:0;
max-height:100%; /* Or height:100%*/
max-width:100%;
/*to center the image if needed*/
left:50%;
transform:translateX(-50%);
/**/
}
<div class="container">
<div class="leftContainer">
<p>
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has
survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop
publishing software like Aldus PageMaker including versions of Lorem Ipsum.
</p>
</div>
<div class="rightContainer">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/London_Bridge_Illuminated.jpg/1200px-London_Bridge_Illuminated.jpg">
</div>
</div>
Another solution is to use the same layout as above and make the image as background. You will have the same situation because there is no content and thus the height will be the same as the left column. Then adjust the image position/size using background properties:
.container {
display: flex;
border: 2px solid black;
}
.leftContainer {
flex: 1;
border: 2px solid black;
}
.rightContainer {
flex: 1;
position: relative;
background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/London_Bridge_Illuminated.jpg/1200px-London_Bridge_Illuminated.jpg");
background-size: contain; /* or cover or 100% 100% or auto*/
background-position: top center;
background-repeat:no-repeat;
}
<div class="container">
<div class="leftContainer">
<p>
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has
survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop
publishing software like Aldus PageMaker including versions of Lorem Ipsum.
</p>
</div>
<div class="rightContainer">
</div>
</div>

Avoid overlapping with absolute positioning in responsive

I'm trying to create a div with some basic text elements in it. My requirement is that the elements inside the div should be aligned according to the div, hence I used absolute positioning with my main div positioned as relative and gave percentage values to it so that they can be worked in responsive screens. I have even changed some of the top bottom percentages in media screens. However, in some cases when the screen size is changed one block of text or div is overlapping over the other. Is there a way to avoid this overlapping in responsive screens. Thank you in advance :)
.Heading{
position:relative;
}
.Heading h3{
top:1%;
position:absolute;
left:0;
right:0;
}
.Text{
Position: absolute;
top: 10%;
}
.bottom-part{
position:absolute;
top:60%;
}
<div class="main">
<div class="Heading">
<h3>Heading part</h3>
</div>
<div class="Text">
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It
has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop
publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
</div>
<div class="bottom-part">
<h4>Here's the ending part</h4>
</div>
</div>
Okay, I can give you a solution to easily fix it by setting min-height like this:
.Heading {
position: relative;
min-height: 100px;
}
.Heading h3 {
top: 1%;
position: absolute;
left: 0;
right: 0;
}
.Text {
Position: absolute;
top: 10%;
}
.bottom-part {
position: absolute;
top: 60%;
}
<div class="main">
<div class="Heading">
<h3>Heading part</h3>
</div>
<div class="Text">
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It
has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop
publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
</div>
<div class="bottom-part">
<h4>Here's the ending part</h4>
</div>
</div>
But what you are doing is totally not the right thing. You should never use position: absolute in this case. Instead, you need to use #media queries for this kind of layout.

Creating a vertically scrollable div from unknown height

I have a popup div which has a height of 100%.
.popup{
height:100%;
}
I have gone ahead and created a 60% margin top
.popup{
margin-top:60%;
}
and so only 40% of space is available at the bottom end of the popup.
In the 40% bottom space,i want to have a scrollable div container of maybe height of 500px. This does not work and only the 40% space is available and no scrolling bars appear.
How can i have 500px on the 40% space available?.
Check this snippet:
body,
html,
.outer {
width: 100%;
height: 100%;
}
.wrapper-top, .wrapper-bottom {
position: relative;
width: 400px;
top: 0;
bottom: 0;
border: 1px solid #555;
}
.wrapper-top {
height: 60%;
}
.wrapper-bottom {
height: 40%;
}
.inner {
position: absolute;
width: 100%;
top: 0px;
bottom: 0px;
overflow-y: auto;
}
<div class="outer">
<div class="wrapper-top">
<div class="inner">
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
</div>
</div>
<div class="wrapper-bottom">
<div class="inner">
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
</div>
</div>
</div>
.main{
width:100%;
height:350px;
border:1px solid;
}
.top{
width:100%;
height:60%;
border:1px solid red;
}
.bottom{
display:inline-block;
width:100%;
height:38%;
border:1px solid #ff6600;
padding:5px;
overflow:auto;
}
.content{
width:100%;
height:500px;
border:1px solid blue;
}
<div class="main">
<div class="top"></div>
<div class="bottom">
<div class="content"></div>
</div>
</div>
Please check this fiddle: https://jsfiddle.net/vadimb/wx2v7pj6/
.popup {
margin-top: 60%;
background-color: red;
height: 250px;
overflow: hidden;
}
.inner {
overflow-y: scroll;
height: 250px;
}
And html
<div class="popup">
<div class="inner">
abcd<br/>....
</div>
</div>