Margin-Top不适用于span元素?

问题描述 投票:153回答:5

有人能告诉我我编码错了吗?一切正常,唯一的问题是顶部没有边缘。

HTML:

<div id="contact_us"> <!-- BEGIN CONTACT US -->
  <span class="first_title">Contact</span>
  <span class="second_title">Us</span>
  <p class="content">For any questions whatsoever please contact us through the following e-mail address:</p></br></br>
  <p class="e-mail">[email protected]</p></br></br></br></br>
  <p class="read_more"><a href="underconstruction.html">Read More</a></p>
</div> <!-- END CONTACT US -->

CSS:

span.first_title {
  margin-top: 20px;
  margin-left: 12px;
  font-weight: bold;
  font-size: 24px;
  color: #221461;
}

span.second_title {
  margin-top: 20px;
  font-weight: bold;
  font-size: 24px;
  color: #b8b2d4;
}   
css margin html
5个回答
262
投票

div不同,p 1是Block Level元素,可以在所有方面占据marginspan2不能,因为它是一个Inline元素,只占据水平边缘。

来自specification

边距属性指定框的边距区域的宽度。 '保证金'速记属性设定所有四边的保证金,而其他保证金属性仅设定各自的边。这些属性适用于所有元素,但垂直边距不会对未替换的内联元素产生任何影响。

Demo 1(垂直margin不适用于spaninline元素)

解?制作你的span元素,display: inline-block;display: block;

Demo 2

建议你使用display: inline-block;,因为它将是inline以及block。使它成为block只会导致你的元素渲染on another line,因为block级别元素在页面上占据100%的水平空间,除非它们是inline-block或者它们是floatedleftright


1. Block Level Elements - MDN来源

2. Inline Elements - MDN资源


50
投票

看起来你错过了一些选项,尝试添加:

position: relative;
top: 25px;

8
投票

span是一个不支持垂直边距的内联元素。把边距放在外面的div上。


3
投票

span元素是display:inline;默认你需要使它inline-blockblock

将CSS更改为这样

span.first_title {
    margin-top: 20px;
    margin-left: 12px;
    font-weight: bold;
    font-size:24px;
    color: #221461;
    /*The change*/
    display:inline-block; /*or display:block;*/
}

1
投票

永远记住一件事我们不能将边距垂直地应用于内联元素,如果你想应用然后将其显示类型更改为块或内联块。例如span {display:inline-block;}

© www.soinside.com 2019 - 2024. All rights reserved.