当前位置: 首页 > news >正文

WordPress--代码块添加折叠和展开功能

原文网址:WordPress--代码块添加折叠和展开功能-CSDN博客

简介

本文介绍WordPress怎样给代码块添加折叠和展开功能。

问题描述

WordPress默认没有代码折叠功能,代码很长时看起来很不方便。

实现方案

本文使用纯javascript的方式,代码块增加折叠和展开功能。

如果行数超过了20,则自动折叠(设置代码块元素的max-height为20倍的行高),在代码最下方添加按钮:展开,点击展开后会展开(设置代码块元素的max-height为null),然后代码最下方按钮变为:折叠。点击折叠后,会重新折叠。

代码

// 获取所有的 pre 元素
const preElements = document.querySelectorAll('pre');// 遍历每个 pre 元素
preElements.forEach((preElement) => {// 获取每个 pre 元素的高度和行数const lineHeight = parseInt(window.getComputedStyle(preElement).lineHeight);const height = preElement.offsetHeight;const lineCount = Math.floor(height / lineHeight);// 如果行数超过 20 行,则添加折叠效果if (lineCount > 20) {// 设置初始状态为折叠preElement.style.maxHeight = `${lineHeight * 20}px`;// 创建包裹容器const wrapper = document.createElement('div');wrapper.classList.add('pre-wrapper');// 将 pre 元素包裹在容器内preElement.parentNode.insertBefore(wrapper, preElement);wrapper.appendChild(preElement);// 添加展开/折叠按钮const expandButton = document.createElement('button');expandButton.textContent = '展开';expandButton.classList.add('expand-button');wrapper.appendChild(expandButton);// 展开/折叠按钮的点击事件处理程序expandButton.addEventListener('click', function() {if (!preElement.style.maxHeight) {// 已经展开,点击后折叠preElement.style.maxHeight = `${lineHeight * 20}px`;expandButton.textContent = '展开';} else {// 已经折叠,点击后展开preElement.style.maxHeight = null;expandButton.textContent = '折叠';}});// 设置容器的相对定位和水平居中样式wrapper.style.setProperty('position', 'relative');// 设置展开/折叠按钮的绝对定位和居中样式expandButton.style.setProperty('position', 'relative');expandButton.style.setProperty('top', `-${lineHeight * 1}px`);expandButton.style.setProperty('display', 'block');expandButton.style.setProperty('margin', '0 auto');expandButton.style.setProperty('padding', '3px');}
});

效果

http://www.dtcms.com/a/473514.html

相关文章:

  • 爱站网能不能挖掘关键词做网站Linux
  • 在单台电脑上管理多个 GitHub 账户并解决推送问题
  • 计算机毕设选题推荐:基于Hadoop和Python的游戏销售大数据可视化分析系统
  • kanass入门到实战(17) - 如何进行工时管理,有效度量项目资源
  • 汽车角雷达波形设计与速度模糊解决方法研究——论文阅读
  • Node.js+Prisma性能优化:分页查询与事务处理实战
  • 网站建站授权模板下载wordpress爬虫ca
  • 做的网站怎么联网长春制作网站软件
  • FPGA 中的 AXI 总线介绍
  • 指针和动态分配
  • 【OPENGL ES 3.0 学习笔记】第一天:什么是EGL
  • 【第十七周】自然语言处理的学习笔记02
  • 解锁LangChain:Python构建大语言模型应用全攻略
  • Android 事件分发学习心得
  • TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 使用Keras实现分类问题
  • Happens-Before原则
  • 自己设置网站怎么做永远网站建设
  • 做网站的软件景宁县建设局网站
  • react多文件分片上传——支持拖拽与进度展示
  • Excel如何合并单元格?【图文详解】Excel合并单元格技巧?单元格合并高阶操作?
  • Fabric.js 完全指南:从入门到实战的Canvas绘图引擎详解
  • 学网站建设要多少钱遵义网站建设网站
  • 数据分析:Python懂车帝汽车数据分析可视化系统 爬虫(Django+Vue+销量分析 源码+文档)✅
  • 从Java集合到云原生现代数据管理的演进之路
  • 03_pod详解
  • 线性代数 | excellent algebraic space
  • 计算机网络篇之TCP滑动窗口
  • java项目使用宝塔面板部署服务器nginx不能反向代理找到图片资源
  • 180课时吃透Go语言游戏后端开发11:Go语言中的并发编程
  • 江苏建设部官方网站纯 flash 网站