??? 为什么给span定义高度和宽度后,它的宽度和高度仍然没有变化,仿佛失效了一样?
??? 其实这个问题很简单――那就是因为span属于内联元素,而内联元素是忽略宽度和高度的,解决的办法也很简单,就是利用css将span变为盒装元素即可。
下面举例说明一下:
???
??? 首先给出包含span标签的Html代码:
??? <div class="spanex">
??????? <span>span标签的宽度高度测试</span>
??? </div>
??? CSS代码:
??? <style type="text/css">
??? .spanex {
??????? background:#000;
??????? color:#FFF;
??????? width:200px;
??????? height:100px;
??????? font-size:12px;
??? }
??? .spanex span {
??????? background:#FFF;
??????? color:#000;
??????? width:180px;
??????? height:30px;
??? }
?? </style>
??? 上面的div中包含了一个span标签,在css中定义了span的宽度为100像素,高度为30像素,但是span的宽度确实随文字的个数而增加的,不受css的宽度控制,如图一所示。
???
??? 原因上面也说到了,目前span还是内联元素,所以不受宽高限制,那么,只有将它定义为盒装元素就可以控制了。将内联元素定义为盒装元素的方法有两种:
??? 1.直接使用显示属性display将其定义为盒装元素;
??? 2.使用浮动属性float将其自动定义为盒装元素;
??? 使用第一种方法只需要将上面的.spanex span稍做改动即可完成,有原来的改为:
??? .spanex span {
??????? background:#FFF;
??????? color:#000;
??????? display:block;
??????? width:180px;
??????? height:30px;
??? }
??? 使用第二种方法则改为:
??? .spanex span {
??????? background:#FFF;
??????? color:#000;
??????? float:left;???
??????? width:180px;
??????? height:30px;
??? }?
??? 效果如图二中所示。
??? 虽然二者在这里的效果相同,但它们却又一点区别,第一种方法写出的span是清除两侧浮动的,也就是如果后面跟了任何元素都会折回到下一行显示;而第二种利用浮动的定义方法,如果span后面跟随了元素则会和它在同一行显示,此处要绝对注意。