javascript - 在 JavaScript 中计算两个长度的最小值

标签 javascript html

我需要在 JavaScript 中为 div 设置一个 margin-left,这样它的值就是不同单位的两个长度之间的最小值,例如min(10pt,15vw).

我们可以使用 Math.min() 来比较数字。长度有类似的函数吗?

或者,有没有办法将长度从一个单位转换为另一个单位?

最佳答案

可以通过创建一个临时隐藏的 div 来计算具有独立单位的两个长度的最小值并使用 offsetWidth以像素为单位计算元素布局宽度的属性(随后立即删除 div ):

const minimum = (a, b) => {
  const temp = document.createElement('div');
  const size = [];

  temp.style.padding = 0;
  temp.style.border = 0;
  temp.style.overflow = 'hidden';
  temp.style.visibility = 'hidden';

  document.body.appendChild(temp);

  temp.style.width = a;
  size[0] = temp.offsetWidth;
  temp.style.width = b;
  size[1] = temp.offsetWidth;

  temp.parentNode.removeChild(temp);

  return Math.min(size[0], size[1]) - size[0] ? b : a;
};

console.log('The minimum width is:', minimum('100px', '100%'));

如上所示,可以使用minimum('100px', '100%')返回最小值。

关于javascript - 在 JavaScript 中计算两个长度的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33339214/

相关文章:

html - 如何使表列可滚动并在 Angular 2 中卡住多列?

javascript - 从内容脚本重定向到 chrome 扩展 URL?

javascript - d3.js html表格中的嵌套数据更新线图

javascript - 将数组值作为参数传递会导致未定义

javascript - React - 从不同的复选框显示/隐藏多个 div

javascript - DOJO 对话框第二次打不开

javascript - Ionic2:当你来到页面时,你如何选择要关注的输入?

jquery - 什么技术为 iPhone/iPad 开发了 "Financial Times Web App"

javascript - Angular 分量: no template replace option?

javascript - 选项卡中的重启功能如何?