<span> 无法设置宽度的完美解决方案!

在默认的情况下,利用css样式对span进行宽度设定是无效,但有时为了某种排版的要求,需要对span进行宽度设定,那么如何在html中利用css样式设定span的宽度?

思路:这看上去是个很简单的问题,似乎用style中的width属性就可以。

然而通过试验以后发现,无论是在Firefox还是IE中都无效。

在css2的标准中,查阅关于width的定义,我们可以发现,原来css中的width属性并不总是有效的,如果对象是inline对象,width属性就会被忽略。Firefox和IE都遵循了这个标准。

1、初步解决span宽度方案

修改span为block类型。在span的css中增加display属性,将span设置为block类型。

span {

background-color:#fc0;

display:block;

width:150px;

}

这样宽度就可以实现了,不过这样做也把前后文字隔在不同行里面。这样其实span就完全变成了div。

2、进一步解决span宽度方案

然后我们再增加一个css属性float,这样的确在某种条件下能解决问题。

span {

background-color:#fc0;

display:block;

float:left;

width:150px;

}

但如果span前面没有文字,那的确是可行的。但是如果有了,前后文字就会连在一起,而span跑到了第二行。

其实,在Html的各种Element中,的确有既是inline,又能够设定宽度的情况存在。例如button对象,就可以很好的在文字中间出现,并且设定宽度。

能不能让span象button那样显示呢?通过css2标准中display的定义和inline对象的解释,发现css2标准的制定者把所有的Element在是否属于inline上做了非此即彼的规定,要么是inline,要么是block,没有制定button那样既是inline,又可以象block那样设置宽度的属性值。

在css2.1标准草案中display的定义中增加了一个叫inline-block的属性值,针对的恰好是我们面对的这种情形。那么再看看各种浏览器的对应情况。

Firefox:通过display的文档了解到,inline-block在未来的Firefox 3中会实现。通过Mozllia扩展属性参考了解到,在Firefox 3以前的版本,例如现在的Firefox 2中,可以用-moz-inline-box达到同样的效果。

IE:通过MSDN中的display文档了解到,inline-block已经实现。实际测试发现IE 6.0以后都没问题。

3、完美的解决span宽度方案

下面代码的css定义完美解决了span的宽度设置问题。由于浏览器通常对不支持的css属性采取忽略处理的态度,所以最好将display:inline-block行写在后面,这样在Firefox里面,如果到了未来的Firefox 3,这一行就能起作用,代码可以同时兼容各种版本。

可用于产品库选项的对齐排版。 eg: http://www.jiangnancopper.com/product/index

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Test Span</title>
<style type="text/css">
span {
background-color:#fc0;
display:-moz-inline-box;
display:inline-block;
width:150px;
}
</style>
</head>
<body>
<div class="product_left2_5">
     <label class="c_input"><input type="checkbox" name="product_type" value="166" onclick="return filter(this);"> <span class="product_left2_4159">UL1007</span></label>
     <label class="c_input"><input type="checkbox" name="product_type" value="167" onclick="return filter(this);"> <span class="product_left2_4159">UL1015</span></label>
     <label class="c_input"><input type="checkbox" name="product_type" value="168" onclick="return filter(this);"> <span class="product_left2_4159">UL1032</span></label>
     <label class="c_input"><input type="checkbox" name="product_type" value="169" onclick="return filter(this);"> <span class="product_left2_4159">UL1061</span></label>
     <label class="c_input"><input type="checkbox" name="product_type" value="170" onclick="return filter(this);"> <span class="product_left2_4159">UL1185</span></label>
     <label class="c_input"><input type="checkbox" name="product_type" value="171" onclick="return filter(this);"> <span class="product_left2_4159">UL2464</span></label>
     <label class="c_input"><input type="checkbox" name="product_type" value="172" onclick="return filter(this);"> <span class="product_left2_4159">UL2468</span></label>
 </div>
</body>
</html>
时间: 2024-08-29 15:26:33

<span> 无法设置宽度的完美解决方案!的相关文章

给span标签设置宽度

span{ display:-moz-inline-box; display:inline-block; width:你的宽度: } 上面的两个样式如果不行就单个试: 鼠标指向元素变成小手 cursor:pointer 鼠标指向变成自定义图片 cursor:url('图片的路径'),auto;

display:block; 块级元素。&lt;a&gt;,&lt;span&gt;标签设置宽度和高度

display:block;是让对象成为块级元素(比如a,span等) 转化后 可以对a或者span标签进行width和height设置,否则设置不了 display有很多对象,具体可以参考http://www.w3school.com.cn/css/pr_class_display.asp 一般都是用display:none和display:block来控制层的显示

span设置宽度有效无效问题

在html中如何设定span的宽度?这看上去是个很简单的问题,似乎用style中的width属性就可以.例如, 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 4 5 <html xmlns="http://www.w3.org/19

百度ueditor 实例化 Cannot set property &#39;innerHTML&#39; of null 完美解决方案

此时此刻,我正在用博客园推荐的TinyMCE编辑器写这个博客,突然想起最近在项目中使用百度ueditor编辑器中的一些经历.所以记录在此,与大家分享. 不得不说,百度ueditor是一款很好的在线编辑器,为开发者提供了诸多便利,你甚至可以用它来把word文档的内容按照一定的格式转换成html代码,然后再放进自己的项目中. 1.我们的项目中,用户在注册时有可能需要查看用户协议和隐私协议,而我们的文案是将这两个协议的内容放在word文档中,作为苦逼的开发人员,你需要把这些文字展示在html页面上,并

将span元素设置为固定宽度和高度代码

将span元素设置为固定宽度和高度代码:本章节介绍一下如何给span元素设置固定宽度和高度,之所以要专门介绍一下,是因为默认状态下,给它添加和width和height属性并不能够起作用,代码如下: span{ width:200px; height:200px; } 这是因为span元素是内联元素,无法设置高度和宽度,只能够自适应内容大小,代码修改如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-

Mysql中文乱码问题完美解决方案

MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如还停留在latin12.table的语系设定问题(包含character与collation)3.客户端程式(例如php)的连线语系设定问题强烈建议使用utf8!!!!utf8可以兼容世界上所有字符!!!!一.避免创建数据库及表出现中文乱码和查看编码方法1.创建数据库的时候:CREATE DATABASE `test`CHARACTER SET 'utf8'COLLATE 'utf8_general_ci';2.建表

关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)(转)

这篇文章给大家介绍关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)的相关资料,还给大家收集些关于MySQL会出现中文乱码原因常见的几点,小伙伴快来看看吧 最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅. 首先: 用show variables like "%colla%":show varables like "%char%":这两条命令查看数据库与服务端的字符集

Nginx 502/504 Gateway time-out错误完美解决方案【转发】

在安装完Nginx+PHP-fpm+Mysql后,跑PHP的应用会经常出现504 Gateway Time-out 或者502 Bad Gateway的情况. Nginx 504 Gateway Time-out 的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的 PHP-CGI.这种情况可能是由于 nginx 默认的 fastcgi 进程响应的缓冲区太小造成的, 这将导致 fastcgi 进程被挂起, 如果你的 fastcgi 服务对这个挂起处理的不好, 那么最后就极有可能导致 

Xcode6.1标准Framework静态库制作方法。工程转Framework,静态库加xib和图片。完美解决方案。

http://www.cocoachina.com/bbs/read.php?tid-282490.html Xcode6.1标准Framework静态库制作方法.工程转Framework,静态库加xib和图片.完美解决方案. 在cocoachina呆挺长时间了.没什么大贡献.就整理了这个,希望对大家有帮助.绝对原创.呵呵. 1.创建一个工程,或者在原有的工程上进行.不在列举.2.在原有工程上添加一个静态库 2.1.选择OS X 的Bundle.因为Xcode6.1中iOS里没有Bundle.