|
|
要实现点击图表 div 放大并隐藏其他 div,再次点击恢复原状,可以按照以下步骤操作:
1. 在 CSS 中定义全屏和隐藏的样式。
2. 使用 JavaScript 为每个图表 div 添加点击事件,切换全屏状态。
以下是完整示例代码:
首先,HTML 结构(根据你的描述):
- <div id="plot">
- <div id="plotDivRow1">
- <div id="plotDivCol1">图表1</div>
- <div id="plotDivCol2">图表2</div>
- <div id="plotDivCol3">图表3</div>
- </div>
- <div id="plotDivRow2">
- <div id="plotDivCol4">图表4</div>
- <div id="plotDivCol5_6">图表5/6</div>
- </div>
- </div>
复制代码
其次,CSS 样式(包括布局和全屏效果):
- <style>
- #plot {
- position: relative; /* 使全屏 div 相对此容器定位 */
- width: 100%;
- height: 500px; /* 设置一个固定高度,可根据需要调整 */
- overflow: hidden; /* 防止内容溢出 */
- }
- #plotDivRow1, #plotDivRow2 {
- overflow: hidden; /* 清除浮动 */
- }
- /* 图表 div 的基本样式 */
- #plotDivCol1, #plotDivCol2, #plotDivCol3, #plotDivCol4, #plotDivCol5_6 {
- float: left;
- width: 33.33%; /* 假设每行三个等宽,可根据实际情况调整 */
- height: 250px; /* 每个图表 div 的高度 */
- box-sizing: border-box;
- border: 1px solid #ccc; /* 边框,便于观察 */
- cursor: pointer; /* 鼠标指针变为手形,表示可点击 */
- }
- /* 第二行可能只有两个 div,调整宽度 */
- #plotDivRow2 #plotDivCol4, #plotDivRow2 #plotDivCol5_6 {
- width: 50%; /* 各占一半 */
- }
- /* 全屏样式 */
- .fullscreen {
- position: absolute !important;
- top: 0 !important;
- left: 0 !important;
- width: 100% !important;
- height: 100% !important;
- z-index: 1000 !important;
- background-color: white; /* 背景色,确保覆盖 */
- }
- /* 隐藏其他 div 的样式 */
- .hidden {
- display: none !important;
- }
- </style>
复制代码
最后,JavaScript 代码(实现点击切换全屏和恢复):
- <script>
- // 获取所有图表 div
- const plotCols = document.querySelectorAll('#plotDivCol1, #plotDivCol2, #plotDivCol3, #plotDivCol4, #plotDivCol5_6');
- // 为每个图表 div 添加点击事件
- plotCols.forEach(col => {
- col.addEventListener('click', function() {
- // 检查当前是否有全屏的 div
- const currentFull = document.querySelector('.fullscreen');
-
- if (currentFull) {
- // 如果当前全屏的就是被点击的 div,则恢复
- if (currentFull === this) {
- currentFull.classList.remove('fullscreen');
- // 移除所有隐藏样式
- plotCols.forEach(c => {
- c.classList.remove('hidden');
- });
- } else {
- // 如果点击了另一个 div,则先恢复前一个,再全屏当前
- currentFull.classList.remove('fullscreen');
- // 先显示所有 div
- plotCols.forEach(c => {
- c.classList.remove('hidden');
- });
- // 全屏当前 div
- this.classList.add('fullscreen');
- // 隐藏其他 div
- plotCols.forEach(c => {
- if (c !== this) {
- c.classList.add('hidden');
- }
- });
- }
- } else {
- // 没有全屏 div,则全屏当前 div
- this.classList.add('fullscreen');
- // 隐藏其他 div
- plotCols.forEach(c => {
- if (c !== this) {
- c.classList.add('hidden');
- }
- });
- }
- });
- });
- </script>
复制代码
说明:
1. 全屏时,被点击的 div 添加 fullscreen 类,覆盖整个 plot 容器。
2. 其他 div 添加 hidden 类,隐藏起来。
3. 再次点击全屏的 div 时,移除这些类,恢复原状。
4. 如果点击其他 div,会切换全屏到新的 div。
注意:如果使用 Plotly 绘制图表,全屏后可能需要调整图表大小。可以在添加全屏类后调用 Plotly.Plots.resize 方法,例如:
- // 在全屏后调整 Plotly 图表大小
- Plotly.Plots.resize(document.getElementById('plotDivCol1'));
复制代码
但需要根据实际图表 div 的 ID 来调用。由于用户没有具体说明,这里没有添加,如有需要可自行在事件处理函数中补充。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|