国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何用CSS實現(xiàn)一個搜索引擎?

開發(fā) 前端
在搜索引擎中輸入關(guān)鍵詞,搜索引擎經(jīng)過檢索,返回關(guān)鍵詞對應(yīng)的數(shù)據(jù).既然道理都一樣,那能不能用純CSS實現(xiàn)一個搜索引擎呢?本文來聊聊他是如何實現(xiàn)的。

[[423373]]

大家好,我卡頌。

在CSS中,我們通過selector(選擇器)選擇樣式片段:

  1. .title { 
  2.   color: red; 

簡而言之,選擇器title對應(yīng)樣式color: red;

換個角度,我們也可以說:關(guān)鍵詞.title對應(yīng)數(shù)據(jù)color: red;

在我們生活中,還有什么東西依賴這種對應(yīng)關(guān)系呢?

一個很顯然的例子:搜索引擎。

在搜索引擎中輸入關(guān)鍵詞,搜索引擎經(jīng)過檢索,返回關(guān)鍵詞對應(yīng)的數(shù)據(jù).

既然道理都一樣,那能不能用純CSS實現(xiàn)一個搜索引擎呢?

別說,機(無)智(聊)的人還是很多的,真的有人搞了CSS實現(xiàn)的搜索引擎[1]

在該搜索引擎中輸入員工姓名,會顯示員工信息。

本文來聊聊他是如何實現(xiàn)的。

核心原理最基本的,我們需要一個搜索框,和一個顯示搜索結(jié)果的容器。

  1. <input type="search" value="" 
  2.   oninput="this.setAttribute('value', this.value)" 
  3. /> 
  4. <div id="result"></div> 
  • 注意oninput使用了一行JS代碼,這也是引擎中唯一一行JS代碼

我們希望輸入Tim,#result容器內(nèi)顯示搜索結(jié)果Tim Carry。

可以通過屬性選擇器 + 偽元素實現(xiàn):

  1. input[value="tim" i] ~ #result:before { 
  2.  content: "Tim Carry"

其中屬性選擇器中的i代表忽略內(nèi)容大小寫。

這就是本搜索引擎的核心原理,理論上只要選擇器規(guī)則越多,搜索結(jié)果就越豐富。

多個搜索結(jié)果

讓我們繼續(xù)擴展。假設(shè)有150個員工,為他們一一建立對應(yīng)關(guān)系:

每個員工一個div:

  1. <div id="results"
  2.   <div id="result0"></div> 
  3.   <div id="result1"></div> 
  4.   <div id="result2"></div> 
  5.   […] 
  6.   <div id="result148"></div> 
  7.   <div id="result149"></div> 
  8.   <div id="result150"></div> 
  9. </div> 

每個員工一條搜索結(jié)果:

  1. #result0:before { content: "Aurora Pleguezelo" } 
  2. // […] 
  3. #result15:before { content: "Alexandre Collin" } 
  4. #result16:before { content: "Alexandre Meunier" } 
  5. #result17:before { content: "Alexandre Stanislawski" } 
  6. // […] 
  7. #result150:before { content: "Zo Asmail" } 

接下來,設(shè)定搜索規(guī)則,首先隱藏所有搜索結(jié)果:

  1. #results div { display: none } 

然后,選擇一個粒度,建立搜索規(guī)則,比如我們選擇“姓”作為粒度:

  1. input[value="alexandre" i] ~ #results #result15, 
  2. input[value="alexandre" i] ~ #results #result16, 
  3. input[value="alexandre" i] ~ #results #result17 { 
  4.  display: block 

當輸入alexandre這個姓時,對應(yīng)的結(jié)果會display: block:

  1. #result15:before { content: "Alexandre Collin" } 
  2. #result16:before { content: "Alexandre Meunier" } 
  3. #result17:before { content: "Alexandre Stanislawski" } 

更近一步,姓名可以拆的更細,所以搜索的粒度可以更細:

可以分別以一個字母、兩個字母、三個字母...建立對應(yīng)關(guān)系。

搜索詞高亮

為了提升體驗,我們還希望「搜索詞高亮」。

比如,輸入cle后,搜索結(jié)果姓名中cle是加粗顯示的: 

[[423375]]

分為2步實現(xiàn):

自定義字體

在UTF-8的私有區(qū)域,為每個字母定義對應(yīng)的加粗字體,比如:m在該字體中對應(yīng)\e64d。

在搜索結(jié)果中用加粗字體替換常規(guī)字母

比如,輸入mar的搜索結(jié)果應(yīng)該為:Marion Aguirre。

將結(jié)果中的Mar替換為\e64d \e661 \e672,也就是自定義字體中對應(yīng)Mar的粗體字母。

總結(jié)

按照這個設(shè)定,制約本搜索引擎的,只有作者的想象力了。

比如使用flex布局的order屬性,競價排名不是夢:

如果你思考一陣,略帶疑惑的問:那CSS文件會不會很大?

哎,只能說,小了,格局小了。

雖然收錄150個員工的CSS文件有8MB大,但是畢竟收獲了快樂......

參考資料

[1]CSS實現(xiàn)的搜索引擎:

https://community.algolia.com/algoliasearch-client-css/demo/

 

責(zé)任編輯:姜華 來源: 魔術(shù)師卡頌
相關(guān)推薦

2017-11-27 13:39:29

Python大數(shù)據(jù)搜索引擎

2020-10-28 11:40:08

MySQL索引數(shù)據(jù)庫

2024-02-27 07:33:32

搜索引擎Rust模型

2020-12-31 09:20:51

Redis搜索引擎

2011-06-20 18:23:06

SEO

2020-12-10 11:18:47

Redis搜索引擎Java

2023-02-08 10:45:23

2009-07-30 10:40:56

搜索引擎優(yōu)化網(wǎng)站

2017-03-20 17:59:19

JavaScript模板引擎

2017-03-15 08:43:29

JavaScript模板引擎

2017-08-07 08:15:31

搜索引擎倒排

2025-08-04 07:47:44

2015-08-31 10:41:58

搜索引擎Google云應(yīng)用

2020-03-20 10:14:49

搜索引擎倒排索引

2022-03-31 20:15:21

圖像搜索引擎

2012-09-07 13:22:21

搜索搜狗

2022-10-08 09:13:18

搜索引擎?站

2009-02-19 09:41:36

搜索引擎搜狐百度

2010-04-20 11:43:46

2009-09-22 16:23:52

搜索引擎
點贊
收藏

51CTO技術(shù)棧公眾號

午夜视频久久久| 僵尸再翻生在线观看免费国语| 国产精品h在线观看| 国产精品自在在线| 国产精品一区在线免费观看| www.射射射| 国外av网站| 夜夜春成人影院| 欧美国产精品专区| 国产精品国产三级国产aⅴ浪潮| 国产日韩欧美一区二区| 免费福利在线视频| 国产欧美三级电影| 久久精品人人爽人人爽| 欧美激情国内偷拍| 91免费看蜜桃| jizzjizz国产精品喷水| 激情av在线| 亚洲自拍都市欧美小说| 久久精品av麻豆的观看方式| 亚洲欧美综合色| 国产午夜精品久久久| 国产欧美丝袜| 超碰影院在线| 国产一区二区三区视频在线| 国产在线精品不卡| 日韩欧美高清一区| 草草草在线视频| 精品国产亚洲一区二区在线观看| 午夜精品福利一区二区三区蜜桃| 亚洲a∨一区二区三区| 美女的尿口免费视频| 国产一区二区精品福利地址| 一区二区成人av| 台湾成人av| 日韩中文视频| 精品日韩视频在线观看| 欧美国产日韩免费| 加勒比一区二区三区| 韩国欧美一区| 久久亚洲二区三区| 久久精品视频免费播放| 在线heyzo| 26uuu久久噜噜噜噜| 色综合久久天天| 亚洲色图综合| 91精品国产高清久久久久久91| 在线一区免费观看| 亚洲精品第一国产综合野草社区| 91福利在线免费观看| 亚洲激情在线播放| 国产精品污www一区二区三区| 福利在线一区| 337p亚洲精品色噜噜| 九九99九九精彩| 成人免费高清视频在线观看| 国产精品永久免费| 亚洲一区二区三区中文字幕在线观看| 7799精品视频| 亚洲精品mv| 亚洲国产精品高清久久久| 免费特级黄色片| 国产婷婷色一区二区三区在线| 精品日韩欧美| 日韩和欧美一区二区三区| 555www成人网| 国产欧美在线| 真人抽搐一进一出视频| 丝袜美腿亚洲色图| 穿情趣内衣被c到高潮视频| 欧美日韩水蜜桃| 亚洲国产精品一区二区久| 日韩av一二三四区| 色欧美激情视频在线| 精品视频亚洲| 成人av电影在线网| 婷婷一区二区三区| 亚洲激情免费视频| 在线视频精品| koreanbj精品视频一区| 香蕉影视欧美成人| 蜜桃av在线免费观看| 欧美视频一区在线| 18网站在线观看| 国产精品久久久久久五月尺| 在线日本制服中文欧美| 精品久久久久久最新网址| 2022成人影院| 欧美多人爱爱视频网站| 成人国产在线观看| 亚洲看片网站| 亚洲一区在线播放| av免费在线播放网站| 国产精品久久久久永久免费观看 | 中文在线播放| 亚洲va中文字幕| 日本我和搜子同居的日子高清在线 | 午夜精品久久久久久久蜜桃app| 7777精品伊久久久大香线蕉语言 | 亚洲一区二区av在线| 日韩伦理一区二区三区| 91黄色在线看| 97人人澡人人爽| 久久久久久91香蕉国产| 久久久久久久综合狠狠综合| 国产精品第12页| 欧美精品在线免费播放| 久久综合久久综合久久综合| 天堂中文在线播放| 福利在线一区二区| 91精品国产九九九久久久亚洲| 日韩一区欧美一区| 一区二区三区四区在线观看国产日韩| 国产区在线视频| 欧美日本韩国在线| 亚洲香蕉av在线一区二区三区| 亚洲一二三四在线观看| 国产精品影视网| 免费一级欧美在线观看视频| 99不卡视频| 狠狠综合久久av| 国产精品免费av| √8天堂资源地址中文在线| 日韩av电影中文字幕| 中文字幕日韩精品一区 | 欧美一级高清片| 亚洲综合一二区| 国产精品影视网| 蜜桃在线一区二区三区| 欧美日韩视频| 欧州一区二区三区| 在线影视一区| 精品国产一二| 日韩av在线免费观看一区| 黄色欧美日韩| 四虎在线免费看| 91精品久久久久久久久青青| 26uuu色噜噜精品一区二区| 天堂在线视频| 国产激情久久久久| 五月激情六月综合| 国产欧美精品久久| 国产日韩在线观看视频| 啊灬啊灬啊灬啊灬高潮在线看| 日韩美女在线看| 欧美va亚洲va在线观看蝴蝶网| 亚洲精品美国一| 亚洲人www| 国精产品一区一区三区四川| 成人欧美一区二区三区黑人| 久久精品日产第一区二区三区高清版 | 日韩黄色片在线观看| 日韩av地址| 高清一区二区三区视频| 欧美一区二区视频免费观看| 欧洲精品99毛片免费高清观看| 黑人巨大精品欧美一区二区奶水| 91久久精品视频| 亚洲五月六月丁香激情| 欧美大片1688| 国产精品久久久久久久9999| 日韩三级av在线播放| 国产一区二区精品久久91| 成人国产精品| 日本v片在线免费观看| 日本在线视频一区| 国产人妖伪娘一区91| 动漫精品视频| 欧美18hd| 国产乱子伦视频一区二区三区 | 国产在线精品二区| 成人久久18免费网站图片| 亚洲福利在线看| 亚洲成人午夜影院| 亚洲成人福利片| 不卡av日日日| 日韩精品第1页| 久草视频这里只有精品| 成人精品在线视频| 91在线精品视频| 91精品视频在线免费观看| 欧美亚洲成人xxx| 日韩精品一区二区三区第95| 亚洲一区在线免费观看| 亚洲色图清纯唯美| 91在线观看污| 天堂影院一区二区| 久久99热狠狠色一区二区| 亚洲香蕉网站| 欧美va亚洲va日韩∨a综合色| 99久久www免费| 操欧美老女人| 狠狠色丁香久久婷婷综| 亚洲青色在线| 精精国产xxx在线视频app | 欧美极品中文字幕| 成人羞羞网站入口免费| 99re99热| 国产av不卡一区二区| 青青在线视频免费|