&…">
当前位置:首页 > JavaScript

js 实现垂直标尺

2026-04-07 15:14:29JavaScript

实现垂直标尺的方法

使用HTML和CSS创建一个垂直标尺的基础结构。通过div元素定义标尺容器,利用CSS设置其样式和刻度线。

<div class="vertical-ruler"></div>
.vertical-ruler {
  position: relative;
  width: 30px;
  height: 300px;
  border-left: 1px solid #000;
  margin-left: 20px;
}

动态生成刻度线

通过JavaScript动态生成刻度线,使用循环创建不同长度的刻度线并定位。

const ruler = document.querySelector('.vertical-ruler');
const height = 300; // 标尺总高度
const interval = 10; // 刻度间隔

for (let i = 0; i <= height; i += interval) {
  const tick = document.createElement('div');
  tick.style.position = 'absolute';
  tick.style.left = '0';
  tick.style.bottom = `${i}px`;
  tick.style.width = i % 50 === 0 ? '20px' : '10px'; // 长刻度与短刻度
  tick.style.height = '1px';
  tick.style.backgroundColor = '#000';
  ruler.appendChild(tick);
}

添加刻度数值

为长刻度添加数值标签,增强标尺的可读性。

for (let i = 0; i <= height; i += 50) {
  const label = document.createElement('div');
  label.style.position = 'absolute';
  label.style.left = '25px';
  label.style.bottom = `${i}px`;
  label.style.transform = 'translateY(50%)';
  label.style.fontSize = '12px';
  label.textContent = i;
  ruler.appendChild(label);
}

响应式调整标尺

通过监听窗口大小变化事件,动态调整标尺高度以适应不同屏幕尺寸。

function adjustRulerHeight() {
  const viewportHeight = window.innerHeight;
  ruler.style.height = `${viewportHeight * 0.8}px`;
}

window.addEventListener('resize', adjustRulerHeight);
adjustRulerHeight(); // 初始化时调用

自定义样式选项

通过CSS变量或JavaScript参数,允许自定义标尺的颜色、宽度和刻度间隔。

.vertical-ruler {
  --ruler-color: #333;
  --tick-interval: 10px;
}
const customRuler = (options) => {
  const { color, interval } = options;
  const ticks = document.querySelectorAll('.vertical-ruler div');
  ticks.forEach(tick => {
    tick.style.backgroundColor = color;
  });
};

交互功能增强

为标尺添加拖拽或点击事件,使其能够与页面其他元素交互。

ruler.addEventListener('click', (e) => {
  const yPos = e.clientY - ruler.getBoundingClientRect().top;
  console.log(`Clicked at ${Math.round(yPos)}px`);
});

性能优化

对于高频更新的场景,使用requestAnimationFrame减少重绘开销。

function updateRuler() {
  requestAnimationFrame(() => {
    // 更新逻辑
  });
}

兼容性处理

确保代码在旧版本浏览器中正常运行,必要时添加Polyfill或降级方案。

js 实现垂直标尺

if (!Element.prototype.append) {
  Element.prototype.append = function(...nodes) {
    nodes.forEach(node => this.appendChild(node));
  };
}

标签: 标尺js
分享给朋友:

相关文章

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…