内联 Style 简写属性的发现

简介: # 内联 Style 简写属性的发现 ## 开始 平时在使用内联样式简写属性的时候,可能没有考虑到浏览器解析的问题。问题不大,简写的好处是代码量少,但最近发现了一个有意思的内联简写属性的问题。 以下问题仅在内联样式里会出现,如果是通过 style 标签或 css 文件引入则不会有这样的问题。 ## 例子 ### background 设置一个元素的背景色为白色,

内联 Style 简写属性的发现

开始

平时在使用内联样式简写属性的时候,可能没有考虑到浏览器解析的问题。问题不大,简写的好处是代码量少,但最近发现了一个有意思的内联简写属性的问题。

以下问题仅在内联样式里会出现,如果是通过 style 标签或 css 文件引入则不会有这样的问题。

例子

background

设置一个元素的背景色为白色,比如这么写:

<div style="background: #fff;"></div>

你可能以为浏览器会这样输出:

<div style="background-color: #fff;"></div>

一下少了 6 个字节,而浏览器的真真实解析情况是:

screenshot.png

潜在的问题是:将会默认设置一些其他的属性到样式里,而通过 CSS 又很难恢复这种默认属性

验证

我们来验证一下这个问题:

使用属性简写的浏览器呈现:

Snip20161217_4.png

而非简写的呈现:

Snip20161217_5.png

上面例子里的 HTML 代码:

<div style="background: #fff;"></div>

那么:

$0.style.backgroundImage === '' // => false

而如果例子修改为:

<div style="background-color: #fff;"></div>

那么:

$0.style.backgroundImage === '' // => true

font 验证

另外一个例子是 font 属性,也会有这个问题:

Snip20161217_10.png

这个时候:

$0.style.fontWeight === ''  // => false

Snip20161217_11.png

结果:

$0.style.fontWeight === ''  // => true

结论

能看到通过 style 获取元素属性时会返回非预期结果,所以使用 CSS 处理这类样式,最好是只设置你需要的属性,尽量不要简写,除非你明确知道这个操作的结果

目录
相关文章
|
8月前
|
前端开发 开发者
CSS变量,也被称为CSS自定义属性或级联变量
【4月更文挑战第7天】CSS变量,也被称为CSS自定义属性或级联变量
59 3
|
前端开发 容器
CSS display属性的作用
CSS display属性
170 0
CSS display属性的作用
|
2月前
|
前端开发 JavaScript UED
|
2月前
|
Web App开发 前端开发 iOS开发
css所有缩写属性,CSS属性简写整理
css所有缩写属性,CSS属性简写整理
42 1
|
2月前
|
前端开发
css简写属性
css简写属性
37 0
|
4月前
|
前端开发
css中的多行省略和单行省略
css中的多行省略和单行省略
|
4月前
|
前端开发
行内样式表(style属性)
行内样式表(style属性)。
46 4
|
8月前
Margin - 简写属性
Margin - 简写属性。
66 1
|
8月前
|
前端开发
CSS中class的样式赋值方法详解
CSS中class的样式赋值方法详解
177 0
|
JavaScript 开发者
veu 中通过属性绑定为元素绑定 style 行内样式|学习笔记
快速学习 veu 中通过属性绑定为元素绑定 style 行内样式
130 0
veu 中通过属性绑定为元素绑定 style 行内样式|学习笔记