【问题标题】:Bootstrap addon causes page to scroll horizontally when on mobileBootstrap 插件导致页面在移动设备上水平滚动
【发布时间】:2020-05-02 16:10:23
【问题描述】:

我的 cshtml 中有一个包含 Bootstrap 插件的输入组。该插件被添加到表单控件中。在移动设备上,聚焦后,页面会水平向右滚动,并且可以看到页面的右边距。它在页面外滚动并停留在那里,直到输入框失去焦点,然后页面再次居中。当输入获得焦点时,如何保持页面居中? 我的代码:

<div class="col-xs-12 text-left m-b-20" data-bind="validationElement: hin">
  <div>
    <span id="hin"
      data-bind="resourceText: 'Resource/File/Path/HIN', css: { error: hin.isModified() && !hin.isValid() }"></span>
  </div>

  <div class="input-group">
    <span class="input-group-addon" style="background-color: white;" id="basic-addon3"><b>C</b></span>

    <input id="hinInput" type="text" inputmode="numeric" class="form-control" aria-describedby="basic-addon3"
      placeholder="HIN" data-bind="validationOptions: {insertMessages: false}"
      onfocus="document.getElementById('hin').classList.add('focused');"
      onblur="document.getElementById('hin').classList.remove('focused');" autocomplete="off" />
  </div>

  <p class="validationMessage" data-bind="validationText: hin"></p>
</div>

我已尝试将字体大小设置为 16 像素,以防止可能发生的任何缩放但不起作用。我尝试为 input-group 类添加一个大小调整选项,即 input-group-lg 和 input-group-sm 但这不起作用。我尝试在包含不起作用的输入组的 div 容器周围放置填充和边距。我尝试将overflow: hidden 设置为输入,但没有效果。除了数字或其他方法之外,到目前为止还没有任何效果。我取得成功的唯一方法是在输入聚焦并触发滚动事件时侦听 window.onscroll 事件,立即滚动回 X 平面中的 0 位置,即window.scrollTo(0, window.pageYOffset)。这使页面居中,但它具有来自 2 个连续滚动事件的不良屏幕“抖动”效果。为什么这种滚动会发生在移动设备上,有什么方法可以避免吗?

编辑: 这是输入元素类的CSS

.form-control {
  display: block;
  width: 100%;
  height: 34px;
  padding: 6px 12px;
  font-size: 14px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #d9dce5;
  border-radius: 4px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}

输入组引导类的更多 CSS。请注意,由于此代码是为一家大公司指定的,因此类的属性分布在 .css 文件中的单独语句中,并按它们与其他类共享的属性进行分组。

`.input-group {
  position: relative;
  display: table;
  border-collapse: separate;
}
.input-group[class*="col-"] {
  float: none;
  padding-left: 0;
  padding-right: 0;
}
.input-group .form-control {
  position: relative;
  z-index: 2;
  float: left;
  width: 100%;
  margin-bottom: 0;
}
.input-group .form-control:focus {
  z-index: 3;`

【问题讨论】:

  • 您能否发布受影响输入的 CSS?
  • @Josh 我已经发布了输入元素类的 css。如果您想看其他课程,请告诉我
  • 可能你在其他.row 里面有一个.row 没有容器,你可以通过在body 和html 中添加overflow-x:hidden 来解决html,body{overflow-x:hidden}`跨度>
  • 你能把#hinInputdiv.input-group的CSS贴出来吗?
  • @Sim1-81 这是部分视图,没有任何bodyhtml 标签。尽管如此,我还是将标签添加到了顶部,并在它们中都包含了style="overflow-x:hidden",但这并没有奏效。这个 div 当前嵌套在一个 .row 和另一个 .col-xs-12 容器中

标签: javascript jquery html css twitter-bootstrap-3


【解决方案1】:

这个 div 嵌套在另一个具有 css class=row 的 div 中。一旦我在该父 div 中插入 style="max-width:100%",问题就解决了。

【讨论】:

    猜你喜欢
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    相关资源
    最近更新 更多