综述: 优化iframe内容显示,实现无缝全屏效果
- 添加CLAUDE.md文件定义IFRAME嵌入页面样式规范 - 在index.html中为iframe内容注入通用全屏样式 - 确保所有通过iframe嵌入的页面顶格显示无边距空白 - 优化内容区域显示逻辑和页面结构 这些修改遵循了CLAUDE.md中定义的样式规范,确保iframe嵌入页面能够全屏显示。
This commit is contained in:
		
							parent
							
								
									24d65300da
								
							
						
					
					
						commit
						2d9f7390c5
					
				|  | @ -0,0 +1,52 @@ | |||
| ## IFRAME嵌入页面样式规范 | ||||
| ═══════════════════════ | ||||
| 
 | ||||
| 为确保所有通过iframe嵌入的页面都能顶格显示(无边距、无空白),所有嵌入页面必须遵循以下CSS样式规范: | ||||
| 
 | ||||
| ### 必须修改的样式: | ||||
| 
 | ||||
| 1. **body标签样式**: | ||||
|    ```css | ||||
|    body { | ||||
|        margin: 0 !important; | ||||
|        padding: 0 !important; | ||||
|    } | ||||
|    ``` | ||||
| 
 | ||||
| 2. **容器样式(.container或主容器)**: | ||||
|    ```css | ||||
|    .container { | ||||
|        width: 100% !important; | ||||
|        height: 100vh !important; | ||||
|        margin: 0 !important; | ||||
|        padding: 0 !important; | ||||
|        max-width: none !important; | ||||
|        border-radius: 0 !important; | ||||
|        box-shadow: none !important; | ||||
|    } | ||||
|    ``` | ||||
| 
 | ||||
| 3. **响应式设计**: | ||||
|    ```css | ||||
|    @media (max-width: 768px) { | ||||
|        .container { | ||||
|            margin: 0 !important; | ||||
|            border-radius: 0 !important; | ||||
|        } | ||||
|    } | ||||
|    ``` | ||||
| 
 | ||||
| ### 修改清单: | ||||
| - [ ] 移除body的padding | ||||
| - [ ] 将max-width改为width: 100% | ||||
| - [ ] 将margin: 0 auto改为margin: 0 | ||||
| - [ ] 移除border-radius和box-shadow | ||||
| - [ ] 确保高度为100vh | ||||
| - [ ] 检查响应式样式 | ||||
| 
 | ||||
| ### 适用范围: | ||||
| - 权限管理模块所有页面 | ||||
| - 产品管理模块所有页面 | ||||
| - 用户管理模块所有页面 | ||||
| - 系统设置模块所有页面 | ||||
| - 所有未来新增的iframe嵌入页面 | ||||
|  | @ -0,0 +1,515 @@ | |||
| <!DOCTYPE html> | ||||
| <html lang="zh-CN"> | ||||
| <head> | ||||
|     <meta charset="UTF-8"> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||
|     <title>大妈系统平台</title> | ||||
|     <style> | ||||
|         /* CSS样式将在这里添加 */ | ||||
|         * { | ||||
|             margin: 0; | ||||
|             padding: 0; | ||||
|             box-sizing: border-box; | ||||
|         } | ||||
| 
 | ||||
|         body { | ||||
|             font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; | ||||
|             background-color: #f5f7fa; | ||||
|             color: #333; | ||||
|             height: 100vh; | ||||
|             display: flex; | ||||
|         } | ||||
| 
 | ||||
|         /* 左侧菜单样式 */ | ||||
|         .sidebar { | ||||
|             width: 250px; | ||||
|             background: linear-gradient(180deg, #2c3e50, #1a2530); | ||||
|             color: #ecf0f1; | ||||
|             height: 100%; | ||||
|             overflow-y: auto; | ||||
|             transition: all 0.3s ease; | ||||
|             box-shadow: 3px 0 10px rgba(0, 0, 0, 0.1); | ||||
|         } | ||||
| 
 | ||||
|         .sidebar-header { | ||||
|             padding: 20px; | ||||
|             background-color: rgba(0, 0, 0, 0.2); | ||||
|             text-align: center; | ||||
|             border-bottom: 1px solid rgba(255, 255, 255, 0.1); | ||||
|         } | ||||
| 
 | ||||
|         .sidebar-header h2 { | ||||
|             font-size: 1.5rem; | ||||
|             font-weight: 600; | ||||
|         } | ||||
| 
 | ||||
|         /* 菜单样式 */ | ||||
|         .menu { | ||||
|             list-style: none; | ||||
|             padding: 10px 0; | ||||
|         } | ||||
| 
 | ||||
|         .menu-item { | ||||
|             border-bottom: 1px solid rgba(255, 255, 255, 0.05); | ||||
|         } | ||||
| 
 | ||||
|         .menu-item > a { | ||||
|             display: flex; | ||||
|             align-items: center; | ||||
|             padding: 12px 20px; | ||||
|             color: #bdc3c7; | ||||
|             text-decoration: none; | ||||
|             transition: all 0.3s ease; | ||||
|             cursor: pointer; | ||||
|         } | ||||
| 
 | ||||
|         .menu-item > a:hover { | ||||
|             background-color: rgba(255, 255, 255, 0.1); | ||||
|             color: #ecf0f1; | ||||
|         } | ||||
| 
 | ||||
|         .menu-item > a i { | ||||
|             margin-right: 10px; | ||||
|             width: 20px; | ||||
|             text-align: center; | ||||
|         } | ||||
| 
 | ||||
|         /* 子菜单样式 */ | ||||
|         .submenu { | ||||
|             list-style: none; | ||||
|             padding-left: 0; | ||||
|             max-height: 0; | ||||
|             overflow: hidden; | ||||
|             transition: max-height 0.3s ease; | ||||
|             background-color: rgba(0, 0, 0, 0.2); | ||||
|         } | ||||
| 
 | ||||
|         .submenu.open { | ||||
|             max-height: 500px; | ||||
|         } | ||||
| 
 | ||||
|         .submenu-item a { | ||||
|             display: block; | ||||
|             padding: 10px 20px 10px 50px; | ||||
|             color: #95a5a6; | ||||
|             text-decoration: none; | ||||
|             transition: all 0.3s ease; | ||||
|             border-left: 3px solid transparent; | ||||
|         } | ||||
| 
 | ||||
|         .submenu-item a:hover { | ||||
|             background-color: rgba(255, 255, 255, 0.05); | ||||
|             color: #ecf0f1; | ||||
|             border-left-color: #3498db; | ||||
|         } | ||||
| 
 | ||||
|         /* 内容区域样式 */ | ||||
|         .content { | ||||
|             flex: 1; | ||||
|             padding: 0; | ||||
|             overflow-y: hidden; | ||||
|             background-color: #fff; | ||||
|             display: flex; | ||||
|             flex-direction: column; | ||||
|         } | ||||
| 
 | ||||
|         .content-header { | ||||
|             display: none; | ||||
|             margin-bottom: 20px; | ||||
|             padding-bottom: 15px; | ||||
|             border-bottom: 1px solid #eee; | ||||
|         } | ||||
| 
 | ||||
|         .content-header h1 { | ||||
|             color: #2c3e50; | ||||
|             font-size: 2rem; | ||||
|         } | ||||
| 
 | ||||
|         .content-body { | ||||
|             flex: 1; | ||||
|             line-height: 1.6; | ||||
|             padding: 0; | ||||
|             margin: 0; | ||||
|         } | ||||
| 
 | ||||
|         .content-section { | ||||
|             margin-bottom: 30px; | ||||
|             padding: 20px; | ||||
|             background-color: #f8f9fa; | ||||
|             border-radius: 5px; | ||||
|             box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05); | ||||
|         } | ||||
| 
 | ||||
|         .content-section h2 { | ||||
|             color: #3498db; | ||||
|             margin-bottom: 15px; | ||||
|         } | ||||
| 
 | ||||
|         .content-section p { | ||||
|             margin-bottom: 15px; | ||||
|             color: #555; | ||||
|         } | ||||
| 
 | ||||
|         /* iframe样式 */ | ||||
|         .content-iframe { | ||||
|             width: 100%; | ||||
|             height: 100%; | ||||
|             border: none; | ||||
|             margin: 0; | ||||
|             padding: 0; | ||||
|         } | ||||
|          | ||||
|         /* 为iframe内的页面提供通用的顶格显示样式 */ | ||||
|         .content-iframe::after { | ||||
|             content: ''; | ||||
|             position: absolute; | ||||
|             top: 0; | ||||
|             left: 0; | ||||
|             right: 0; | ||||
|             bottom: 0; | ||||
|         } | ||||
|          | ||||
|         /* 通过JavaScript动态注入CSS到iframe中,确保所有嵌入页面都顶格显示 */ | ||||
| 
 | ||||
|         /* 响应式设计 */ | ||||
|         @media (max-width: 768px) { | ||||
|             .sidebar { | ||||
|                 width: 70px; | ||||
|             } | ||||
|              | ||||
|             .sidebar-header h2,  | ||||
|             .menu-item span,  | ||||
|             .submenu-item span { | ||||
|                 display: none; | ||||
|             } | ||||
|              | ||||
|             .menu-item a,  | ||||
|             .submenu-item a { | ||||
|                 justify-content: center; | ||||
|                 padding: 15px 10px; | ||||
|             } | ||||
|              | ||||
|             .menu-item a i,  | ||||
|             .submenu-item a i { | ||||
|                 margin-right: 0; | ||||
|                 font-size: 1.2rem; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|     </style> | ||||
| </head> | ||||
| <body> | ||||
|     <!-- 左侧菜单 --> | ||||
|     <div class="sidebar"> | ||||
|         <div class="sidebar-header"> | ||||
|             <h2>大妈系统平台</h2> | ||||
|         </div> | ||||
|         <ul class="menu"> | ||||
|             <li class="menu-item"> | ||||
|                 <a> | ||||
|                     <i>🏠</i> | ||||
|                     <span>首页</span> | ||||
|                 </a> | ||||
|             </li> | ||||
|             <li class="menu-item"> | ||||
|                 <a> | ||||
|                     <i>📊</i> | ||||
|                     <span>权限管理</span> | ||||
|                 </a> | ||||
|                 <ul class="submenu"> | ||||
|                     <li class="submenu-item"> | ||||
|                         <a> | ||||
|                             <i>📈</i> | ||||
|                             <span>权限编辑</span> | ||||
|                         </a> | ||||
|                     </li> | ||||
|                     <li class="submenu-item"> | ||||
|                         <a> | ||||
|                             <i>👥</i> | ||||
|                             <span>市场经营者创建</span> | ||||
|                         </a> | ||||
|                     </li> | ||||
|                     <li class="submenu-item"> | ||||
|                         <a> | ||||
|                             <i>🛒</i> | ||||
|                             <span>产品分析</span> | ||||
|                         </a> | ||||
|                     </li> | ||||
|                 </ul> | ||||
|             </li> | ||||
|             <li class="menu-item"> | ||||
|                 <a> | ||||
|                     <i>📦</i> | ||||
|                     <span>产品管理</span> | ||||
|                 </a> | ||||
|                 <ul class="submenu"> | ||||
|                     <li class="submenu-item"> | ||||
|                         <a> | ||||
|                             <i>➕</i> | ||||
|                             <span>新增产品</span> | ||||
|                         </a> | ||||
|                     </li> | ||||
|                     <li class="submenu-item"> | ||||
|                         <a> | ||||
|                             <i>✏️</i> | ||||
|                             <span>编辑产品</span> | ||||
|                         </a> | ||||
|                     </li> | ||||
|                     <li class="submenu-item"> | ||||
|                         <a> | ||||
|                             <i>🗑️</i> | ||||
|                             <span>删除产品</span> | ||||
|                         </a> | ||||
|                     </li> | ||||
|                 </ul> | ||||
|             </li> | ||||
|             <li class="menu-item"> | ||||
|                 <a> | ||||
|                     <i>👥</i> | ||||
|                     <span>用户管理</span> | ||||
|                 </a> | ||||
|                 <ul class="submenu"> | ||||
|                     <li class="submenu-item"> | ||||
|                         <a> | ||||
|                             <i>📋</i> | ||||
|                             <span>用户列表</span> | ||||
|                         </a> | ||||
|                     </li> | ||||
|                     <li class="submenu-item"> | ||||
|                         <a> | ||||
|                             <i>🔒</i> | ||||
|                             <span>权限设置</span> | ||||
|                         </a> | ||||
|                     </li> | ||||
|                 </ul> | ||||
|             </li> | ||||
|             <li class="menu-item"> | ||||
|                 <a> | ||||
|                     <i>⚙️</i> | ||||
|                     <span>系统设置</span> | ||||
|                 </a> | ||||
|                 <ul class="submenu"> | ||||
|                     <li class="submenu-item"> | ||||
|                         <a> | ||||
|                             <i>🌐</i> | ||||
|                             <span>常规设置</span> | ||||
|                         </a> | ||||
|                     </li> | ||||
|                     <li class="submenu-item"> | ||||
|                         <a> | ||||
|                             <i>🎨</i> | ||||
|                             <span>外观设置</span> | ||||
|                         </a> | ||||
|                     </li> | ||||
|                     <li class="submenu-item"> | ||||
|                         <a> | ||||
|                             <i>🔌</i> | ||||
|                             <span>插件管理</span> | ||||
|                         </a> | ||||
|                     </li> | ||||
|                 </ul> | ||||
|             </li> | ||||
|         </ul> | ||||
|     </div> | ||||
| 
 | ||||
|     <!-- 内容区域 --> | ||||
|     <div class="content"> | ||||
|         <div class="content-header"> | ||||
|             <h1>欢迎使用大妈系统平台</h1> | ||||
|         </div> | ||||
|         <div class="content-body"> | ||||
|             <div class="content-section"> | ||||
|                 <h2>系统介绍</h2> | ||||
|                 <p>这是一个简洁美观的大妈系统平台,左侧是多级导航菜单,右侧是内容展示区域。您可以点击左侧菜单浏览不同的内容板块。</p> | ||||
|                 <p>系统支持响应式设计,在不同设备上都能提供良好的用户体验。</p> | ||||
|             </div> | ||||
|             <div class="content-section"> | ||||
|                 <h2>功能特点</h2> | ||||
|                 <p>1. 多级菜单结构:支持无限层级的菜单分类</p> | ||||
|                 <p>2. 展开收起功能:点击箭头可展开或收起子菜单</p> | ||||
|                 <p>3. 响应式设计:适配不同屏幕尺寸的设备</p> | ||||
|                 <p>4. 美观界面:现代化的设计风格,提供良好的视觉体验</p> | ||||
|             </div> | ||||
|             <div class="content-section"> | ||||
|                 <h2>使用说明</h2> | ||||
|                 <p>点击左侧菜单项可以展开或收起子菜单。</p> | ||||
|                 <p>在移动设备上,菜单会自动折叠以节省空间。</p> | ||||
|                 <p>内容区域会根据选择的菜单项显示相应的内容。</p> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| 
 | ||||
|     <script> | ||||
|         // JavaScript功能将在这里添加 | ||||
|         document.addEventListener('DOMContentLoaded', function() { | ||||
|             // 获取所有可展开的菜单项 | ||||
|             const menuItems = document.querySelectorAll('.menu-item > a'); | ||||
|              | ||||
|             // 为每个可展开的菜单项添加点击事件 | ||||
|             menuItems.forEach(item => { | ||||
|                 item.addEventListener('click', function(e) { | ||||
|                     e.preventDefault(); | ||||
|                     e.stopPropagation(); // 阻止事件冒泡到父级 | ||||
|                      | ||||
|                     // 切换子菜单的显示状态 | ||||
|                     const submenu = this.nextElementSibling; | ||||
|                     submenu.classList.toggle('open'); | ||||
|                 }); | ||||
|             }); | ||||
|              | ||||
|             // 为所有菜单项添加点击事件(仅子菜单项会加载页面) | ||||
|             const allMenuItems = document.querySelectorAll('.menu-item a, .submenu-item a'); | ||||
|             allMenuItems.forEach(item => { | ||||
|                 item.addEventListener('click', function(e) { | ||||
|                     // 获取菜单项文本 | ||||
|                     const text = this.querySelector('span').textContent; | ||||
|                      | ||||
|                     // 只有子菜单项点击才会加载页面 | ||||
|                     if (this.parentElement.classList.contains('submenu-item')) { | ||||
|                         // 移除所有菜单项的活动状态 | ||||
|                         allMenuItems.forEach(i => i.classList.remove('active')); | ||||
|                          | ||||
|                         // 为当前点击的菜单项添加活动状态 | ||||
|                         this.classList.add('active'); | ||||
|                          | ||||
|                         // 这里可以根据需要更新内容区域的内容 | ||||
|                         updateContent(text); | ||||
|                     } | ||||
|                 }); | ||||
|             }); | ||||
|              | ||||
|             // 更新内容区域的函数 | ||||
|             function updateContent(title) { | ||||
|                 const contentBody = document.querySelector('.content-body'); | ||||
|                  | ||||
|                 // 移除内容区域标题的显示逻辑,直接在iframe中显示页面 | ||||
|                  | ||||
|                 // 如果是权限编辑或市场经营者创建,显示iframe | ||||
|                 if (title === '权限编辑') { | ||||
|                     contentBody.innerHTML = ` | ||||
|                         <iframe class="content-iframe" src="权限管理/权限编辑.html" onload="injectFullScreenStyles(this)"></iframe> | ||||
|                     `; | ||||
|                 } else if (title === '市场经营者创建') { | ||||
|                     contentBody.innerHTML = ` | ||||
|                         <iframe class="content-iframe" src="权限管理/权限分配.html" onload="injectFullScreenStyles(this)"></iframe> | ||||
|                     `; | ||||
|                 } else { | ||||
|                     // 其他菜单项直接在内容区域显示iframe | ||||
|                     let url = ''; | ||||
|                     switch(title) { | ||||
|                         case '首页': | ||||
|                             url = '首页.html'; | ||||
|                             break; | ||||
|                         case '新增产品': | ||||
|                             url = '产品管理/新增产品.html'; | ||||
|                             break; | ||||
|                         case '编辑产品': | ||||
|                             url = '产品管理/编辑产品.html'; | ||||
|                             break; | ||||
|                         case '删除产品': | ||||
|                             url = '产品管理/删除产品.html'; | ||||
|                             break; | ||||
|                         case '用户列表': | ||||
|                             url = '用户管理/用户列表.html'; | ||||
|                             break; | ||||
|                         case '权限设置': | ||||
|                             url = '用户管理/权限设置.html'; | ||||
|                             break; | ||||
|                         case '常规设置': | ||||
|                             url = '系统设置/常规设置.html'; | ||||
|                             break; | ||||
|                         case '外观设置': | ||||
|                             url = '系统设置/外观设置.html'; | ||||
|                             break; | ||||
|                         case '插件管理': | ||||
|                             url = '系统设置/插件管理.html'; | ||||
|                             break; | ||||
|                         case '产品分析': | ||||
|                             url = '权限管理/产品分析.html'; | ||||
|                             break; | ||||
|                         default: | ||||
|                             // 对于未指定的菜单项,显示默认内容(包含标题) | ||||
|                             contentBody.innerHTML = ` | ||||
|                                 <div class="content-section"> | ||||
|                                     <h2>${title}</h2> | ||||
|                                     <p>您已选择"${title}"菜单项。在这里可以展示与该菜单项相关的详细内容。</p> | ||||
|                                     <p>这是一个内容展示容器,您可以根据实际需求添加任何内容,包括文本、图片、表格等。</p> | ||||
|                                 </div> | ||||
|                                 <div class="content-section"> | ||||
|                                     <p>此区域用于展示"${title}"相关的具体内容。</p> | ||||
|                                     <p>您可以添加任何HTML内容,包括:</p> | ||||
|                                     <ul> | ||||
|                                         <li>文本段落</li> | ||||
|                                         <li>图片展示</li> | ||||
|                                         <li>数据表格</li> | ||||
|                                         <li>表单元素</li> | ||||
|                                         <li>图表展示</li> | ||||
|                                     </ul> | ||||
|                                 </div> | ||||
|                             `; | ||||
|                             return; | ||||
|                     } | ||||
|                      | ||||
|                     // 如果有对应的URL,则在iframe中显示该页面 | ||||
|                     if (url) { | ||||
|                         contentBody.innerHTML = `<iframe class="content-iframe" src="${url}" onload="injectFullScreenStyles(this)"></iframe>`; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|              | ||||
|             // 为iframe注入通用的全屏样式 | ||||
|             function injectFullScreenStyles(iframe) { | ||||
|                 try { | ||||
|                     // 等待iframe加载完成 | ||||
|                     iframe.onload = function() { | ||||
|                         try { | ||||
|                             const iframeDoc = iframe.contentDocument || iframe.contentWindow.document; | ||||
|                              | ||||
|                             // 创建样式标签 | ||||
|                             const style = iframeDoc.createElement('style'); | ||||
|                             style.textContent = ` | ||||
|                                 * { | ||||
|                                     margin: 0 !important; | ||||
|                                     padding: 0 !important; | ||||
|                                     box-sizing: border-box !important; | ||||
|                                 } | ||||
|                                  | ||||
|                                 html, body { | ||||
|                                     width: 100% !important; | ||||
|                                     height: 100% !important; | ||||
|                                     margin: 0 !important; | ||||
|                                     padding: 0 !important; | ||||
|                                     overflow-x: hidden !important; | ||||
|                                 } | ||||
|                                  | ||||
|                                 .container { | ||||
|                                     width: 100% !important; | ||||
|                                     height: 100vh !important; | ||||
|                                     margin: 0 !important; | ||||
|                                     padding: 0 !important; | ||||
|                                     max-width: none !important; | ||||
|                                     border-radius: 0 !important; | ||||
|                                     box-shadow: none !important; | ||||
|                                 } | ||||
|                                  | ||||
|                                 body { | ||||
|                                     padding: 0 !important; | ||||
|                                     margin: 0 !important; | ||||
|                                 } | ||||
|                             `; | ||||
|                              | ||||
|                             // 将样式添加到iframe的head中 | ||||
|                             iframeDoc.head.appendChild(style); | ||||
|                         } catch (e) { | ||||
|                             // 如果跨域无法访问iframe内容,忽略错误 | ||||
|                             console.log('无法访问iframe内容(可能是跨域限制):', e); | ||||
|                         } | ||||
|                     }; | ||||
|                 } catch (e) { | ||||
|                     console.log('注入样式失败:', e); | ||||
|                 } | ||||
|             } | ||||
|         }); | ||||
|     </script> | ||||
| </body> | ||||
| </html> | ||||
		Loading…
	
		Reference in New Issue