【问题标题】:Insert graphics at the center of a slider with css用css在滑块的中心插入图形
【发布时间】:2019-08-02 11:03:54
【问题描述】:

我正在尝试为 CSS 中的滑块绘制“中心”部分,但遇到了麻烦。这是我的目标的无风格模型:centerslider.png

我尝试离开 CSS 并手动将 div 定位在滑块上,但后来我意识到我希望我的 div 位于滑块轨道上方但位于可移动光标下方。我无法单独使用 z-index 来实现这一点。

我还尝试在可运行轨道上使用“之前”和“之后”事件,这样我就可以从那里添加离散的内容。一旦我知道我必须使用inline-block,这有点奏效,但我再一次无法让 z-index 很好地发挥作用,而且它总是在可移动光标上方。

在这两种情况下,我显然都没有实现我想要的重叠行为,但同样值得注意的是,我无法让任何行为“干净”地表现出来,我可以使用现有滑块的坐标参考框架来放置我的中间-bar(类似于 "width:2%; left:49%" 来放置它)。

我确实在一些示例中看到了类似的功能,但由于其他原因它们过于复杂,我很难从它们中收集到很多信息。如果有人可以向我指出一个或多个资源或描述使其工作所需的最低限度的元素,这将有助于增加我对 css 的个人理解。我并不反对学习,但我认为我至少需要在这里指出正确的方向。

【问题讨论】:

  • 如果您提供您遇到的问题的代码,您在这里获得帮助的机会将会大大提高。
  • 请为您的代码创建一个代码 sn-p。如果您不通过显示您的代码来帮助我们,我们将无法帮助您。谢谢
  • 很抱歉没有提供一些东西,但我保持概念性,因为除了基本滑块和出现在中心的一些其他类型的元素或样式配置之外,没有我关心的元素该滑块(并且,正如我最初应该更清楚地说明的那样,位于可运行轨道上方但在光标下方)。由于我没有找到让后半部分正常工作的解决方案,并且我不确定甚至可以使用什么设计选择来实现这一点,所以我的示例代码只是一个基本的滑块。

标签: javascript html css slider


【解决方案1】:

这是你想要的吗?使用position:absolute 对齐

.slidecontainer .fa-square {
position:absolute;
top:10px;
left:50px;
}

.slider {
  -webkit-appearance: none;
  height: 8px;
  background: #d3d3d3;
  outline: none;
  border-radius: 5px;
}

.slider:hover {
  opacity: 1;
}

.slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 12px;
  height: 12px;
  background: #4CAF50;
  cursor: pointer;
  border-radius: 5px;
  position:relative;
  z-index: 2
}

.slider::-moz-range-thumb {
  width: 25px;
  height: 25px;
  background: #4CAF50;
  cursor: pointer;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">

<div class="slidecontainer">
<input type="range" min="1" max="100" value="50" class="slider" id="myRange">
  <i class="fa fa-square"></i>
</div>

【讨论】:

  • 不幸的是,这展示了我遇到的主要问题 - 中心块与可运行轨道和可移动光标重叠。抱歉,如果我不清楚,但我正在寻找出现在两者之间的元素 - 在轨道上方,但在光标下方。这就是我在通过使用 z-index 或使用这种 div 覆盖策略来查看任何结果时遇到问题的地方。
  • 有趣的是,这似乎适用于 Opera,但我在 Firefox 上看到了同样的重叠问题。其他浏览器我没试过。有可能一些“moz-”伪元素没有定义——当我稍后有机会检查代码时,我会更深入地检查并告诉你我的发现。我认为它已经接近了,感谢您的帮助!
  • 经过一番摆弄后,我无法在 Firefox 上以正确的 z 顺序显示正方形。但是,您的解决方案适用于 Opera 和 Chrome。我想必须有某种方法来实际修改可运行轨道本身的 css 以显示这样的东西,这肯定会跨浏览器工作 - 但我不太熟悉可以肯定地说。顺便说一句,我使用这个资源来确定还有哪些其他“moz”等属性:danielstern.ca/range.css/#
  • 抱歉忘记为 firefox 添加 css。是的,您必须使用它,这样滑块在所有浏览器上看起来都一样。谢谢
  • 不幸的是,我仍然在 Firefox 上看到不正确的重叠。你在代码中做了什么改变?你在 Firefox 上也测试过吗?
猜你喜欢
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多