How do I prevent DIV tag starting a new line?
The div
tag is a block element, causing that behavior.
You should use a span
element instead, which is inline.
If you really want to use div
, add style="display: inline"
. (You can also put that in a CSS rule)
How to prevent Div from creating a new line
Change your CSS and use display:inline-block;
I could also recommend using class
rather than id
as you will want this style to apply to all the buttons in the menu. You should never use the same id more than once as the id is used to target a specific element.
If you want this to apply to all your menu buttons then I would do this...
.menuButton{height: 50px;width: 125px;background-color: lightblue;display:inline-block;text-align:center;}
<div class="menuButton"> <p id="homeButtonText">Home</p> </div> <div class="menuButton"> <p id="aboutButtonText">About</p> </div>
How to prevent inline divs from jumping to the next line within a parent?
You can use position: absolute;
for this, else no other way except increasing your container div width or making it nowrap
Demo
Using z-index
Demo
CSS
.a {
width: 100px;
height: 50px;
border: solid 1px #345;
position: relative;
}
.b {
width: 60px;
height: 50px;
background-color: red;
}
.c {
width: 50px;
height: 50px;
background-color: green;
position: absolute;
right: 0;
top: 0;
}
Prevent div jump to next line if it doesn't fit
with floats you can't have scroll on the horizontal axis because if a floating element can't fit in the remaining space it will fall to the next line.
So we have to treat the divs as inline level blocks and set white-space:nowrap
to prevents divs from breaking to next line.
table { width: 400px; height: 100px; table-layout: fixed;}
td { width: 50%; border: 1px solid gray;}
div.container { height: 100px; width: 100%; background: red; overflow-x: scroll; /* added */ white-space: nowrap; /* to remove space between divs */ font-size: 0;}
div.inner { height: 100px; width: 80px; background: blue; color: #fff; /*display: block; removed */ /*float: left; removed */
/* added */ display: inline-block; /* because font size in inherited it will be set to 0 but we want text to apear */ font-size: 16px;}
<table> <tr> <td>td1</td> <td> <div class="container"> <div class="inner">div1</div> <div class="inner">div2</div> <div class="inner">div3</div> </div> </td> </tr></table>
Prevent linebreak after /div
display:inline;
OR
float:left;
OR
display:inline-block;
-- Might not work on all browsers.
What is the purpose of using a div
here? I'd suggest a span
, as it is an inline-level element, whereas a div
is a block-level element.
Do note that each option above will work differently.
display:inline;
will turn the div
into the equivalent of a span
. It will be unaffected by margin-top
, margin-bottom
, padding-top
, padding-bottom
, height
, etc.
float:left;
keeps the div
as a block-level element. It will still take up space as if it were a block, however the width will be fitted to the content (assuming width:auto;
). It can require a clear:left;
for certain effects.
display:inline-block;
is the "best of both worlds" option. The div
is treated as a block element. It responds to all of the margin
, padding
, and height
rules as expected for a block element. However, it is treated as an inline element for the purpose of placement within other elements.
Read this for more information.
Make div to continue to new line not jumping to new line
By default, a div
element has a display
attribute value of block
which will place it on its own line in the document. If you want them to be side-by-side, you can set the value to inline
or inline-block
(if you want to set a width/height).
div {
font-size: 4rem;
display: inline;
}
#second {
text-decoration: underline;
}
<div>This text is in the first div element and</div>
<div id="second">continues into the second div element and</div>
<div>finishes in the third div element.</div>
Making a div element without a newline before it?
<div style="display:inline-block">4</div>
or
<div style="display:inline">4</div>
It really depends on how you want to use the div container. It might even be more practical (for the latter example) to use a span if you do not want a block element.
No newline after div?
There is no newline, just the div
is a block element.
You can make the div
inline by adding display: inline
, which may be what you want.
Prevent div from wrapping to next line
You can achieve this using a combination of overflow
and float
. This works due to the fact that overflow: hidden
establishes a new block formatting context. To paraphrase:
The border box of an element in the normal flow that establishes a new block formatting context (such as an element with 'overflow' other than 'visible') must not overlap the margin box of any floats in the same block formatting context as the element itself (in which case the box itself may become narrower due to the floats).
See: http://jsfiddle.net/m8x1g0q8/
How to prevent a div's content to start a new line
Use overflow: hidden
and white-space: nowrap
in your div style.
<div id="divId">this is my content</div>
And in css part
# divId {
width:450px;
overflow: hidden;
white-space: nowrap;
}
Check out this Fiddle
Related Topics
Center <Img/> Inside a <Div> with CSS
Prevent Ligatures in Safari (Mavericks/iOS7) via CSS
Styling Autocomplete Dropdowns in Browsers
Preserve Dynamically Changed HTML on Back Button
How to Set A:Link Height/Width with CSS
CSS Grids: Align Square Cells with Container Edges with Consistent Grid Gap
Hide Email Address from Bots - Keep Mailto:
Using "Label For" on Radio Buttons
Excel Crashes When Attempting to Inspect Dispstaticnodelist
How to Style HTML5 <Meter> Tag
Disable Opacity on Child Element When Parent Element Has Opacity
Draw Single Pixel Line in HTML5 Canvas
W3C Markup Validator Ampersand (&) Error
How to Serve HTML File from Another Directory as Actionresult
Cascading Style Sheets Use "Id" or "Class"