【问题标题】:Scroll Text in Jquery Autocomplete在 Jquery 自动完成中滚动文本
【发布时间】:2020-10-07 21:04:51
【问题描述】:

我发现以下小提琴可以防止自动完成建议中的任何自动换行并且只在一行中显示它们:

http://jsfiddle.net/DwpZp/8/

$("#ac").autocomplete({
  source: [
    "someveryve rylonglongword",
    "someveryverylong longwordsomeveryverylonglongword"
  ]
});
.ui-menu-item a {
  max-width: 200px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.9.2/jquery-ui.min.js"></script>
<link href="https://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" rel="stylesheet" />

<div>
  <input type="text" id="ac" />
</div>

有什么方法可以对超出最大宽度的自动完成建议进行动画处理,并使它们在鼠标悬停时从左到右自动滚动?请参阅下面的 sn-p 示例我想实现的悬停动画自动滚动:

.labelContainer {
  height: 30px;
  border: 1px solid #000;
  border-radius: 3px;
  border-radius: 3px;
  display: flex;
  width: 200px;
  overflow: hidden;
  position: relative;
  padding : 5px;
}

.labelContainer span {
  position: absolute;
  white-space: nowrap;
  transform: translateX(0);
  transition: 1s;
}

.labelContainer:first-of-type:hover span {
  width: auto;
  transform: translateX(calc(200px - 100%));
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div class="labelContainer">
      <span>The long text should scroll when user hovers on it.</span>
    </div>

    <div class="labelContainer">
      <span>Should Not Scroll</span>
    </div>

【问题讨论】:

    标签: javascript html jquery css autocomplete


    【解决方案1】:

    这样试试

    $("#ac").autocomplete({
      source: [
        "someveryve rylonglongword",
        "someveryverylong longwordsomeveryverylonglongword"
      ]
    });
    .ui-menu-item {
      overflow: hidden;
      position: relative;
      display: flex;
      max-width: 200px;
      white-space: nowrap;
    }
    .ui-menu-item a {
      white-space: nowrap;
      position: relative;
      transform: translateX(0);
      transition: transform 1s;
      box-sizing: border-box;
    }
    
    .ui-menu-item:hover a {
      width: auto;
      transform: translateX(calc(200px - 100%));
    }
    
    .ui-widget-content a.ui-state-focus {
      margin: -1px;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="https://code.jquery.com/ui/1.9.2/jquery-ui.min.js"></script>
    <link href="https://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" rel="stylesheet" />
    
    <div>
      <input type="text" id="ac" />
    </div>

    【讨论】:

    • 亲爱的@yunzen,非常感谢您的回复。您的代码确实适用于长的自动完成建议,但不幸的是它也会将短项目滚动到视野之外,即使它们没有超出宽度。此外,我意识到悬停在项目上并不是触发动画的最佳方式,我想为此使用类似 .ui-state-active 的类。如果我使用箭头键选择建议,那么滚动也将起作用。你能帮我解决这些问题吗?
    • 我已经设法改变了动画的触发方式,方法是用这个.ui-menu-item a.ui-state-focus { width: auto; transform: translateX(calc(200px - 100%));} 替换你的这部分代码.ui-menu-item:hover a { width: auto; transform: translateX(calc(200px - 100%)); }。不过,仍然无法处理滚动的短项。
    • 亲爱的@yunzen,我也刚刚注意到,在您的代码中,原始小提琴中没有text-overflow: ellipsis; 属性,因此很难判断哪个自动完成建议实际上被溢出了。跨度>
    猜你喜欢
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 2016-10-17
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    相关资源
    最近更新 更多