样式优化

This commit is contained in:
2025-05-29 22:35:11 +08:00
parent adea5cd277
commit d0c479f9d4
2 changed files with 241 additions and 43 deletions
+113 -3
View File
@@ -7,7 +7,92 @@ import styles from '~/styles/pages/contract-template.css?url';
import { FilePreview } from '~/components/reviews';
export const links = () => [
{ rel: 'stylesheet', href: styles }
{ rel: 'stylesheet', href: styles },
// 添加专门的样式隔离
{
rel: 'stylesheet',
href: 'data:text/css;base64,' + btoa(`
.file-preview-isolation {
all: unset !important;
display: block !important;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;
font-size: 14px !important;
line-height: 1.5 !important;
color: #333 !important;
background: #fff !important;
width: 100% !important;
min-height: 600px !important;
position: relative !important;
isolation: isolate !important;
contain: layout style !important;
}
.file-preview-isolation * {
font-family: inherit !important;
box-sizing: border-box !important;
}
.file-preview-isolation .file-preview-header {
display: flex !important;
justify-content: space-between !important;
align-items: center !important;
padding: 8px 16px !important;
background: #f8f9fa !important;
border-bottom: 1px solid #dee2e6 !important;
font-size: 14px !important;
line-height: 1.5 !important;
max-width: none !important;
width: 100% !important;
text-overflow: unset !important;
white-space: nowrap !important;
overflow: visible !important;
}
.file-preview-isolation .file-preview-actions {
display: flex !important;
align-items: center !important;
gap: 8px !important;
}
.file-preview-isolation button,
.file-preview-isolation .ant-btn {
padding: 4px 8px !important;
margin: 0 2px !important;
border: 1px solid #d9d9d9 !important;
border-radius: 4px !important;
background: white !important;
color: #333 !important;
font-size: 12px !important;
line-height: 1.4 !important;
cursor: pointer !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
min-height: 24px !important;
text-decoration: none !important;
white-space: nowrap !important;
vertical-align: middle !important;
}
.file-preview-isolation input,
.file-preview-isolation .ant-input {
padding: 4px 8px !important;
border: 1px solid #d9d9d9 !important;
border-radius: 4px !important;
background: white !important;
color: #333 !important;
font-size: 12px !important;
line-height: 1.4 !important;
min-height: 24px !important;
width: auto !important;
max-width: 40px !important;
text-align: center !important;
outline: none !important;
}
.file-preview-isolation .file-preview-content {
max-height: calc(100vh - 150px) !important;
overflow: auto !important;
background: #f8f9fa !important;
padding: 0 !important;
margin: 0 !important;
}
`)
}
];
export const meta: MetaFunction<typeof loader> = ({ data }) => {
@@ -318,8 +403,33 @@ export default function ContractTemplateDetail() {
<div className="content-section mb-8">
<h3 className="section-title text-xl font-semibold mb-4"></h3>
<div className="border border-gray-200 rounded-lg overflow-hidden">
{/* 为FilePreview创建样式隔离容器 */}
<div className="file-preview-container">
{/* 使用更强的样式隔离 */}
<div
className="file-preview-isolation"
style={{
// 使用CSS变量避免继承
'--font-family': '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
'--font-size': '14px',
'--line-height': '1.5',
'--text-color': '#333333',
'--bg-color': '#ffffff',
// 强制重置所有可能的样式
all: 'unset',
display: 'block',
fontFamily: 'var(--font-family)',
fontSize: 'var(--font-size)',
lineHeight: 'var(--line-height)',
color: 'var(--text-color)',
backgroundColor: 'var(--bg-color)',
width: '100%',
minHeight: '600px',
position: 'relative',
isolation: 'isolate', // 创建新的层叠上下文
contain: 'layout style', // CSS容器化
zIndex: 0
} as React.CSSProperties}
>
<FilePreview
fileContent={fileContent}
activeReviewPointResultId={null}
+128 -40
View File
@@ -646,60 +646,148 @@
}
}
/* FilePreview 样式隔离容器 */
/* FilePreview 样式隔离容器 - 使用更强的样式重置 */
.file-preview-container {
/* 重置所有可能继承的样式 */
all: initial;
/* 恢复必要的基础样式 */
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
font-size: 14px;
line-height: 1.5;
color: #333;
background-color: #fff;
/* 确保布局正常 */
display: block;
width: 100%;
min-height: 600px;
position: relative;
overflow: hidden;
}
/* 确保FilePreview内部的所有元素都能正常显示 */
.file-preview-container * {
box-sizing: border-box;
}
/* 重置可能影响FilePreview的全局样式 */
.file-preview-container .file-preview {
font-size: inherit;
line-height: inherit;
color: inherit;
}
/* 确保FilePreview的header样式不被影响 */
.file-preview-container .file-preview-header {
/* 强制重置基础样式 */
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif !important;
font-size: 14px !important;
line-height: 1.5 !important;
color: #333333 !important;
background-color: #ffffff !important;
/* 布局重置 */
display: block !important;
width: 100% !important;
min-height: 600px !important;
position: relative !important;
overflow: hidden !important;
margin: 0 !important;
padding: 0 !important;
border: none !important;
box-sizing: border-box !important;
/* 文本样式重置 */
text-align: left !important;
text-decoration: none !important;
text-transform: none !important;
letter-spacing: normal !important;
word-spacing: normal !important;
white-space: normal !important;
}
/* 强制重置FilePreview内部的所有元素 */
.file-preview-container *,
.file-preview-container *::before,
.file-preview-container *::after {
box-sizing: border-box !important;
}
/* 重置FilePreview主容器 */
.file-preview-container .file-preview {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif !important;
font-size: 14px !important;
line-height: 1.5 !important;
color: #333333 !important;
background-color: transparent !important;
width: 100% !important;
display: block !important;
position: relative !important;
margin: 0 !important;
padding: 0 !important;
border: none !important;
text-align: left !important;
}
/* 强制重置FilePreview的header样式 */
.file-preview-container .file-preview-header {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif !important;
font-size: 14px !important;
line-height: 1.5 !important;
color: #333333 !important;
background-color: #f8f9fa !important;
display: flex !important;
justify-content: space-between !important;
align-items: center !important;
padding: 8px 16px !important;
margin: 0 !important;
border: none !important;
border-bottom: 1px solid #e9ecef !important;
max-width: none !important;
width: 100% !important;
text-overflow: initial !important;
white-space: nowrap !important;
overflow: visible !important;
text-align: left !important;
box-sizing: border-box !important;
}
/* 确保按钮样式正常 */
.file-preview-container .ant-btn {
/* 重置按钮样式 */
.file-preview-container .ant-btn,
.file-preview-container button {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif !important;
font-size: 12px !important;
line-height: 1.4 !important;
color: #333333 !important;
background-color: #ffffff !important;
border: 1px solid #d9d9d9 !important;
border-radius: 6px !important;
padding: 4px 8px !important;
margin: 0 2px !important;
cursor: pointer !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
text-align: center !important;
text-decoration: none !important;
white-space: nowrap !important;
box-sizing: border-box !important;
min-height: 24px !important;
vertical-align: middle !important;
}
/* 确保输入框样式正常 */
.file-preview-container .ant-input {
.file-preview-container .ant-btn:hover,
.file-preview-container button:hover {
background-color: #f5f5f5 !important;
border-color: #40a9ff !important;
color: #40a9ff !important;
}
/* 重置输入框样式 */
.file-preview-container .ant-input,
.file-preview-container input {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif !important;
font-size: 12px !important;
line-height: 1.4 !important;
color: #333333 !important;
background-color: #ffffff !important;
border: 1px solid #d9d9d9 !important;
border-radius: 6px !important;
padding: 4px 8px !important;
margin: 0 !important;
outline: none !important;
box-sizing: border-box !important;
min-height: 24px !important;
width: auto !important;
max-width: 40px !important;
text-align: center !important;
}
/* 确保PDF内容区域样式正常 */
/* 重置PDF内容区域样式 */
.file-preview-container .file-preview-content {
font-size: inherit;
line-height: inherit;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif !important;
font-size: 14px !important;
line-height: 1.5 !important;
color: #333333 !important;
background-color: #f8f9fa !important;
width: 100% !important;
max-height: calc(100vh - 150px) !important;
overflow-x: auto !important;
overflow-y: auto !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
display: block !important;
position: relative !important;
box-sizing: border-box !important;
text-align: center !important;
}