【问题标题】:Alternative of -webkit-outer-spin-button and -webkit-inner-spin-button in Firefox在 Firefox 中替代 -webkit-outer-spin-button 和 -webkit-inner-spin-button
【发布时间】:2017-10-02 06:55:48
【问题描述】:

我需要在输入数字字段中的向上和向下箭头左侧留出一些空间,我打算在其中默认放置一些符号。但是-webkit-outer-spin-button-webkit-inner-spin-button 现在不能在 Firefox 上运行。 Firefox 是否支持任何替代方案?我需要右对齐文本,并且文本(此处为数字)必须显示在默认符号的左侧。

我试图实现的是这样的(在 Chrome 中): https://jsfiddle.net/1dddncj0/3/

但这个技巧在 Firefox 或 Edge 中不起作用。

【问题讨论】:

  • 您可能需要使用 Javascript 来实现这一点。
  • 我使用javascript没有问题。但是如何实现呢? @GabrielCheung
  • 您需要 Firefox 上的旋转按钮吗?
  • 是的。 @GabrielCheung
  • 我误解了你的要求。似乎 JS 无法满足您的要求。我会试一试的。

标签: html css firefox webkit html5-input-number


【解决方案1】:

不太确定它是否运作良好。并且不建议您达到此要求。我认为您应该摆脱默认的旋转按钮。

HTML:

<div class="edit-wrapper">
  <input id="edit_input_1" type="number" min="0" max="999">
  <input id="edit_input_2" type="text">
</div>

CSS:

.edit-wrapper {
  max-width: 80px;
  position: relative;
}

.edit-wrapper input[type=number] {
  width: 100%;
  text-align: right;
  -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
  -moz-box-sizing: border-box;    /* Firefox, other Gecko */
}

.edit-wrapper input[type=number]::-webkit-outer-spin-button,
.edit-wrapper input[type=number]::-webkit-inner-spin-button {
  margin-left: 20px;
}

.edit-wrapper input[type=number]::-moz-outer-spin-button,
.edit-wrapper input[type=number]::-moz-inner-spin-button {
  margin-left: 20px;
}

.edit-wrapper:before {
    content: '%';
    position: absolute;
    right: 20px;
    top: 1px;
}
#edit_input_1 {
  color: transparent;
  text-align: left;
}
#edit_input_2 {
  width: 100%;
  background: transparent;
  pointer-events: none;
  max-width: 80px;
  height: 100%;
  border: 0;
  padding-right: 33px;
  text-align: right;
  box-sizing: border-box;
  position: absolute;
  top: 0;
  left: 0;
}

Javascript:

var viewInput = document.getElementById('edit_input_2');
var manipulateInput = document.getElementById('edit_input_1');

manipulateInput.addEventListener('change', function(){
    viewInput.value = manipulateInput.value;
})

manipulateInput.addEventListener('keyup', function(e){
    viewInput.value = manipulateInput.value;
})

https://jsfiddle.net/1dddncj0/5/

【讨论】:

  • 它没有那么敏感。在 chrome 中,它阻止我使用键盘输入内容。
  • 不,这不是一个好的解决方案。这就是为什么我建议您摆脱默认的旋转按钮并自己编写一个组件。我还尝试了direction: rtltext-algin: left;text-intent: 30px,在Firefox 上仍然没有运气。
  • 对于像我这样的新手@gabriel 来说,自己编写组件似乎并不容易
  • 和这个方案差不多,只是用Javascript监听点击事件创建一个旋转按钮,并更新输入值。
猜你喜欢
  • 2016-12-18
  • 2014-05-20
  • 2012-06-20
  • 2011-11-26
  • 1970-01-01
  • 2021-09-18
  • 2015-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多