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 相关文章推荐
关于恒等于(===)和非恒等于(!==)
Aug 20 Javascript
Lazy Load 延迟加载图片的 jQuery 插件
Feb 06 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
Aug 01 Javascript
jquery实现图片裁剪思路及实现
Aug 16 Javascript
js借助ActiveXObject实现创建文件
Sep 29 Javascript
无缝滚动的简单实现代码(推荐)
Jun 07 Javascript
Boostrap基础教程之JavaScript插件篇
Sep 08 Javascript
了解VUE的render函数的使用
Jun 08 Javascript
Bootstrap Table使用整理(一)
Jun 09 Javascript
关于RxJS Subject的学习笔记
Dec 05 Javascript
JavaScript中的&quot;=、==、===&quot;区别讲解
Jan 22 Javascript
JQuery animate动画应用示例
May 14 jQuery
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 Mysql日期和时间函数集合
2007/11/16 PHP
php 魔术方法使用说明
2009/10/20 PHP
关于PHP5 Session生命周期介绍
2010/03/02 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
2014/10/01 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
2016/09/23 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
js 获取Listbox选择的值的代码
2010/04/15 Javascript
JavaScript中继承的一些示例方法与属性参考
2010/08/07 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
AngularJS入门之动画
2016/07/27 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
vue组件实例解析
2017/01/10 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
详解Node使用Puppeteer完成一次复杂的爬虫
2018/04/18 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
jquery+css3实现的经典弹出层效果示例
2020/05/16 jQuery
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
[01:21]DOTA2周边文化主题展 神秘商店火热开售
2017/07/30 DOTA
[02:07]2018DOTA2亚洲邀请赛主赛事第三日五佳镜头 fy极限反杀
2018/04/06 DOTA
[01:34]DOTA2 7.22版本新增神杖效果一览(敏捷英雄篇)
2019/05/28 DOTA
在Django框架中运行Python应用全攻略
2015/07/17 Python
Python编程之gui程序实现简单文件浏览器代码
2017/12/08 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
最新大学毕业求职简历的自我评价
2013/10/18 职场文书
趣味活动策划方案
2014/02/08 职场文书
党校培训自我鉴定范文
2014/04/10 职场文书
文秘自荐信
2014/06/28 职场文书
客服专员岗位职责
2015/02/10 职场文书