如何找到此号码的 css 单位
How to find css unit for this number
我有一个输入类型文本
<input type="text">
基本上我使用 javascript ClientRect
来获取插入符号的详细信息。 ClientRect
看起来像这样
[object ClientRect]
{
[functions]: ,
__proto__: { },
bottom: 540.7999877929687,
constructor: { },
height: 24,
left: 1034.5399169921875,
right: 1034.5399169921875,
top: 516.7999877929687,
width: 0
}
这是在每个文本输入上生成的。
left: 1034.5399169921875,
left: 1065.5399169921875,
left: 1078.5399169921875,
我想将此数字转换为 CSS 个单位,例如 px/%/rem/vh
。这样我就可以把动态css。怎么做?
尝试访问输入的左侧位置并减去插入符号的左侧位置。如果这就是您要查找的内容,这应该会为您提供输入文本的近似宽度。您需要为文本输入添加 ID 或创建选择器。
var inputElementRect = document.getElementById('YOURINPUTID').getBoundingClientRect()
var width = inputElementRect.left - caretRect.left
默认情况下,这些值是 px
.. 所以只需向该值添加后缀 px
并使用它。
<input type="text">
获得那个值
let text = document.querySelector('input');
let values = text.getBoundingClientRect();
let top_value = values.top + 'px';
let bottom_value = values.bottom + 'px';
let width_value = values.width + 'px';
let height_value = values.height + 'px';
console.log('top: '+ top_value);
console.log('bottom: '+ bottom_value);
console.log('width: '+ width_value);
console.log('height: '+ height_value);
这里除了width
和height
之外的属性是relative to the view port
(top,bottom,left,right),
所以如果滚动这个值将会改变..
即使滚动 add
也能获得完美的值 window.scrollX , window.scrollY
或者可以使用 window.pageXOffset , window.pageYOffset
所以如果我理解正确的话,你有输入内部光标的位置值,你想把它转换成不同类型的 CSS 单位,大概这样你就可以对输入做一些事情或相关的东西
首先要了解的是,ClientRect 的位置是相对于视口的。因此,正如 vhutchinson 指出的那样,如果您想要文本的宽度,则需要将其与 getBoundingClientRects 定义的输入的 "left" 值进行比较。这是一个良好的开端,但如果您不仅影响左侧而且还关心顶部,则需要考虑滚动。如果你的 window/page 是唯一的滚动容器,你应该能够简单地通过在顶部添加 window.scrollY
并在左侧添加 window.scrollX
来了解你相对于 [=29= 的偏移量].
默认情况下,所有这些单位都是像素...如果您想转换为 rem 非常简单,1 rem = 根元素的字体大小,因此要转换为 rem,您可以执行以下操作
var remBase = parseInt(window.getComputedStyle(document.body).getPropertyValue('font-size'), 10);
var remValue = (myComputedPixelValue / remBase) + "rem";
使用 Get the browser viewport dimensions with JavaScript 中针对跨浏览器 window 维度的答案,做 VW 是相似的,你最终会得到看起来像
的东西
var viewportWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
var vwValue = (myComputedPixelValue / viewportWidth) + "vw";
百分比比较棘手,因为您需要根据要应用 css 值的元素的父元素来计算它,但总体思路遵循相同的原则。
我有一个输入类型文本
<input type="text">
基本上我使用 javascript ClientRect
来获取插入符号的详细信息。 ClientRect
看起来像这样
[object ClientRect]
{
[functions]: ,
__proto__: { },
bottom: 540.7999877929687,
constructor: { },
height: 24,
left: 1034.5399169921875,
right: 1034.5399169921875,
top: 516.7999877929687,
width: 0
}
这是在每个文本输入上生成的。
left: 1034.5399169921875,
left: 1065.5399169921875,
left: 1078.5399169921875,
我想将此数字转换为 CSS 个单位,例如 px/%/rem/vh
。这样我就可以把动态css。怎么做?
尝试访问输入的左侧位置并减去插入符号的左侧位置。如果这就是您要查找的内容,这应该会为您提供输入文本的近似宽度。您需要为文本输入添加 ID 或创建选择器。
var inputElementRect = document.getElementById('YOURINPUTID').getBoundingClientRect()
var width = inputElementRect.left - caretRect.left
默认情况下,这些值是 px
.. 所以只需向该值添加后缀 px
并使用它。
<input type="text">
获得那个值
let text = document.querySelector('input');
let values = text.getBoundingClientRect();
let top_value = values.top + 'px';
let bottom_value = values.bottom + 'px';
let width_value = values.width + 'px';
let height_value = values.height + 'px';
console.log('top: '+ top_value);
console.log('bottom: '+ bottom_value);
console.log('width: '+ width_value);
console.log('height: '+ height_value);
这里除了width
和height
之外的属性是relative to the view port
(top,bottom,left,right),
所以如果滚动这个值将会改变..
即使滚动 add
也能获得完美的值 window.scrollX , window.scrollY
或者可以使用 window.pageXOffset , window.pageYOffset
所以如果我理解正确的话,你有输入内部光标的位置值,你想把它转换成不同类型的 CSS 单位,大概这样你就可以对输入做一些事情或相关的东西
首先要了解的是,ClientRect 的位置是相对于视口的。因此,正如 vhutchinson 指出的那样,如果您想要文本的宽度,则需要将其与 getBoundingClientRects 定义的输入的 "left" 值进行比较。这是一个良好的开端,但如果您不仅影响左侧而且还关心顶部,则需要考虑滚动。如果你的 window/page 是唯一的滚动容器,你应该能够简单地通过在顶部添加 window.scrollY
并在左侧添加 window.scrollX
来了解你相对于 [=29= 的偏移量].
默认情况下,所有这些单位都是像素...如果您想转换为 rem 非常简单,1 rem = 根元素的字体大小,因此要转换为 rem,您可以执行以下操作
var remBase = parseInt(window.getComputedStyle(document.body).getPropertyValue('font-size'), 10);
var remValue = (myComputedPixelValue / remBase) + "rem";
使用 Get the browser viewport dimensions with JavaScript 中针对跨浏览器 window 维度的答案,做 VW 是相似的,你最终会得到看起来像
的东西var viewportWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
var vwValue = (myComputedPixelValue / viewportWidth) + "vw";
百分比比较棘手,因为您需要根据要应用 css 值的元素的父元素来计算它,但总体思路遵循相同的原则。