博客系统——前端部分

目录

一、博客页面介绍

二、实现博客列表页

1、先实现导航栏

2、页面主体

左侧区域的实现:​编辑

右侧页面的实现:​编辑

博客列表页代码汇总:

三、实现博客详情页

 代码实现:

四、实现博客登录页​编辑

五、博客编辑页

六、全部代码展示

blog_detail.html

blog_edit.html

blog_list.html

login.html

blog_detail.css

blog_edit.css

blog_list.css

common.css

login.css


一、博客页面介绍

要实现一个博客系统,我们得先构造出它的页面:

一共有四个页面:

1、博客列表页

 2、博客详情页:

显示这一个博客里面的具体内容

 3、登录页

 4、博客编辑页

 发布新博客,在这个博客页面进行编辑

 关于里面的 markdown 编辑器,我们直接使用开源的项目集成进来即可,不需要我们从头实现


二、实现博客列表页

1、先实现导航栏

导航栏各个页面都有

我们把导航栏的样式给单独放到一个common.css 中,让各个页面来引用

通过对导航栏进行调整,我们目前的导航栏是这个样子的:

但是我们还缺少一个半透明的效果, 我们可以在设置导航栏颜色的地方加一个数值 a

表示的就是透明度:

加上透明度后,我们的导航栏是这个样子的:

    <!-- 这是一个导航栏 --><div class="nav"><img src="image/logo2.png" alt=""><span class = "title">我的博客系统</span><!-- 这个标签仅仅用于占位,把这几个 a 标签挤到右侧去 --><div class="spacer"></div><a href="#">主页</a><a href="#">写博客</a><a href="#">注销</a></div>

 common.css 部分代码:

/* 写样式的起手:先取出浏览器的公共样式,并且设置 border-box,避免元素盒子被内边距和边框撑大 */
*{margin:0;padding:0;box-sizing: border-box;
}html,body{/* html 是我们页面的最顶层元素,高度 100% 是相对父元素来说是 100%(和父元素一样高)对于 html 标签来说,父元素就是浏览器窗口,浏览器窗口多高,html 就多高body 的父亲是 html ,设为 100%,意思是 body 和 html 一样高此时,body 和 html 高度和浏览器窗口一样高如果不设置高度,此时元素的默认高度取决于内部的内容*/height: 100%;}body{/* 相对路径的基准路径,就是当前文件所在路径 */background-image: url(../image/背景图.jpg);background-repeat: no-repeat;background-size: cover;background-position: center center;
}/* 实现导航栏的样式 */.nav{/* 宽度和父元素一样宽 *//* 块级元素来说,样式默认就是100% */width:100%;height: 50px;background-color: rgba(50, 50, 50,0.4);color: white;/* 导航栏里面的元素都是水平排列,弹性布局来设置 */display: flex;/* 垂直方向子元素居中 */align-items: center;}.nav img{width:40px;height: 40px;margin-left:30px;margin-right: 10px;/* 让元素变圆,把内切圆半径设置为宽度的一半,此时就正好是一个圆形 */border-radius: 50%;
}.nav .spacer{width:70%
}.nav a{color: white;/* 去掉下划线 */text-decoration: none;/* 为了让这几个 a 标签不要贴的这么紧凑,加上个内边距 使用 外边距也行,但是内边距更好,内边距也是元素的内容,可以增大用户点击的面积*/padding:0 10px;}

2、页面主体

设置高度的时候,我们要注意主体页面的高度应该是整个页面的高度减去导航栏的高度

这里的 calc 相当于是 CSS 提供的一个函数

calc可以帮助我们计算页面的尺寸,针对 绝对值 和 百分数 尺寸进行混合运算

注意:这里的 - 两侧必须要有一个空格, - 有可能是标识符的一部分,如果 CSS 要想表示减法运算,就得加上空格


左侧区域的实现:

我们给图片设置成 140px * 140px,左右各自留 30px 的间距

同时让图片和上方也有 30px 的间距


右侧页面的实现:

 先搞定一片,其他的就好办了

 注意:在 html 中,存在一些转义字符: < &lt  > &gt

 现在有一个问题,那就是当我们多展示几篇博客之后,便会出现这种情况:

针对这个滚动的问题, 我们就可以把滚动条加到 containner-right 上

这样滚动的时候,就不会整个页面一起滚动了,而是只滚动一部分

博客列表页代码汇总:

common.css:

/* 写样式的起手:先取出浏览器的公共样式,并且设置 border-box,避免元素盒子被内边距和边框撑大 */
*{margin:0;padding:0;box-sizing: border-box;
}html,body{/* html 是我们页面的最顶层元素,高度 100% 是相对父元素来说是 100%(和父元素一样高)对于 html 标签来说,父元素就是浏览器窗口,浏览器窗口多高,html 就多高body 的父亲是 html ,设为 100%,意思是 body 和 html 一样高此时,body 和 html 高度和浏览器窗口一样高如果不设置高度,此时元素的默认高度取决于内部的内容*/height: 100%;}body{/* 相对路径的基准路径,就是当前文件所在路径 */background-image: url(../image/背景图.jpg);background-repeat: no-repeat;background-size: cover;background-position: center center;
}/* 实现导航栏的样式 */.nav{/* 宽度和父元素一样宽 *//* 块级元素来说,样式默认就是100% */width:100%;height: 50px;background-color: rgba(50, 50, 50,0.4);color: white;/* 导航栏里面的元素都是水平排列,弹性布局来设置 */display: flex;/* 垂直方向子元素居中 */align-items: center;}.nav img{width:40px;height: 40px;margin-left:30px;margin-right: 10px;/* 让元素变圆,把内切圆半径设置为宽度的一半,此时就正好是一个圆形 */border-radius: 50%;
}.nav .spacer{width:70%
}.nav a{color: white;/* 去掉下划线 */text-decoration: none;/* 为了让这几个 a 标签不要贴的这么紧凑,加上个内边距 使用 外边距也行,但是内边距更好,内边距也是元素的内容,可以增大用户点击的面积*/padding:0 10px;}/* 编写页面主体样式 */
.containner{/* 设置主体部分宽度 1000px */width: 1000px;/* 高度能够填充整个页面*/height: calc(100% - 50px);/* 水平居中 */margin:0 auto;/* 弹性布局 */display: flex;align-items: center;justify-content: space-between;
}.containner-left{/* 尺寸写百分数是相对于父元素为基准的 ,这里的父元素是 containner */height:100%;width:200px;}.containner-right{height:100%;/* 此处不设置为800,而是留了 5px,作为中缝 */width:795px;background-color: rgba(255, 255, 255,0.8);border-radius: 10px;/* 让这个元素自己能带上滚动条 *//* 这个属性表示如果内容没有溢出,就没有滚动条,如果溢出,就有滚动条 */overflow: auto;
}/* 左侧用户信息 */
.card{background-color: rgba(255, 255, 255,0.8);border-radius: 10px;/* 设置内间距,让内容和边框之间有点距离 */padding:30px;
}/* 用户头像 */
.card img{width:140px;height:140px;border-radius: 50%;
}/* 用户名字 */
.card h3{/* 让文字水平居中 */text-align: center;/* 让文字和上下都有边距 *//* 此处使用内边距和外边距都可,但是会更倾向于 内边距 */padding:10px;
}/* 用户的 blog 链接 */
.card a{/* a 标签是行内标签 */text-align: center;/* 为了配合上述样式,设置成块级元素 */display: block;color: #666;text-decoration: none;padding:10px;
}.card .counter{/* 为了让里面的元素水平排列,使用弹性布局 */display: flex;justify-content: space-around;padding:5px;
}

blog_list.css

/* 这个文件是给博客列表页实现的样式 *//* 设置整个博客的容易样式 */
.blog{width:100%;padding: 20px;
}.blog .title{text-align: center;font-size: 24px;font-weight: 700;padding: 10px;
}.blog .date{text-align: center;color: rgb(15,189,114);padding:10px;
}.blog .desc{text-indent: 2em;
}.blog a{/* a 标签不方便设置样式,所以设置成块级元素 */display: block;width:120px;height:40px;/* 设置水平居中 */margin-top: 20px auto;margin-left: auto;margin-right: auto;/* 设置一个边框 */border: 2px solid black;/* 让文字水平居中 */text-align: center;/* 让文字垂直居中 */line-height: 35px;/* 去掉下划线*/text-decoration: none;/* 文字改成黑色 */color: black;/* 圆角矩形 */border-radius: 10px;/* 给鼠标悬停加一个过度效果 */transition:all 0.8s;
}/* 设置一下,让鼠标滑倒按钮上有一个变化 */
.blog a:hover{color:white;background-color: #666;
}

blog_list.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>博客列表页</title><link rel="stylesheet" href="CSS/common.css"><link rel="stylesheet" href="CSS/blog_list.css">
</head>
<body><!-- 这是一个导航栏 --><div class="nav"><img src="image/logo2.png" alt=""><span class = "title">我的博客系统</span><!-- 这个标签仅仅用于占位,把这几个 a 标签挤到右侧去 --><div class="spacer"></div><a href="#">主页</a><a href="#">写博客</a><a href="#">注销</a></div><!-- 页面主体部分 --><div class="containner"><!-- 左侧信息 --><div class="containner-left"><!-- 使用这个 .card 表示用户信息 --><div class="card"><!-- 用户头像 --><img src="image/logo.jpg" alt=""><!-- 用户名字 --><h3>馒头警告</h3><a href="#">blog 地址</a><div class="counter"><span>文章</span><span>分类</span></div><div class="counter"><span>2</span><span>1</span></div></div></div><!-- 右侧信息 --><div class="containner-right"><!-- 表示一篇博客 --><div class="blog"><!-- 博客的标题 --><div class="title">第一篇博客</div><!-- 发布时间 --><div class="date">2023-08-20</div><!-- 博客的摘要 --><div class="desc">好好学习,天天向上 Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam blanditiis iure cum rerum. Libero iusto commodi tempora dolore asperiores, nobis earum officia neque, reprehenderit consectetur minima dolor minus corrupti voluptate.</div><!-- 查看全文按钮 --><a href="#">查看全文 &gt;&gt; </a></div><!-- 表示一篇博客 --><div class="blog"><!-- 博客的标题 --><div class="title">第一篇博客</div><!-- 发布时间 --><div class="date">2023-08-20</div><!-- 博客的摘要 --><div class="desc">好好学习,天天向上 Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam blanditiis iure cum rerum. Libero iusto commodi tempora dolore asperiores, nobis earum officia neque, reprehenderit consectetur minima dolor minus corrupti voluptate.</div><!-- 查看全文按钮 --><a href="#">查看全文 &gt;&gt; </a></div><!-- 表示一篇博客 --><div class="blog"><!-- 博客的标题 --><div class="title">第一篇博客</div><!-- 发布时间 --><div class="date">2023-08-20</div><!-- 博客的摘要 --><div class="desc">好好学习,天天向上 Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam blanditiis iure cum rerum. Libero iusto commodi tempora dolore asperiores, nobis earum officia neque, reprehenderit consectetur minima dolor minus corrupti voluptate.</div><!-- 查看全文按钮 --><a href="#">查看全文 &gt;&gt; </a></div></div>

三、实现博客详情页

导航栏和左侧部分代码,我们可以直接将之前博客列表页相关部分的复制过来

此时,只需要对右侧主体部分进行编写即可

 代码实现:

blog_detail.css

/* 这个样式给多个详情页使用 */.containner-right .title{text-align: center;padding: 30px;}.containner-right .date{color: rgb(15,189,114);text-align:  center;padding:10px;}.containner-right .content p{text-indent: 2em;padding :10px;
}

blog_detail.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>博客详情页</title><link rel="stylesheet" href="CSS/common.css"><link rel="stylesheet" href="CSS/blog_detail.css">
</head>
<body><!-- 这是一个导航栏 --><div class="nav"><img src="image/logo2.png" alt=""><span class = "title">我的博客系统</span><!-- 这个标签仅仅用于占位,把这几个 a 标签挤到右侧去 --><div class="spacer"></div><a href="#">主页</a><a href="#">写博客</a><a href="#">注销</a></div><div class="containner"><!-- 左侧信息 --><div class="containner-left"><!-- 使用这个 .card 表示用户信息 --><div class="card"><!-- 用户头像 --><img src="image/logo.jpg" alt=""><!-- 用户名字 --><h3>馒头警告</h3><a href="#">blog 地址</a><div class="counter"><span>文章</span><span>分类</span></div><div class="counter"><span>2</span><span>1</span></div></div></div><!-- 右侧信息 --><div class="containner-right"><!-- 博客标题 --><h3 class="title">我的第一篇博客</h3><!-- 博客发布时间 --><div class="date">2023-08-20</div><!-- 博客正文 --><div class="content"><p>好好学习,天天向上 Lorem ipsum, dolor sit amet consectetur adipisicing elit. Architecto ab ullam suscipit aut illum nostrum accusamus laboriosam id, temporibus amet enim! Alias libero porro officia veritatis aliquam voluptas eveniet quod?</p><p>第二段内容 Lorem, ipsum dolor sit amet consectetur adipisicing elit. Perspiciatis nam obcaecati est quia et, minima impedit culpa nulla asperiores velit praesentium voluptatum similique commodi eum, numquam, saepe modi aliquam porro.</p><p>第三段内容 Lorem, ipsum dolor sit amet consectetur adipisicing elit. Perspiciatis nam obcaecati est quia et, minima impedit culpa nulla asperiores velit praesentium voluptatum similique commodi eum, numquam, saepe modi aliquam porro.</p></div></div></div>
</body>
</html>

四、实现博客登录页

注意:登录页面是没有登录按钮的

注销指的是登录状态,在登录页面还没有进行登录,所以不应该提供注销按钮

在 CSS 中,实现垂直水平居中,有很多的写法

我们可以使用前面学过的弹性布局

代码:

login.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>登录页面</title><link rel="stylesheet" href="CSS/common.css"><link rel="stylesheet" href="CSS/login.css">
</head>
<body><!-- 这是一个导航栏 --><div class="nav"><img src="image/logo2.png" alt=""><span class = "title">我的博客系统</span><!-- 这个标签仅仅用于占位,把这几个 a 标签挤到右侧去 --><div class="spacer"></div><a href="#">主页</a><a href="#">写博客</a></div><!-- 正文部分 --><!-- 贯穿整个页面的容器 --><div class="login-container"><!-- 垂直水平居中的对话框 --><div class="login-dialog"><h3>登录</h3><div class="row"><span>用户名</span><input type="text" id = "username" placeholder="手机号 / 邮箱"></div><div class="row"><span>密码</span><input type="password" id = "password"></div><div class="row"><button id = "submit">登录</button></div></div></div></body>
</html>

login.css

/* 这个文件专门放登录页面的样式 */
.login-container{width:100%;height:calc(100% - 50px);/* 为了让对话框能垂直水平居中,使用弹性布局 */display: flex;justify-content: center;align-items: center;
}.login-dialog{width:400px;height:330px;background-color: rgba(255,255,255,0.8);border-radius: 10px;
}.login-dialog h3{text-align: center;padding:50px 0;
}.login-dialog .row{display: flex;height: 50px;justify-content: center;align-items: center;
}.login-dialog .row span{width: 100px;
}#username,#password{width:200px;height: 40px;border-radius: 10px;/* 去掉边框 */border: none;/* 放大字体 */font-size: 18px;padding-left:5px;
}#submit{width:300px;height: 40px;color: white;background-color: orange;border: none;border-radius: 10px;
}#submit:active{background-color: #666;
}

五、博客编辑页

editor.md

我们要做的工作:

1、把项目下载下来

2、把项目引入到我们的代码中

3、编写少量代码进行初始化

editor.md 还依赖了另外一个 js 库 : jquery

如何引入 jquery?

1、网上找到 jquery 源码

打开浏览器,在搜索框中输入 jquery cdn

然后找到这个链接,点开

 我们在其中选择这个版本的 jquery:

然后直接复制链接,在新的浏览器页打开

打开链接后,我们所看到的这些东西就是源码:

在这里,我们有两种做法:

1、直接全选这个页面里面的代码,新建一个 js 文件,粘贴进去就行了

2、 直接把 cdn 的地址,直接写到 src 的属性中,就不需要手动粘贴了

2、引入 editor.md

这个东西需要在 github 中查找

如果 github 打不开,可以尝试使用 steam ++ 作为加速器

在 guthub 中搜索 editor.md

 然后把源码下载下来

然后将文件拷贝到博客页面目录中,并且把这个目录名改成 editor.md

当前,我们已经把库下载下来了,就需要把这个库引入到项目代码中,也就是让 html 引入库里的文件(引入 css 和 js 文件)

如何引入 editor.md?

1、先保证页面中有一个 id 为 editor 的 div

2、引入 editor.md 对应的 css 和 js ,这些引入代码,必须放到 jquery 引入代码的下面

<!-- 引入 editor.md 的依赖 --><link rel="stylesheet" href="editor.md/css/editormd.min.css" /><script src="js/jquery.min.js"></script><script src="editor.md/lib/marked.min.js"></script><script src="editor.md/lib/prettify.min.js"></script><script src="editor.md/editormd.js"></script>

注意:此处代码中的路径必须要和磁盘中的路径一致

3、编写初始化代码(官方文档上有,直接复制粘贴即可)

 // 初始化编辑器let editor = editormd("editor", {// 这里的尺寸必须在这里设置. 设置样式会被 editormd 自动覆盖掉. width: "100%",// 设定编辑器高度height: "calc(100% - 50px)",// 编辑器中的初始内容markdown: "# 在这里写下一篇博客",// 指定 editor.md 依赖的插件路径path: "editor.md/lib/"});

此时,markdown 编译器就引入完毕了

当我们给 #editor 设置背景半透明,但是没有生效

这是因为, #editor 自身半透明,但是这里面的元素不是透明的,导致仍然看不到背景

我们可以通过 opacity 设置半透明

这个会使所有的子元素都变成半透明

六、全部代码展示

blog_detail.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>博客详情页</title><link rel="stylesheet" href="CSS/common.css"><link rel="stylesheet" href="CSS/blog_detail.css">
</head>
<body><!-- 这是一个导航栏 --><div class="nav"><img src="image/logo2.png" alt=""><span class = "title">我的博客系统</span><!-- 这个标签仅仅用于占位,把这几个 a 标签挤到右侧去 --><div class="spacer"></div><a href="#">主页</a><a href="#">写博客</a><a href="#">注销</a></div><div class="containner"><!-- 左侧信息 --><div class="containner-left"><!-- 使用这个 .card 表示用户信息 --><div class="card"><!-- 用户头像 --><img src="image/logo.jpg" alt=""><!-- 用户名字 --><h3>馒头警告</h3><a href="#">blog 地址</a><div class="counter"><span>文章</span><span>分类</span></div><div class="counter"><span>2</span><span>1</span></div></div></div><!-- 右侧信息 --><div class="containner-right"><!-- 博客标题 --><h3 class="title">我的第一篇博客</h3><!-- 博客发布时间 --><div class="date">2023-08-20</div><!-- 博客正文 --><div class="content"><p>好好学习,天天向上 Lorem ipsum, dolor sit amet consectetur adipisicing elit. Architecto ab ullam suscipit aut illum nostrum accusamus laboriosam id, temporibus amet enim! Alias libero porro officia veritatis aliquam voluptas eveniet quod?</p><p>第二段内容 Lorem, ipsum dolor sit amet consectetur adipisicing elit. Perspiciatis nam obcaecati est quia et, minima impedit culpa nulla asperiores velit praesentium voluptatum similique commodi eum, numquam, saepe modi aliquam porro.</p><p>第三段内容 Lorem, ipsum dolor sit amet consectetur adipisicing elit. Perspiciatis nam obcaecati est quia et, minima impedit culpa nulla asperiores velit praesentium voluptatum similique commodi eum, numquam, saepe modi aliquam porro.</p></div></div></div>
</body>
</html>

blog_edit.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>博客详情页</title><link rel="stylesheet" href="CSS/common.css"><link rel="stylesheet" href="CSS/blog_detail.css">
</head>
<body><!-- 这是一个导航栏 --><div class="nav"><img src="image/logo2.png" alt=""><span class = "title">我的博客系统</span><!-- 这个标签仅仅用于占位,把这几个 a 标签挤到右侧去 --><div class="spacer"></div><a href="#">主页</a><a href="#">写博客</a><a href="#">注销</a></div><div class="containner"><!-- 左侧信息 --><div class="containner-left"><!-- 使用这个 .card 表示用户信息 --><div class="card"><!-- 用户头像 --><img src="image/logo.jpg" alt=""><!-- 用户名字 --><h3>馒头警告</h3><a href="#">blog 地址</a><div class="counter"><span>文章</span><span>分类</span></div><div class="counter"><span>2</span><span>1</span></div></div></div><!-- 右侧信息 --><div class="containner-right"><!-- 博客标题 --><h3 class="title">我的第一篇博客</h3><!-- 博客发布时间 --><div class="date">2023-08-20</div><!-- 博客正文 --><div class="content"><p>好好学习,天天向上 Lorem ipsum, dolor sit amet consectetur adipisicing elit. Architecto ab ullam suscipit aut illum nostrum accusamus laboriosam id, temporibus amet enim! Alias libero porro officia veritatis aliquam voluptas eveniet quod?</p><p>第二段内容 Lorem, ipsum dolor sit amet consectetur adipisicing elit. Perspiciatis nam obcaecati est quia et, minima impedit culpa nulla asperiores velit praesentium voluptatum similique commodi eum, numquam, saepe modi aliquam porro.</p><p>第三段内容 Lorem, ipsum dolor sit amet consectetur adipisicing elit. Perspiciatis nam obcaecati est quia et, minima impedit culpa nulla asperiores velit praesentium voluptatum similique commodi eum, numquam, saepe modi aliquam porro.</p></div></div></div>
</body>
</html>

blog_list.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>博客列表页</title><link rel="stylesheet" href="CSS/common.css"><link rel="stylesheet" href="CSS/blog_list.css">
</head>
<body><!-- 这是一个导航栏 --><div class="nav"><img src="image/logo2.png" alt=""><span class = "title">我的博客系统</span><!-- 这个标签仅仅用于占位,把这几个 a 标签挤到右侧去 --><div class="spacer"></div><a href="#">主页</a><a href="#">写博客</a><a href="#">注销</a></div><!-- 页面主体部分 --><div class="containner"><!-- 左侧信息 --><div class="containner-left"><!-- 使用这个 .card 表示用户信息 --><div class="card"><!-- 用户头像 --><img src="image/logo.jpg" alt=""><!-- 用户名字 --><h3>馒头警告</h3><a href="#">blog 地址</a><div class="counter"><span>文章</span><span>分类</span></div><div class="counter"><span>2</span><span>1</span></div></div></div><!-- 右侧信息 --><div class="containner-right"><!-- 表示一篇博客 --><div class="blog"><!-- 博客的标题 --><div class="title">第一篇博客</div><!-- 发布时间 --><div class="date">2023-08-20</div><!-- 博客的摘要 --><div class="desc">好好学习,天天向上 Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam blanditiis iure cum rerum. Libero iusto commodi tempora dolore asperiores, nobis earum officia neque, reprehenderit consectetur minima dolor minus corrupti voluptate.</div><!-- 查看全文按钮 --><a href="#">查看全文 &gt;&gt; </a></div><!-- 表示一篇博客 --><div class="blog"><!-- 博客的标题 --><div class="title">第一篇博客</div><!-- 发布时间 --><div class="date">2023-08-20</div><!-- 博客的摘要 --><div class="desc">好好学习,天天向上 Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam blanditiis iure cum rerum. Libero iusto commodi tempora dolore asperiores, nobis earum officia neque, reprehenderit consectetur minima dolor minus corrupti voluptate.</div><!-- 查看全文按钮 --><a href="#">查看全文 &gt;&gt; </a></div><!-- 表示一篇博客 --><div class="blog"><!-- 博客的标题 --><div class="title">第一篇博客</div><!-- 发布时间 --><div class="date">2023-08-20</div><!-- 博客的摘要 --><div class="desc">好好学习,天天向上 Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam blanditiis iure cum rerum. Libero iusto commodi tempora dolore asperiores, nobis earum officia neque, reprehenderit consectetur minima dolor minus corrupti voluptate.</div><!-- 查看全文按钮 --><a href="#">查看全文 &gt;&gt; </a></div></div>
</body>
</html>

login.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>登录页面</title><link rel="stylesheet" href="CSS/common.css"><link rel="stylesheet" href="CSS/login.css">
</head>
<body><!-- 这是一个导航栏 --><div class="nav"><img src="image/logo2.png" alt=""><span class = "title">我的博客系统</span><!-- 这个标签仅仅用于占位,把这几个 a 标签挤到右侧去 --><div class="spacer"></div><a href="#">主页</a><a href="#">写博客</a></div><!-- 正文部分 --><!-- 贯穿整个页面的容器 --><div class="login-container"><!-- 垂直水平居中的对话框 --><div class="login-dialog"><h3>登录</h3><div class="row"><span>用户名</span><input type="text" id = "username" placeholder="手机号 / 邮箱"></div><div class="row"><span>密码</span><input type="password" id = "password"></div><div class="row"><button id = "submit">登录</button></div></div></div></body>
</html>

blog_detail.css

/* 这个样式给多个详情页使用 */.containner-right .title{text-align: center;padding: 30px;}.containner-right .date{color: rgb(15,189,114);text-align:  center;padding:10px;}.containner-right .content p{text-indent: 2em;padding :10px;
}

blog_edit.css

/* 这个文件用来写博客编辑页的样式 */.blog-edit-container{width: 1000px;height: calc(100% - 50px);margin:0 auto;
}.blog-edit-container .title{height: 50px;display: flex;align-items: center;justify-content: space-between;
}#title{height: 40px;width: 895px;border: none;padding-left: 5px;font-size: 20px;border-radius: 10px;/* 去掉轮廓线(鼠标选中后的黑圈) */outline: none;/* 设置背景半透明 */background-color: rgba(255,255,255,0.7);
}
/*  获取到焦点*/
#title:focus{background-color: white;
}
#submit{height: 40px;width: 100px;color:white;background-color: orange;border-radius: 10px;border: none;
}#submit:active{background-color: #666;
}#editor{border-radius: 10px;opacity: 80%;}

blog_list.css

/* 这个文件是给博客列表页实现的样式 *//* 设置整个博客的容易样式 */
.blog{width:100%;padding: 20px;
}.blog .title{text-align: center;font-size: 24px;font-weight: 700;padding: 10px;
}.blog .date{text-align: center;color: rgb(15,189,114);padding:10px;
}.blog .desc{text-indent: 2em;
}.blog a{/* a 标签不方便设置样式,所以设置成块级元素 */display: block;width:120px;height:40px;/* 设置水平居中 */margin-top: 20px auto;margin-left: auto;margin-right: auto;/* 设置一个边框 */border: 2px solid black;/* 让文字水平居中 */text-align: center;/* 让文字垂直居中 */line-height: 35px;/* 去掉下划线*/text-decoration: none;/* 文字改成黑色 */color: black;/* 圆角矩形 */border-radius: 10px;/* 给鼠标悬停加一个过度效果 */transition:all 0.8s;
}/* 设置一下,让鼠标滑倒按钮上有一个变化 */
.blog a:hover{color:white;background-color: #666;
}

common.css

/* 写样式的起手:先取出浏览器的公共样式,并且设置 border-box,避免元素盒子被内边距和边框撑大 */
*{margin:0;padding:0;box-sizing: border-box;
}html,body{/* html 是我们页面的最顶层元素,高度 100% 是相对父元素来说是 100%(和父元素一样高)对于 html 标签来说,父元素就是浏览器窗口,浏览器窗口多高,html 就多高body 的父亲是 html ,设为 100%,意思是 body 和 html 一样高此时,body 和 html 高度和浏览器窗口一样高如果不设置高度,此时元素的默认高度取决于内部的内容*/height: 100%;}body{/* 相对路径的基准路径,就是当前文件所在路径 */background-image: url(../image/背景图.jpg);background-repeat: no-repeat;background-size: cover;background-position: center center;
}/* 实现导航栏的样式 */.nav{/* 宽度和父元素一样宽 *//* 块级元素来说,样式默认就是100% */width:100%;height: 50px;background-color: rgba(50, 50, 50,0.4);color: white;/* 导航栏里面的元素都是水平排列,弹性布局来设置 */display: flex;/* 垂直方向子元素居中 */align-items: center;}.nav img{width:40px;height: 40px;margin-left:30px;margin-right: 10px;/* 让元素变圆,把内切圆半径设置为宽度的一半,此时就正好是一个圆形 */border-radius: 50%;
}.nav .spacer{width:70%
}.nav a{color: white;/* 去掉下划线 */text-decoration: none;/* 为了让这几个 a 标签不要贴的这么紧凑,加上个内边距 使用 外边距也行,但是内边距更好,内边距也是元素的内容,可以增大用户点击的面积*/padding:0 10px;}/* 编写页面主体样式 */
.containner{/* 设置主体部分宽度 1000px */width: 1000px;/* 高度能够填充整个页面*/height: calc(100% - 50px);/* 水平居中 */margin:0 auto;/* 弹性布局 */display: flex;align-items: center;justify-content: space-between;
}.containner-left{/* 尺寸写百分数是相对于父元素为基准的 ,这里的父元素是 containner */height:100%;width:200px;}.containner-right{height:100%;/* 此处不设置为800,而是留了 5px,作为中缝 */width:795px;background-color: rgba(255, 255, 255,0.8);border-radius: 10px;/* 让这个元素自己能带上滚动条 *//* 这个属性表示如果内容没有溢出,就没有滚动条,如果溢出,就有滚动条 */overflow: auto;
}/* 左侧用户信息 */
.card{background-color: rgba(255, 255, 255,0.8);border-radius: 10px;/* 设置内间距,让内容和边框之间有点距离 */padding:30px;
}/* 用户头像 */
.card img{width:140px;height:140px;border-radius: 50%;
}/* 用户名字 */
.card h3{/* 让文字水平居中 */text-align: center;/* 让文字和上下都有边距 *//* 此处使用内边距和外边距都可,但是会更倾向于 内边距 */padding:10px;
}/* 用户的 blog 链接 */
.card a{/* a 标签是行内标签 */text-align: center;/* 为了配合上述样式,设置成块级元素 */display: block;color: #666;text-decoration: none;padding:10px;
}.card .counter{/* 为了让里面的元素水平排列,使用弹性布局 */display: flex;justify-content: space-around;padding:5px;
}

login.css

/* 这个文件专门放登录页面的样式 */
.login-container{width:100%;height:calc(100% - 50px);/* 为了让对话框能垂直水平居中,使用弹性布局 */display: flex;justify-content: center;align-items: center;
}.login-dialog{width:400px;height:330px;background-color: rgba(255,255,255,0.8);border-radius: 10px;
}.login-dialog h3{text-align: center;padding:50px 0;
}.login-dialog .row{display: flex;height: 50px;justify-content: center;align-items: center;
}.login-dialog .row span{width: 100px;
}#username,#password{width:200px;height: 40px;border-radius: 10px;/* 去掉边框 */border: none;/* 放大字体 */font-size: 18px;padding-left:5px;
}#submit{width:300px;height: 40px;color: white;background-color: orange;border: none;border-radius: 10px;
}#submit:active{background-color: #666;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/107604.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测试框架pytest教程(6)钩子函数hook开发pytest插件

pytest hook 函数也叫钩子函数&#xff0c;pytest 提供了大量的钩子函数&#xff0c;可以在用例的不同生命周期自动调用。 比如&#xff0c;在测试用例收集阶段&#xff0c;可利用 hook 函数修改测试用例名称的编码。 pytest的hook是基于Python的插件系统实现的&#xff0c;使…

2023-08-25 LeetCode每日一题(统计二叉树中好节点的数目)

2023-08-25每日一题 一、题目编号 1448. 统计二叉树中好节点的数目二、题目链接 点击跳转到题目位置 三、题目描述 给你一棵根为 root 的二叉树&#xff0c;请你返回二叉树中好节点的数目。 「好节点」X 定义为&#xff1a;从根到该节点 X 所经过的节点中&#xff0c;没有…

02.sqlite3学习——嵌入式数据库的基本要求和SQLite3的安装

目录 嵌入式数据库的基本要求和SQLite3的安装 嵌入式数据库的基本要求 常见嵌入式数据库 sqlite3简介 SQLite3编程接口模型 ubuntu 22.04下的SQLite安装 嵌入式数据库的基本要求和SQLite3的安装 嵌入式数据库的基本要求 常见嵌入式数据库 sqlite3简介 SQLite3编程接口模…

DataWhale 机器学习夏令营第三期——任务二:可视化分析

DataWhale 机器学习夏令营第三期 学习记录二 (2023.08.23)——可视化分析1.赛题理解2. 数据可视化分析2.1 用户维度特征分布分析2.2 时间特征分布分析 DataWhale 机器学习夏令营第三期 ——用户新增预测挑战赛 学习记录二 (2023.08.23)——可视化分析 2023.08.17 已跑通baseli…

最新PHP短网址生成系统/短链接生成系统/URL缩短器系统源码

全新PHP短网址系统URL缩短器平台&#xff0c;它使您可以轻松地缩短链接&#xff0c;根据受众群体的位置或平台来定位受众&#xff0c;并为缩短的链接提供分析见解。 系统使用了Laravel框架编写&#xff0c;前后台双语言使用&#xff0c;可以设置多域名&#xff0c;还可以开设套…

2023国赛数学建模思路 - 案例:退火算法

文章目录 1 退火算法原理1.1 物理背景1.2 背后的数学模型 2 退火算法实现2.1 算法流程2.2算法实现 建模资料 ## 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 退火算法原理 1.1 物理背景 在热力学上&a…

力与美的交响丨远航Y6全国媒体试驾会成都举办,实力演绎中式豪华+极致性能

8月24日&#xff0c;四川成都&#xff0c;远航Y6全国媒体试驾会圆满举办。来自全国的近百家媒体亲身试乘试驾&#xff0c;深度感受远航Y6诠释的高端豪华新体验。 绵绵细雨难掩相聚的热情。远航汽车自去年成都车展正式发布亮相&#xff0c;就与成都结下了不解之缘。历经一年的持…

关于chromedriver.exe一系列问题的解决办法

最新 chromedriver.exe下载地址&#xff1a;https://googlechromelabs.github.io/chrome-for-testing/#stable 下载最新版本的 chromedriver.exe 将其解压在 python.exe 同目录下&#xff0c;以及Chrome 的路径下 例如&#xff1a; C:\Program Files\Google\Chrome\Applicati…

算法通关村第十一关——搞清位运算

源码、反码和补码 很多人都记不清源码、反码和补码的区分&#xff0c;都是二进制&#xff0c;其实记忆起来很简单&#xff0c;分为正数和负数来记。正数的原码、反码和补码都是一样的&#xff0c;负数的原码符号位为1&#xff0c;反码是在原码的基础上进行改变&#xff1a;保持…

6. 使用python将多个Excel文件合并到同一个excel-附代码解析

【目录】 文章目录 6. 使用python将多个Excel文件合并到同一个excel-附代码解析1. 目标任务2. 结果展示3. 代码示例4. 代码解析4.1 导入库4.2 调用库的类、函数、变量语法4.3 os.listdir-返回目录中的文件名列表4.4 startswith-用于判断一个字符串是否以指定的前缀开头4.5 ends…

Netty入门学习和技术实践

Netty入门学习和技术实践 Netty1.Netty简介2.IO模型3.Netty框架介绍4. Netty实战项目学习5. Netty实际应用场景6.扩展 Netty 1.Netty简介 Netty是由JBOSS提供的一个java开源框架&#xff0c;现为 Github上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具&…

Docker 将容器打包成镜像推送镜像到仓库

Docker 将容器打包成镜像&推送镜像到仓库 一、将容器打包成镜像 $ docker commit <容器ID> <镜像名称:标签>示例&#xff1a; $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS …

数字孪生:重塑制造、医疗和能源等领域的未来

数字孪生技术&#xff0c;作为虚拟仿真的重要领域&#xff0c;正以其强大的能力在各个行业中创造前所未有的创新。本文带大家一起深入探讨数字孪生技术在不同领域的广泛应用场景&#xff0c;展示其在实现效率、可靠性和智能化方面的积极影响。 制造业与工业领域 数字孪生技术在…

Python+TinyPNG熊猫网站自动化的压缩图片

前言 本篇在讲什么 PythonTinyPNG自动化处理图片 本篇需要什么 对Python语法有简单认知 依赖Python2.7环境 依赖TinyPNG工具 本篇的特色 具有全流程的图文教学 重实践&#xff0c;轻理论&#xff0c;快速上手 提供全流程的源码内容 ★提高阅读体验★ &#x1f449;…

抽象类和接口有什么区别?

在 Java 中&#xff0c;抽象类和接口是两种不同的类类型。它们都不能直接实例化&#xff0c;并且它们都是用来定义一些基本的属性和方法的&#xff0c;但它们有以下几点不同&#xff1a; 定义不同&#xff1a;定义的关键字不同&#xff0c;抽象类是 abstract&#xff0c;而接口…

ATF(TF-A)安全通告 TFV-2 (CVE-2017-7564)

安全之安全(security)博客目录导读 ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-2 (CVE-2017-7564) 二、 CVE-2017-7564 一、ATF(TF-A)安全通告 TFV-2 (CVE-2017-7564) Title 启用安全自托管侵入式调试接口&#xff0c;可允许非安全世界引发安全世界panic CV…

【LeetCode75】第三十七题 二叉树中的最长交错路径

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给我们一棵二叉树&#xff0c;问我们在这棵树里能找到的最长交错路径。最长交错路径就是在二叉树里一左一右一左一右这样走&#xff0c;最…

java- ConcurrentHashMap 并发

1. ConcurrentHashMap 并发 1.1. 减小锁粒度 减小锁粒度是指缩小锁定对象的范围&#xff0c;从而减小锁冲突的可能性&#xff0c;从而提高系统的并发能力。减小锁粒度是一种削弱多线程锁竞争的有效手段&#xff0c;这种技术典型的应用是 ConcurrentHashMap(高性能的 HashMap)…

RT1050的ADC

文章目录 1 ADC介绍2 ADC框图2.1 外部输入通道2.2 输入电压范围2.3 触发源2.4 时钟源2.5 偏移矫正功能2.5.1 校准 1 ADC介绍 RT1052 有 2 个 ADC&#xff0c;每个 ADC 有 12 位、10 位、8 位可选&#xff0c;每个 ADC 有 16 个外部通道。 ADC具有最高 1MS/s 采样率支持单次或…

23.树表和哈希表的查找

当表插入、删除操作频繁时&#xff0c;为维护表的有序性&#xff0c;需要移动表中很多记录。基于此&#xff0c;我们可以改用动态查找表——几种特殊的树。表结构在查找过程中动态生成。对于给定值key&#xff0c;若表中存在&#xff0c;则成功返回&#xff1b;否则&#xff0c…