写一个固定高度的盒子,内容超出盒子高度,创建一个新的盒子继续展示内容。
1.js如何判断内容是否超出盒子高度(内容不固定)
2.内容是一个数组展示的不同对象数据,数据展示一半超出的话在另一个盒子暂时,中间会有一段距离,怎么把数据截取下来在超出创建的那一个盒子上边展示?
这个是我现在写的没分页
在内容底部放一个IntersectionObserver监听对象,如果这个被监测的对象出现在你设定的可视元素内,说明内容没有超出,否则内容超出
abstract class Animal {
name:string;
constructor(name:any){
this.name = name;
}
abstract eat():any;
}
class Dog extends Animal {
constructor(name: any) {
super(name);
};
eat() {
console.log(this.name + '抽象方法继承')
}
}
const dog = new Dog('小花花')
我可以给出如下JavaScript实现方案:
```javascript const box = document.getElementById('box'); // 根据实际情况替换ID const content = box.innerHTML; const actualHeight = box.offsetHeight; // 盒子元素的实际高度 const maxHeight = parseInt(window.getComputedStyle(box).maxHeight); // 盒子元素的最大高度 const isOverHeight = actualHeight > maxHeight; // 是否超出最大高度
if (isOverHeight) { // 分页处理,具体实现可根据需求进行调整 const pageCount = Math.ceil(actualHeight / maxHeight); const contentArr = content.split(''); let newContent = ''; for (let i = 0; i < pageCount; i++) { const start = i * maxHeight; const end = (i + 1) * maxHeight; const pageContent = contentArr.slice(start, end).join(''); newContent += <div class="page">${pageContent}</div>
; } box.innerHTML = newContent; } ```
```css / 页面默认隐藏,避免分类处理后的分页内容在页面即时出现,体验不是特别好 / .page { opacity: 0; transition: opacity 0.5s; }
/ 显示当前选中的分页 / .page.selected { opacity: 1; } ```
```javascript const pages = document.querySelectorAll('#box .page'); // 分页元素的选择器,可根据实际情况替换 const pageBtns = document.querySelectorAll('.page-btn'); // 按钮元素的选择器,可根据实际情况替换
function init() { // 移除所有按钮的样式,并为第一个按钮添加样式表示默认选中 pageBtns[0].classList.add('selected'); for (let i = 1; i < pageBtns.length; i++) { pageBtns[i].classList.remove('selected'); } // 隐藏除第一个分页内容以外的所有分页 for (let i = 1; i < pages.length; i++) { pages[i].classList.remove('selected'); } }
init();
// 为每个按钮设置点击事件,以切换分页 for (let j = 0; j < pageBtns.length; j++) { pageBtns[j].addEventListener('click', () => { init(); pageBtns[j].classList.add('selected'); pages[j + 1].classList.add('selected'); }); } ```
以上给出的仅是一个简单的实现方案,具体实现还要结合实际情况进行调整,并且还能够进一步优化和完善。