如何设置输入滑块的宽度(以像素为单位)?

11

对于这段HTML代码:

<div>
   <code>/range/1-3</code><br />
   <input type="range" value="0" min="0" max="100" onchange="send('/range/1', parseInt(this.value))" /><br />
   <input type="range" value="0" min="0" max="100" onchange="send('/range/2', parseInt(this.value))" /><br />
   <input type="range" value="0" min="0" max="100" onchange="send('/range/3', parseInt(this.value))" />
</div>

我想在HTML文件的头部添加一些CSS以设置幻灯片的某些类的宽度。

这里是整个文件的链接,其中包括3个CSS定义和一个短的JS用于在滑块之间传递值。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <script type="text/javascript" charset="utf-8">

      var ws = null

      window.addEventListener('load', function() {
        if ('WebSocket' in window) {
          ws = new WebSocket('ws://localhost:60001')
          ws.onmessage = function(e) {
            var m = JSON.parse(e.data)
            if (m) {
              var e = document.getElementById(m[0])
              if (e)
                e.value = parseInt(m[1] * 100)
            }
          }
        }
      })

      function send(k, v) {
        var m = JSON.stringify([k, v])
        if (ws && ws.OPEN)
          ws.send(m)
        if (console)
          console.log(m)
      }

    </script>
        <style type="text/css" media="screen">

            div {
                margin-bottom: 1em;
            }

            code {
                color: gray;
            }
            .slider-width {
                width: 100px;
            }

    </style>
  </head>
  <body>

    <div>
      <code>/qc/lfo/1</code><br />
      <input id="/qc/lfo/1" type="range" />
    </div>

    <div>
      <code>/range/1-3</code><br />
      <input class="slider-width" type="range" value="0" min="0" max="100" onchange="send('/range/1', parseInt(this.value))" /><br />
      <input class="slider-width" type="range" value="0" min="0" max="100" onchange="send('/range/2', parseInt(this.value))" /><br />
      <input class="slider-width" type="range" value="0" min="0" max="100" onchange="send('/range/3', parseInt(this.value))" />
    </div>

    <div>
      <code>/checkbox/1-3</code><br />
      <input type="checkbox" onchange="send('/checkbox/1', this.checked)" />
      <input type="checkbox" onchange="send('/checkbox/2', this.checked)" />
      <input type="checkbox" onchange="send('/checkbox/3', this.checked)" />
    </div>

    <div>
      <code>/radio/1</code><br />
      <input type="radio" name="/radio/1" value="1" onchange="send('/radio/1', 1)" />
      <input type="radio" name="/radio/1" value="2" onchange="send('/radio/1', 2)" />
      <input type="radio" name="/radio/1" value="3" onchange="send('/radio/1', 3)" />
    </div>

    <div>
      <code>/text/1</code><br />
      <input type="text" name="/text/1" onkeyup="send(this.name, this.value)" />
    </div>

    <div>
      <code>/select/1</code><br />
      <select name="/select/1" onchange="send(this.name, this.value)">
        <option value="First">First</option>
        <option value="Second">Second</option>
        <option value="Third">Third</option>
      </select>
    </div>

    <div>
      <code>/button/1</code><br />
      <input type="button" name="/button/1" value="button" onmousedown="send(this.name, true)" onmouseup="send(this.name, false)" onmouseout="send(this.name, false)" />
    </div>

  </body>
</html>
1个回答

10
.slider-width100
{
    width: 100px;
}

上述代码是用于定义宽度样式的语法,应该将其放在单独的CSS文件中,并将该文件链接到页面中。要使用它,您应该像这样设置标签的class属性:

class="slider-width100"

如果您的规则被其他具有更高css优先级的规则覆盖,您可以考虑在css规则定义中使用这个丑陋的Hack:

.slider-width100
{
    width: 100px !important;
}

当我在HTML文件内部使用这种样式时,它可以很好地工作。但是当我将其放在外部文件中时,它却不起作用。我不知道为什么,因为CSS已经加载了,文本颜色样式的更改也可以显示出来。我可能做错了什么? - wide_eyed_pupil
你已经从我的答案中删除了“answer”属性。你能告诉我为什么以及问题出在哪里吗? - Lajos Arpad
你确定这个规则被放在了你成功链接到页面的同一个CSS中吗?你确定没有其他CSS规则因为优先级更高而覆盖了这个规则吗?另外,如果这在你的HTML中起作用,我们可以确定你的问题不是源于这个规则,因为它是有效的。你可以通过创建一个只包含这个规则的CSS文件,并将这个文件仅链接到你的HTML中来测试这一点。这将是一个概念验证。 - Lajos Arpad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接