当前位置: 首页 > 面试题库 >

从现有站点选择性复制HTML + CSS + JS的工具

柴砚文
2023-03-14
问题内容

像大多数Web开发人员一样,我偶尔也喜欢查看网站的来源,以了解其标记的构建方式。Firebug和Chrome开发者工具之类的工具使检查代码变得容易,但是如果我要复制一个孤立的部分并在本地使用它,则复制所有单个元素及其关联的CSS 会很痛苦。
保存整个源代码并剪切不相关的代码可能需要做很多工作。

如果我可以在Firebug中右键单击一个节点并具有“为该节点保存HTML + CSS”选项,那就太好了。是否存在这样的工具?可以
扩展Firebug或Chrome开发者工具来添加此功能吗?


问题答案:

SnappySnippet
我终于找到了一些时间来创建此工具。您可以从Github上
安装SnappySnippet。它允许从指定的(最后检查)的DOM节点轻松提取HTML
+ CSS。另外,您可以将代码直接发送到CodePen或的jsfiddle。请优越!

SnappySnippet Chrome扩展

其他功能
清理HTML(删除常规的属性,修复缩进)
优化CSS以改善
完全可配置(可以关闭所有过滤器)
用作品::before和::after伪元素
出色的UI,要归功于Bootstrap和Flat-UI项目
编码
SnappySnippet是开源的,您可以在GitHub上找到代码。

实作
既然我在学习本书的过程中学到了很多东西,所以我决定分享一些
我遇到的问题以及他们的解决方案,也许有人会
发现它很有趣。

第一次尝试-getMatchedCSSRules()
首先,我尝试检索原始CSS规则(来自
网站上的CSS文件)。令人惊讶的是,这非常简单,这要归功于
window.getMatchedCSSRules(),但是效果并不理想。问题
在于,我们只采用
了在整个文档的上下文中匹配的HTML和CSS选择器的一部分,而
在HTML代码段的上下文中不再匹配。由于解析和修改选择器
似乎不是一个好主意,因此我放弃了这一尝试。

第二次尝试-getComputedStyle()
然后,我从@CollectiveCognition建议的内容开始-
getComputedStyle()。但是,我真的想分离CSS表单HTML,
而不是内联所有样式。

问题1-将CSS与HTML分开
这里的解决方案不是很好,但是很简单。我已经
为选定子树中的所有节点分配了ID,并使用该ID创建了
适当的CSS规则。

问题2-删除具有默认值的属性
为节点分配ID效果很好,但是我发现
我的每条CSS规则都有大约300个属性,使整个CSS难以理解。
事实证明,该方法getComputedStyle()返回
为给定元素计算的所有可能的CSS属性和值。其中一些为空,一些具有
浏览器默认值。要删除默认值,我必须先从
浏览器中获取它们(每个标签具有不同的默认值)。解决方案是
将来自网站的元素的样式与
插入到空白元素中的相同元素进行比较

问题3-仅保留速记属性
我发现的下一件事情是,
不必要地打印了具有速记等效项的属性(例如,先有border: solid black 1px然后
border-color: black;是border-width: 1pxitd)。
为了解决这个问题,我只创建了一个具有速记
等效项的属性列表,并将其从结果中过滤掉。

问题4-删除前缀属性
在每个规则属性的数量后,显著降低
之前的操作,但我发现,我窗台有很多的-webkit-
前缀属性,我从来没有听到(-webkit-app-region?-webkit- text-emphasis-position?)。
我想知道我是否应该保留这些特性,因为他们中的一些
似乎是有用的(-webkit-transform-origin,-webkit-perspective-origin等等)。
不过,我还没有弄清楚如何验证这一点,并且由于我知道大多数
时候这些属性只是垃圾,所以我决定将它们全部删除。

问题5-合并相同的CSS规则
我发现的下一个问题是重复重复相同的CSS规则
(例如,对于每个

 类似资料:
  • 本文向大家介绍js html css实现复选框全选与反选,包括了js html css实现复选框全选与反选的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js复选框全选与反选实现代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 我在控制台日志中得到这个错误消息: 它引用以下行: 这是我的完整JS文件: 在我的html站点中,Javascript工作正常,根据一天中的时间,我会收到不同的消息,但在我的Wordpress站点中,两条消息都不会出现。 知道这是为什么吗?我能做些什么来让它工作? 非常感谢。

  • 本文向大家介绍JS控制TreeView的结点选择,包括了JS控制TreeView的结点选择的使用技巧和注意事项,需要的朋友参考一下 网上有很多控制TreeView的checkbox选中,但是自己尝试的时候,要么报错,要么不可行。以下这种写法是经过验证有效的,仅作参考,思维比较巧妙! Tree: 脚本: 这个脚本的写法巧妙运用生成的页面源文件中checkbox与其子结点div之间的关系! 那么,只需

  • 我试图从HTML列表中选择一个复选框。我想选择文本为“CLEAN_AUDIT”的复选框。我的XPATH为名称、DOB、地址和电话选择了4个复选框CLEAN_ AUDIT: 表格在页面上的外观示例如下: 我想选择1复选框: 名称Clean_AUDIT 我的XPATH选择了4个复选框: 名称Clean_AUDIT 地址Clean_AUDIT DOB的Clean_AUDIT 手机Clean_AUDIT

  • 问题内容: 我正在尝试选中一个复选框的所有复选框。但是该怎么做呢? 这是我的HTML: 我创建了一个额外的复选框以选择并取消选择所有复选框。 JS: 我也尝试过,但是没有一个对我有用:( 问题答案: 您错过了容器的div 和和。 是正确的变体。 https://jsfiddle.net/0vb4gapj/1/

  • 问题内容: HTML规范允许在ID中使用句点(。): 但是,使用CSS ID选择器规则将 无法 正确匹配: ID选择器的CSS规范没有提到这种情况。因此,我假设它使用的是标记名和类选择器的组合?例如,CSS规则适用于类名称为的所有锚定标记(),例如。 是否可以有一个外部CSS文件规则,该规则通过其中包含句点的ID引用HTML元素? 我不希望这样,因为CSS规范指定CSS“标识符”不包含句点作为有效