javascript - 向左显示输入而不是向右
问题描述
我的代码显示并显示了搜索图标右侧的输入框。我想让它滑动打开,这样输入就在左侧。然而,我的尝试只会让事情变得更糟。
感谢您的帮助。
下面是显示右侧的输入框的工作示例。
var search_btn = document.querySelector(".search-btn");
search_btn.addEventListener("click",function(){
document.querySelector('.search-slide').classList.toggle("active");
document.querySelector('.search-slide input[type=search]').focus();
})
var close_btn = document.querySelector(".search-close");
close_btn.addEventListener("click",function(){
document.querySelector('.search-slide').classList.toggle("active");
});
input {
max-width: 100%;
padding: 0;
margin: 0;
font-size: 1em;
color: inherit;
}
input[type=submit],
input[type=button] {
cursor: pointer;
}
.ib-m {
display: inline-block;
vertical-align: middle;
}
.search {
min-width: 18.9375em;
}
.search input[type=submit] {
vertical-align: middle;
width: 1.375em;
height: 1.375em;
border: none;
outline: none;
background: none;
-webkit-transition: opacity 100ms ease-in-out;
transition: opacity 100ms ease-in-out;
}
.search input[type=submit]:hover {
opacity: .5;
}
.search input[type=search] {
width: 14em;
height: 2.5em;
padding: 0 .375em;
border: none;
border-bottom: 1px solid #000;
margin-left: .1875em;
background: inherit;
-webkit-transition: border-color 100ms ease-in-out;
transition: border-color 100ms ease-in-out;
}
.search input[type=search]:focus {
border-bottom-color: inherit;
outline: none;
}
.search-slide {
width: 0;
height: 2.5em;
overflow: hidden;
transition:width 0.3s ease;
}
.search-slide.active{width:15.5625em}
.search-close {
width: 1.375em;
height: 1.375em;
text-align: center;
cursor: pointer;
-webkit-transition: opacity 100ms ease-in-out;
transition: opacity 100ms ease-in-out;
}
.search-close:hover {
opacity: .5;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css" rel="stylesheet"/>
<div class="search">
<input type="submit" value="" class="search-btn fa ib-m"><div class="search-slide ib-m">
<input type="search" placeholder="Enter your search" class="ib-m"><div class="search-close ib-m"><i class="fa fa-times"></i></div>
</div></div>
以下是我做我最终目标的失败尝试:
var search_btn = document.querySelector(".search-btn");
search_btn.addEventListener("click",function(){
document.querySelector('.search-slide').classList.toggle("active");
document.querySelector('.search-slide input[type=search]').focus();
})
var close_btn = document.querySelector(".search-close");
close_btn.addEventListener("click",function(){
document.querySelector('.search-slide').classList.toggle("active");
});
input {
max-width: 100%;
padding: 0;
margin: 0;
font-size: 1em;
color: inherit;
}
input[type=submit],
input[type=button] {
cursor: pointer;
}
.ib-m {
display: inline-block;
vertical-align: middle;
}
.search {
min-width: 18.9375em;
}
.search input[type=submit] {
vertical-align: middle;
width: 1.375em;
height: 1.375em;
border: none;
outline: none;
background: none;
-webkit-transition: opacity 100ms ease-in-out;
transition: opacity 100ms ease-in-out;
}
.search input[type=submit]:hover {
opacity: .5;
}
.search input[type=search] {
width: 14em;
height: 2.5em;
padding: 0 .375em;
border: none;
border-bottom: 1px solid #000;
margin-left: .1875em;
background: inherit;
-webkit-transition: border-color 100ms ease-in-out;
transition: border-color 100ms ease-in-out;
}
.search input[type=search]:focus {
border-bottom-color: inherit;
outline: none;
}
.search-slide {
width: 0;
height: 2.5em;
overflow: hidden;
transition:width 0.3s ease;
}
.search-slide.active{width:15.5625em}
.search-close {
width: 1.375em;
height: 1.375em;
text-align: center;
cursor: pointer;
-webkit-transition: opacity 100ms ease-in-out;
transition: opacity 100ms ease-in-out;
}
.search-close:hover {
opacity: .5;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css" rel="stylesheet"/>
<div class="search">
<input type="search" placeholder="Enter your search" class="ib-m"><div class="search-slide ib-m">
<input type="submit" value="" class="search-btn fa ib-m"><div class="search-close ib-m"><i class="fa fa-times"></i></div>
</div></div>
解决方案
有几种方法可以实现您想要的,最简单的一种方法是重新排序 HTML 元素。此外,由于您为图标使用字体,width
并且height
属性不会影响它们。所以你只需要指定它们的大小font-size
。
所以你的代码应该是这样的:
var search_btn = document.querySelector(".search-btn");
search_btn.addEventListener("click", function() {
document.querySelector('.search-slide').classList.toggle("active");
document.querySelector('.search-slide input[type=search]').focus();
})
var close_btn = document.querySelector(".search-close");
close_btn.addEventListener("click", function() {
document.querySelector('.search-slide').classList.toggle("active");
});
input {
max-width: 100%;
padding: 0;
margin: 0;
font-size: 1em;
color: inherit;
}
input[type=submit],
input[type=button] {
cursor: pointer;
}
.ib-m {
display: inline-block;
vertical-align: middle;
}
.search {
min-width: 18.9375em;
}
.search input[type=submit] {
vertical-align: middle;
border: none;
outline: none;
background: none;
-webkit-transition: opacity 100ms ease-in-out;
transition: opacity 100ms ease-in-out;
}
.search input[type=submit]:hover {
opacity: .5;
}
.search input[type=search] {
width: 14em;
height: 2.5em;
padding: 0 .375em;
border: none;
border-bottom: 1px solid #000;
margin-left: .1875em;
background: inherit;
-webkit-transition: border-color 100ms ease-in-out;
transition: border-color 100ms ease-in-out;
}
.search input[type=search]:focus {
border-bottom-color: inherit;
outline: none;
}
.search-slide {
width: 0;
height: 2.5em;
overflow: hidden;
transition: width 0.3s ease;
}
.search-slide.active {
width: 15.5625em
}
.search-close {
text-align: center;
cursor: pointer;
-webkit-transition: opacity 100ms ease-in-out;
transition: opacity 100ms ease-in-out;
}
.search-close:hover {
opacity: .5;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css" rel="stylesheet" />
<div class="search">
<div class="search-slide ib-m">
<input type="search" placeholder="Enter your search" class="ib-m">
<div class="search-close ib-m"><i class="fa fa-times"></i></div>
</div>
<input type="submit" value="" class="search-btn fa ib-m">
</div>
推荐阅读
- python - 如何用硒提取href链接标题?
- c# - xamarin 绑定类属性
- pandas - 如何使用 boto3 从 S3bucket 子文件夹中获取文件内容?
- mysql - MySQL不断重新启动并且无法连接到它
- html - 我可以在 Open Graph 中使用相对路径吗?
- android - 有什么方法可以使用 Flutter 从我的设备上卸载应用程序?
- kotlin - 为什么 String.toDouble() 会增加小数位?
- php - .htacess 将分页添加到文件 S_NSW.php
- asp.net-core - 从 .NET Core 将视频流式传输到 Safari
- java - 是否可以在输出上方使用扫描仪显示输出?