javascript - ul 下拉菜单在页面缩放时略微移动

标签 javascript jquery html css

我有一个带有自动建议下拉菜单的输入。我遇到的问题是当页面缩放时,ul 会从输入字段稍微移动,因此它不再与输入字段平行或齐平。有没有更好的方法可以做到这一点?我这里有代码,我还制作了一个 jsfiddle进行演示。

.suggestionsBox
{
  position:absolute; 
  top:24px;
  left:37px;
  width:200px;
  padding:0px;
  background-color:fff;
}
.suggestionList
{
  margin:0px;
  padding:0px;
}
.suggestionList ul li 
{
  list-style:none;
  margin: 0px;
  padding:6px;
}
.suggestionList ul li:hover 
{
 background-color: #DAD6D6;
 color:#000;
}
ul
{
 font-size:12px;
 padding:0;
 margin:0;
 border:1px solid grey;
 border-top:none; 
}
.load
{
  background-position:right;
  background-repeat:no-repeat;
}
table
{
  border-collapse:collapse; 
}
#suggest 
{
  position:relative;
}
#email
{
  outline: none; 
  width:200;color:grey;
  border:1px solid grey;
  padding:2;
} 

<div id = "suggest">
<div>
  <table>
    <td>email:</td>
    <td><input type = "text" id = "email" autocomplete = "off" placeholder = "type something then zoom" /></td>
  </table>

<div class="suggestionsBox" id = "suggestions" style = "display: none;">
<div class="suggestionList" id = "suggestionsList">
</div></div></div></div>

和javascript:

$('#email').bind('keyup',function() {

            if($('#email').val().length >0) {

                $('#suggestions').show();
                $('#suggestionsList').html("<ul><li>now zoom in or out</li><ul>");
          }else $('#suggestions').hide();

     });

最佳答案

是的,所以问题在于每个浏览器处理文本位缩放的方式。请注意,大多数浏览器都可以很好地处理放大和缩小 div 和其他固定大小的元素,但是由于文本、字体更具体,会显着改变字符宽度,因此您会遇到像现在这样的不一致。

通过插入一个设置为 position: relative 的容器 div,将输入和自动完成 div 紧贴在一起,问题就很容易解决了。依偎?是的,很舒服。

Here's a JSFiddle这应该很清楚地解释一切。

关于javascript - ul 下拉菜单在页面缩放时略微移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15864995/

相关文章:

html - 第一个移动站点

html - "Build Warning: Layout requested does not exist"

javascript - 单击仅在当前 Div 中更改多个 Div 类

javascript - 如何将多个纹理发送到 WebGL 中的片段着色器?

javascript - 如何在悬停条形图上添加 "shadow"?

javascript - jQuery slideDown 函数在动画结束时垂直跳转

javascript - 关闭模态问题

javascript - 用户查看弹出窗口更改变量值的次数

html - 使用 CSS 动态清除 float

javascript - AJAX 调用未完成时停止 JS 函数执行