html 旋转时 <input type='range'> 上的宽度和高度错误
html width and height bug on <input type='range'> when rotated
这是一个简单的问题示例。
我想在 table 中图像的底部和左侧放置一个滑块。
它在底部效果很好,但是当滑块旋转时,样式命令中的高度和宽度参数需要反转。这似乎是滑块本身的错误。
我只是把它放在 table 中以显示问题。 table 单元格中的宽度太宽了!
Link 至此网页:https://s3.amazonaws.com/berry-genealogy/index2.html
由于某种原因,下面的显示不显示 table 边框或滑块。
点击上面的link查看实际页面,是打开到public.
<pre>
<!DOCTYPE html>
<html>
<body>
<table border="1">
<tr>
<td>
<input type='range' style=`width:5px;height:150px;transform:rotate(var(--r,90deg));`>
</td>
<td>
<img height=150 src="https://s3.amazonaws.com/berry-genealogy/00092_0.jpg"
</td>
</tr>
<tr>
<td></td>
<td>
<input type='range' style=`width:100px;height:10px;transform:rotate(var(--r,0deg));`>
</td>
</tr>
</table>
</body>
</html>
</pre>
根据此 MDN post https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/range transform
可用于旋转输入滑块,前提是它被包裹在 div 中以帮助渲染后调整大小.此代码段添加了必需的 css 并显示了效果:
.slider-wrapper {
display: inline-block;
width: 24px;
height: 150px;
padding: 2px;
}
.slider-wrapper input {
width: 150px;
height: 20px;
margin: 0;
transform-origin: 75px 75px;
transform: rotate(-90deg);
}
<table border="1">
<tbody><tr>
<td ><div class="slider-wrapper"><input type="range" ></div></td>
<td><img src="https://s3.amazonaws.com/berry-genealogy/00092_0.jpg" <="" td="" height="150">
</td></tr>
<tr>
<td></td>
<td><input type="range"></td>
</tr>
</tbody></table>
这个 SO 问题 How to display a range input slider vertically 有一个简单解决方案的答案,但(根据 MDN)它可能只在 FF 中可靠。它在输入标签内使用 non-standard 属性 orient="vertical"
:
<table border="1">
<tbody><tr>
<td ><input type="range" orient="vertical"></td>
<td><img src="https://s3.amazonaws.com/berry-genealogy/00092_0.jpg" <="" td="" height="150">
</td></tr>
<tr>
<td></td>
<td><input type="range"></td>
</tr>
</tbody></table>
上面的 MDN link 对此问题进行了很好的讨论,并提出了涵盖浏览器实现之间差异的建议。
你可以这样做
<style>
.td1 {
width: 20px;
}
.slide {
transform: rotate(90deg);
padding: 0px;
margin: 0 auto;
position: absolute;
left: -42px
}
</style>
<tr>
<td><input class="slide" type='range'></td>
<td><img height=150 src="img/1.jpeg"></td>
</tr>
<tr>
<td class="td1"> </td>
<td><input type='range' style="transform:rotate(var(--r,0deg));"></td>
</tr>
</table>
这是一个简单的问题示例。 我想在 table 中图像的底部和左侧放置一个滑块。 它在底部效果很好,但是当滑块旋转时,样式命令中的高度和宽度参数需要反转。这似乎是滑块本身的错误。 我只是把它放在 table 中以显示问题。 table 单元格中的宽度太宽了! Link 至此网页:https://s3.amazonaws.com/berry-genealogy/index2.html 由于某种原因,下面的显示不显示 table 边框或滑块。 点击上面的link查看实际页面,是打开到public.
<pre>
<!DOCTYPE html>
<html>
<body>
<table border="1">
<tr>
<td>
<input type='range' style=`width:5px;height:150px;transform:rotate(var(--r,90deg));`>
</td>
<td>
<img height=150 src="https://s3.amazonaws.com/berry-genealogy/00092_0.jpg"
</td>
</tr>
<tr>
<td></td>
<td>
<input type='range' style=`width:100px;height:10px;transform:rotate(var(--r,0deg));`>
</td>
</tr>
</table>
</body>
</html>
</pre>
根据此 MDN post https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/range transform
可用于旋转输入滑块,前提是它被包裹在 div 中以帮助渲染后调整大小.此代码段添加了必需的 css 并显示了效果:
.slider-wrapper {
display: inline-block;
width: 24px;
height: 150px;
padding: 2px;
}
.slider-wrapper input {
width: 150px;
height: 20px;
margin: 0;
transform-origin: 75px 75px;
transform: rotate(-90deg);
}
<table border="1">
<tbody><tr>
<td ><div class="slider-wrapper"><input type="range" ></div></td>
<td><img src="https://s3.amazonaws.com/berry-genealogy/00092_0.jpg" <="" td="" height="150">
</td></tr>
<tr>
<td></td>
<td><input type="range"></td>
</tr>
</tbody></table>
这个 SO 问题 How to display a range input slider vertically 有一个简单解决方案的答案,但(根据 MDN)它可能只在 FF 中可靠。它在输入标签内使用 non-standard 属性 orient="vertical"
:
<table border="1">
<tbody><tr>
<td ><input type="range" orient="vertical"></td>
<td><img src="https://s3.amazonaws.com/berry-genealogy/00092_0.jpg" <="" td="" height="150">
</td></tr>
<tr>
<td></td>
<td><input type="range"></td>
</tr>
</tbody></table>
上面的 MDN link 对此问题进行了很好的讨论,并提出了涵盖浏览器实现之间差异的建议。
你可以这样做
<style>
.td1 {
width: 20px;
}
.slide {
transform: rotate(90deg);
padding: 0px;
margin: 0 auto;
position: absolute;
left: -42px
}
</style>
<tr>
<td><input class="slide" type='range'></td>
<td><img height=150 src="img/1.jpeg"></td>
</tr>
<tr>
<td class="td1"> </td>
<td><input type='range' style="transform:rotate(var(--r,0deg));"></td>
</tr>
</table>