前端学习(7)—— HTML + CSS实现博客系统页面

article/2025/6/21 5:15:35

目录

一,效果展示

二,实现博客列表页

2.1 实现导航栏

2.2 实现个人信息

2.3 实现博客列表

三,实现博客正文页

3.2 复用

3.4 实现博客正文

四,实现博客登录页

4.1 版心

4.2 登录框

五,实现博客编辑页

5.1 标题编辑项

5.2 编辑区

六,引入markdown编辑区

6.1 下载

6.2 引入

6.3 编写代码


一,效果展示

一共实现了三个页面:

首先是主页面:

然后是登录页面:

然后是博客编辑页面:

需要用到的文件如下,可以先创建好:

注:目前只实现了页面的展示,并没有使用js实现页面行为,因为账号管理、文章内容存储等需要后端服务器支持,我们以后再实现

该文章的代码码云:博客 · 小堃学编程/前端 - 码云 - 开源中国

二,实现博客列表页

2.1 实现导航栏

导航栏就是最上面那灰色的一条

①html结构设计

 导航栏我们用一个div即可,其中包括左边的logo和标题,还有右边三个超链接:

    <!--上方导航栏--><div class="nav"><img src="../img/logo.png" alt=""><span>我的博客系统</span><span class="space"></span><a href="blog_list.html">主页</a><a href="blog_edit.html">写博客</a><a href="https://www.baidu.com">注销</a></div>

②css样式设计

css代码如下,包含在common.css文件里,其中部分代码作用已在注释中给出: 

* {margin: 0; /*消除浏览器默认样式*/padding: 0px;box-sizing: border-box; /*让内部margin不要撑大盒子*/
}/*导航栏样式---------------*/
html, body{height: 100%; /*让页面布满浏览器*/width: 100%; min-width: 1550px; /*设置最小px,防止浏览器页面缩小时导致内容混乱,会生成滑动条*/ min-height: 700px;background-image: url(../img/1.png); /*设置背景*/background-repeat: no-repeat; /*取消背景图片平铺*/background-size: cover; /*背景铺满浏览器页面*/margin: 0 auto;
}.nav{width: 100%;height: 50px;background-color: gray; /*设置灰色导航栏*//*通过弹性布局,使文字显示在中间*/display: flex; /*水平方向的居中*/justify-content: left; /*让元素水平方向靠左布局*/align-items: center; /*垂直方向居中*/color:white; /*设置我的博客系统颜色为白色*/
}.nav .space{width: 70%; /*让主题和右边三个链接分开*/
}/* 设置logo图片大小 */
.nav img{width: 40px;height: 40px;border-radius: 50%; /*变成圆形*//* 设置上下左右边距,让logo图标显示在中间 */margin-left: 8px;margin-right: 8px;margin-top: 6px;
}.nav a{color: white;text-decoration: none; /*取消超链接下划线*/margin-left: 8px; /*设置内边距,让选项分开*/margin-right: 30px;
}

 

记得在html文件里包含CSS文件:

2.2 实现个人信息

①html结构设计

<!--个人信息和博客列表我们用一个div来搞--><div class="container"><div class="container-left"> <!--个人信息--><div class="card"><img src="../img/hello.png" alt=""><h3>你好</h3><a href="https://gitee.com/start-coding-from-scratch">gitee地址</a><div class="counter"><span>文章</span><span>分类</span></div><div class="counter"><span>1</span><span>2</span></div></div></div><div class="container-right"> <!--博客列表--></div></div>

  • 我们把个人卡片和博客列表用同一个div设置,然后再在这个div里面放左右两个div代表卡片和列表 

②css样式设计

首先我们先搞清楚左右这两个区域是怎样安排的,可以使用颜色覆盖的办法先看下左右布局:

下面是个人卡片css代码,也是包含在common.css 文件里面 

/* 2,设置个人信息卡片样式*/
.card{width: 60%; /*原来的card是把左边占完了的,但是实际效果中左边有一点留白,所以我们让card只占据60%的空间*/height: 40%;background-color: rgba(255, 255, 255, 0.5); /*最后一个数字表示透明度 */margin-left: 180px; /*设置左边距,让card靠右显示*/margin-right: 10px;border-radius: 15px; /*设置圆角*/margin-top: 10px;
}.card img{width: 80px;height: 80px;border-radius: 50%;display: block;margin: 0 auto; /*让图片在浏览器的全屏和小屏环境下都居中显示*/margin-top: 20px;
}.card h3{text-align: center;margin-top: 10px;margin-bottom: 10px;
}.card a{display: block; /*把a链接变成一个块级元素,便于控制*/text-align: center;color:gray;text-decoration: none;margin-top: 10px;margin-bottom: 10px;
}.card .counter{display: flex; /*进入弹性布局*/justify-content: space-around;margin-top: 20px;
}

2.3 实现博客列表

①html结构设计

<div class="container-right"> <!--博客列表--><div class="blog"><div class="title">这是第一篇博客</div><div class="date">2025-5-28</div><div class="desc">你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好</div><a class="detail" href="./blog_content.html?blog=1">查看详情&gt;&gt;</a></div></div>

②css样式设计

.blog {width: 100%;background-color: rgba(255, 255, 255, 0.5);border-radius: 15px; /*设置圆角*/margin-top: 20px;
}.blog .title{font-size:20px; /*设置博客标题大小得粗细*/font-weight: 900;text-align: center; /*让标题居中*/padding-top: 20px; /*设置上边距*/
}.blog .date{color: green;padding-bottom: 10px; /*设置日期下边距*/padding-top: 10px;text-align: center; /*让日期也居中*/
}.blog .desc{text-indent: 2em; /*设置缩进*/line-height: 20px; /*设置行高*/margin-top: 20px; /*设置上边距*/
}.blog .detail{display: block; /*把超链接变成块级元素,方便操作*/color: black;text-align: center; /*使超链接居中*/width: 140px;height: 40px;margin: 10px auto 0px auto; /*上边距10px,右和左是auto,下边距是0px*/border: 2px solid black; /*设置边框为2px,使用实线,颜色是黑色*/line-height: 40px; /*让边框里的文字显示在距下位置,去掉这一行则显示在上面*/
}.blog .detail:active{color:blue; /*使用伪类选择器给链接加上一些效果*/
}

三,实现博客正文页

3.2 复用

首先看下效果:

背景,导航栏和左边个人信息卡片是和上面一样的,我们直接搬过来即可

主要是右边博客页面改变了,所以我们单独实现右边的博客页面即可

3.4 实现博客正文

①html结构设计

<div class="container-right"> <!--博客列表--><div class="blog"><div class="title">这是第一篇博客</div><div class="date">2025-5-28</div><div class="desc"><p>你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好</p><p>你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好</p></div></div></div>

html和前面是一样的,为了方便演示我们可以在正文位置多加一些内容,效果如下:

②css样式设计

下面代码在content.css文件中: 

/* 3,设置博客列表样式*/
.blog {width: 100%;height: calc(100% - 50px); /*用整个页面得像素减去导航的像素即可*/background-color: rgba(255, 255, 255, 0.5);border-radius: 15px; /*设置圆角*/margin-top: 20px;overflow: auto; /*内容很多时出现滚动条*/
}.blog .title{font-size:20px; /*设置博客标题大小得粗细*/font-weight: 900;text-align: center; /*让标题居中*/padding-top: 20px; /*设置上边距*/
}.blog .date{color: green;padding-bottom: 10px; /*设置日期下边距*/padding-top: 10px;text-align: center; /*让日期也居中*/
}.blog .desc{text-indent: 2em; /*设置缩进*/line-height: 20px; /*设置行高*/margin-top: 20px; /*设置上边距*/
}

四,实现博客登录页

4.1 版心

首先看下效果:

可以看到导航栏和背景啥的都没变,就是中间的登录框,我们需要单独实现一下,像导航栏和html和css代码也是直接复用即可 

4.2 登录框

①html结构设计

 <div class="login-container"><div class="login-dialog"> <!--外面的大会话框--><h3>登录</h3><div class="row"><span>用户名</span><input class="username" type="text" name="" id=""></div><div class="row"><span>密码</span><input class="password" type="text" name="" id=""></div><div class="row"><button>提交</button></div></div></div>

 

②css样式设计

* {margin: 0; /*消除浏览器默认样式*/padding: 0px;box-sizing: border-box; 
}.login-container {height: calc(100% - 50px);width: 100%;display: flex; /*进入弹性布局*/justify-content: center; /*水平方向居中*/align-items: center; /*垂直方向居中*/
}.login-dialog{width: 400px;height: 400px;background-color: rgba(255, 255, 255, 0.8);border-radius: 10px;
}h3{text-align: center; /*直接让标题居中*/margin-top: 20px;margin-bottom: 10px;font-size: 25px;
}.row {display: flex; /*进入弹性布局,好让元素在水平和垂直方向都居中*/justify-content: center;align-items: center;height: 80px;
}.row span{font-size: 20px; /*设置字体大小*/width: 100px
}.row input {height: 40px;width: 250px;border-radius: 9px;font-size: 20px; /*设置输入时的字体大小*/border: none; /*去掉边框*/
}.row button{background-color: rgb(2, 159, 2);width: 150px;height: 40px;border-radius: 9px;font-size: 20px;
}

五,实现博客编辑页

5.1 标题编辑项

导航栏是一样的,不再赘述,下面的编辑页面我们也先暂时不管,先来搞定标题编辑项:

①html结构设计

    <div class="edit-blog-container"><div class="title"><input type="text"><button>发布文章</button></div><div id="editor"></div></div>

②css样式设计

* {margin: 0; /*消除浏览器默认样式*/padding: 0px;box-sizing: border-box; 
}.login-container {height: calc(100% - 50px);width: 100%;display: flex; /*进入弹性布局*/justify-content: center; /*水平方向居中*/align-items: center; /*垂直方向居中*/
}.login-dialog{width: 400px;height: 400px;background-color: rgba(255, 255, 255, 0.8);border-radius: 10px;
}h3{text-align: center; /*直接让标题居中*/margin-top: 20px;margin-bottom: 10px;font-size: 25px;
}.row {display: flex; /*进入弹性布局,好让元素在水平和垂直方向都居中*/justify-content: center;align-items: center;height: 80px;
}.row span{font-size: 20px; /*设置字体大小*/width: 100px
}.row input {height: 40px;width: 250px;border-radius: 9px;font-size: 20px; /*设置输入时的字体大小*/border: none; /*去掉边框*/
}.row button{background-color: rgb(2, 159, 2);width: 150px;height: 40px;border-radius: 9px;font-size: 20px;
}

5.2 编辑区

对于编辑区,我们其实没必要自己写一个,直接引入即可,可以先打开这个网站:Editor.md - 开源在线 Markdown 编辑器(可能需要梯子)

六,引入markdown编辑区

6.1 下载

首先打开上面的网页,打开后往下滑找到GitHub下载:

下载好后是一个压缩包,解压后是一个文件夹,然后将该文件夹命名为“editor.md”,然后将该文件夹移到项目的html目录下:

然后我们创建一个人js文件夹,就上面图片那个,然后在里面创建一个“jquery.min.js”文件:

然后就是填充这个文件里的内容,首先回到上面的那个网站,滑倒最上,打开“简单示例”:

 然后就是这样一个页面,此时直接鼠标右键打开网页源代码:

 打开后找到下面内容:

这个就是我们前面在js文件夹里创建的那个文件,点开后:

直接 Ctrl + A 选中全部内容,复制到我们本地的 jquery.min.js 文件中,就完成了下载步骤了 

6.2 引入

直接在blog_edit.html文件中添加下列代码:

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

6.3 编写代码

引入之后就是使用了,添加下面代码即可:

<script>let edit = editormd('editor', {width:"100%",height: "calc(100% - 50px)",path: "./editor.md/lib/"})//第一个参数表示我们要把 markdown 放到哪里//第二个参数以结构化数据传入参数
</script>

保存后就能在页面上显示markdown编辑区了: 

附:就是上面的“在这里开始编辑。。。”原版是英文,可以打开这个文件进行修改:


http://www.hkcw.cn/article/JaqstvZoyi.shtml

相关文章

使用 HTML + JavaScript 实现一个日历任务管理系统

在现代快节奏的生活中&#xff0c;有效的时间管理变得越来越重要。本项目是一个基于 HTML 和 JavaScript 开发的日历任务管理系统&#xff0c;旨在为用户提供一个直观、便捷的时间管理工具。系统不仅能够清晰地展示当月日期&#xff0c;还支持事件的添加、编辑和删除操作&#…

最卸载器——Geek Uninstaller 使用指南

Geek Uninstaller 是一款轻量级的第三方卸载工具&#xff0c;专为 Windows 系统设计&#xff0c;提供比系统默认卸载器更彻底的应用清除能力。它体积小、绿色免安装&#xff0c;使用起来简单直观&#xff0c;但功能却不含糊。 一、为什么要用 Geek Uninstaller&#xff1f; Wi…

在QT中,利用charts库绘制FFT图形

第1章 添加charts库 1.1 .pro工程添加chart库 1.1.1 在.pro工程里面添加charts库 1.1.2 在需要使用的地方添加这两个库函数&#xff0c;顺序一点不要搞错&#xff0c;先添加.pro&#xff0c;否则编译器会找不到这两个.h文件。 第2章 Charts关键绘图函数 2.1 QChart 类 QChart 是…

5G-A:开启通信与行业变革的新时代

最近&#xff0c;不少细心的用户发现手机信号标识悄然发生了变化&#xff0c;从熟悉的 “5G” 变成了 “5G-A”。这一小小的改变&#xff0c;却蕴含着通信技术领域的重大升级&#xff0c;预示着一个全新的通信时代正在向我们走来。今天&#xff0c;就让我们深入了解一下 5G-A&a…

web安全开发,在线%机器学习异常流量检测系统%开发demo

框架:html,css,jquery,echart,python,flask,sklearn,uniapp,apk,kdd和nsl,mysql数据库。 经验心得 这是一个响应式的 H5 页面&#xff0c;适用于手机端和电脑端&#xff0c;平板&#xff0c;各种小程序。本来想vxxx小程序和AndroidStudo写两个但是工作量太多了加上也不是商用&…

每日算法-250531

每日算法学习记录 - 250531 今天完成了两道 LeetCode 题目&#xff0c;主要用到了前缀和的思想。记录如下&#xff1a; 1. 2559. 统计范围内的元音字符串数 题目 思路 前缀和 解题过程 我们可以先预处理出一个前缀和数组 nums&#xff0c;其中 nums[i] 表示 words 数组中从下…

CTFHub-RCE eval执行

观察源代码 我们可以发现源代码是request请求&#xff0c;所以我们可以通过GET或者POST请求&#xff0c;利用cmd参数进行命令执行 判断是Windows还是Linux 用GET请求 /?cmdsystem(ipconfig); 无回显 说明不是Windows系统 /?cmdsystem(ifconfig); 可以发现有回显&…

MCP架构深度解析:从基础原理到核心设计

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 持续学习&#xff0c;不断…

MySql(九)

目录 条件查询 1&#xff09;准备一张表 2&#xff09;插入数据 3&#xff09;条件查询格式 1---比较运算符 >大于 2---比较运算符 < 小于 3---比较运算符 > 大于等于 4---比较运算符 < 小于等于 5---比较运算符 ! 不等于 6---比较运算符 <> 不等于 7---比较…

赛博算命之“帝王之术”——奇门遁甲的JAVA实现

个人主页 文章专栏 文章目录 个人主页文章专栏 #前言#背景介绍#原理分析**一、干支系统计算**1. **四柱干支生成**2. **旬首与空亡判断** **二、九宫格与洛书模型**1. **地盘固定排布**2. **天盘动态移动** **三、阴阳遁与局数计算**1. **阴阳遁判断**2. **局数计算** **四、九…

C++ 栈(Stack)与队列(Queue)深度解析:从原理到实战

一、栈&#xff08;Stack&#xff09;&#xff1a;后进先出&#xff08;LIFO&#xff09;的线性结构 1. 核心特性与应用场景 特性&#xff1a;仅允许在栈顶进行元素的插入&#xff08;push&#xff09;和删除&#xff08;pop&#xff09;操作&#xff0c;遵循 “后进先出” 原…

【C++高级主题】命令空间(五):类、命名空间和作用域

目录 一、实参相关的查找&#xff08;ADL&#xff09;&#xff1a;函数调用的 “智能搜索” 1.1 ADL 的核心规则 1.2 ADL 的触发条件 1.3 ADL 的典型应用场景 1.4 ADL 的潜在风险与规避 二、隐式友元声明&#xff1a;类与命名空间的 “私密通道” 2.1 友元声明的基本规则…

Python Day38 学习

继续昨日的内容浙大疏锦行 学习一下两种机制&#xff1a;try-except机制和try-except-else-finally机制 try-except 摘自讲义 try&#xff1a;把你认为可能会出错的代码放在这里。 except&#xff1a;如果 try 块里的代码真的出错了&#xff08;从出错开始就不会继续执行t…

linux 1.0.7

用户和权限的含义与作用 linux中的用户和文件 用户的权限是非常重要的 而且有些程序需要使用管理员身份去执行 这些都是非常重要的 不可能让所有的人拥有所有的权限 这样的工具可以避免非法的手段来修改计算机中的数据 linux之所以安全还是权限管理做的很棒 每个登录的用户都有…

BFD 基本工作原理与实践:如何与 VRRP 联动实现高效链路故障检测?

BFD 基本工作原理与实践&#xff1a;如何与 VRRP 联动实现高效链路故障检测&#xff1f; &#x1f310; BFD 的基本原理BFD 主要特点BFD 工作机制 &#x1f500; 为什么 VRRP 需要 BFD&#xff1f;&#x1f527; BFD VRRP 配置实战&#xff08;华为设备&#xff09;&#x1f4…

python中将一个列表样式的字符串转换成真正列表的办法以及json.dumps()和 json.loads()

今天学习python的web.py&#xff0c;返回的内容为列表样式的字符串&#xff0c;如下 string_data "[(13.212.95.888, 8000, 10), (13.212.95.999, 8000, 10)]" 此时&#xff0c;如果想提取第一个元素&#xff0c;也就是(13.212.95.888, 8000, 10)&#xff0c;不能…

C++:指针(Pointers)

目录 什么是指针&#xff1f; 为什么需要指针&#xff1f; 1. 访问堆&#xff08;Access Heap&#xff09; 2. 资源管理&#xff08;Resource Management&#xff09; 3. 参数传递&#xff08;Parameter Passing&#xff09; 如何声明和使用指针&#xff1f; 如何利用指…

Acrobat DC v25.001 最新专业版已破,像word一样编辑PDF!

在数字化时代&#xff0c;PDF文件以其稳定性和通用性成为了文档交流和存储的热门选择。无论是阅读、编辑、转换还是转曲&#xff0c;大家对PDF文件的操作需求日益增加。因此&#xff0c;一款出色的PDF处理软件不仅要满足多样化的需求&#xff0c;还要通过简洁的界面和强大的功能…

RabbitMQ 高级特性

准备工作 1. 创建 Spring 项目 2. 引入依赖 3.修改配置文件 RabbitMQ官网 AMQP 0-9-1 Protocol Extensions | RabbitMQ 消息确认 消息确认机制 生产者发送消息,到达消费者后,可能会有以下情况: 1.消息处理成功 2.消息处理异常 RabbitMQ 向消费者发送消息之后,会把消息删除…

机器学习:欠拟合、过拟合、正则化

本文目录&#xff1a; 一、欠拟合二、过拟合三、拟合问题原因及解决办法四、正则化&#xff1a;尽量减少高次幂特征的影响&#xff08;一&#xff09;L1正则化&#xff08;二&#xff09;L2正则化&#xff08;三&#xff09;L1正则化与L2正则化的对比 五、正好拟合代码&#xf…