Π― Π΄Π°ΠΌ Π²Π°ΠΌ ΠΊΠΎΠ΄, ΡΡΠΎ Π±Ρ Π²Ρ ΡΠ°ΠΌΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" href="https://unpkg.com/mustard-ui@latest/dist/css/mustard-ui.min.css">
<link rel="stylesheet" href="./css/style.css">
</head>
<body>
<h1>Elastic search</h1>
<input type="text" id="elastic">
<ul class="elastic">
<li>Lorem</li>
<li>dollor</li>
<li>lol</li>
<li>Amperka</li>
<li>consectetur</li>
<li>meme</li>
<li>elit</li>
<li>do</li>
<li>hello world</li>
<li>tempor</li>
<li>incididunt</li>
</ul>
<script src="./js/script.js"></script>
</body>
</html>
// ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΡ ΡΡ
ΠΎΠΆΠΈΠ΅ Ρ Π²Π°ΡΠΈΠΌΠΈ, Π²Π²Π΅Π΄ΡΠ½Π½ΠΌΠΈ Π±ΡΠΊΠ²Π°ΠΌΠΈ Ρ Π±ΡΠΊΠ²Π°ΠΌΠΈ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
ΡΠ»ΠΎΠ², Π±ΡΠΊΠ²Ρ.
document.querySelector('#elastic').oninput = function () {
let val = this.value.trim();
let elasticItems = document.querySelectorAll('.elastic li');
if (val != '') {
elasticItems.forEach(function (elem) {
if (elem.innerText.search(val) == -1) {
elem.classList.add('hide');
elem.innerHTML = elem.innerText;
}
else {
elem.classList.remove('hide');
var str = elem.innerText;
elem.innerHTML = inserMark(str, elem.innerText.search(val), val.length);
}
});
} else {
elasticItems.forEach(function (elem) {
elem.classList.remove('hide');
elem.innerHTML = elem.innerText;
});
}
}
// Π΄Π°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠ°ΡΠΊΠΈΡΡΠ΅Ρ ΡΡ
ΠΎΠΆΠΈΠ΅ Π±ΡΠΊΠ²Ρ, Π²Π²Π΅Π΄ΡΠ½Π½ΡΠ΅ Π²Π°ΠΌΠΈ Ρ Π±ΡΠΊΠ²Π°ΠΌΠΈ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
ΡΠ»ΠΎΠ².
function inserMark (string, pos, len) {
//lol
//l<mark>o</mark>l
//l+<mark>+o+</mark>+l
return string.slice(0, pos) + '<mark>' + string.slice(pos, pos + len) + '</mark>' + string.slice(pos + len);
}
body {
width: 500px;
height: 500px;
margin: auto;
}
#elastic {
display: block;
margin: 40px 0px;
}
.elastic li.hide {
display: none;
}
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»Π°ΡΡ ΠΆΡΠ»ΡΠ°Ρ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° ΡΠ΅ΠΊΡΡΠ°, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΅Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ. ΠΠΎΡ ΠΊΠΎΠ΄.
mark {
background-color: /* Π²Π°Ρ ΡΠ²Π΅Ρ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: */ blue;
}
https://www.youtube.com/watch?v=vV4cUAZvEy4&list=PLM7wFzahDYnG-oMkclNX0FIcLZR18hFDM&index=54 (ΡΡΠΎΠΊ Π½Π° YouTube)
https://github.com/kylelogue/mustard-ui (CSS framework)