Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Margin-top not working with <label>

Tags:

html

label

I'm trying to just nudge the email label and input down a little by assigning a class 'brtop' to the label.

.brtop just adds a top margin.

Doesn't seem to be doing anything, have I done something wrong?

/* html5doctor.com Reset v1.6.1 - http://cssreset.com */
html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,abbr,address,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,var,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent}body{line-height:1}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}nav ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:none}a{margin:0;padding:0;font-size:100%;vertical-align:baseline;background:transparent}ins{background-color:#ff9;color:#000;text-decoration:none}mark{background-color:#ff9;color:#000;font-style:italic;font-weight:bold}del{text-decoration:line-through}abbr[title],dfn[title]{border-bottom:1px dotted;cursor:help}table{border-collapse:collapse;border-spacing:0}hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0}input,select{vertical-align:middle}

/*  ^^CSS_RESET^^ --- vv CSSforsite vv */

form{
	width:500px;
	padding:1.5em;
	overflow:hidden;
	border:1px solid red;
}
fieldset{
	float:left;
	border:none;
	margin-left:1em;
}

.brtop{
margin-top:5px;
}

input{
}
<form name="messageform">
		<fieldset>
			<label for="username" >Name:</label><br/>
			<input type="text" name="username"/><br/>
			<label for="email"class="brtop">Email:</label><br/>
			<input type="text" name="email"/>
		</fieldset>
		<fieldset>
			<label>Message:</label><br/>
			<textarea name="message" cols="20" rows="4"></textarea>
		</fieldset>		
	</form>
like image 551
Larry Avatar asked Apr 10 '13 14:04

Larry


People also ask

Why margin is not working on anchor tag?

And on the a tag the margin doesn't work because it's an inline element. You may need to change its display property to inline-block or block .

How do you change the margins of a label in HTML?

A <label> is displayed as inline by default. You have to change that to inline-block or block in order to set the margin .

Why is margin right not working?

You cannot see the effect of margin-right because the 'width' property of div causes the margin of div to have more than 10px distance from the right wall of the body. Consequently, it causes the margin-right property not to have any visual effect.


2 Answers

Add display:inline-block to your brtop rule.

.brtop {
    margin-top:5px;
    display:inline-block;
}

/* html5doctor.com Reset v1.6.1 - http://cssreset.com */

html,
body,
div,
span,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
abbr,
address,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
samp,
small,
strong,
sub,
sup,
var,
b,
i,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section,
summary,
time,
mark,
audio,
video {
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  font-size: 100%;
  vertical-align: baseline;
  background: transparent
}

body {
  line-height: 1
}

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
  display: block
}

nav ul {
  list-style: none
}

blockquote,
q {
  quotes: none
}

blockquote:before,
blockquote:after,
q:before,
q:after {
  content: none
}

a {
  margin: 0;
  padding: 0;
  font-size: 100%;
  vertical-align: baseline;
  background: transparent
}

ins {
  background-color: #ff9;
  color: #000;
  text-decoration: none
}

mark {
  background-color: #ff9;
  color: #000;
  font-style: italic;
  font-weight: bold
}

del {
  text-decoration: line-through
}

abbr[title],
dfn[title] {
  border-bottom: 1px dotted;
  cursor: help
}

table {
  border-collapse: collapse;
  border-spacing: 0
}

hr {
  display: block;
  height: 1px;
  border: 0;
  border-top: 1px solid #ccc;
  margin: 1em 0;
  padding: 0
}

input,
select {
  vertical-align: middle
}


/*  ^^CSS_RESET^^ --- vv CSSforsite vv */

form {
  width: 500px;
  padding: 1.5em;
  overflow: hidden;
  border: 1px solid red;
}

fieldset {
  float: left;
  border: none;
  margin-left: 1em;
}

.brtop {
  margin-top: 5px;
  display: inline-block;
}

input {}
<form name="messageform">
  <fieldset>
    <label for="username">Name:</label>
    <br/>
    <input type="text" name="username" />
    <br/>
    <label for="email" class="brtop">Email:</label>
    <br/>
    <input type="text" name="email" />
  </fieldset>
  <fieldset>
    <label>Message:</label>
    <br/>
    <textarea name="message" cols="20" rows="4"></textarea>
  </fieldset>
</form>

Since your label is displaying as an inline element, the top margin won't have any effect.

Margin properties specify the width of the margin area of a box. The 'margin' shorthand property sets the margin for all four sides while the other margin properties only set their respective side. These properties apply to all elements, but vertical margins will not have any effect on non-replaced inline elements. - W3

like image 153
j08691 Avatar answered Sep 24 '22 20:09

j08691


<label> is display: inline. If you add display: inline-block to .brtop it will respect the margin.

like image 30
Explosion Pills Avatar answered Sep 25 '22 20:09

Explosion Pills