diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3da3c92daba41d7eed78e7b0e0ebf9afc469bb1d
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+    <mapping directory="$PROJECT_DIR$/ext ironing/myteam" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000000000000000000000000000000000000..67300cd73f07efc3bbcd4ab1c3c77a6982a677f5
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AutoImportSettings">
+    <option name="autoReloadType" value="SELECTIVE" />
+  </component>
+  <component name="ChangeListManager">
+    <list default="true" id="5d66d739-0810-4bfa-9039-29f5df43a961" name="更改" comment="111">
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+    </list>
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="FileTemplateManagerImpl">
+    <option name="RECENT_TEMPLATES">
+      <list>
+        <option value="HTML File" />
+        <option value="CSS File" />
+      </list>
+    </option>
+  </component>
+  <component name="Git.Settings">
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+    <option name="ROOT_SYNC" value="DONT_SYNC" />
+  </component>
+  <component name="GitLabMergeRequestFiltersHistory"><![CDATA[{
+  "history": [
+    {
+      "state": "MERGED",
+      "assignee": {
+        "type": "org.jetbrains.plugins.gitlab.mergerequest.ui.filters.GitLabMergeRequestsFiltersValue.MergeRequestsMemberFilterValue.MergeRequestsAssigneeFilterValue",
+        "username": "c24058946",
+        "fullname": "Zhicheng Xu"
+      }
+    }
+  ],
+  "lastFilter": {
+    "state": "MERGED",
+    "assignee": {
+      "type": "org.jetbrains.plugins.gitlab.mergerequest.ui.filters.GitLabMergeRequestsFiltersValue.MergeRequestsMemberFilterValue.MergeRequestsAssigneeFilterValue",
+      "username": "c24058946",
+      "fullname": "Zhicheng Xu"
+    }
+  }
+}]]></component>
+  <component name="GitLabMergeRequestsSettings"><![CDATA[{
+  "selectedUrlAndAccountId": {
+    "first": "https://git.cardiff.ac.uk/c23096663/myteam.git",
+    "second": "e7ab46ee-4d9f-4595-99aa-40fd7f0f73ea"
+  }
+}]]></component>
+  <component name="HighlightingSettingsPerFile">
+    <setting file="file://$PROJECT_DIR$/taobao.css" root0="SKIP_INSPECTION" />
+  </component>
+  <component name="ProblemsViewState">
+    <option name="selectedTabId" value="QODANA_PROBLEMS_VIEW_TAB" />
+  </component>
+  <component name="ProjectColorInfo">{
+  &quot;customColor&quot;: &quot;&quot;,
+  &quot;associatedIndex&quot;: 2
+}</component>
+  <component name="ProjectId" id="2n9vFIcqLQEzYXTxQpXrDWmYddj" />
+  <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
+  <component name="ProjectViewState">
+    <option name="hideEmptyMiddlePackages" value="true" />
+    <option name="showLibraryContents" value="true" />
+  </component>
+  <component name="PropertiesComponent"><![CDATA[{
+  "keyToString": {
+    "DefaultHtmlFileTemplate": "HTML File",
+    "JavaScript 调试.member home page.html.executor": "Run",
+    "JavaScript 调试.taobao.html.executor": "Run",
+    "RunOnceActivity.ShowReadmeOnStart": "true",
+    "git-widget-placeholder": "master",
+    "last_opened_file_path": "D:/webcodegit",
+    "list.type.of.created.stylesheet": "CSS",
+    "node.js.detected.package.eslint": "true",
+    "node.js.detected.package.tslint": "true",
+    "node.js.selected.package.eslint": "(autodetect)",
+    "node.js.selected.package.tslint": "(autodetect)",
+    "nodejs_package_manager_path": "npm",
+    "settings.editor.selected.configurable": "vcs.Git",
+    "vue.rearranger.settings.migration": "true"
+  }
+}]]></component>
+  <component name="SharedIndexes">
+    <attachedChunks>
+      <set>
+        <option value="bundled-js-predefined-d6986cc7102b-5c90d61e3bab-JavaScript-WS-242.23339.15" />
+      </set>
+    </attachedChunks>
+  </component>
+  <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="默认任务">
+      <changelist id="5d66d739-0810-4bfa-9039-29f5df43a961" name="更改" comment="" />
+      <created>1728398002254</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1728398002254</updated>
+      <workItem from="1728398003914" duration="4894000" />
+      <workItem from="1728550406289" duration="9937000" />
+    </task>
+    <task id="LOCAL-00001" summary="111">
+      <option name="closed" value="true" />
+      <created>1728559850168</created>
+      <option name="number" value="00001" />
+      <option name="presentableId" value="LOCAL-00001" />
+      <option name="project" value="LOCAL" />
+      <updated>1728559850168</updated>
+    </task>
+    <option name="localTasksCounter" value="2" />
+    <servers />
+  </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="3" />
+  </component>
+  <component name="Vcs.Log.Tabs.Properties">
+    <option name="TAB_STATES">
+      <map>
+        <entry key="MAIN">
+          <value>
+            <State>
+              <option name="FILTERS">
+                <map>
+                  <entry key="branch">
+                    <value>
+                      <list>
+                        <option value="origin/main" />
+                      </list>
+                    </value>
+                  </entry>
+                </map>
+              </option>
+            </State>
+          </value>
+        </entry>
+      </map>
+    </option>
+  </component>
+  <component name="VcsManagerConfiguration">
+    <MESSAGE value="111" />
+    <option name="LAST_COMMIT_MESSAGE" value="111" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/exercise/.idea/.gitignore b/exercise/.idea/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..10b731c518c79596ed8690544cfbc87a98cf7e36
--- /dev/null
+++ b/exercise/.idea/.gitignore
@@ -0,0 +1,5 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
diff --git a/exercise/.idea/modules.xml b/exercise/.idea/modules.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e7d09053d5012775efbadfafe0697ad6dea34496
--- /dev/null
+++ b/exercise/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/webcodegit.iml" filepath="$PROJECT_DIR$/.idea/webcodegit.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/exercise/.idea/webcodegit.iml b/exercise/.idea/webcodegit.iml
new file mode 100644
index 0000000000000000000000000000000000000000..24643cc37449b4bde54411a80b8ed61258225e34
--- /dev/null
+++ b/exercise/.idea/webcodegit.iml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/.tmp" />
+      <excludeFolder url="file://$MODULE_DIR$/temp" />
+      <excludeFolder url="file://$MODULE_DIR$/tmp" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/exercise/689d1554-9651-4cfe-9f2b-49c815ed30e1.webp b/exercise/689d1554-9651-4cfe-9f2b-49c815ed30e1.webp
new file mode 100644
index 0000000000000000000000000000000000000000..ca1ac62e901097c44615d0588fbbfc822e71b97d
Binary files /dev/null and b/exercise/689d1554-9651-4cfe-9f2b-49c815ed30e1.webp differ
diff --git a/exercise/main.css b/exercise/main.css
new file mode 100644
index 0000000000000000000000000000000000000000..337a8223380cd045275cb0c2021f09bc16d273c9
--- /dev/null
+++ b/exercise/main.css
@@ -0,0 +1,23 @@
+.header{
+    /*设置容器的大小,然后让容器内的图片不会超出去*/
+    border-color: black;/*可视化边框范围用*/
+    border-style: solid;
+    width: 100%;
+    height: 120px;
+    overflow: hidden;
+    /*图片超出容器的部分隐藏掉  */
+    position: relative;
+   /*这个postion是用于规范,因为img的header的子类,子类的position写的absolute是相对于父类的absolute,规范写法需要加上*/
+
+
+}
+/*将图片按照容器的大小进行适配,统一高度并居中*/
+.header img{
+    height: 120px;
+   position: absolute;
+    /*设置图片是绝对位置,并且是绝对是从容器的左一半的位置开始显示*/
+    left: 50%;
+    transform: translateX(-50%);
+    transform是移动属性,X轴移动-50% 也就是向左移动一半的距离,这样就一定是居中显示的图片
+
+}
\ No newline at end of file
diff --git a/exercise/taobao.css b/exercise/taobao.css
new file mode 100644
index 0000000000000000000000000000000000000000..e04eaae0bc4a8fd38cf915c2b70c491fdf6f6665
--- /dev/null
+++ b/exercise/taobao.css
@@ -0,0 +1,6 @@
+body,divdl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}
+body{text-align:center;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;}
+li{ list-style:none}
+a{ text-decoration:none}
+img{border:none;}
+
diff --git a/exercise/taobao.html b/exercise/taobao.html
new file mode 100644
index 0000000000000000000000000000000000000000..0fae286eec922218ce249d5c76d504cec4f43822
--- /dev/null
+++ b/exercise/taobao.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>小米</title>
+    <link rel="stylesheet" href="taobao.css">
+    <link rel="stylesheet" href="main.css">
+</head>
+
+<body>
+<!--顶部栏-->
+<div class="header">
+    <a href="https://www.dota2.com/home">
+        <img src="689d1554-9651-4cfe-9f2b-49c815ed30e1.webp" alt="dota2">
+    </a>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/ext ironing/member home page.html b/ext ironing/member home page.html
new file mode 100644
index 0000000000000000000000000000000000000000..33bccb87f4e8554334570109d70614644d5d9b5b
--- /dev/null
+++ b/ext ironing/member home page.html	
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>member information</title>
+  <link rel="stylesheet" href="memberhomepage.css">
+  <link rel="stylesheet" href="reset.css">
+</head>
+<body>
+<div class="top safe">
+  <!-- title -->
+  <div class="title left">
+    <h1>Extreme Ironing</h1>
+  </div>
+  <div class="saying left">
+    <img src="../image/l.gif" alt="渐变竖线">
+
+  </div>
+  <div class="saying2 left">
+    <p>Extreme ironing (also called EI) is an extreme sport in which people take ironing boards to remote
+      locations and iron items of clothing. </p>
+  </div>
+
+  <!-- nav -->
+  <div class="nav1 right">
+    <ul>
+      <li>index</li>
+      <li>about us</li>
+      <li>news</li>
+      <li>order us</li>
+      <li>contact us</li>
+      <li>ask us</li>
+      <li>contact us</li>
+    </ul>
+  </div>
+</div>
+
+<div class="profile">
+  <img src="u=2662935961,3025118511&fm=253&fmt=auto&app=138&f=JPEG.webp" alt="member photo">
+  <h3>hahaha haha</h3>
+  <br>
+  <p>love ext. ironing</p>
+  </div>
+<div class="information">
+  <h2>main information</h2>
+  <div class="content">
+    <p>
+      &nbsp;&nbsp;&nbsp;&nbsp;I love ext,ironing, Extreme ironing (also called EI) is an extreme sport in which people take ironing boards to remote locations and iron items of clothing. According to the Extreme Ironing Bureau, extreme ironing is "the latest dangerous sport that combines the thrills of an extreme outdoor activity with the satisfaction of a well-pressed shirt."
+
+      Part of the attraction and interest the media has shown towards extreme ironing seems to center on the issue of whether it is really a sport or not. It is widely considered to be tongue-in-cheek.
+
+      Some locations where such performances have taken place include a mountainside of a difficult climb; a forest; in a canoe; while skiing or snowboarding; on top of large bronze statues; in the middle of a street; underwater; in the middle of the M1 motorway; in a keirin cycle race; while parachuting; and under the ice sheet of a frozen lake. The performances have been conducted solo or by groups.
+    </p>
+
+  </div>
+
+</div>
+
+
+
+
+
+
+
+
+
+</body>
+</html>
\ No newline at end of file
diff --git a/ext ironing/memberhomepage.css b/ext ironing/memberhomepage.css
new file mode 100644
index 0000000000000000000000000000000000000000..5c78f05f160fdc608e9b17713df3daa80801a993
--- /dev/null
+++ b/ext ironing/memberhomepage.css	
@@ -0,0 +1,90 @@
+.top {
+    background: #fefefe;
+}
+
+.title {
+    width: 130px;
+    height: 75px;
+    margin: 23px 0;
+    background-color: #f75a53;
+    color: yellow;
+}
+
+.saying img {
+    margin: 36px 24px 33px 39px;
+}
+
+.saying2 {
+    width: 300px;
+    height: 39px;
+    margin-top: 20px;
+}
+
+.saying2 p {
+    font-size: 14px;
+    color: #989a99;
+    font-style: italic;
+    line-height: 2;
+}
+
+.nav1 li {
+    padding: 30px 16px;
+    color: #000100;
+    float: left;
+    margin-top: 30px;
+}
+
+.nav1 li:hover {
+    background-color: #f75a53;
+    color: #fdfde3;
+}
+
+.profile{
+    border: 1px solid #000100;
+    width: 200px;
+    height: 350px;
+    position: relative;
+    top:200px;
+    left:150px;
+
+}
+.profile img{
+    position: absolute;
+    width: 100%;
+    height: auto;
+    left:1px;
+
+
+}
+.profile h3{
+    position: relative;
+    left: 20px;
+    top: 150px;
+}
+.profile p{
+    position: relative;
+    left: 20px;
+    top: 150px;
+}
+.information{
+    border: 1px solid #000100;
+    width: 1000px;
+    height: 600px;
+    position: relative;
+    top:-152px;
+    left:350px;
+
+}
+.content{
+    position: absolute;
+    border: 1px solid #000100;
+    width: 900px;
+    height: 520px;
+    left:53px;
+    top:40px;
+
+}
+.content p{
+    line-height: 30px;
+}
+
diff --git a/ext ironing/myteam b/ext ironing/myteam
new file mode 160000
index 0000000000000000000000000000000000000000..25f88379848002816ca7fa57c9e6021de6ed74bf
--- /dev/null
+++ b/ext ironing/myteam	
@@ -0,0 +1 @@
+Subproject commit 25f88379848002816ca7fa57c9e6021de6ed74bf
diff --git a/ext ironing/reset.css b/ext ironing/reset.css
new file mode 100644
index 0000000000000000000000000000000000000000..22df33b9c9abf1118f93c7ce81b8ee2834755a0c
--- /dev/null
+++ b/ext ironing/reset.css	
@@ -0,0 +1,33 @@
+*{
+    margin: 0;
+    padding: 0;
+    line-height: 1;
+}
+a{
+    text-decoration: none;
+}
+li{
+    list-style: none;
+}
+img{
+    vertical-align: middle;
+    border: none;
+}
+.clearfix:after{
+    content: "";
+    display: block;
+    clear: both;
+    height:0 ;
+    overflow: hidden;
+    visibility: hidden;
+}
+.safe{
+    width: 1140px;
+    margin: 0 auto;
+}
+.left{
+    float: left;
+}
+.right{
+    float: right;
+}
\ No newline at end of file
diff --git a/ext ironing/u=2662935961,3025118511&fm=253&fmt=auto&app=138&f=JPEG.webp b/ext ironing/u=2662935961,3025118511&fm=253&fmt=auto&app=138&f=JPEG.webp
new file mode 100644
index 0000000000000000000000000000000000000000..a4b2a2a9f7d449c37ba93a44b305ed1ba0d9e611
Binary files /dev/null and b/ext ironing/u=2662935961,3025118511&fm=253&fmt=auto&app=138&f=JPEG.webp differ