如何正确的抄网页

box model

为了加一个新功能,抄了部分页面顺带一大坨 css 代码,结果原有部分页面样式就乱掉了。罪魁祸首就是两者的盒模型不同(如上图),其中 W3C 模型也被成为 standards mode,IE 模型也被称为 quirks mode。当然部分选择器相同也产生了污染。

在调查原因的过程中,发现一个做法可以很好的分隔开不同来源的 css。即在利用 less 的 mixin 特性,在新加入的 css 外套一层选择器,在这层选择器内定义相应的盒模型,然后将相关的 html 外也套一个对应的选择器,这样就完成了隔离。

举个栗子,A 站是 quirks mode,从该站抄来部分代码如下


html

<div id="header">...</div>
...

css
#header { color: #6c94be;}
...


首先对 css 加入外层的自定义选择器进行隔离,同时定义盒模型(本例为 quirks mode)

.site-a,
.site-a *,
.site-a *:before,
.site-a *:after {

  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;

  #header { color: #6c94be;}
  ...
}

以上 less 部分编译后生成的 css 将会限定在 .site-a 的子元素内生效。

然后在相关 html 中也套入对应选择器

<div class="site-a">
  <div id="header>...</div>
  ...
</div>

这样就隔离了新代码对既存部分带来的影响。
至于既存部分代码对新代码的影响,因为新代码外多套了一层选择器优先级更高,所以也不会受到任何影响。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,786评论 1 92
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,204评论 0 1
  • •前端面试题汇总 一、HTML和CSS 21 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? ...
    Simon_s阅读 2,228评论 0 8
  • 简介浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工 作原理,我们将看到,从你在地址栏输入google.c...
    听风阁阅读 3,307评论 0 7
  • Vue.js 的内联表达式非常方便,但它最合适的使用场景是简单的布尔操作或字符串拼接。如果涉及更复杂的逻辑,你应该...
    hutou阅读 17,715评论 1 9