作者grence (dalalida)
看板Ajax
标题Re: [问题] 防止动态产生之 HTML 元素之样式被覆盖
时间Mon Dec 1 00:36:49 2014
※ 引述《danny0838 (道可道非常道)》之铭言:
: 如题,设计 bookmarklet 或 browser extension 时,
: 往往会有些透过 javascript 在目前浏览的网页上建立 HTML 元素,
: 比如我要设计一个书签小工具,点击即建立一个控制选单,
: 大概通常会产生 div, table, tr, td, p, span, strong, code
: 但这些元素的样式可能被目前网页的 CSS 覆写,
: 如有奇葩的 CSS 宣告,比如 span { display: block; } 之类的,
: 这些动态产生的元素的样式往往会被覆写,造成难以预期的排版破坏。
: 实务上有哪些好方法能把这些动态产生的 HTML 固定为想要的样式,而不被覆盖呢?
动态产生的 html如果对版面、位置有要求的话,
我会把产生的 html append在 body最後面,
然後使用绝对定位、绝对大小来控制样式。
尽量简化 extension需要的样式,不要假设有 css reset之类的东西。
====分隔线====
span { display: block; } 这麽奇葩的样式我觉得不能算是常见的情况;
如果这是因为网页原设计人员没有 sense
→ 责任不在设计 extension的人
或是因为特殊原因要调整 html tag的预设值(通常是字型啊、颜色之类的设定…)
→ 我觉得应该要保持一致,设计 extension的人不应该调整
原网页样式可以影响到 extension,
extension样式绝对不能影响到原网页。
: 我知道可以把所有可能的 CSS 样式值全部写进 inline style,
: 不过这实在是太冗长、太麻烦了orz
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.176.94.242
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Ajax/M.1417365411.A.ABB.html