首页
直播
壁纸
免责声明
更多
统计
关于
Search
1
一款自动化渗透工具包 TscanPlus
225 阅读
2
获取一张美国虚拟信用卡
223 阅读
3
JS Document.evaluate()的使用
199 阅读
4
Git冲突:Please commit your changes or stash them before you merge
174 阅读
5
Python 31条 pip 命令全解析
164 阅读
默认分类
操作系统
Linux
管理面板
实用工具
开发语言
PHP
Web
python
typecho
ThinkPHP
layui
爬虫
文章分享
登录
Search
标签搜索
python
php
web
linux
Git
js
requests
自动化
宝塔
thinkphp
Centos
adb
html
typecho
layui
jquery
ubuntu
multipass
虚拟机
thikphp
YiYun
累计撰写
54
篇文章
累计收到
21
条评论
首页
栏目
默认分类
操作系统
Linux
管理面板
实用工具
开发语言
PHP
Web
python
typecho
ThinkPHP
layui
爬虫
文章分享
页面
直播
壁纸
免责声明
统计
关于
搜索到
6
篇与
的结果
2024-04-18
css选择器备忘录
{mtitle title="目录信息"/}啥是CSS选择器通用选择器 - *元素选择器 - element类名选择器 - .classID 选择器 - #id多选择器 - .class.class-2逗号组合 - .class, .class-2后代选择器 - .class .class-2相邻兄弟选择器 - .class + .class-2子选择器 - .class > .class-2兄弟选择器 - .class ~ .class-2脑残猫头鹰选择器 - + 属性选择器 - []链接伪类选择器input相关第N个孩子指定类型的第N个孩子伪类选择器伪元素0. 啥是CSS选择器CSS选择器 是用于选择 HTML 元素并为其应用样式的一种机制。选择器允许我们根据元素的 类型 、 属性 、 位置 以及其他特征来选择要样式化的元素,从而实现对网页样式的精确控制。以下是一些常见的 CSS 选择器及其用途:「元素选择器(Element Selector)」 :选择指定类型的 HTML 元素。例如, p 选择所有段落元素。「类选择器(Class Selector)」 :选择具有指定类名的元素。以点号( . )开头,后跟类名。例如, .button 选择所有类名为 button 的元素。「ID 选择器(ID Selector)」 :选择具有指定 ID 的元素。以井号( # )开头,后跟 ID 名称。例如, #header 选择 ID 为 header 的元素。「后代选择器(Descendant Selector)」 :选择指定元素的后代元素。使用 空格 分隔两个选择器,其中第一个选择器表示 父元素第二个选择器表示 后代元素例如, div p 选择所有 <div> 元素内部的所有段落 <p> 元素。「相邻兄弟选择器(Adjacent Sibling Selector)」 :选择紧接在另一个元素后面的元素。使用加号( + )符号连接两个选择器,其中第一个选择器表示 第一个元素第二个选择器表示其 紧邻的兄弟元素例如, h2 + p 选择所有紧接在 <h2> 元素后面的 <p> 元素。「通用选择器(Universal Selector)」 :选择页面中的 「所有元素」 。使用星号( * )表示。例如, * 选择页面中的所有元素。除了这些基本的选择器外,CSS 还提供了许多其他类型的选择器,如 伪类选择器 (例如 :hover 、 :active )、 伪元素选择器 (例如 ::before 、 ::after )、 属性选择器 (例如 [type="text"] )等,可以根据具体的需求选择合适的选择器来对页面元素进行样式化。{dotted startColor="#ff6c6c" endColor="#1989fa"/}1. 通用选择器 - *CSS的 通用选择器 是一个星号( * ),它匹配文档中的 「任何元素」 。使用通用选择器,我们可以选择页面上的 「所有元素」 ,并为它们应用相同的样式。例如,如果我们想为页面上的所有元素设置相同的字体样式,我们可以使用通用选择器来实现。{callout color="#2bff00"}但要注意,过度使用通用选择器可能会导致 「性能问题」 ,因为它会匹配页面上的所有元素,包括嵌套元素,这可能会增加浏览器的渲染负担。因此,建议在必要时谨慎使用通用选择器。{/callout}{dotted startColor="#ff6c6c" endColor="#1989fa"/}2. 元素选择器 - element元素选择器 是 CSS 中最简单的选择器之一,它通过指定 HTML 元素的名称来选择元素。例如,要选择所有段落元素 <p> ,我们可以使用以下选择器:p { /* CSS 样式 */ }这将选择页面中的所有段落元素,并应用所指定的 CSS 样式。{dotted startColor="#ff6c6c" endColor="#1989fa"/}3. 类名选择器 - .class类选择器 用于选择具有特定类名的 HTML 元素。类选择器以点号( . )开头,后跟类名。例如,如果我们有一个类名为 button 的按钮元素,我们可以使用类选择器来选择它:.button { /* CSS 样式 */ }这将选择页面中所有具有类名 button 的元素,并应用所指定的 CSS 样式。类选择器使我们可以为页面中的 「多个元素定义相同的样式」 ,而不必重复定义。此外,一个元素可以同时具有多个类,这样就可以轻松地将多个样式应用于同一个元素。{dotted startColor="#ff6c6c" endColor="#1989fa"/}4. ID 选择器 - #idID 选择器 是 CSS 中用于选择具有特定 ID 属性的 HTML 元素的选择器。ID 选择器以井号( # )开头,后跟 ID 名称。例如,如果我们有一个 ID 为 my-id的标题元素,我们可以使用 ID 选择器来选择它:#my-id { /* CSS 样式 */ }这将选择页面中具有 ID 名称为 my-id 的元素,并应用所指定的 CSS 样式。 「与类选择器不同,ID 选择器应该是唯一的」 ,因为 HTML 页面中每个元素的 ID 必须是唯一的。ID 选择器通常用于 「为特定元素应用唯一的样式」 。{dotted startColor="#ff6c6c" endColor="#1989fa"/}5. 多选择器 - .class.class-2.class.class-2 表示连接两个或更多类或ID来选择具有所有指定类/ID的元素:这段CSS代码的意思是选择具有 .my-class 和 .special 两个类的元素,并设置对应的背景色。{dotted startColor="#ff6c6c" endColor="#1989fa"/}6. 逗号组合 - .class, .class-2使用 逗号分隔 多个选择器声明。这样可以轻松地 「将相同的样式应用于多个选择器声明」 ;{dotted startColor="#ff6c6c" endColor="#1989fa"/}7. 后代选择器 - .class .class-2后代选择器 用于 「选择特定元素的后代元素」 。后代选择器使用 「空格分隔两个选择器」 ,其中第一个选择器表示 父元素第二个选择器表示 后代元素例如,如果我们想选择所有 <div> 元素内部的所有段落 <p>,我们可以使用后代选择器:div p { /* CSS 样式 */ }这将选择所有在 <div> 元素内部的 <p>元素,并应用所指定的 CSS 样式。后代选择器允许我们更精确地定位特定元素,而不受页面结构的限制。{dotted startColor="#ff6c6c" endColor="#1989fa"/}8. 相邻兄弟选择器 - .class + .class-2相邻兄弟选择器 它用于选择 「紧接」 在另一个元素后面的元素。相邻兄弟选择器使用加号( + )符号来连接两个选择器,其中第一个选择器表示 第一个元素第二个选择器表示 紧跟在其后的兄弟元素例如,如果我们想选择所有紧跟在 <h2> 元素后面的段落 <p> 元素,我们可以使用相邻兄弟选择器:h2 + p { /* CSS 样式 */ }这将选择紧接在 <h2> 元素后面的 <p> 元素,并应用所指定的 CSS 样式。相邻兄弟选择器允许我们 「根据元素之间的特定关系来选择元素」,从而使得样式的应用更加精确和有针对性。{dotted startColor="#ff6c6c" endColor="#1989fa"/}9. 子选择器 - .class > .class-2子选择器 用于选择特定元素的 「直接子元素」 。子选择器使用大于号( > )符号来连接两个选择器,其中第一个选择器表示 父元素第二个选择器表示其 直接子元素例如,如果我们想选择所有 <ul> 元素下的直接子元素 <li> ,我们可以使用子选择器:ul > li { /* CSS 样式 */ }这将选择所有直接位于 <ul> 元素内部的 <li> 元素,并应用所指定的 CSS 样式。子选择器 「只会选择指定元素的直接子元素,而不会选择嵌套在更深层次的子元素」 。这使得子选择器非常有用,因为它可以帮助我们更精确地定位特定层次结构的元素,并应用相应的样式。{dotted startColor="#ff6c6c" endColor="#1989fa"/}10. 兄弟选择器 - .class ~ .class-2兄弟选择器 用于 「选择与指定元素具有相同父元素且位于其后面的所有兄弟元素」 。一般兄弟选择器使用波浪号( ~ )符号来连接两个选择器,其中第一个选择器表示 基准元素第二个选择器表示 它的兄弟元素例如,如果我们想选择所有与 <h2> 元素具有相同父元素且位于其后面的 <p> 元素,我们可以使用一般兄弟选择器:h2 ~ p { /* CSS 样式 */ }这将选择所有与 <h2> 元素具有相同父元素且位于其后面的 <p> 元素,并应用所指定的 CSS 样式。{callout color="#2bff00"} 兄弟选择器 允许我们选择与指定元素具有相同父元素且位于其后面的所有兄弟元素,而不仅仅是直接的兄弟元素。{/callout}{dotted startColor="#ff6c6c" endColor="#1989fa"/}11. 脑残猫头鹰选择器 - + 脑残猫头鹰选择器 用来描述一种特定的 CSS 模式。它涉及选择多个元素并为它们应用共享样式,从而在网页的各个组件或部分中创建一致的视觉设计。术语 脑残 指的是通用选择器( * )与相邻兄弟选择器( + )结合使用的情况。 猫头鹰 可能指的是 CSS 选择器的形态类似于猫头鹰的头部和眼睛。以下是“脑残猫头鹰”选择器模式的示例:* + * { margin-top: 1.5em; }这个 CSS 规则选择了在另一个元素之后出现的任何元素(除了容器中的第一个元素),并在顶部应用了一定的边距,有效地使元素均匀地间隔开来。这种模式特别适用于在为 「容器内的元素添加间距,但第一个元素没有前置兄弟元素」 。当然,我们也可以使用 :not(:first-child) 来达到相同的效果。{dotted startColor="#ff6c6c" endColor="#1989fa"/}12. 属性选择器属性选择器 它允许我们根据元素的属性及其属性值来选择元素,并为其应用样式。属性选择器使用方括号( [])表示,内部包含属性名和可选的属性值。存在性属性选择器选择具有指定属性的元素,不论其属性值是什么。[data-text] { /* CSS 样式 */ }选择所有具有 data-text 属性的元素,并为其应用样式。这个选择器 「不关心属性的值是什么,只要有这个属性就会被选中」值属性选择器选择具有指定属性和特定值的元素。[data-text="hello"] { /* CSS 样式 */ }选择所有 data-text 属性的值为 hello 的元素,并为其应用样式。{callout color="#2bff00"}只有属性值为 hello 的元素才会被选中。{/callout}部分值属性选择器选择具有指定属性,并且属性值包含特定值的元素。[title*="saur"] { /* CSS 样式 */ }选择所有 title 属性值中包含 saur子字符串 的元素,并为其应用样式。{callout color="#2bff00"}只要属性值包含 saur ,无论是在开头、中间还是结尾,都会被选中。{/callout}起始值属性选择器选择具有指定属性,且属性值以特定值开头的元素。a[href^="https://"] { /* CSS 样式 */ }选择所有 href 属性值以 https:// 开头的 <a> 元素,并为其应用样式。{callout color="#2bff00"}只有链接以 https:// 开头的 <a> 元素才会被选中。{/callout}结束值属性选择器选择具有指定属性,且属性值以特定值结尾的元素。[src$=".png"] { /* CSS 样式 */ }选择所有 src 属性值以 .png 结尾的元素,并为其应用样式。{callout color="#2bff00"}只有图片路径以 .png 结尾的元素才会被选中。{/callout}包含值属性选择器选择具有指定属性,且属性值包含特定值的元素,且值之间以空格分隔。[class~="active"] { /* CSS 样式 */ }选择所有具有包含 active 的类名的元素,并为其应用样式。{callout color="#2bff00"}这个选择器将选中所有具有 active 类的元素,无论它们的类名是 active 还是 some-active-class 等。{/callout}{dotted startColor="#ff6c6c" endColor="#1989fa"/}13. link伪类选择器以下四个伪类用于选择各种状态下的 link 等元素。这四个伪类通常与链接一起使用,但是 :active 对于 button 也很有用,而 :hover 可以用于所有类型的元素::link 选择未访问的 link 。它允许我们为用户尚未点击的超链接设置样式。:visited 选择用户已经访问过的 link 。这个伪类允许我们为以前点击过的超链接应用样式。:hover 当用户的指针(例如鼠标光标)悬停在元素(通常是链接)上时,选择这些元素。:active 选择在它们被激活时的元素(通常是链接或按钮),例如当用户点击它们时。{dotted startColor="#ff6c6c" endColor="#1989fa"/}14. input相关在前端项目中, input 有很大的用处。我们来看 MDN 关于 input 的介绍。所以,和 input 相关的选择器也很多。{callout color="#2bff00"}元素聚焦 - :focus{/callout} :focus 伪类选择器表示获得焦点的元素(如表单输入)。当用户点击或轻触一个元素或使用键盘的 Tab 键选择它时,它会被触发。元素选中 - :checked{/callout}:checked 伪类选择器用于选择当前被选中/勾选的 单选按钮 、 复选框 或选择元素中的选项。input[type='checkbox'] { all: unset; -webkit-appearance: none; appearance: none; margin: 0; } input[type='checkbox']:checked + label { background: mediumseagreen; } input[type='checkbox']:focus + label { box-shadow: 0 0 0 2px yellow; }在上面的示例中,我使用 appearance: none 来移除复选框输入框的默认样式{callout color="#2bff00"}元素禁用 - :disabled{/callout}:disabled 伪类匹配 「禁用」 的表单元素,例如 button 或 input {callout color="#2bff00"}元素可用 - :enabled{/callout}:enabled 伪类匹配可以交互并接收输入的表单元素{callout color="#2bff00"}元素验证 - :valid{/callout} :valid 伪类用于定位具有内容符合其属性规定要求(如 pattern 、 type 等)的输入元素:{callout color="#2bff00"}元素验证- :invalid{/callout} :invalid 伪类用于定位内容不符合要求的输入元素:{callout color="#2bff00"}元素必填 - :required{/callout} :required 伪类用于定位具有 required 属性的输入元素,表明在提交表单之前必须填写它们:{callout color="#2bff00"}元素可选 - :optional{/callout} :optional 伪类用于定位没有 required 属性的输入元素,表示它们不是必填项:{dotted startColor="#ff6c6c" endColor="#1989fa"/}15. 第N个孩子{callout color="#2bff00"}第一个孩子 - :first-child{/callout}:first-child 伪类用于定位其 「父元素内的第一个子元素」 :{callout color="#2bff00"}最后一个孩子 - last-child{/callout}:last-child 伪类用于定位其父元素内的最后一个子元素:{callout color="#2bff00"}第N个孩子 - :nth-child{/callout}:nth-child 伪类根据元素在其父元素中的位置进行选择,允许进行各种各样的选择。:nth-child 还可以让我们按模式选择元素::nth-child(odd) 或 :nth-child(2n+1) 选择 「每个奇数位置」 的子元素:nth-child(even) 或 :nth-child(2n) 选择 「每个偶数位置」 的子元素公式中的 n 就像一个计数器,让我们可以在重复循环中选择元素。{callout color="#2bff00"}第N个孩子(倒数) - :nth-last-child{/callout}:nth-last-child 伪类类似于 :nth-child ,但它是从 「最后一个子元素开始向后计数」 的{callout color="#2bff00"}元素的唯一子元素 - :only-child{/callout}如果某个元素是其父元素的 「唯一子元素」 ,则 :only-child 伪类将其作为目标元素:{dotted startColor="#ff6c6c" endColor="#1989fa"/}16. 指定类型的第N个孩子{callout color="#2bff00"}类型的第一个元素 - :first-of-type{/callout}:first-of-type 伪类的目标是其父级中 「该类型的第一个元素」 :{callout color="#2bff00"}类型的最后一个元素 - :last-of-type{/callout}:last-of-type 伪类的目标是其父级中 「该类型的最后一个元素」 {callout color="#2bff00"}类型的第N个元素 - :nth-of-type{/callout}:nth-of-type 伪类根据元素的类型和兄弟元素中的位置来匹配元素{callout color="#2bff00"}类型的第N个元素(向后计数) - :nth-last-of-type{/callout}:nth-last-of-type 伪类根据元素的类型和兄弟元素中的位置来匹配元素,但从末尾开始计数{callout color="#2bff00"}其类型的唯一元素 - :only-of-type{/callout}:only-of-type 伪类的目标元素是其兄弟元素中该类型的唯一元素:{dotted startColor="#ff6c6c" endColor="#1989fa"/}17. 伪类选择器{callout color="#2bff00"}目标元素选择器- .target{/callout}:target 伪类选择具有与 URL 片段匹配的 ID 属性的元素(例如: https://example.com/#fragment )。 :target 经常用于为直接链接到的页面部分设置样式,通常 「与页面内链接一起使用」 。{callout color="#2bff00"}否定伪类 - .not(){/callout}:not()函数伪类 允许我们定位与指定选择器或条件不匹配的元素。它本质上是一个 「过滤器」 :{callout color="#2bff00"}父选择器 - :has(){/callout}:has()函数伪类 允许在元素包含某个元素或另一个选择器时对其进行样式设置:{callout color="#2bff00"}其他伪类{/callout}:root :选择文档中最高级别的父元素,通常是 HTML 文档中的 <html> 元素。用于定义 CSS 变量,这些变量将对页面内所有元素可用。:is() :匹配可以是多个选择器之一的元素,使得长选择器列表更简洁易读。例如, :is(h1, h2, h3) 可以匹配这三个标题元素中的任何一个。:where() :类似于 :is() ,但允许根据条件选择元素,而不影响选择器的特异性。:default :匹配设置为其默认选择状态的 UI 元素(例如单选按钮或复选框)。:empty :选择没有子元素的元素(包括文本节点)。:fullscreen :选择当前以全屏模式显示的元素。:in-range :匹配值在指定范围内的表单元素(使用 min 和 max 属性)。 :out-of-range :匹配值在指定范围之外的表单元素。:indeterminate :选择状态不确定的表单元素,例如既不选中也不取消选中的复选框(通常在树形视图结构中看到)。:read-only :匹配由于 readonly 属性而无法由用户编辑的表单元素。:read-write :选择用户可以编辑的表单元素,意味着它们不是只读的。:lang() :根据其语言属性匹配元素。例如, :lang(en) 选择用英语定义的元素。{dotted startColor="#ff6c6c" endColor="#1989fa"/}18. 伪元素{callout color="#2bff00"}第一个子伪元素 - ::before{/callout}::before 伪元素用于在元素内容之前插入内容。它可用于添加装饰内容、图标或其他不需要在实际 DOM 中的元素:{callout color="#2bff00"}最后一个子伪元素 - ::after{/callout}::after 伪元素与 ::before 类似,用于在元素内容之后插入内容:{callout color="#2bff00"}首字母伪元素- ::first-letter{/callout}::first-letter 伪元素用于设置块级元素的 「第一个字母的样式」 ,允许使用首字下沉等设计元素:{callout color="#2bff00"}首行伪元素 - ::first-line{/callout}::first-line 伪元素用于设置块级元素第一行的样式。这允许印刷效果可以根据包含元素的大小和字体大小动态调整:{callout color="#2bff00"}文本输入占位符 - ::placeholder{/callout}::placeholder 伪元素用于设置表单字段(如 <input> 和 <textarea> )的占位符文本的样式:{callout color="#2bff00"}样式突出显示框 - ::selection{/callout}::selection 伪元素用于设置元素中已突出显示或由用户选择的部分的样式。例如,当用户单击并拖动以选择文本时, ::selection 伪元素可用于修改该选择的背景颜色、文本颜色和其他样式:{callout color="#2bff00"}列表标记伪元素 - ::marker{/callout}::marker 伪元素用于设置列表项中标记框的样式,列表项通常包含项目符号(对于无序列表)或数字/字母(对于有序列表)。在引入 ::marker 伪元素之前,自定义这些标记通常需要解决方法,但这个伪元素给了我们更多的控制权:{dotted startColor="#ff6c6c" endColor="#1989fa"/}原文出处:https://mp.weixin.qq.com/s/8Zhw-obLYrsPPXqkaqW5wA
2024年04月18日
103 阅读
0 评论
0 点赞
2024-04-12
JS Document.evaluate()的使用
Document 接口的 evaluate() 方法根据参数中给出的 XPath 表达式选择元素。 XPath 表达式可以在 HTML 和 XML 文档上进行计算。Syntaxjsevaluate(xpathExpression, contextNode, namespaceResolver, resultType, result)ParametersxpathExpression 表示要评估的 xpath 的字符串。contextNode 查询的上下文节点(请参阅 XPath specificatio )。通常将 document 作为上下文节点传递。namespaceResolver 将传递任何命名空间前缀的函数,并应返回表示与该前缀关联的命名空间 URI 的字符串。它将用于解析 xpath 本身内的前缀,以便它们可以与文档匹配。 null 值对于 HTML 文档或不使用命名空间前缀时很常见。resultType 与要返回的结果 XPathResult 的类型相对应的整数。以下值是可能的: ANY_TYPE (0) 无论什么类型都会自然地由给定的表达式产生。 NUMBER_TYPE (1) 包含单个数字的结果集。例如,在使用 count() 函数的 xpath 表达式中很有用。 STRING_TYPE (2) 包含单个字符串的结果集。 BOOLEAN_TYPE (3) 包含单个 boolean 值的结果集。例如,使用 not() 函数的 xpath 表达式很有用。 UNORDERED_NODE_ITERATOR_TYPE (4) 包含与表达式匹配的所有节点的结果集。结果集中的节点不一定与它们在文档中出现的顺序相同。 注意:此类型的结果包含对文档中节点的引用。修改节点将使迭代器失效。修改节点后,尝试迭代结果将导致错误。 ORDERED_NODE_ITERATOR_TYPE (5) 包含与表达式匹配的所有节点的结果集。结果集中的节点的顺序与它们在文档中出现的顺序相同。 注意:此类型的结果包含对文档中节点的引用。修改节点将使迭代器失效。修改节点后,尝试迭代结果将导致错误。 UNORDERED_NODE_SNAPSHOT_TYPE (6) 包含与表达式匹配的所有节点的快照的结果集。结果集中的节点不一定与它们在文档中出现的顺序相同。 注意:这种类型的结果是快照,本质上是匹配节点的列表。您可以通过更改快照节点来更改文档。修改文档不会使快照失效;但是,如果文档发生更改,快照可能与文档的当前状态不对应,因为节点可能已移动、更改、添加或删除。 ORDERED_NODE_SNAPSHOT_TYPE (7) 包含与表达式匹配的所有节点的快照的结果集。结果集中的节点的顺序与它们在文档中出现的顺序相同。 注意:这种类型的结果是快照,本质上是匹配节点的列表。您可以通过更改快照节点来更改文档。修改文档不会使快照失效;但是,如果文档发生更改,快照可能与文档的当前状态不对应,因为节点可能已移动、更改、添加或删除。 ANY_UNORDERED_NODE_TYPE (8) 包含与表达式匹配的任何单个节点的结果集。该节点不一定是文档中与表达式匹配的第一个节点。 FIRST_ORDERED_NODE_TYPE (9) 包含文档中与表达式匹配的第一个节点的结果集。result 用于获取结果的现有 XPathResult 。如果设置为 null 该方法将创建并返回一个新的 XPathResult 。Return value链接到所选节点的 XPathResult 。如果 result 是 null ,则它是一个新对象,如果不是,则它与作为 result 参数传递的对象相同Examplesjsconst headings = document.evaluate( "/html/body//h2", document, null, XPathResult.ANY_TYPE, null, ); /* 在文档中搜索所有 h2 元素。* 结果可能是一个无序的节点迭代器。*/ let thisHeading = headings.iterateNext(); let alertText = "Level 2 headings in this document are:\n"; while (thisHeading) { alertText += `${thisHeading.textContent}\n`; thisHeading = headings.iterateNext(); } alert(alertText); // 提醒所有 h2 元素的文本请注意,在上面的示例中,更详细的 xpath 优于常见的快捷方式(例如 //h2 )。一般来说,如上例所示,更具体的 xpath 选择器通常会带来显着的性能改进,尤其是在非常大的文档上。这是因为评估查询所花费的时间不会浪费时间访问不必要的节点。使用 // 通常很慢,因为它会访问根节点和所有子节点中的每个节点以查找可能的匹配项。通过仔细使用上下文参数可以实现进一步的优化。例如,如果您知道要查找的内容位于 body 标记内的某个位置,则可以使用以下内容:jsdocument.evaluate(".//h2", document.body, null, XPathResult.ANY_TYPE, null);请注意,上面使用 document.body 而不是 document 作为上下文,因此 xpath 从 body 元素开始。(在此示例中, "." 非常重要,它表明查询应从上下文节点 document.body 开始。如果省略 "." (留下 //h2 ),则查询将从根节点 ( html ) 开始,这会更有效。浪费。)请参阅 Introduction to using XPath in JavaScript 了解更多信息。Specifications{card-describe title="Specification"} DOM 标准 # dom-xpathevaluatorbase-evaluate {/card-describe}原文出处:https://runebook.dev/zh/docs/dom/document/evaluate#xpathexpression
2024年04月12日
199 阅读
3 评论
0 点赞
2024-04-10
11个开源免费Web代码编辑器
基于Web的代码编辑器是一种用于直接在Web浏览器中编写代码的应用,无需在本地安装任何软件。 它提供了一个在线开发环境,开发人员可以在其中编写代码、预览效果、更改代码并与团队成员实时协作。基于Web的代码编辑器对于团队之间的协作非常重要, 有许多优势 :可访问性:基于Web的代码编辑器可以从任何具有互联网连接的设备访问,使团队成员可以轻松地远程协同工作。这种可访问性具备更大的灵活性,并支持跨地区和跨时区的协作。实时团队协作:基于Web的代码编辑器通常支持实时协作功能,允许多个团队成员同时处理同一代码。开发人员能够在项目上进行协作,一起编辑和审查代码,并即时反馈。版本控制集成:与Git等版本控制系统集成,使团队能够管理和跟踪代码库的变更。通过两者集成,以提供集中的代码存储库,促进工作流的顺畅协作,从而简化协作。代码共享和审查:基于Web的代码编辑器提供了与团队成员共享代码片段或整个项目的简单方法。这简化了代码评审的过程,团队成员可以直接在编辑器中留下评论、提出更改建议、提供反馈。跨平台兼容性:基于Web的代码编辑器一般独立于平台,允许开发人员使用不同的操作系统(Windows、macOS、Linux)进行协作,而不会出现兼容性问题。具备较高包容性,不管团队成员的开发环境如何都能够为项目做贡献。本文主要推荐一些比较好的开源Web代码编辑器,以直接体验或嵌入到你的产品中。01 Monaco Editor https://github.com/microsoft/monaco-editorMonaco编辑器是微软开发的基于Web的代码编辑器,由VS Code提供功能支持。体验地址:https://microsoft.github.io/monaco-editor/playground.html优点:具有语法突出显示、代码完成和调试功能的丰富功能集。高度可定制和可扩展。性能出色,即使是大型代码库。支持多种编程语言。与其他工具和框架的集成。缺点:与更简单的代码编辑器相比,学习曲线更陡峭。由于其功能丰富的性质,需要更多的资源来运行。有限的离线功能,因为它主要在网络环境中运行。02 OpenVSCode Server https://github.com/gitpod-io/openvscode-server这个项目提供了一个可以在远处服务器上运行的VS Code,允许通过Web浏览器进行访问。它基于Gitpod和GitHub Codespaces 的技术架构 。VS Code团队对其架构进行重构,以支持基于浏览器的工作模式,并且该项目共享了使用最新版本的VS Code所需的最小更改集,具有简单的升级路径和低维护工作量。03 ecode https://github.com/SpartanJ/ecodeecode是为现代硬件设计的轻量级代码编辑器,专注于响应性和性能。它利用硬件加速的eepp GUI,并改进eepp GUI库。功能特征:轻巧便携极简的GUI,可定制的配色方案支持50多种语言的文本高亮显示和LSP语义高亮显示多光标支持,实现高效编辑终端集成,实现无缝命令执行用于快速访问编辑器功能的命令行自动完成和可定制的键盘绑定04 Code Server https://github.com/coder/code-server Code-Server是一个支持在浏览器中运行VS Code的开源项目,能够在任何设备上提供一致的开发环境。它还支持使用云服务器以获得更快的执行效率,并为移动的用户保留电池寿命。05 Tabby https://github.com/TabbyML/tabbyTabby是一个可以私有化部署的AI编码助手,提供了GitHub Copilot的开源和本地部署方案。它是独立的,不需要DBMS或云服务,具有易于集成的OpenAPI接口,并支持消费级GPU。另外,Tabby可以使用Docker轻松安装。06 Neko Code Editor https://github.com/flyingcatdeveloper/nceNeko Code Editor是一个简单的代码编辑器,具有Monaco Editor类似的功能,包括:控制台、在新选项卡中打开代码、多文件功能、项目管理、DevLog更新、本地数据保存、可自定义设置等功能。 功能特征:Monaco编辑器功能: 具有代码自动完成、 MDN 应 用 等功能。控制台:只需单击一个按钮即可轻松查看控制台。在新选项卡中打开代码:查看代码时,它看起来就像一个网页。多文件功能:拥有尽可能多的文件,支持HTML,CSS,文件夹和JS文件。仪表板:在一个位置查看所有编辑器,沿着显示上次打开它们的时间。项目导入:开始在新设备上工作或通过导入项目恢复已删除的数据。项目下载:安全下载整个项目,以防止意外数据丢失。保持更新:随时了解DevLog的新功能和修复。数据 备 份:数据使用localStorage和IndexedDB保存,可以轻松加载到项目。自定义设置:自定义编辑器的设置,包括编辑器名称、自动保存和文件压缩。07 CodeMirror https://github.com/codemirror/dev/https://codemirror.net/CodeMirror是一个可扩展的Web代码编辑器组件,可用于实现具有高级编辑功能和丰富编程接口的文本输入,并支持进行进一步扩展。功能特征:可访问性:适用于屏幕阅读器和键盘用户。移动的支持:在手机上使用平台的本地选择和编辑功能。双向文本:支持从右到左和从左到右的混合文本。高亮:颜色代码,以反映句法结构。显示行号:显示代码旁边带有行号或其他信息的间距。自动完成:在编辑器中提供特定语言的完成提示。代码折叠:暂时隐藏文档的某些部分。搜索/替换:特定于编辑器的搜索、regexp搜索和替换功能。完整解析:详细的解析树允许许多类型的语言集成。扩展接口:健壮地实现要求苛刻的编辑器扩展。模块化:大多数特性都是在通用公共API之上实现的。速度:即使在大型文档和长行上也能保持响应。自动关闭:在键入时自动插入匹配的括号。Linting:在编辑器中显示错误和警告消息。灵活的样式:混合字体样式和大小,在内容中添加小部件。主题化:导入或创建自定义可视化编辑器样式。协作编辑:允许多个用户编辑同一文档。历史记录 撤销 :支持协作编辑的撤销、重做功能。多个选择:一次选择和编辑文档的多个范围。国际化:提供自定义文本以显示或通知用户。08 CodeFlask https://github.com/kazzkiq/CodeFlaskCodeFlask是一个轻量级、可定制的基于Web的代码编辑器。它提供了一些基础的代码编辑功能,如:语法突出显示、自动完成和代码格式化。CodeFlask的设计目标为易于使用,可以被轻松地集成到Web应用程序中。当需要一个简单和轻量级的代码编辑器时,它是一个合适的选择。09 CodeJar https://github.com/antonmedv/codejarCodeJar是一个强大的开源、可嵌入的Web代码编辑器。功能特征:轻量级(仅2.45 kB)没有依赖关系适用于Chrome,Safari,Firefox,iOS,iPadOS,Android.支持在新行上保留缩进自动添加右括号、引号使用Tab键缩进支持撤消、 重做可以使用任何高亮显示库, 如:PrismJS or 或 highlight.js 或自定义开发10 Rustpad https://github.com/ekzhang/rustpadRustpad是一个基于操作转换算法的高效和最小的开源协作文本编辑器。只需要一个小的Docker镜像,并且不需要数据库。服务器是使用Rust编写的warp web服务器框架,而前端是使用TypeScript编写的React和Monaco接口。编辑器通过WebSocket与服务器进行通信,性能高效,但在服务器重新启动或24小时不活动后可能断开连接,导致临时文档丢失。11 ICEcoder https://github.com/icecoder/ICEcoderICEcoder是一个基于浏览器的代码编辑器,允许高效的网站开发和维护。它可以在线或离线使用,并与Linux,Windows和Mac平台兼容。唯一的要求是PHP 7(推荐使用7.4)。但需要注意的是,目前这个开源库已经停止更新。原文出处:https://mp.weixin.qq.com/s/F_DaUkUnVDRNhCHqmgXWDQ
2024年04月10日
21 阅读
0 评论
0 点赞
2024-03-28
分享常用的40个网站制作技巧
将彻底屏蔽鼠标右键οncοntextmenu= "window.event.returnValue=false " 可用于Table<table border οncοntextmenu=return(false)> <td> no </td></table> 取消选取、防止复制<body onselectstart= "return false "> 不准粘贴οnpaste= "return false " 防止复制οncοpy= "return false; " oncut= "return false; " IE地址栏前换成自己的图标<link rel= "Shortcut Icon " href= "favicon.ico ">可以在收藏夹中显示出你的图标<link rel= "Bookmark " href= "favicon.ico "> 关闭输入法<input style= "ime-mode:disabled "> 永远都会带着框架<script language= "JavaScript "> if (window == top)top.location.href = "frames.htm "; //frames.htm为框架网页 </script>防止被人frame<SCRIPT LANGUAGE=JAVASCRIPT> if (top.location != self.location)top.location=self.location; </SCRIPT>网页将不能被另存为<noscript> <iframe src= "/blog/*.html> "; </iframe> </noscript>查看网页源代码<input type=button value=查看网页源代码 οnclick= "window.location = "view-source: "+ "http://www.williamlong.info " ">删除时确认<a href= "javascript:if(confirm( "确实要删除吗? "))location= "boos.asp?&areyou=删除&page=1 " "> 删除 </a>取得控件的绝对位置//Javascript <script language= "Javascript "> function getIE(e){ var t=e.offsetTop; var l=e.offsetLeft; while(e=e.offsetParent) alert( "top= "+t+ "/nleft= "+l); } </script> //VBScript <script language= "VBScript "> function getIE() dim t,l,a,b set a=document.all.img1 t=document.all.img1.offsetTop l=document.all.img1.offsetLeft while a.tagName <> "BODY " set a = a.offsetParent t=t+a.offsetTop l=l+a.offsetLeft wend msgbox "top= "&t&chr(13)& "left= "&l,64, "得到控件的位置 " end function </script>光标是停在文本框文字的最后<script language= "javascript "> function cc() { var e = event.srcElement; var r =e.createTextRange(); r.moveStart( "character ",e.value.length); r.collapse(true); r.select(); } </script> <input type=text name=text1 value= "123 " οnfοcus= "cc() ">判断上一页的来源javascript: document.referrer最小化、最大化、关闭窗口<object id=hh1 classid= "clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11 "> <param name= "Command " value= "Minimize "> </object> <object id=hh2 classid= "clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11 "> <param name= "Command " value= "Maximize "> </object> <OBJECT id=hh3 classid= "clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11 "> <PARAM NAME= "Command " VALUE= "Close "> </OBJECT> <input type=button value=最小化 οnclick=hh1.Click()> <input type=button value=最大化 οnclick=hh2.Click()> <input type=button value=关闭 οnclick=hh3.Click()> 本例适用于IE屏蔽功能键Shift,Alt,Ctrl<script> function look(){ if(event.shiftKey) alert( "禁止按Shift键! "); //可以换成ALT CTRL } document.οnkeydοwn=look; </script>网页不会被缓存<META HTTP-EQUIV= "pragma " CONTENT= "no-cache "> <META HTTP-EQUIV= "Cache-Control " CONTENT= "no-cache, must-revalidate "> <META HTTP-EQUIV= "expires " CONTENT= "Wed, 26 Feb 1997 08:21:57 GMT "> 或者 <META HTTP-EQUIV= "expires " CONTENT= "0 ">怎样让表单没有凹凸感?<input type=text style= "border:1 solid #000000 "> 或 <input type=text style= "border-left:none; border-right:none; border-top:none; border-bottom:1 solid #000000 "> </textarea>div span layer的区别<div> (division)用来定义大段的页面元素,会产生转行 <span> 用来定义同一行内的元素,跟</div>的唯一区别是不产生转行 </layer> 是ns的标记,ie不支持,相当于 让弹出窗口总是在最上面:<body οnblur= "this.focus(); ">不要滚动条?让竖条没有: <body style= "overflow:scroll;overflow-y:hidden "> </body> 让横条没有: <body style= "overflow:scroll;overflow-x:hidden "> </body> 两个都去掉?更简单了 <body scroll= "no "> </body>怎样去掉图片链接点击后,图片周围的虚线?<a href= "# " onFocus= "this.blur() "> <img src= "/blog/logo.jpg " border=0> </a>电子邮件处理提交表单<form name= "form1 " method= "post " action= "mailto:****@***.com " enctype= "text/plain "> <input type=submit> </form>在打开的子窗口刷新父窗口的代码里如何写?window.opener.location.reload()如何设定打开页面的大小<body οnlοad= "top.resizeTo(300,200); "> 打开页面的位置 <body οnlοad= "top.moveBy(300,200); ">在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动<STYLE> body {background-image:url(/blog/logo.gif); background-repeat:no-repeat; background-position:center;background-attachment: fixed} </STYLE>检查一段字符串是否全由数字组成<script language= "Javascript "> function checkNum(str){return str.match(//D/)==null} alert(checkNum( "1232142141 ")) alert(checkNum( "123214214a1 ")) </script>获得一个窗口的大小document.body.clientWidth; document.body.clientHeight怎么判断是否是字符if (/[^/x00-/xff]/g.test(s)) alert( "含有汉字 "); else alert( "全是字符 ");TEXTAREA自适应文字行数的多少<textarea rows=1 name=s1 cols=27 onpropertychange= "this.style.posHeight=this.scrollHeight "> </textarea>日期减去天数等于第二个日期<script language=Javascript> function cc(dd,dadd) { //可以加上错误处理 var a = new Date(dd) a = a.valueOf() a = a - dadd * 24 * 60 * 60 * 1000 a = new Date(a) alert(a.getFullYear() + "年 " + (a.getMonth() + 1) + "月 " + a.getDate() + "日 ") } cc( "12/23/2002 ",2) </script>选择了哪一个Radio<HTML> <script language= "vbscript "> function checkme() for each ob in radio1 if ob.checked then window.alert ob.value next end function </script> <BODY> <INPUT name= "radio1 " type= "radio " value= "style " checked> Style <INPUT name= "radio1 " type= "radio " value= "barcode "> Barcode <INPUT type= "button " value= "check " οnclick= "checkme() "> </BODY> </HTML>脚本永不出错<SCRIPT LANGUAGE= "JavaScript "> <!-- Hide function killErrors() { return true; } window.onerror = killErrors; // --> </SCRIPT>ENTER键可以让光标移到下一个输入框<input οnkeydοwn= "if(event.keyCode==13)event.keyCode=9 "> 问题点数:0 回复次数:60 显示所有回复显示星级回复显示楼主回复 netnpc cooly 等 级: 发表于:2007-11-14 12:05:271楼 得分:0检测某个网站的链接速度:把如下代码加入 区域中:<script language=Javascript> tim=1 setInterval( "tim++ ",100) b=1 var autourl=new Array() autourl[1]= "www.njcatv.net " autourl[2]= "javacool.3322.net " autourl[3]= "www.sina.com.cn " autourl[4]= "www.nuaa.edu.cn " autourl[5]= "www.cctv.com " function butt(){ document.write( " <form name=autof> ") for(var i=1;i <autourl.length;i++) document.write( " <input type=text name=txt "+i+ " size=10 value= "/blog/测试中......> " =》 <input type=text name=url "+i+ " size=40> =》 <input type=button value=GO οnclick=window.open(this.form.url "+i+ ".value)> <br/> ") document.write( " <input type=submit value=刷新> </form> ") } butt() function auto(url) else b++ } function run(){for(var i=1;i <autourl.length;i++)document.write( " <img src=http:// "+autourl+ "/ "+Math.random()+ " width=1 height=1 οnerrοr=auto( "http:// "+autourl+ " ")> ")} run() </script>各种样式的光标auto :标准光标default :标准箭头hand :手形光标wait :等待光标text :I形光标vertical-text :水平I形光标no-drop :不可拖动光标not-allowed :无效光标help :?帮助光标all-scroll :三角方向标move :移动标crosshair :十字标e-resizen-resizenw-resizew-resizes-resizese-resizesw-resize页面进入和退出的特效进入页面<meta http-equiv= "Page-Enter " content= "revealTrans(duration=x, transition=y) ">推出页面<meta http-equiv= "Page-Exit " content= "revealTrans(duration=x, transition=y) ">这个是页面被载入和调出时的一些特效。duration表示特效的持续时间,以秒为单位。transition表示使用哪种特效,取值为1-23: 0 矩形缩小 1 矩形扩大 2 圆形缩小 3 圆形扩大 4 下到上刷新 5 上到下刷新 6 左到右刷新 7 右到左刷新 8 竖百叶窗 9 横百叶窗 10 错位横百叶窗 11 错位竖百叶窗 12 点扩散 13 左右到中间刷新 14 中间到左右刷新 15 中间到上下 16 上下到中间 17 右下到左上 18 右上到左下 19 左上到右下 20 左下到右上 21 横条 22 竖条 23 以上22种随机选择一种在规定时间内跳转<META http-equiv=V= "REFRESH " content= "5;URL=http://www.williamlong.info ">网页是否被检索<meta name= "ROBOTS " content= "属性值 "> 其中属性值有以下一些: 属性值为 "all ": 文件将被检索,且页上链接可被查询; 属性值为 "none ": 文件不被检索,而且不查询页上的链接; 属性值为 "index ": 文件将被检索; 属性值为 "follow ": 查询页上的链接; 属性值为 "noindex ": 文件不检索,但可被查询链接; 属性值为 "nofollow ": 文件不被检索,但可查询页上的链接。 最大化窗口? <script language= "JavaScript "> <!-- self.moveTo(0,0) self.resizeTo(screen.availWidth,screen.availHeight) //--> </script> 解决问题:由于层与下拉框之间的优先级是:下拉框 > 层,因此在显示的时候,会因为优先级的次序而会出现如上问题。(如果几个元素都是层的话,我们可以通过层的 z-index 属性来设置)解决办法就是:给层中放一个优先级比下拉框更高的元素(iframe),从而解决此问题!具体解决代码如下: <div id= "menu " style= "position:absolute; visibility:hidden; top:20px; left:20px; width:100px; height:200px; background-color:#6699cc; "> <table> <tr> <td> item 1 </td> </tr> <tr> <td> item 2 </td> </tr> <tr> <td> item 3 </td> </tr> <tr> <td> item 4 </td> </tr> <tr> <td> item 5 </td> </tr> </table> <iframe src= "/blog/javascript:false " style= "position:absolute; visibility:inherit; top:0px; left:0px; width:100px; height:200px; z-index:-1; filter= 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0) '; "> </iframe> </div> <a href= "# " οnclick= "document.getElementById( 'menu ').style.visibility= 'visible ' "> menu </a> <form> <select> <option> A form selection list </option> </select> </form> 输入框也可以做的很漂亮了 <div align= "center "> <input type= "hidden " name= "hao " value= "yes "> 外向数: <input name=answer style= "color: rgb(255,0,0); border-left: medium none; border-right: medium none; border-top: medium none; border-bottom: 1px solid rgb(192,192,192) "> 没回答的题数: <input name=unanswer id= "unanswer " style= "color: rgb(255,0,0); border-left: medium none; border-right: medium none; border-top: medium none; border-bottom: 1px solid rgb(192,192,192) "> <br/> 总得分: <input name=score id= "score " style= "color: rgb(255,0,0); border-left: medium none; border-right: medium none; border-top: medium none; border-bottom: 1px solid rgb(192,192,192) "> 结 论: <input name=xgjg id= "xgjg " style= "color: rgb(255,0,0); border-left: medium none; border-right: medium none; border-top: medium none; border-bottom: 1px solid rgb(192,192,192) "> <br/> <br/> <input onClick=processForm(this.form) style= "FONT-FAMILY: 宋体; FONT-SIZE: 9pt " type=button value=查看结果 name= "button "> <input type= "reset " name= "Submit " value= "重做 "> </div> 注意:修改 <body> 为 <body οnlοad= "max.Click() "> 即为打开最大 化窗口,而如果改为 <body οnlοad= "min.Click() "> 就变为窗口一打开就最小化 <object id= "min " type= "application/x-oleobject " classid= "clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11 "> <param name= "Command " value= "Minimize "> </object> <object id= "max " type= "application/x-oleobject " classid= "clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11 "> <param name= "Command " value= "Maximize "> </object> </body> 页面自动刷新(说明) 当你做网页时,是不是有的时候想让你的网页自动不停刷新,或者过一段时间自动跳转到另外一个你自己设定的页面?其实实现这个效果非常地简单,而且这个效果甚至不能称之为特效。你只要把如下代码加入你的网页中就可以了。 1,页面自动刷新:把如下代码加入 <head> 区域中 <meta http-equiv= "refresh " content= "20 "> ,其中20指每隔20秒刷新一次页面. 2,页面自动跳转:把如下代码加入 <head> 区域中 <meta http-equiv= "refresh " content= "20;url=http://www.williamlong.info "> ,其中20指隔20秒后跳转到http://www.williamlong.info页面。 页面自动关闭 5000是指时间 <body onLoad= "setTimeout(window.close, 5000) "> 弹出窗口自动关闭 10秒后弹出窗口自动关闭 注意:在新的tan.htm的body中要加 <onLoad= "closeit() "> head <script language= "JavaScript "> <!-- var gt = unescape( '%3e '); var popup = null; var over = "Launch Pop-up Navigator "; popup = window.open( ' ', 'popupnav ', 'width=225,height=235,resizable=1,scrollbars=auto '); if (popup != null) { if (popup.opener == null) { popup.opener = self; } popup.location.href = 'tan.htm '; } // --> </script> <body> 注意:这段代码是在新建文件中的 <script language= "JavaScript "> function closeit() </script> 这个可不是 <iframe> (引用)呀。是直接调用的。以下代码加入 <body> 区域 <object type= "text/x-scriptlet " width= "800 " height= "1000 " data= "../index.htm "> </object>原文出处: 分享常用的40个网站制作技巧
2024年03月28日
71 阅读
0 评论
0 点赞
2024-03-28
JS之给元素添加类的方法
原生js中添加类的方法//1.为 <div> 元素添加一个类: document.getElementById("div").classList.add("类名"); //2.为 <div> 元素添加多个类: document.getElementById("div").classList.add("类名1","类名2","类名3",...); //3.为 <div> 元素移除一个类: document.getElementById("div").classList.remove("类名"); //4.为 <div> 元素移除多个类: document.getElementById("div").classList.remove("类名1","类名2","类名3",...); .jquery中添加类的方法//1.为 <div> 元素添加一个类: $("#div").addClass("类名"); //2.为 <div> 元素添加多个类: //只需要通过空格来间隔 class 值即可一次性添加多个 class $("#div").addClass("类名1 类名2 类名3"); //3.为 <div> 元素移除一个类: $("#div").removeClass("类名"); //4.为 <div> 元素移除多个类: //只需要通过空格来间隔 class 值即可一次性清除掉多个 class $("#div").removeClass("类名1 类名2 类名3"); 检查是否含有某个类的方法//检查是否含有某个CSS类 div.classList.contains('类名'); //return true or false
2024年03月28日
65 阅读
0 评论
0 点赞
1
2