📜  使用 HTML、CSS 和 JavaScript 的搜索栏

📅  最后修改于: 2021-09-01 03:43:18             🧑  作者: Mango

每个网站都需要一个搜索栏,用户可以通过该搜索栏在该页面上搜索他们关注的内容。基本的搜索栏只能使用 HTML、CSS 和 JavaScript 来制作。高级搜索算法会查找许多内容,例如相关内容,然后显示结果。我们将要创建的将在字符串查找子字符串。

HTML

在本节中,我们将编写 HTML 部分的代码。在 HTML 中,我们将只链接我们的样式表和我们的 JavaScript 文件。输入标签用于创建搜索栏,它包括几个属性,如类型、占位符、名称。我们还需要一个包含不同动物名称的项目列表,以便我们通过它搜索动物。标签中使用的类和 ID 将在下面的样式表中定义。



      

    
        Creating Search Bar using HTML
        CSS and Javascript
    
      
    
    

  

      
    
    
      
    
    
            
  1. Cat
  2.         
  3. Dog
  4.         
  5. Elephant
  6.         
  7. Fish
  8.         
  9. Gorilla
  10.         
  11. Monkey
  12.         
  13. Turtle
  14.         
  15. Whale
  16.         
  17. Aligator
  18.         
  19. Donkey
  20.         
  21. Horse
  22.     
                   

输出:

CSS

虽然上面的输入标签和有序列表看起来不错,但它仍然需要一些样式。对于搜索栏样式,添加了一些边距和填充以使其看起来干净。测量值以百分比表示,以便在任何尺寸的屏幕(移动设备、桌面设备等)中使用时会自行调整。 Webkit 过渡用于在单击时更改搜索栏的宽度。搜索栏的初始宽度是 30%,但当它被点击时,它将变为 70%,并有 0.15 秒的缓入缓出过渡。

#searchbar{
     margin-left: 15%;
     padding:15px;
     border-radius: 10px;
   }
 
   input[type=text] {
      width: 30%;
      -webkit-transition: width 0.15s ease-in-out;
      transition: width 0.15s ease-in-out;
   }
 
   /* When the input field gets focus,
        change its width to 100% */
   input[type=text]:focus {
     width: 70%;
   }
 
  #list{
    font-size:  1.5em;
    margin-left: 90px;
   }
 
.animals{
   display: list-item;    
  } 

输出
添加样式后,我们的页面应该是这样的。

注意:如果页面的样式没有改变,请确保 style.css 文件与 index.html 位于同一文件夹中。
它仍然不完整,因为我们仍然需要 JavaScript 来完成这个搜索栏的功能。

JavaScript

在搜索栏的 HTML 代码中,我们给 input 输入一个 id=”searchbar” 和我们调用的 onkeyup,函数“search_animal”。每次释放键盘上的键时,onkeyup 都会调用该函数。
我们首先使用 getElementById 获取输入。确保将其转换为小写,以避免在搜索时区分大小写。文档数组存储在 x 中。这包含所有具有 id=”animals” 的列表。之后运行循环以检查每个文档的innerHTML 是否包含输入子字符串(如果不包含),则将显示属性设置为“无”,使其在前端不可见。

// JavaScript code
function search_animal() {
    let input = document.getElementById('searchbar').value
    input=input.toLowerCase();
    let x = document.getElementsByClassName('animals');
      
    for (i = 0; i < x.length; i++) { 
        if (!x[i].innerHTML.toLowerCase().includes(input)) {
            x[i].style.display="none";
        }
        else {
            x[i].style.display="list-item";                 
        }
    }
}

输出: