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 相关文章推荐
javascript Window及document对象详细整理
Jan 12 Javascript
JS刷新框架外页面七种实现代码
Feb 18 Javascript
Javascript中引用示例介绍
Feb 21 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
Apr 12 Javascript
JavaScript的面向对象编程基础
Aug 13 Javascript
基于javascript实现九宫格大转盘效果
May 28 Javascript
BootStrap的JS插件之轮播效果案例详解
May 16 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
May 18 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
Jun 02 jQuery
Vue.js结合Ueditor富文本编辑器的实例代码
Jul 11 Javascript
解决vue请求接口第一次成功,第二次失败问题
Sep 08 Javascript
vue实现树状表格效果
Dec 29 Vue.js
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
PHP4.04简明安装
2006/10/09 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
jquery $.each 和for怎么跳出循环终止本次循环
2013/09/27 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
jQuery关键词说明插件cluetip使用指南
2015/04/21 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
javascript常用函数(1)
2015/11/04 Javascript
easyui validatebox验证
2016/04/29 Javascript
JS动态给对象添加事件的简单方法
2016/07/19 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
Node.js简单入门前传
2017/08/21 Javascript
使用JavaScript实现点击循环切换图片效果
2017/09/03 Javascript
layer.open组件获取弹出层页面变量、函数的实例
2019/09/25 Javascript
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
在vue-cli中引入lodash.js并使用详解
2019/11/13 Javascript
[28:57]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/16 DOTA
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
python发送HTTP请求的方法小结
2015/07/08 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
2020/03/09 Python
python3.8.1+selenium实现登录滑块验证功能
2020/05/22 Python
利用python中的matplotlib打印混淆矩阵实例
2020/06/16 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
html5 div布局与table布局详解
2016/11/16 HTML / CSS
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
民间借贷被告代理词
2015/05/23 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
先进个人事迹材料(2016推荐版)
2016/03/01 职场文书
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android