综述: 优化iframe内容显示,实现无缝全屏效果

- 添加CLAUDE.md文件定义IFRAME嵌入页面样式规范
- 在index.html中为iframe内容注入通用全屏样式
- 确保所有通过iframe嵌入的页面顶格显示无边距空白
- 优化内容区域显示逻辑和页面结构

这些修改遵循了CLAUDE.md中定义的样式规范,确保iframe嵌入页面能够全屏显示。
This commit is contained in:
linbin 2025-09-06 13:34:32 +08:00
parent 24d65300da
commit 2d9f7390c5
2 changed files with 567 additions and 0 deletions

52
商家端web/CLAUDE.md Normal file
View File

@ -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嵌入页面

515
商家端web/index.html Normal file
View File

@ -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>