简体   繁体   English

向左显示输入而不是向右

[英]Reveal input to the left not the right

I have code that shows and reveals an input box to the right of the search icon.我有代码显示并显示搜索图标右侧的输入框。 I'm looking to have it slide open so the input is on the left side.我想让它滑动打开,这样输入就在左侧。 However, my attempts just make matters worse.然而,我的尝试只会让事情变得更糟。

Your assistance is appreciated.感谢您的帮助。

Below is the working example that shows the input box revealing to the right side.下面是显示右侧的输入框的工作示例。

 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="&#xf002;" 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>

Below is my broken attempt to do what my ultimate goal is:以下是我做我最终目标的失败尝试:

 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="&#xf002;" class="search-btn fa ib-m"><div class="search-close ib-m"><i class="fa fa-times"></i></div> </div></div>

There are several ways to achieve what you want, one of the easiest one could be reordering the HTML elements .有几种方法可以实现您想要的,最简单的一种方法是重新排序 HTML 元素 Also since you are using fonts for your icons, width and height attributes will not affect them .此外,由于您使用 fonts 作为图标, widthheight属性不会影响它们 So you just have to specify their size by font-size .所以你只需要通过font-size指定它们的大小。

So your code should be something like this:所以你的代码应该是这样的:

 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="&#xf002;" class="search-btn fa ib-m"> </div>

Not sure if this is what you are looking for, but here it is:不确定这是否是您正在寻找的,但它是:

 let search_btn = document.querySelector('.search-btn'); let search_div = document.querySelector('.search-div'); let search_input = document.querySelector('input[type=search]'); let search_close = document.querySelector('.search-close'); search_btn.addEventListener("click", function() { search_div.classList.add('show'); }) search_close.addEventListener("click", function() { search_div.classList.remove('show'); });
 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: top; width: 1.375em; height: 1.375em; border: none; outline: none; background: none; }.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-close { display: inline; width: 1.375em; height: 1.375em; text-align: center; cursor: pointer; }.search-content { width: 16rem; }.search-div { display: inline-block; width: 0; height: 0; overflow: auto; transition: width 500ms ease-in-out; }.show { width: 16rem; height: auto; overflow: auto; transition: width 1000ms ease-in-out; }
 <div class="search"> <div class="search-div"> <div class="search-content"> <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> <input type="submit" value="&#xf002;" class="search-btn fa ib-m"> </div> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css" rel="stylesheet" />

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM