代码干货|内联 Style 简写属性的发现

news/2024/7/19 12:50:25 标签: 前端, css, js, 前端与交互设计

 详见原文链接

内联 Style 简写属性的发现

开始

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

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

例子

background

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

js applescript" style="margin:0px; padding:0.5em; font-size:undefined; font-family:Menlo,Monaco,Consolas,"Courier New",monospace; color:rgb(248,248,242); background:rgb(35,36,31); white-space:pre-wrap; display:block; overflow-x:auto"><js-keyword" style="color:rgb(249,38,114)">div style=js-string" style="color:rgb(230,219,116)">"background: #fff;"></js-keyword" style="color:rgb(249,38,114)">div>

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

js applescript" style="margin:0px; padding:0.5em; font-size:undefined; font-family:Menlo,Monaco,Consolas,"Courier New",monospace; color:rgb(248,248,242); background:rgb(35,36,31); white-space:pre-wrap; display:block; overflow-x:auto"><js-keyword" style="color:rgb(249,38,114)">div style=js-string" style="color:rgb(230,219,116)">"background-color: #fff;"></js-keyword" style="color:rgb(249,38,114)">div>

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

screenshot.png

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

验证

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

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

Snip20161217_4.png

而非简写的呈现:

Snip20161217_5.png

上面例子里的 HTML 代码:

js applescript" style="margin:0px; padding:0.5em; font-size:undefined; font-family:Menlo,Monaco,Consolas,"Courier New",monospace; color:rgb(248,248,242); background:rgb(35,36,31); white-space:pre-wrap; display:block; overflow-x:auto"><js-keyword" style="color:rgb(249,38,114)">div style=js-string" style="color:rgb(230,219,116)">"background: #fff;"></js-keyword" style="color:rgb(249,38,114)">div>

那么:

js autoit" style="margin:0px; padding:0.5em; font-size:undefined; font-family:Menlo,Monaco,Consolas,"Courier New",monospace; color:rgb(248,248,242); background:rgb(35,36,31); white-space:pre-wrap; display:block; overflow-x:auto">$0.style.backgroundImage === js-string" style="color:rgb(230,219,116)">'' // => js-literal" style="color:rgb(174,129,255)">false

而如果例子修改为:

js applescript" style="margin:0px; padding:0.5em; font-size:undefined; font-family:Menlo,Monaco,Consolas,"Courier New",monospace; color:rgb(248,248,242); background:rgb(35,36,31); white-space:pre-wrap; display:block; overflow-x:auto"><js-keyword" style="color:rgb(249,38,114)">div style=js-string" style="color:rgb(230,219,116)">"background-color: #fff;"></js-keyword" style="color:rgb(249,38,114)">div>

那么:

js autoit" style="margin:0px; padding:0.5em; font-size:undefined; font-family:Menlo,Monaco,Consolas,"Courier New",monospace; color:rgb(248,248,242); background:rgb(35,36,31); white-space:pre-wrap; display:block; overflow-x:auto">$0.style.backgroundImage === js-string" style="color:rgb(230,219,116)">'' // => js-literal" style="color:rgb(174,129,255)">true

font 验证

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

Snip20161217_10.png

这个时候:

js autoit" style="margin:0px; padding:0.5em; font-size:undefined; font-family:Menlo,Monaco,Consolas,"Courier New",monospace; color:rgb(248,248,242); background:rgb(35,36,31); white-space:pre-wrap; display:block; overflow-x:auto">$0.style.fontWeight === js-string" style="color:rgb(230,219,116)">''  // => js-literal" style="color:rgb(174,129,255)">false

Snip20161217_11.png

结果:

js autoit" style="margin:0px; padding:0.5em; font-size:undefined; font-family:Menlo,Monaco,Consolas,"Courier New",monospace; color:rgb(248,248,242); background:rgb(35,36,31); white-space:pre-wrap; display:block; overflow-x:auto">$0.style.fontWeight === js-string" style="color:rgb(230,219,116)">''  // => js-literal" style="color:rgb(174,129,255)">true

结论

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

要是咱的文章给您带来了帮助,或是您希望咱接着更新

那麻烦您给咱点个赞呗!





http://www.niftyadmin.cn/n/1452830.html

相关文章

hdu 3746 Cyclic Nacklace(KMP)

题目链接&#xff1a;hdu 3746 Cyclic Nacklace 题目大意&#xff1a;问说最少需要在添加几个值&#xff0c;可以是字符串变成以一个子字符串循环得到的&#xff08;至少有两个该子串&#xff09; 解题思路&#xff1a;KMP的变形吧&#xff0c;将字符串的next数组求出来&#x…

MVC, MVP, MVVM比较以及区别(上)

原文:MVC, MVP, MVVM比较以及区别(上)MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式。以前只是对它们有部分的了解&#xff0c;没有深入的研究过&#xff0c;对于一些里面的概念和区别也是一知半解。现在一边查资料&#xff0c;并结合自己的理解&#xff0c;来…

技术文章 | 频繁项集挖掘算法之FPGrowth

频繁项集挖掘算法用于挖掘经常一起出现的item集合&#xff08;称为频繁项集&#xff09;&#xff0c;通过挖掘出这些频繁项集&#xff0c;当在一个事务中出现频繁项集的其中一个item&#xff0c;则可以把该频繁项集的其他item作为推荐。比如经典的购物篮分析中啤酒、尿布故事&a…

uva 1414 - Hanoi Towers(dp)

题目连接&#xff1a;uva 1414 - Hanoi Towers 题目大意&#xff1a;给出n&#xff0c;表示说有n个碟子&#xff0c;有三根柱子&#xff0c;进行汉诺塔游戏&#xff0c;不过不同的是说&#xff0c;移动碟子必须按照给出的顺序&#xff0c;如果可以移动&#xff0c;则必须移动当…

用JSP写出FileUpload上传小程序(转)

void write(java.io.File file) A convenience method to write an uploaded item to disk.而这里的是String!!!多亏我还有一点java基础,,通过查找api新的是: void write(java.io.File file) A convenience method to write an uploaded item to disk.而这里的是String!!!多亏…

经验分享 | 路走对了,才不怕远——阿里高级专家李睿博谈自己的“折腾路”

如果人生可以重新来过一次&#xff0c;你会怎么做&#xff1f;相信很多人都会列好一大堆计划和想法&#xff0c;而李睿博却和云栖社区的同学讲了一个往事&#xff1a;“小时候一帮小朋友一起玩&#xff0c;弄坏了邻居的财物&#xff0c;大家一哄而散&#xff0c;只有我觉得这么…

用reg文件把便携版sublime text 3添加到右键菜单

假设sublime文件夹在C:\\Users\\T430i\\Downloads\\Sublime Text Build 3059 x64\\ 则: Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\Sublime Text 3] "Sublime Text 3" "Icon""C:\\Users\\T430i\\Downloads\\Sublime Text Buil…

解决三大问题 三帝无盘网吧解决方案(转)

随着信息时代的来临&#xff0c; Internet和网络游戏的发展&#xff0c;大大小小的网吧已遍及全国&#xff0c;无论是大中城市还是小城市甚至很小的县城。同时&#xff0c;随着网吧的增多&#xff0c;行业之间的竞争也越来越激烈&#xff0c;为了在激烈的竞争中立足&#xff0c…