创建搜索栏的最佳方法是什么?
放大镜应在左侧文本框内,垂直居中对齐。我觉得这是一种混乱的方式,我依靠空格,并且放大镜不是垂直对齐的。可以使用顶部像素边距,但似乎有一种更清洁的方法。刚开始学习html和CSS。听说这不是一个好习惯,不喜欢使用像素测量和空间。
.md-form.mt-0{
display:inline-flex;
width:500px;
}
.material-icons.mdc-button__icon{
position:absolute;
top:7px;
left: 2px;
}
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
rel="stylesheet">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<div class="md-form mt-0">
<i class="material-icons mdc-button__icon">search</i>
<input class="form-control" type="text" placeholder=" Search" aria-label="Search">
</div>
答案 0 :(得分:2)
您可以使用display: flex
风格的align-items: center
和.md-form.mt-0
。这将使居中的所有内容垂直对齐。现在,您只需要padding-left: 25px
的输入样式即可。因此不会重叠。
请参见下面的代码段
.md-form.mt-0{
width:500px;
display:flex;
align-items: center;
}
.material-icons.mdc-button__icon{
position:absolute;
}
.mdc-button__icon + input{
padding-left: 25px;
}
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
rel="stylesheet">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<div class="md-form mt-0">
<i class="material-icons mdc-button__icon">search</i>
<input class="form-control" type="text" placeholder="Search" aria-label="Search">
</div>
答案 1 :(得分:1)
您可以使用Bootstrap的默认.input-group
(https://getbootstrap.com/docs/4.3/components/input-group/)
如果输入的背景色困扰您,则可以根据需要进行调整。
此外,如果您愿意,也可以尝试摆脱分隔它们的边界,但我认为这是不必要的。
请参见下面的演示代码
.input-group .input-group-text {
background-color: #fff;
}
/* if you wish */
.input-group input.form-control{
border-left-color: #FFF;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" id="basic-addon1">
<i class="material-icons mdc-button__icon">search</i>
</span>
</div>
<input type="text" class="form-control" placeholder="Search" aria-label="Search" aria-describedby="basic-addon1">
</div>
答案 2 :(得分:1)
这是我的解决方案。仅HTML和CSS。放大镜是可免费使用的自举SVG。 运行代码片段以查看结果。
.svgWrapper{
position:absolute;
top:21px;
left:15px;
}
.searchBox{
text-indent:30px;
margin-top:10px;
width:200px
}
<html>
<div class="search">
<div class="svgWrapper">
<svg class="bi bi-search" width="1em" height="1em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M10.442 10.442a1 1 0 011.415 0l3.85 3.85a1 1 0 01-1.414 1.415l-3.85-3.85a1 1 0 010-1.415z" clip- rule="evenodd"/>
<path fill-rule="evenodd" d="M6.5 12a5.5 5.5 0 100-11 5.5 5.5 0 000 11zM13 6.5a6.5 6.5 0 11-13 0 6.5 6.5 0 0113 0z" clip- rule="evenodd"/>
</svg>
</div>
<input class='searchBox'type="search" placeholder="Search the web"results="0" />
</div>
</html>
答案 3 :(得分:0)
尝试一下:https://jsfiddle.net/wwWaldi/3972kghm/5/
.md-form.mt-0{
display:inline-flex;
width:500px;
}
.md-form.mt-0 input{
padding-left: 25px;
}
.material-icons.mdc-button__icon{
position:absolute;
top:7px;
left: 2px;
}