highlight

关键词高亮:HTML字符串中匹配跨标签关键词

非 Y 不嫁゛ 提交于 2020-12-03 22:43:37
来源:木马啊 转载自:https://wintc.top/article/59 很久之前写过一个Vue组件,可以匹配文本内容中的关键词高亮,类似浏览器ctrl+f搜索结果。实现方案是,将文本字符串中的关键字搜索出来,然后使用特殊的标签(比如font标签)包裹关键词替换匹配内容,最后得到一个HTML字符串,渲染该字符串并在font标签上使用CSS样式即可实现高亮的效果。 当时的实现过于简单,没有支持接收HTML字符串作为内容进行关键词匹配。这两天有同学问到,就又思考了这个问题,发现并不是那么麻烦,写了几行代码解决一下。 一、匹配关键字:HTML字符串与文本字符串对比 1. 纯文本字符串的处理 对于纯文本字符串,如:“江畔何人初见月?江月何年初照人?”,假如我们想匹配“江月”这个关键字,则匹配结果可处理为: 江畔何人初见月? < font style = "background: #ff9632" > 江月 </ font > 何年初照人? 这样“江月”两个字被font标签包裹,在font标签上应用特殊的背景样式以达到关键字高亮的效果。 2. 对HTML字符串的处理 对于上述例子,如果内容字符串是一个HTML文本: 江畔何人初见 < b > 月 </ b > ?江 < b > 月 </ b > 何年初照人? 对于同样的关键词“江月”,怎样处理它呢?因为关键词中的字在不同的标签内

rem的在vue项目中使用配置,,浏览器的兼容性之Mate标签

流过昼夜 提交于 2020-12-01 07:09:39
在vue中配置rem 位置:在APP.vue的script中,在export default之外 (()=>{   let winW = document.documentElement.clientWidth,   desW = 1440,   htmlFont = winW / desW * 100;   window.htmlFont = htmlFont;   document.documentElement.style.fontSize = htmlFont + 'px'; })() 浏览器的兼容性之Mate标签 在vue项目index.html中 是否启用WebApp全屏模式,删除苹果默认的工具栏 <mate name="apple-touch-fullscreen" content="yes" /> 启用360极速模式 <mate name="renderer" content="webkit" /> 针对老的手持设备优化,不识别viewport <mate name="HandheldFriendly" content="true" /> uc强制竖屏 <mate name="screen-orientation" content="portrait" /> QQ强制竖屏 <mate name="x5-orientation" content="portrait"

SEO运用meta标签进行网站优化

你说的曾经没有我的故事 提交于 2020-11-30 23:28:54
SEO定义 Search Engine Optimization 搜索引擎优化 一,常用的HTTP-EQUIV类型: Set-Cookie(cookie设定) 说明:如果网页过期,存盘的cookie将会被删除(必须是GMT的时间格式) < meta http-equiv ="Set-Cookie" content ="cookievalue=xxx;expires=Wednesday,21-Oct-98 16:14:21 GMT;path=/" > Window-target(显示窗口的设定) 说明:强制页面在当前窗口以独立页面显示----用来防止别人在框架里面调用你的页面 < meta http-equiv ="Window-target" content ="_top" > Content-Type(显示字符集的设定) 说明:设定页面使用的字符集 < meta http-equiv ="Content-Type" content ="text/html;charset=utf-8" > expires(期限) 说明:用于设定网页的到期时间,一旦网页过期,必须到服务器上重新调阅(必须使用GMT的时间格式) < meta http-equiv ="expires" content ="Wed, 26 Feb 2016 08:21:57GMT" > Pragma(cache模式)

swift 自定义TabBarController、NavigationController复用

被刻印的时光 ゝ 提交于 2020-11-25 03:17:45
自定义TabBarController、NavigationController 简单使用(复用) 环境:xcode9.4 语言:swift4.0 git: SwiftNotes 效果图:    SLNavigationController.swift import UIKit class SLNavigationController: UINavigationController { override func viewDidLoad() { super.viewDidLoad() navigationBar.isHidden = true } /// 重写Push方法 /// 所有的push动作都会调用此方法 /// - Parameters: /// - viewController: 需要push的VC /// - animated: 是否动画 override func pushViewController(_ viewController: UIViewController, animated: Bool) { // 如果不是栈底的控制器才需要隐藏,跟控制器不需要处理 if childViewControllers.count > 0 { // 隐藏tabBar viewController.hidesBottomBarWhenPushed = true } super

elasticsearch系列七:ES Java客户端-Elasticsearch Java client(ES Client 简介、Java REST Client、Java Client、S...

折月煮酒 提交于 2020-11-24 04:40:31
一、ES Client 简介 1. ES是一个服务,采用C/S结构 2. 回顾 ES的架构 3. ES支持的客户端连接方式 3.1 REST API ,端口 9200    这种连接方式对应于架构图中的RESTful style API这一层,这种客户端的连接方式是RESTful风格的,使用http的方式进行连接 3.2 Transport 连接 端口 9300 这种连接方式对应于架构图中的Transport这一层,这种客户端连接方式是直接连接ES的节点,使用TCP的方式进行连接 4. ES提供了多种编程语言客户端 官网可以了解详情: https://www.elastic.co/guide/en/elasticsearch/client/index.html 二、Java REST Client介绍 1. ES提供了两个JAVA REST client 版本 Java Low Level REST Client: 低级别的REST客户端,通过http与集群交互,用户需自己编组请求JSON串,及解析响应JSON串。 兼容所有ES版本 。 Java High Level REST Client: 高级别的REST客户端,基于低级别的REST客户端,增加了编组请求JSON串、解析响应JSON串等相关api。 使用的版本需要保持和ES服务端的版本一致,否则会有版本问题。 2. Java

FlutterEasyPopup 弹层

我的未来我决定 提交于 2020-11-14 12:17:31
前言 弹出层(Popup)一直是各类App中一个重要的交互组成部分,很多时候,一个App中甚至会出现各种形形色色的弹出层。 比如,只有下半部分背景变暗的dropdown list,像这样: 再比如,引导用户操作的操作指引,像这样: 有时候,指引还有可能同时高亮显示多个组件,像这样: 甚至loading,是不是也可以看作是一种弹出层: 那么在Flutter上,能否简单方便的实现一个弹出层呢?答案是肯定的! Github地址强势插入: github.com/BakerJQ/flu… 思路 对于一个弹出层来说,最重要的一个特性是什么? 对!他是弹出来的! @$&#@!(一顿暴打...) 额咳。。。听我说完。。。 这也就意味着,它需要覆盖在当前页面之上。那么通过查阅,我们可以发现Flutter提供了两种方式来实现这一效果。 并不合适的方案:Overlay 第一种就是Overlay组件,该组件可以实现将Widget覆盖在所有页面之上。 Overlay有两个特性: 跨页面的覆盖,页面的跳转对覆盖层的Widget不会有任何影响 不阻挡手势,如果覆盖层没有阻挡手势的Widget,手势操作可直接穿过覆盖层直接作用到页面上 但是这两个特性,从某种程度上来说,与我们一般意义上的弹出层是相悖的。 首先,对于特性1来说,弹出层在一般情况下,都是与单页面的业务强相关的,那么就不应该出现该页面退出后

Linux 下 Wget 设置代理

*爱你&永不变心* 提交于 2020-11-09 14:25:02
http://droidyue.com/blog/2020/02/29/set-proxy-for-wget/ Linux进行网络下载,基本上是wget或者curl,比如我们这样去进行请求,如果没有代理,是访问不了的 1 2 3 4 5 6 7 8 9 [email protected] :/tmp $ wget google.com --2020-03-01 11:53:14-- http://google.com/ Resolving google.com ( google.com ) ... 46.82.174.69, 93.46.8.90 Connecting to google.com ( google.com ) |46.82.174.69|:80... connected. HTTP request sent, awaiting response... Read error ( Connection reset by peer ) in headers. Retrying. --2020-03-01 11:53:15-- ( try: 2 ) http://google.com/ Connecting to google.com ( google.com ) |46.82.174.69|:80... 所以,我们想要实现一些功能,需要为wget设置代理.方法很简单

vs code插件推荐

我只是一个虾纸丫 提交于 2020-11-02 19:31:59
注释 1. koroFileHeader 在vscode中用于生成文件头部注释和函数注释的插件。 支持所有主流语言 自动添加头部注释 自定义注释符号 文件头部添加注释: 在文件开头添加注释,记录文件信息 支持用户高度自定义注释选项 保存文件的时候,自动更新最后的编辑时间和编辑人 快捷键:window:ctrl+alt+i,mac:ctrl+cmd+i 在光标处添加函数注释: 在光标处自动生成一个注释模板,下方有栗子 支持用户高度自定义注释选项 快捷键:window:ctrl+alt+t,mac:ctrl+cmd+t 【注释规范】 关键词书写格式为: /** * @author ydr.me * @version 1.0 */ 使用@ key desc格式来书写,常用的关键词有: 关键字 描述 备注 @ auhor 作者 @ param 参数 @ example 示例 @ link 链接 @ namespace 命名空间 @ requires 依赖模块 @ return 返回值 @ version 版本号 其中,param关键词的格式为: /** * @param {String} 参数描述 */ TODO 1. Todo Tree 将项目中的TODO、FIXME等标记,以树状在浏览面板中展现。配置:“todo-tree.customHighlight”,用来指明不同的标签的颜色