Span元素的width属性无效果原因及解决方案


Posted in Javascript onJanuary 15, 2010

先运行下程序看下:
<span style='background-color:#336699;width:300px;'>123</span>

输出:123

可以看到 span会自动根据包含的内容来变化宽度

这是因为:对于内联元素(可以是默认即为内联的比如 span 元素,也可以是 display: inline 的元素)
width 和 height 只在 IE5.x 下和 IE6 或更新版本的 quirks 模式下触发 hasLayout 。而对于 IE6,如果浏览器运行于标准兼容模式下,内联元素会忽略 width 或 height 属性,所以设置 width 或 height 不能在此种情况下令该元素具有 layout。
zoom 总是可以触发 hasLayout,但是在 IE5.0 中不支持。

具有“layout” 的元素如果同时也 display: inline ,那么它的行为就和标准中所说的 inline-block 很类似了:在段落中和普通文字一样在水平方向和连续排列,受 vertical-align 影响,并且大小可以根据内容自适应调整。这也可以解释为什么单单在 IE/Win 中内联元素可以包含块级元素而少出问题,因为在别的浏览器中 display: inline 就是内联,不像 IE/Win 一旦内联元素拥有 layout 还会变成 inline-block。

解决方法:

<1>去掉ASP.NET页面的W3C标准声明(不推荐):
去掉:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<span style='background-color:#336699;width:300px;'>123</span>

<2>推荐:

如果设置display:block,width属性生效,但是此时的span跟div一样了。
如果设置display:inline-block,则span并列在同行,而且width属性生效。

元素display属性的常见值说明:

block:块对象的默认值。将对象强制作为块对象呈递,为对象之后添加新行。
inline:内联对象的默认值。将对象强制作为内联对象呈递,从对象中删除行。(内联)

《CSS权威指南》中文字显示:任何不是块级元素的可见元素都是内联元素。其表现的特性是“行布局”形式,

这里的“行布局”的意思就是说其表现形式始终以行进行显示。

比如,我们设定一个内联元素border-bottom:1px solid #000;时其表现是以每行进行重复,每一行下方都会有一条黑色的细线。

假如是块级元素那么所显示的的黑线只会在块的下方出现。
inline-block:将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内。
non:隐藏对象。与 visibility 属性的hidden值不同,其不为被隐藏的对象保留其物理空间。

内联(display:inline;)元素不能设置宽高,因为内联属于行布局,其特性是在一行里进行布局,所以不能被设定宽高。
<span style='background-color:#336699;width:300px;display:inline-block;'>123</span>

输出:123

<3>如果设置float:left | right,width属性生效.

(浮动)他使得指定元素脱离普通的文档流而产生的非凡的布局特性。并且FLOAT必需应用在块级元素之上,也就是说浮动并不应用于内联标签。或者换句话来说当应用了FLOAT那么这个元素将被指定为块级元素。
<span style='background-color:#336699;width:300px;float:left;'>123</span>

输出:123

Javascript 相关文章推荐
流量统计器如何鉴别C#:WebBrowser中伪造referer
Jan 07 Javascript
TypeScript 中接口详解
Jun 19 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
Apr 03 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
May 10 Javascript
JavaScript6 let 新语法优势介绍
Jul 15 Javascript
js设置随机切换背景图片的简单实例
Nov 12 Javascript
react redux入门示例
Apr 19 Javascript
对angularJs中自定义指令replace的属性详解
Oct 09 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
Sep 17 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
Oct 26 Javascript
webpack.DefinePlugin与cross-env区别详解
Feb 23 Javascript
详解Node.JS模块 process
Aug 31 Javascript
javascript实现的基于金山词霸网络翻译的代码
Jan 15 #Javascript
JQuery 引发两次$(document.ready)事件
Jan 15 #Javascript
用jQuery扩展自写的 UI导航
Jan 13 #Javascript
jQuery的一些特性和用法整理小结
Jan 13 #Javascript
JavaScript关于select的相关操作说明
Jan 13 #Javascript
海量经典的jQuery插件集合
Jan 12 #Javascript
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
Jan 12 #Javascript
You might like
PHP新手上路(六)
2006/10/09 PHP
php面向对象全攻略 (十七) 自动加载类
2009/09/30 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
检测codeigniter脚本消耗内存情况的方法
2015/03/21 PHP
php实现当前页面点击下载文件的简单方法
2016/09/22 PHP
PHP 类与构造函数解析
2017/02/06 PHP
javascript读取RSS数据
2007/01/20 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
JS实现点击循环切换显示内容的方法
2017/10/19 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
Python BeautifulSoup中文乱码问题的2种解决方法
2014/04/22 Python
Python方法的延迟加载的示例代码
2017/12/18 Python
python中numpy的矩阵、多维数组的用法
2018/02/05 Python
利用python库在局域网内传输文件的方法
2018/06/04 Python
Python多继承原理与用法示例
2018/08/23 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
增大python字体的方法步骤
2020/07/05 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
SQL里面如何插入自动增长序列号字段
2012/03/29 面试题
2015年公民道德宣传日活动总结
2015/03/23 职场文书
2015年置业顾问工作总结
2015/04/07 职场文书
教师病假条范文
2015/08/17 职场文书
大学学习委员竞选稿
2015/11/20 职场文书
高中诗歌鉴赏教学反思
2016/02/16 职场文书
导游词之山西关帝庙
2019/11/01 职场文书
python读取mat文件生成h5文件的实现
2022/07/15 Python