feat: html文档中引用其它html文档

main
bicijinlian 2 years ago
parent 38a394a73b
commit e17518d0d0

@ -44,4 +44,8 @@
</Content>
</ItemGroup>
<ItemGroup>
<Folder Include="wwwroot\引用html文件方法\js\" />
</ItemGroup>
</Project>

@ -0,0 +1,13 @@
<!-- 此示例是html片断 -->
<link rel="stylesheet" href="./css/Import.css">
<div class="import-box">
<h2>引入html文件</h2>
<a href="#" onclick="window.top.location='./Index.html';">首页</a>
<a href="#" onclick="window.top.location='./UseIframe.html';">使用 iframe</a>
<a href="#" onclick="window.top.location='./UseObject.html';">使用 object</a>
<a href="#" onclick="window.top.location='./UseLink.html';">使用 link</a>
<a href="#">使用 bootstrap 等框架</a>
<a href="#" onclick="window.top.location='./UseJs.html';">使用 js</a>
<a href="#" onclick="window.top.location='./UseJquery.html';">使用 jquery</a>
<a href="#">使用 动态网页技术</a>
</div>

@ -0,0 +1,23 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>使用 iframe</title>
</head>
<body class="iframe-body">
<link rel="stylesheet" href="css/Import.css">
<div class="import-box">
<h2>引入html文件</h2>
<a href="#" onclick="window.top.location='./Index.html';">首页</a>
<a href="#" onclick="window.top.location='./UseIframe.html';">使用 iframe</a>
<a href="#" onclick="window.top.location='./UseObject.html';">使用 object</a>
<a href="#" onclick="window.top.location='./UseLink.html';">使用 link</a>
<a href="#">使用 bootstrap 等框架</a>
<a href="#" onclick="window.top.location='./UseJs.html';">使用 js</a>
<a href="#" onclick="window.top.location='./UseJquery.html';">使用 jquery</a>
<a href="#">使用 动态网页技术</a>
</div>
</body>
</html>

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>主页面</title>
<link rel="stylesheet" href="./css/app.css">
</head>
<body>
<div class="container">
<div class="menu">
<!-- 从html文件加载 -->
</div>
<div class="context">
<span>经比较,使用js或jQuery库最方便</span>
</div>
</div>
<!-- 使用原生js加载html文件 注意fetch的兼容性-->
<script>
fetch("./Import.html")
.then(response=> response.text())
.then(text=> document.getElementsByClassName("menu")[0].innerHTML = text);
</script>
</body>
</html>

@ -0,0 +1,23 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>使用 iframe</title>
<link rel="stylesheet" href="css/app.css">
</head>
<body>
<div class="container">
<div class="menu">
<iframe
name="content_frame"
src="ImportIframe.html" >
</iframe>
</div>
<div class="context">
<span>iframe 内容区</span>
</div>
</div>
</body>
</html>

@ -0,0 +1,28 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>使用jQuery</title>
<link rel="stylesheet" href="./css/app.css">
<script src="./jquery/jquery-3.6.4.min.js"></script>
<script>
$(document).ready(function () {
$(".import-box").load("./Import.html");
});
</script>
</head>
<body>
<div class="container">
<div class="menu">
<div class="import-box">
加载中......
</div>
</div>
<div class="context">
<span>主页内容区</span>
</div>
</div>
</body>
</html>

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>使用js</title>
<link rel="stylesheet" href="./css/app.css">
</head>
<body>
<div class="container">
<div class="menu">
<div class="import-box">
加载中......
</div>
</div>
<div class="context">
<span>主页内容区</span>
</div>
</div>
<script>
fetch("./Import.html")
.then(response=> response.text())
.then(text=> document.getElementsByClassName("import-box")[0].innerHTML = text);
</script>
</body>
</html>

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>使用 import</title>
<link rel="stylesheet" href="./css/app.css">
<link rel="stylesheet" href="./css/Import.css">
<link rel="import" href="./Import.html" id="menu"></head>
</head>
<body>
<div class="container">
<div class="menu">
<div class="import-box">
<h2>加载失败了</h2>
<a href="#" onclick="window.top.location='./Index.html';">首页</a>
<a href="#" onclick="window.top.location='./UseIframe.html';">使用 iframe</a>
<a href="#" onclick="window.top.location='./UseObject.html';">使用 object</a>
<a href="#" onclick="window.top.location='./UseLink.html';">使用 link</a>
<a href="#">使用 bootstrap 等框架</a>
<a href="#" onclick="window.top.location='./UseJs.html';">使用 js</a>
<a href="#" onclick="window.top.location='./UseJquery.html';">使用 jquery</a>
<a href="#">使用 动态网页技术</a>
</div>
</div>
<div class="context">
<span>使用Link.Import 内容区</span>
</div>
</div>
</body>
</html>

@ -0,0 +1,23 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>使用 Object</title>
<link rel="stylesheet" href="css/app.css">
</head>
<body>
<div class="container">
<div class="menu">
<object
type="text/x-scriptlet"
data="./ImportIframe.html" >
</object>
</div>
<div class="context">
<span>使用 Object 内容区</span>
</div>
</div>
</body>
</html>

@ -0,0 +1,26 @@
body.iframe-body
{
margin: 0;
padding: 0;
}
.import-box {
margin: 0;
padding: 1px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start;
}
.import-box h2 {
text-align: left;
align-self: center;
}
.import-box a {
margin: 0 20px;
padding: 5px 5px;
text-align: left;
text-decoration: none;
}

@ -0,0 +1,71 @@
html {
margin: 0;
padding: 0;
}
body {
margin: 10px;
padding: 0;
}
.container {
margin: 15px auto;
padding: 15px;
min-height: 400px;
background-color: #aca8a8;
border: 1px solid rebeccapurple;
border-radius: 15px;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-evenly;
align-items: stretch;
}
.menu {
margin-right: 10px;
padding: 11px;
width: 250px;
background-color: #5ccb8c;
border: 2px solid rebeccapurple;
border-radius: 15px;
/*便于计算*/
background-origin: border-box;
}
iframe {
overflow-clip-margin: content-box !important;
margin: 0;
padding: 0;
width: 100%;
height: 100%;
border-width: 0px;
}
object {
overflow-clip-margin: content-box !important;
margin: 0;
padding: 0;
width: 100%;
height: 100%;
border-width: 0px;
}
.context {
width: calc(100% - 200px);
padding: 10px;
background-color: #7b96cf;
border: 2px solid rebeccapurple;
border-radius: 15px;
margin-left: auto;
text-align: center;
font-size: 50px;
/*便于计算*/
background-origin: border-box;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content:flex-start;
align-items: center;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

@ -0,0 +1,214 @@
`html` 中引用 `html``html片断` 的方式
============================================
在静态站点的制作中,有些像通用菜单、头部、页脚等是统一的,如果在各页页中都复制一分对于修改是个空难级影响。
以下是几种在html中引用另一个 html 文件的方式。
本示例中被引用的html片断文件为 import.html方便起见引用和被引用的html文件牌同一目录(当然也可以不同)。
## 纯 `html` 方式
+ 使用ifreame 标签
``` html
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>使用iframe标签引用html文件</title>
<base href="/" />
</head>
<body>
<div>
其它内容
</div>
<!-- 使用iframe标签引用html文件 -->
<iframe
<!-- 各种属性 -->
name="content_frame"
width="100%"
height="30px"
marginwidth = 0
marginheight=0
src="import.html" >
</iframe>
<div>
其它内容
</div>
</body>
</html>
<!-- 优点:兼容性好,方便快捷 -->
<!-- 缺点:
0、父文档必须多加一个 <iframe> 标签
1、必须是完整的html结构; html片断 会被浏览器自动添加成完整的html结构
2、布局流独立样式独立
3、浏览器当两个独立网页
4、样式和调试不太方便
-->
````
+ 使用object 标签
``` html
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>使用 "object标签" 引用html文件</title>
</head>
<body>
<div>
其它内容
</div>
<!-- 使用 "object标签" 引用html文件 -->
<object
<!-- 各种属性 -->
style="border:0px"
type="text/x-scriptlet"
data="import.html"
width=100%
height=30 >
</object>
<div>
其它内容
</div>
</body>
</html>
<!-- 优点:
1、兼容性好
2、使用方便无依赖
-->
<!-- 缺点:
0、父文档必须多加一个 <object> 标签
1、必须是完整的html结构; html片断 会被浏览器自动添加成完整的html结构
2、浏览器当两个独立网页
3、样式和调试不太方便
-->
````
+ 使用link 标签<link rel="import" href="x.html" id="xx"/> [实现困难]
``` html
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>使用iframe标签引用html文件</title>
<base href="/" />
<link rel="import" href="page/Page_1.html" id="page1"></head>
</head>
<body>
<div>
其它内容
</div>
<!-- 使用link标签的import引用html文件 -->
<div>
其它内容
</div>
</body>
</html>
<!-- 优点: 理论上是最好的试
-->
<!-- 缺点:
1、浏览器支持不好
IE、firefox等不支持;chrome、新Edge支持老版本可能要打开设置chrome://flags 启用HTML imports
或者使用兼容js插件
2、实现困难对浏览器要求高目前没能实现
3、扩大兼容的话要引入js库还要进行浏览器设置
4、如果要引入js插件不如直接使用js或jQuery了。
-->
````
+ bootstrap 的 panel 组件,或者 easyui 的 window 组件
``` html
<!-- 优点与UI框架集成方便实现多种效果 -->
<!-- 缺点需要引用较重的UI框架不如使用原生js或jQuery-->
````
## 使用 js 配合
+ 原生 js
``` html
<!-- 大体步骤:
1、远程请求html文件使用xhrRequest请求或者fetch请求(fetch注意浏览器的兼容性)
-->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>使用js</title>
<link rel="stylesheet" href="./css/app.css">
</head>
<body>
<div class="container">
<div class="menu">
<div class="import-box">
加载中......
</div>
</div>
<div class="context">
<span>主页内容区</span>
</div>
</div>
<script>
fetch("./Import.html")
.then(response=> response.text())
.then(text=> document.getElementsByClassName("import-box")[0].innerHTML = text);
</script>
</body>
</html>
<!-- 优点:
1、原生兼容性好
2、不需要引入第三方库
-->
<!-- 缺点:
1、需要一个唯一的父元素
2、代码开发没有使用框架方便
-->
````
+ 使用jquery
``` html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>使用jQuery</title>
<link rel="stylesheet" href="./css/app.css">
<script src="./jquery/jquery-3.6.4.min.js"></script>
<script>
$(document).ready(function () {
$.get("./Import.html", function(data,state,xhr) {
$(".import-box").innerHTML(data);
});
});
</script>
</head>
<body>
<div class="container">
<div class="menu">
<div class="import-box">
加载中......
</div>
</div>
<div class="context">
<span>主页内容区</span>
</div>
</div>
</body>
</html>
<!-- 优点:
1、兼容性最好几乎能兼容所有浏览器(jquery有多个版本老版能兼容到IE6,甚至IE5)
2、开发方便快捷
-->
<!-- 缺点:
1、需要引用jquery库并且注意版本(版本问题比较小,主要是版本可能和功能版本有冲突)
-->
````
## 动态网页技术
比如 asp.net webform、mvc、razor、blazor等技术中都有一个类似"模板页"的概述,可以很方便的实现。

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -167,10 +167,12 @@
</svg>
<main>
<h1 class="visually-hidden">Headers examples</h1>
<h1 class="visually-hidden">header 示例</h1>
<div class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<!-- e代表end即margin-right或者padding-right: me就是margin-end pe是padding-end -->
<!-- s代表start即margin-left或者padding-left: ms就是margin-start ps是padding-start -->
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto link-body-emphasis text-decoration-none">
<svg class="bi me-2" width="40" height="32"><use xlink:href="#bootstrap" /></svg>
<span class="fs-4">Simple header</span>

@ -0,0 +1,6 @@
body {
padding: 0px;
margin-top: 0px;
margin-bottom: 200px;
}

@ -5,6 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>当flex布局遇到自动margin</title>
<link rel="stylesheet" href="./index.css">
<style>
/* #region */
.container {
@ -111,5 +112,6 @@
xgj7
</div>
</div>
<script src="./index.js"></script>
</body>
</html>

@ -0,0 +1,8 @@
//第一个容器末尾添加div元素
var box = document.getElementsByClassName("container")[0];
var node = document.createElement("div");
node.setAttribute("class","item item7");
node.innerText = "js";
box.appendChild(node);

@ -0,0 +1,449 @@
{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"在笔记本中使用 Hmtl\n",
"==========================="
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"> 特别注意css里的样式可能影响整个笔记本比如说给html元素添加背景整个笔记文档背景都变了可以变相设置整个笔记文档了。"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"dotnet_interactive": {
"language": "html"
},
"polyglot_notebook": {
"kernelName": "html"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/html": [
"<!DOCTYPE html>\r\n",
"<html lang=\"en\">\r\n",
"<head>\r\n",
" <meta charset=\"UTF-8\">\r\n",
" <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\r\n",
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n",
" <title>当flex布局遇到自动margin</title>\r\n",
" <link rel=\"stylesheet\" href=\"./index.css\">\r\n",
" <style>\r\n",
" /*#region*/\r\n",
" .container {\r\n",
" width: 800px;\r\n",
" min-height: 400px;\r\n",
" margin: 20px auto;\r\n",
"\r\n",
" background-color: rgb(132, 121, 110);\r\n",
"\r\n",
" display: flex;\r\n",
" }\r\n",
"\r\n",
" .item {\r\n",
" text-align: center;\r\n",
" font-size: 30px;\r\n",
" }\r\n",
"\r\n",
" /* 子项的宽高\r\n",
" 是精心设计过的,大小不一、有无设置不同,只有这样才能测试出各种情况。统一宽高的情况下,变得简单了却难以测试。\r\n",
" */\r\n",
"\r\n",
" /* 子项的文本内容\r\n",
" 也是精心设计过的x便于观察基线(baseline)、g下部凸出、j是全高字符等便于测试否则aling-itme:baseline等测试不出来效果。\r\n",
" */\r\n",
" .item1 {\r\n",
" height: 150px;\r\n",
"\r\n",
" background-color: blueviolet;\r\n",
" }\r\n",
"\r\n",
" .item2 {\r\n",
" /* width: 200px;\r\n",
" height: 200px; */\r\n",
"\r\n",
" background-color: green;\r\n",
" }\r\n",
"\r\n",
" .item3 {\r\n",
" font-size: 100px;\r\n",
" width: 250px;\r\n",
" height: 150px;\r\n",
" background-color: skyblue;\r\n",
" }\r\n",
"\r\n",
" .item4 {\r\n",
" width: 200px;\r\n",
" height: 200px;\r\n",
"\r\n",
" background-color: coral;\r\n",
" }\r\n",
"\r\n",
" .item5 {\r\n",
" width: 200px;\r\n",
" height: 100px;\r\n",
" background-color: deeppink;\r\n",
" }\r\n",
"\r\n",
" .item6 {\r\n",
" background-color: forestgreen;\r\n",
" }\r\n",
"\r\n",
" .item7 {\r\n",
" width: 200px;\r\n",
" height: 120px;\r\n",
" background-color: saddlebrown;\r\n",
" }\r\n",
"\r\n",
" .item2::after,.item6::after {\r\n",
" content: \"无高\";\r\n",
" }\r\n",
"\r\n",
" .item1::after,.item4::after {\r\n",
" content: \"无宽\";\r\n",
" \r\n",
" }\r\n",
" /* #endregion */\r\n",
" </style>\r\n",
"</head>\r\n",
"<body>\r\n",
" <div class=\"container\">\r\n",
" <div class=\"item item1\">x</div>\r\n",
" <div class=\"item item2\">x</div>\r\n",
" <div class=\"item item3\">\r\n",
" xgj3\r\n",
" </div>\r\n",
" </div>\r\n",
"\r\n",
" <div class=\"container\">\r\n",
" <div class=\"item item1\">x</div>\r\n",
" <div class=\"item item2\">x</div>\r\n",
" <div class=\"item item3\">\r\n",
" xgj3\r\n",
" </div>\r\n",
"\r\n",
" <div class=\"item item4\">x</div>\r\n",
"\r\n",
" <div class=\"item item5\">\r\n",
" xgj5\r\n",
" </div>\r\n",
"\r\n",
" <div class=\"item item6\">x</div>\r\n",
"\r\n",
" <div class=\"item item7\">\r\n",
" xgj7\r\n",
" </div>\r\n",
" </div>\r\n",
" <script src=\"./index.js\"></script>\r\n",
" <script>\r\n",
" console.log('hello from JavaScript!');\r\n",
" </script>\r\n",
"</body>\r\n",
"</html>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"<!DOCTYPE html>\n",
"<html lang=\"en\">\n",
"<head>\n",
" <meta charset=\"UTF-8\">\n",
" <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n",
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n",
" <title>当flex布局遇到自动margin</title>\n",
" <link rel=\"stylesheet\" href=\"./index.css\">\n",
" <style>\n",
" /*#region*/\n",
" .container {\n",
" width: 800px;\n",
" min-height: 400px;\n",
" margin: 20px auto;\n",
"\n",
" background-color: rgb(132, 121, 110);\n",
"\n",
" display: flex;\n",
" }\n",
"\n",
" .item {\n",
" text-align: center;\n",
" font-size: 30px;\n",
" }\n",
"\n",
" /* 子项的宽高\n",
" 是精心设计过的,大小不一、有无设置不同,只有这样才能测试出各种情况。统一宽高的情况下,变得简单了却难以测试。\n",
" */\n",
"\n",
" /* 子项的文本内容\n",
" 也是精心设计过的x便于观察基线(baseline)、g下部凸出、j是全高字符等便于测试否则aling-itme:baseline等测试不出来效果。\n",
" */\n",
" .item1 {\n",
" height: 150px;\n",
"\n",
" background-color: blueviolet;\n",
" }\n",
"\n",
" .item2 {\n",
" /* width: 200px;\n",
" height: 200px; */\n",
"\n",
" background-color: green;\n",
" }\n",
"\n",
" .item3 {\n",
" font-size: 100px;\n",
" width: 250px;\n",
" height: 150px;\n",
" background-color: skyblue;\n",
" }\n",
"\n",
" .item4 {\n",
" width: 200px;\n",
" height: 200px;\n",
"\n",
" background-color: coral;\n",
" }\n",
"\n",
" .item5 {\n",
" width: 200px;\n",
" height: 100px;\n",
" background-color: deeppink;\n",
" }\n",
"\n",
" .item6 {\n",
" background-color: forestgreen;\n",
" }\n",
"\n",
" .item7 {\n",
" width: 200px;\n",
" height: 120px;\n",
" background-color: saddlebrown;\n",
" }\n",
"\n",
" .item2::after,.item6::after {\n",
" content: \"无高\";\n",
" }\n",
"\n",
" .item1::after,.item4::after {\n",
" content: \"无宽\";\n",
" \n",
" }\n",
" /* #endregion */\n",
" </style>\n",
"</head>\n",
"<body>\n",
" <div class=\"container\">\n",
" <div class=\"item item1\">x</div>\n",
" <div class=\"item item2\">x</div>\n",
" <div class=\"item item3\">\n",
" xgj3\n",
" </div>\n",
" </div>\n",
"\n",
" <div class=\"container\">\n",
" <div class=\"item item1\">x</div>\n",
" <div class=\"item item2\">x</div>\n",
" <div class=\"item item3\">\n",
" xgj3\n",
" </div>\n",
"\n",
" <div class=\"item item4\">x</div>\n",
"\n",
" <div class=\"item item5\">\n",
" xgj5\n",
" </div>\n",
"\n",
" <div class=\"item item6\">x</div>\n",
"\n",
" <div class=\"item item7\">\n",
" xgj7\n",
" </div>\n",
" </div>\n",
" <script src=\"./index.js\"></script>\n",
" <script>\n",
" console.log('hello from JavaScript!');\n",
" </script>\n",
"</body>\n",
"</html>"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## 测试下"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"dotnet_interactive": {
"language": "html"
},
"polyglot_notebook": {
"kernelName": "html"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/html": [
"<!DOCTYPE html>\r\n",
"<html lang=\"en\">\r\n",
"<head>\r\n",
" <meta charset=\"UTF-8\">\r\n",
" <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\r\n",
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n",
" <title>当flex布局遇到自动margin</title>\r\n",
" <link rel=\"stylesheet\" href=\"./index.css\">\r\n",
" <style>\r\n",
" /* #region */\r\n",
" .container {\r\n",
" width: 800px;\r\n",
" min-height: 400px;\r\n",
" margin: 20px auto;\r\n",
"\r\n",
" background-color: rgb(132, 121, 110);\r\n",
"\r\n",
" display: flex;\r\n",
" }\r\n",
"\r\n",
" .item {\r\n",
" text-align: center;\r\n",
" font-size: 30px;\r\n",
" }\r\n",
"\r\n",
" /* 子项的宽高\r\n",
" 是精心设计过的,大小不一、有无设置不同,只有这样才能测试出各种情况。统一宽高的情况下,变得简单了却难以测试。\r\n",
" */\r\n",
"\r\n",
" /* 子项的文本内容\r\n",
" 也是精心设计过的x便于观察基线(baseline)、g下部凸出、j是全高字符等便于测试否则aling-itme:baseline等测试不出来效果。\r\n",
" */\r\n",
" .item1 {\r\n",
" height: 150px;\r\n",
"\r\n",
" background-color: blueviolet;\r\n",
" }\r\n",
"\r\n",
" .item2 {\r\n",
" /* width: 200px;\r\n",
" height: 200px; */\r\n",
"\r\n",
" background-color: green;\r\n",
" }\r\n",
"\r\n",
" .item3 {\r\n",
" font-size: 100px;\r\n",
" width: 250px;\r\n",
" height: 150px;\r\n",
" background-color: skyblue;\r\n",
" }\r\n",
"\r\n",
" .item4 {\r\n",
" width: 200px;\r\n",
" height: 200px;\r\n",
"\r\n",
" background-color: coral;\r\n",
" }\r\n",
"\r\n",
" .item5 {\r\n",
" width: 200px;\r\n",
" height: 100px;\r\n",
" background-color: deeppink;\r\n",
" }\r\n",
"\r\n",
" .item6 {\r\n",
" background-color: forestgreen;\r\n",
" }\r\n",
"\r\n",
" .item7 {\r\n",
" width: 200px;\r\n",
" height: 120px;\r\n",
" background-color: saddlebrown;\r\n",
" }\r\n",
"\r\n",
" .item2::after,.item6::after {\r\n",
" content: \"无高\";\r\n",
" }\r\n",
"\r\n",
" .item1::after,.item4::after {\r\n",
" content: \"无宽\";\r\n",
" \r\n",
" }\r\n",
" /* #endregion */\r\n",
" </style>\r\n",
"</head>\r\n",
"<body>\r\n",
" <div class=\"container\">\r\n",
" <div class=\"item item1\">x</div>\r\n",
" <div class=\"item item2\">x</div>\r\n",
" <div class=\"item item3\">\r\n",
" xgj3\r\n",
" </div>\r\n",
" </div>\r\n",
"\r\n",
" <div class=\"container\">\r\n",
" <div class=\"item item1\">x</div>\r\n",
" <div class=\"item item2\">x</div>\r\n",
" <div class=\"item item3\">\r\n",
" xgj3\r\n",
" </div>\r\n",
"\r\n",
" <div class=\"item item4\">x</div>\r\n",
"\r\n",
" <div class=\"item item5\">\r\n",
" xgj5\r\n",
" </div>\r\n",
"\r\n",
" <div class=\"item item6\">x</div>\r\n",
"\r\n",
" <div class=\"item item7\">\r\n",
" xgj7\r\n",
" </div>\r\n",
" </div>\r\n",
" <script src=\"./index.js\"></script>\r\n",
"</body>\r\n",
"</html>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#!import ./index.html"
]
}
],
"metadata": {
"language_info": {
"name": "python"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}

@ -13,7 +13,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorStudy.Bootstrap5Study
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorStudy.Bootstrap4Study", "BlazorStudy.Bootstrap4Study\BlazorStudy.Bootstrap4Study.csproj", "{EA5A6281-DACB-408A-8C69-DD16D4AEA0EF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlazorStudy.BootstrapLatest", "BlazorStudy.BootstrapLatest\BlazorStudy.BootstrapLatest.csproj", "{D8217FB7-3110-4445-9415-EA2FF7DD0099}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorStudy.BootstrapLatest", "BlazorStudy.BootstrapLatest\BlazorStudy.BootstrapLatest.csproj", "{D8217FB7-3110-4445-9415-EA2FF7DD0099}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution

@ -0,0 +1,275 @@
`html` 中引用 `html``html片断` 的方式
============================================
在静态站点的制作中,有些像通用菜单、头部、页脚等是统一的,如果在各页页中都复制一分对于修改是个空难级影响。
以下是几种在html中引用另一个 html 文件的方式。
本示例中被引用的html片断文件为 import.html方便起见引用和被引用的html文件牌同一目录(当然也可以不同)。
## 纯 `html` 方式
+ 使用ifreame 标签
``` html
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>使用iframe标签引用html文件</title>
<base href="/" />
</head>
<body>
<div>
其它内容
</div>
<!-- 使用iframe标签引用html文件 -->
<iframe
<!-- 各种属性 -->
name="content_frame"
width="100%"
height="30px"
marginwidth = 0
marginheight=0
src="import.html" >
</iframe>
<div>
其它内容
</div>
</body>
</html>
<!-- 优点:兼容性好,方便快捷 -->
<!-- 缺点:浏览器当两个独立网页,样式和调试不太方便 -->
````
+ 使用object 标签
``` html
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>使用 "object标签" 引用html文件</title>
</head>
<body>
<div>
其它内容
</div>
<!-- 使用 "object标签" 引用html文件 -->
<object
<!-- 各种属性 -->
style="border:0px"
type="text/x-scriptlet"
data="import.html"
width=100%
height=30 >
</object>
<div>
其它内容
</div>
</body>
</html>
<!-- 优点:兼容性好,方便使用-->
<!-- 缺点:样式不好调试、不是专用标签-->
````
+ 使用link [重点推荐]
``` html
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>使用iframe标签引用html文件</title>
<base href="/" />
</head>
<body>
<div>
其它内容
</div>
<!-- 使用iframe标签引用html文件 -->
<iframe
<!-- 各种属性 -->
name="content_frame"
width="100%"
height="30px"
marginwidth = 0
marginheight=0
src="import.htm" >
</iframe>
<div>
其它内容
</div>
</body>
</html>
<!-- 优点:
-->
<!-- 缺点:
-->
````
+ 使用import 引入
``` html
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>使用iframe标签引用html文件</title>
<base href="/" />
</head>
<body>
<div>
其它内容
</div>
<!-- 各种属性 -->
<iframe
<!-- 各种属性 -->
name="content_frame"
width="100%"
height="30px"
marginwidth = 0
marginheight=0
src="import.htm" >
</iframe>
<div>
其它内容
</div>
</body>
</html>
<!-- 优点:
-->
<!-- 缺点:
-->
````
+ bootstrap 的 panel 组件,或者 easyui 的 window 组件
``` html
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>使用iframe标签引用html文件</title>
<base href="/" />
</head>
<body>
<div>
其它内容
</div>
<!-- 各种属性 -->
<iframe
<!-- 各种属性 -->
name="content_frame"
width="100%"
height="30px"
marginwidth = 0
marginheight=0
src="import.htm" >
</iframe>
<div>
其它内容
</div>
</body>
</html>
<!-- 优点:
-->
<!-- 缺点:
-->
````
## 使用 js 配合
+ 原生 js
``` html
<!-- 大体有以下几种方式
1 使用 document.createElement() 方法创建一个指定的 HTML 元素,然后使用 appendChild() 方法将它添加到指定的父节点。
2 使用 innerHTML 属性直接向指定的元素插入 HTML 代码。
3 使用 insertAdjacentHTML() 方法在指定的位置插入 HTML 代码。
-->
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>使用iframe标签引用html文件</title>
<base href="/" />
</head>
<body>
<div>
其它内容
</div>
<!-- 各种属性 -->
<iframe
<!-- 各种属性 -->
name="content_frame"
width="100%"
height="30px"
marginwidth = 0
marginheight=0
src="import.htm" >
</iframe>
<div>
其它内容
</div>
</body>
</html>
<!-- 优点:
1、原生兼容性好
2、不需要引入第三方库
-->
<!-- 缺点:
1、需要一个唯一的父元素
2、代码开发没有使用框架方便
-->
````
+ 使用jquery
``` html
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>使用iframe标签引用html文件</title>
<base href="/" />
</head>
<body>
<div>
其它内容
</div>
<!-- 各种属性 -->
<iframe
<!-- 各种属性 -->
name="content_frame"
width="100%"
height="30px"
marginwidth = 0
marginheight=0
src="import.htm" >
</iframe>
<div>
其它内容
</div>
</body>
</html>
<!-- 优点:
1、兼容性最好几乎能兼容所有浏览器(jquery有多个版本老版能兼容到IE6,甚至IE5)
2、开发方便快捷
-->
<!-- 缺点:
1、需要引用jquery库并且注意版本(版本问题比较小,主要是版本可能和功能版本有冲突)
-->
````
## 动态网页技术
比如 asp.net webform、mvc、razor、blazor等技术中都有一个类似"模板页"的概述,可以很方便的实现。
Loading…
Cancel
Save