Take this ul
for example:
<ul>
<li>HI THERE</li>
<br>
<li>
<p>ME</p>
</li>
</ul>
When the innerHtml开发者_运维知识库 of an li
tag is blank, the li
wraps itself right up to the text.
It doesn't happen for the p
tag. I'm assuming this is because p
is for paragraphs which usually have white space breaks before and after.
Is there any way to remove this?
<p>
elements generally have margins and / or padding. You can set those to zero in a stylesheet.
li p {
margin: 0;
padding: 0;
}
Semantically speaking, however, it is fairly unusual to have a list of paragraphs.
Look here: http://www.w3schools.com/tags/tag_p.asp
The p element automatically creates some space before and after itself. The space is automatically applied by the browser, or you can specify it in a style sheet.
you could remove the extra space by using css
p {
margin: 0px;
padding: 0px;
}
or use the element <span>
which has no default margins and is an inline element.
In case anyone wishes to do this with bootstrap, version 4 offers the following:
The classes are named using the format {property}{sides}-{size} for xs and {property}{sides}-{breakpoint}-{size} for sm, md, lg, and xl.
Where property is one of:
m - for classes that set margin
p - for classes that set padding
Where sides is one of:
t - for classes that set margin-top or padding-top
b - for classes that set margin-bottom or padding-bottom
l - for classes that set margin-left or padding-left
r - for classes that set margin-right or padding-right
x - for classes that set both *-left and *-right
y - for classes that set both *-top and *-bottom
blank - for classes that set a margin or padding on all 4 sides of the element
Where size is one of:
0 - for classes that eliminate the margin or padding by setting it to 0
1 - (by default) for classes that set the margin or padding to $spacer * .25
2 - (by default) for classes that set the margin or padding to $spacer * .5
3 - (by default) for classes that set the margin or padding to $spacer
4 - (by default) for classes that set the margin or padding to $spacer * 1.5
5 - (by default) for classes that set the margin or padding to $spacer * 3
auto - for classes that set the margin to auto
For example:
.mt-0 {
margin-top: 0 !important;
}
.ml-1 {
margin-left: ($spacer * .25) !important;
}
.px-2 {
padding-left: ($spacer * .5) !important;
padding-right: ($spacer * .5) !important;
}
.p-3 {
padding: $spacer !important;
}
Reference: https://getbootstrap.com/docs/4.0/utilities/spacing/
There are two ways:
The best way is to remove the <p>
altogether. It is acting according to specification when it adds space.
Alternately, use CSS to style the <p>
. Something like:
ul li p {
padding: 0;
margin: 0;
display: inline;
}
CSS Reset is best way to use for this issue. Right now in reset we are using p and in need bases you can add any number of tags by come separated.
p {
margin:0;
padding:0;
}
<p>
tags have built in padding and margin. You could create a CSS selector combined with some javascript for instances when your <p>
is empty. Probably overkill, but it should do what you need it to do.
CSS example: .NoPaddingOrMargin {padding: 0px; margin:0px}
I don't why you would put a<p>
element there.
But another way of removing spaces in between the paragraphs is by declaring only one paragraph
<ul>
<p><li>HI THERE</li>
<br>
<li>ME</li>
</p>
</ul>
精彩评论