Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么集中时输入会移动?_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 为什么集中时输入会移动?

Javascript 为什么集中时输入会移动?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个div围绕着一个输入和一个按钮,每当输入被聚焦时,它就会移动。我怎样才能让它停止移动 这是我的html: <div class="search"> <div class="input-container"> <input type="text" name="query" class="searchbar" placeholder="What do you want to learn about?" /> <button typ

我有一个div围绕着一个输入和一个按钮,每当输入被聚焦时,它就会移动。我怎样才能让它停止移动

这是我的html:

<div class="search">
  <div class="input-container">
    <input type="text" name="query" class="searchbar" placeholder="What do you want to learn about?" />
    <button type="submit" class="search-button">Search</button>
  </div>
</div>
下面是我的js/jquery:

$('input').focus(
function(){
    $('.input-container').addClass('is-focused');
}).blur(
function(){
    $('.input-container').removeClass('is-focused');
});
我还有一把小提琴,你可以在聚焦时看到输入移动。

你可以改变

 .is-focused{
    border-style: solid;
    border-color: #986fa5;
  }

可以看到

使用大纲

 .is-focused{
    outline-style: solid;
    outline-color: #986fa5;
  }
演示:

或使用负边距(不推荐):

或盒子阴影

 .is-focused {
   box-shadow: 0  0 0 3px #986fa5;
  }

这是因为边框的大小,所以可以使用
:before
伪元素和
位置:绝对以解决问题

$('input').focus(函数(){$('input-container').addClass('is-focused');}).blur(函数(){$('input-container').removeClass('is-focused');})
body{margin:10px;}
输入{
填充:0;
边界:0;
文本缩进:5px;
}
输入:焦点{轮廓宽度:0px;}
.是焦点{位置:相对;}
.重点:之前{
内容:'';
位置:绝对位置;
顶部:0;左侧:0;底部:0;右侧:0;
边框样式:实心;
边框颜色:#986fa5;
}
.search*{height:35px;}
.searchbar{宽度:450px;}

搜寻
A按元素的边框宽度展开元素,而an则不展开元素。只需用边框替换轮廓,跳跃将被删除

$('input')。焦点(函数(){
$('.input container').addClass('is-focused');
}).blur(函数(){
$('.input container').removeClass('is-focused');
});
正文{
利润率:10px;
}
输入{
填充:0;
边界:0;
}
.专注{
轮廓样式:实心;
轮廓颜色:#986fa5;
}
输入:焦点{
轮廓宽度:0px;
}
.搜索*{
高度:35px;
}
/*.搜索按钮{
位置:绝对位置;
}*/
.搜索栏{
宽度:450px;
}

搜寻

这是因为您使用了边框。边框将移动元素。查看使用大纲的答案,这不会移动您的元素。这有效。为什么边框会让它移动?@user3494047基本上是因为边框会占用页面空间,而轮廓不会。这是一些你不会马上知道的事情,但这是一篇关于它的文章,也是一个关于它的答案。
 .is-focused{
    outline-style: solid;
    outline-color: #986fa5;
  }
 .is-focused{
    border-style: solid;
    border-color: #986fa5;
    margin:-3px;
  }
 .is-focused {
   box-shadow: 0  0 0 3px #986fa5;
  }