0
点赞
收藏
分享

微信扫一扫

前端 - 博客系统(页面设计) - JavaEE初阶 - 细节狂魔

瑾谋 2022-05-13 阅读 78

文章目录

前言


博客系统

由于我们实现的是一个简化版本的博客系统。
只是包含一个博客系统中最核心的功能。

有的人可能会有疑问,就这么几个吗?
修改博客页面,注册页面呢?
展开你们的想象,修改博客的页面不就是编辑博客的页面嘛。【写过博客都知道】、
至于注册页面一般是与登录页面绑定的。
换个说法,你们要是掌握了上述这个几个页面,其它页面不过就是套层皮。

上面只是一个小问题,更多的是,就我们菜鸟,能实现出一个 markdown 编译器 嘛。。


博客列表页

紧急修改一下背景图片,虽然上面那张图很美,但是小了。特别的模糊,我就在替换一下背景图




再来看右侧 博客列表 部分。
在正式实现之前,先做好一件事。
在这里插入图片描述
下面开始。
先来建立右侧的博客列表的框架。
在这里插入图片描述
当前图片 和 文字混在一起导致我们看不清内容。
因此我们添加样式的过程中的,一个优先处理背景颜色问题。
以免影响后面的调整。
在这里插入图片描述
我们还可以再 sao 一点。
加一个动态的效果:在鼠标悬置在 查看按钮上面时,背景颜色会改变。
在这里插入图片描述
在这里插入图片描述
有电脑的朋友,会可以试一下。
不过,我感觉这个动态效果,太过于“转瞬即逝”了。
我给它加一个 过渡 效果。
在这里插入图片描述


html 代码部分

<!DOCTYPE html>
<html lang="en">
<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/common.css">
    <link rel="stylesheet" href="./css/bologlist.css">
</head>
<body>
    <!-- 导航栏 -->
    <!-- 为了能够在后续过程中,添加样式等操作,建议都引入一个类属性 -->
    <div class="navigation">
        <img src="./image/2.jpg" alt="">
        <span>我的博客系统</span>
        <!-- 空白元素,用于站位置 -->
        <div class="spacer"></div>
        <a href="bloghome.html">主页</a>
        <a href="writingblog.html">写博客</a>
        <a href="#">注销</a>
    </div>
    <!-- 这里的 .container 作为页面的版心 -->
    <div class="container">
        <!-- 左侧用户信息区 -->
        <div class="left">
            <!-- 表示整个用户信息区域 -->
            <div class="card">
                <img src="./image/1.jpg" alt="">
                <!-- &nbsp;  空格符 -->
                <h3>Dark&nbsp;And&nbsp;Grey</h3>
                <a href="#">github 地址</a>
                <div class="counter">
                    <span>文章</span>
                    <span>分类</span>
                </div>
                <div class="counter">
                    <span>2</span>
                    <span>1</span>
                </div>
            </div>
        </div>
        <!-- 右侧内容区 -->
        <div class="right">
             <!-- 一个 blog 对应一篇博客 -->
            <div class="blog">
                <div class="title">
                    我的第一篇博客
                </div>
                <!-- 博客发布时间 -->
                <div class="date">
                    2022-05-10 17:48:00
                </div>
                <!-- 博客内容摘要 -->
                <div class="desc">
                    <!-- 输入 lorem 可以UI及生成一句话 -->
                    从今天起,争取卷死在读的各位,Lorem ipsum dolor sit, amet consectetur adipisicing elit. Id numquam vitae voluptate, veniam ipsa placeat! Consectetur eligendi quia quibusdam, mollitia eos totam quod repellendus veritatis, iste natus odio nihil ea.
                </div>
                <!-- 注意!这里不能直接写 > 号 -->
                <!-- 因为会被 HTML认为是标签,而导致无法识别 -->
                <!-- 这里就需要用转义字符:大于号的转义字符 就是 &gt; -->
                <a href="#">查看全文 &gt;&gt; </a>
            </div>
             <!-- 一个 blog 对应一篇博客 -->
             <div class="blog">
                <div class="title">
                    我的第二篇博客
                </div>
                <!-- 博客发布时间 -->
                <div class="date">
                    2022-05-10 17:57:00
                </div>
                <!-- 博客内容摘要 -->
                <div class="desc">
                    <!-- 输入 lorem 可以UI及生成一句话 -->
                    从今天起,争取卷死在读的各位,Lorem ipsum dolor sit, amet consectetur adipisicing elit. Id numquam vitae voluptate, veniam ipsa placeat! Consectetur eligendi quia quibusdam, mollitia eos totam quod repellendus veritatis, iste natus odio nihil ea.
                </div>
                <!-- 注意!这里不能直接写 > 号 -->
                <!-- 因为会被 HTML认为是标签,而导致无法识别 -->
                <!-- 这里就需要用转义字符:大于号的转义字符 就是 &gt; -->
                <a href="#">查看全文 &gt;&gt; </a>
            </div>
        </div>
    </div>
</body>
</html>

通用 css 代码部分

/* 放置一些各个页面都会用到的公共样式 */
/* 导航栏就是属于每个页面都会用到的公共样式 */


/* 首先,我们需要去掉浏览器样式 */
*{
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* 给整个页面加上背景 */
html,body{
    /* html 的父元素就是浏览器窗口 */
    /* 此处的100%,意思是 html 元素的高度 和 浏览器一样高*/
    /* body 的元素是 html */
    /* 其意思不言而喻,就是 “继承父亲的财产”  */
    height: 100%;

    /* 加上背景图 */
    /* .. 是指 当前 common 文件的父级目录 */
    /* 我存放的图片的地方,就与它的父级目录是同一级 */
    background-image: url(../image/preview.jpg);
    /* 拒绝平铺 */
    background-repeat: no-repeat;
    /* 图片覆盖整个页面 */
    background-size: cover;
    /* 图片处于剧痛位置 */
    background-position: center;
}


/* 导航栏样式 */
.navigation{
    width: 100%;
    /* 一般这里的尺寸都是设计稿规定好了的 */
    /* 但是这里并没有,所以这里的尺寸,自己决定 */
    height: 50px;
    /* 由于导航栏的背景颜色属于一种半透明的状态 */
    /* 所以我们要使用 rgba 的方式来进行处理 */
    /* 颜色你们自己发挥 */
    /* 需要注意的 透明度alpha 是一个 0 - 1 之间数字*/
    background-color: rgba(55,20,11, 0.6);
    /* 由于里面的logo,标题,连接之类的都是水平一行来进行排列的 */
   /* 所以,这里我们就需要用到弹性布局 */
    display: flex;
    /* 实现元素 垂直居中的效果。 */
    align-items: center;
    color: orange;

}

.navigation img{
    /* 将图片缩小一段 */
    /* 上期上下左右都留一点空位 */
    width: 40px;
    height: 40px;
    /* 将图片设置为原型 */
    border-radius: 50%;
    /* 设置 内/外边距 */
    margin-left: 30px;
    margin-right: 10px;
}

.navigation .spacer{
    /* 相对于父元素的宽度,占比百分之70 */
    width: 80%;
}

.navigation a{
    /* 去掉下划线 */
    text-decoration: none;
    /* 设置标签之间的间距 */
    /* 上下内边距0px,左右10px */
    padding: 0 10px;
    color: orange;
}

/* 接下来是 版心相关的样式 */

.container{
    /* 注意!既然要留有空白,那么宽度就不能是100% */
    width: 1000px;
    /* 版心的理想高度:页面高度 减去 导航栏的高度 */
    height: calc(100% - 50px);
    /* 水平居中 */
    /* 上下外边距为 0,左右边距由浏览器自动调整 */
    margin: 0 auto;
    display: flex;
    justify-content: space-between;
}


/* 版心的左侧部分 */
.container .left{
    height: 100%;
    width: 200px;
    /* background-color: red; */
}
/* 版心的右侧部分 */
.container .right{
    height: 100%;
    /* 父类container 的宽度为1000px */
    /* 左侧栏占了200px */
    width: 795px;
    /* background-color: blue; */
    /* 背景颜色 */
    background-color: rgba(255, 255, 255,0.75);
    /* 边框圆角 */
    border-radius: 20px;
    /* 处理溢出问题 */
    /* 溢出了就滚动内容,没溢出就不滚动 */
    overflow: auto;
}

/* 接下来实现 card 部分的样式 */
.card{
    /* 背景颜色 */
    background-color: rgba(255,255,255, 0.75);
    /* 背景区域圆角 */
    border-radius: 20px;
    /* 通过这里的内边距,就可以让图片水平居中 */
    /* 这里设置的30像素,意思是指4个方向,都是30px */
    /* 因为我们的图片长宽都是140px,而card的宽为200px */
    /* 200 -140 == 60px,两边一平摊刚好 30 px */
    /* 刚好能水平居中,而且上下空出30px */
    padding: 30px;
}

.card img{
    /* card 的宽度为 200px 【默认与父类 left 宽度相同】*/
    /* 先把图片的尺寸速效 */
    width: 140px;
    height: 140px;
    /* 将图片变成圆形形 */
    border-radius: 50%;
}

.card h3{
    text-align: center;
    padding: 10px;
}

.card a{
    /* 首先,先把 a 标签转化成 块级元素 */
    /* 因为 a 默认是行内元素,行内元素的很多边距是没有效果的 */
    display: block;
    /* 文本居中 */
    text-align: center;
    /* 去掉下划线 */
    text-decoration: none;
    /* 字体颜色 */
    color: rgb(64, 55, 55);
    /* 间距 */
    padding: 10px;
}

.card .counter{
    /* 弹性布局,目的:为了更好的水平排列 */
    display: flex;
    /* 通过 justify-content: aroumd */
    /* 来使用它们左右进行分离排列 */
    justify-content: space-around;
    padding: 5px;
}


博客列表页专属 css文件

/* 这个文件中专门写和博客列表页相关的样式 */
.blog{
    /* blog的宽度 和 父元素right是一样的 */
    width: 100%;
    /* 高度如果不设置,就取决于内容高度的总和 */
    /* 所以,我们这里不去设置 */
    /* 设置 每一篇博客的间距,通过 设置内边距 */
    padding: 20px;
}

/* 标题 */
.blog .title{
    /* 居中 */
    text-align: center;
    /* 字体大小 */
    font-size: 22px;
    /* 字体粗细 */
    font-weight: bold;
    /* 设置边距 */
    /* 上边边距 10px,左右0px(因为blog里面已经设置了啦20px) */
    padding: 10px 0;
}

/* 日期 */
.blog .date{
    /* 文本居中 */
    text-align: center;
    /* 字体颜色 */
    color: rgb(204, 33, 204);
    /* 边距 */
    padding: 10px;
}

/* 自然段 */
.blog .desc{
    text-indent: 2em;
}

/* 查看按钮 */
.blog a{
    /* 将 a标签 设置为 块级元素,方便设置尺寸 和 边距 */
    display: block;
    /* 尺寸 */
    width: 140px;
    height: 40px;
    /* 去掉下划线 */
    text-decoration: none;
    /* 字体颜色 */
    color: black;
    /* 文本内容居中 */
    text-align: center;
    /* 文本框垂直居中 */
    line-height: 40px;
    /* 文本框水平居中位置 */
    margin: 10px auto;
    /* 边框: 边框线条粗细2px,颜色:黑色,边框线条:实线 */
    border: 2px black solid;
    /* 如果想让变化的过程变得柔和一些,就可以加上过渡效果 */
    transition: all 0.5s;
}

/* 伪类选择器 */
.blog a:hover{
    background-color: orange;
}

博客详情页

接着上面的内容,我们现在就只需要实现右侧内容就可以了。
在这里插入图片描述
注意!这里其实有个问题。


HTML代码

<!DOCTYPE html>
<html lang="en">
<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/common.css">
    <link rel="stylesheet" href="./css/blogdetail.css">
</head>
<body>
    <!-- 导航栏 -->
    <!-- 为了能够在后续过程中,添加样式等操作,建议都引入一个类属性 -->
    <div class="navigation">
        <img src="./image/2.jpg" alt="">
        <span>我的博客系统</span>
        <!-- 空白元素,用于站位置 -->
        <div class="spacer"></div>
        <a href="bloghome.html">主页</a>
        <a href="writingblog.html">写博客</a>
        <a href="#">注销</a>
    </div>
    <!-- 这里的 .container 作为页面的版心 -->
    <div class="container">
        <!-- 左侧用户信息区 -->
        <div class="left">
            <!-- 表示整个用户信息区域 -->
            <div class="card">
                <img src="./image/1.jpg" alt="">
                <!-- &nbsp;  空格符 -->
                <h3>Dark&nbsp;And&nbsp;Grey</h3>
                <a href="#">github 地址</a>
                <div class="counter">
                    <span>文章</span>
                    <span>分类</span>
                </div>
                <div class="counter">
                    <span>2</span>
                    <span>1</span>
                </div>
            </div>
        </div>
        <!-- 右侧内容区 -->
        <div class="right">
            <!-- 使用一个 div 来包裹整个博客的内容详情 -->
            <div class="blog-content">
                <!-- 博客标题 -->
                <h3>我的第一篇博客</h3>
                <!-- 发布时间 -->
                <div class="date">2022-05-10 17:48:00</div>
                <!-- 博客内容 -->
                <!-- 第一个自然段 -->
                <p>
                    <!-- 输入lorem,就会自动生成一串随机字符 -->
                    从今天起,争取卷死在读的各位,Lorem ipsum dolor sit, amet consectetur adipisicing elit. Id numquam vitae voluptate, veniam ipsa placeat! Consectetur eligendi quia quibusdam, mollitia eos totam quod repellendus veritatis, iste natus odio nihil ea.
                </p>
                <!-- 第二个自然段 -->
                <p>
                    Lorem ipsum dolor sit, amet consectetur adipisicing elit. Voluptatibus similique cumque corrupti. Officiis adipisci exercitationem aspernatur ea libero quia, labore optio tempore delectus pariatur dicta officia blanditiis cum deleniti fuga.
                </p>
                <!-- 第三个自然段 -->
                <p>
                    Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consectetur dolores ullam quo sed. Sunt, placeat voluptatem quia qui tenetur voluptas perspiciatis, numquam suscipit id ipsa veritatis iusto dolore itaque?
                </p>
                <p>
                    <!-- 输入lorem,就会自动生成一串随机字符 -->
                    从今天起,争取卷死在读的各位,Lorem ipsum dolor sit, amet consectetur adipisicing elit. Id numquam vitae voluptate, veniam ipsa placeat! Consectetur eligendi quia quibusdam, mollitia eos totam quod repellendus veritatis, iste natus odio nihil ea.
                </p>
                <!-- 第二个自然段 -->
                <p>
                    Lorem ipsum dolor sit, amet consectetur adipisicing elit. Voluptatibus similique cumque corrupti. Officiis adipisci exercitationem aspernatur ea libero quia, labore optio tempore delectus pariatur dicta officia blanditiis cum deleniti fuga.
                </p>
                <!-- 第三个自然段 -->
                <p>
                    Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consectetur dolores ullam quo sed. Sunt, placeat voluptatem quia qui tenetur voluptas perspiciatis, numquam suscipit id ipsa veritatis iusto dolore itaque?
                </p>
                <p>
                    <!-- 输入lorem,就会自动生成一串随机字符 -->
                    从今天起,争取卷死在读的各位,Lorem ipsum dolor sit, amet consectetur adipisicing elit. Id numquam vitae voluptate, veniam ipsa placeat! Consectetur eligendi quia quibusdam, mollitia eos totam quod repellendus veritatis, iste natus odio nihil ea.
                </p>
                <!-- 第二个自然段 -->
                <p>
                    Lorem ipsum dolor sit, amet consectetur adipisicing elit. Voluptatibus similique cumque corrupti. Officiis adipisci exercitationem aspernatur ea libero quia, labore optio tempore delectus pariatur dicta officia blanditiis cum deleniti fuga.
                </p>
                <!-- 第三个自然段 -->
                <p>
                    Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consectetur dolores ullam quo sed. Sunt, placeat voluptatem quia qui tenetur voluptas perspiciatis, numquam suscipit id ipsa veritatis iusto dolore itaque?
                </p>
                <p>
                    <!-- 输入lorem,就会自动生成一串随机字符 -->
                    从今天起,争取卷死在读的各位,Lorem ipsum dolor sit, amet consectetur adipisicing elit. Id numquam vitae voluptate, veniam ipsa placeat! Consectetur eligendi quia quibusdam, mollitia eos totam quod repellendus veritatis, iste natus odio nihil ea.
                </p>
                <!-- 第二个自然段 -->
                <p>
                    Lorem ipsum dolor sit, amet consectetur adipisicing elit. Voluptatibus similique cumque corrupti. Officiis adipisci exercitationem aspernatur ea libero quia, labore optio tempore delectus pariatur dicta officia blanditiis cum deleniti fuga.
                </p>
                <!-- 第三个自然段 -->
                <p>
                    Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consectetur dolores ullam quo sed. Sunt, placeat voluptatem quia qui tenetur voluptas perspiciatis, numquam suscipit id ipsa veritatis iusto dolore itaque?
                </p>
                <p>
                    <!-- 输入lorem,就会自动生成一串随机字符 -->
                    从今天起,争取卷死在读的各位,Lorem ipsum dolor sit, amet consectetur adipisicing elit. Id numquam vitae voluptate, veniam ipsa placeat! Consectetur eligendi quia quibusdam, mollitia eos totam quod repellendus veritatis, iste natus odio nihil ea.
                </p>
                <!-- 第二个自然段 -->
                <p>
                    Lorem ipsum dolor sit, amet consectetur adipisicing elit. Voluptatibus similique cumque corrupti. Officiis adipisci exercitationem aspernatur ea libero quia, labore optio tempore delectus pariatur dicta officia blanditiis cum deleniti fuga.
                </p>
                <!-- 第三个自然段 -->
                <p>
                    Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consectetur dolores ullam quo sed. Sunt, placeat voluptatem quia qui tenetur voluptas perspiciatis, numquam suscipit id ipsa veritatis iusto dolore itaque?
                </p>
                <p>
                    <!-- 输入lorem,就会自动生成一串随机字符 -->
                    从今天起,争取卷死在读的各位,Lorem ipsum dolor sit, amet consectetur adipisicing elit. Id numquam vitae voluptate, veniam ipsa placeat! Consectetur eligendi quia quibusdam, mollitia eos totam quod repellendus veritatis, iste natus odio nihil ea.
                </p>
                <!-- 第二个自然段 -->
                <p>
                    Lorem ipsum dolor sit, amet consectetur adipisicing elit. Voluptatibus similique cumque corrupti. Officiis adipisci exercitationem aspernatur ea libero quia, labore optio tempore delectus pariatur dicta officia blanditiis cum deleniti fuga.
                </p>
                <!-- 第三个自然段 -->
                <p>
                    Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consectetur dolores ullam quo sed. Sunt, placeat voluptatem quia qui tenetur voluptas perspiciatis, numquam suscipit id ipsa veritatis iusto dolore itaque?
                </p>
                <p>
                    <!-- 输入lorem,就会自动生成一串随机字符 -->
                    从今天起,争取卷死在读的各位,Lorem ipsum dolor sit, amet consectetur adipisicing elit. Id numquam vitae voluptate, veniam ipsa placeat! Consectetur eligendi quia quibusdam, mollitia eos totam quod repellendus veritatis, iste natus odio nihil ea.
                </p>
                <!-- 第二个自然段 -->
                <p>
                    Lorem ipsum dolor sit, amet consectetur adipisicing elit. Voluptatibus similique cumque corrupti. Officiis adipisci exercitationem aspernatur ea libero quia, labore optio tempore delectus pariatur dicta officia blanditiis cum deleniti fuga.
                </p>
                <!-- 第三个自然段 -->
                <p>
                    Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consectetur dolores ullam quo sed. Sunt, placeat voluptatem quia qui tenetur voluptas perspiciatis, numquam suscipit id ipsa veritatis iusto dolore itaque?
                </p>
                <p>
                    <!-- 输入lorem,就会自动生成一串随机字符 -->
                    从今天起,争取卷死在读的各位,Lorem ipsum dolor sit, amet consectetur adipisicing elit. Id numquam vitae voluptate, veniam ipsa placeat! Consectetur eligendi quia quibusdam, mollitia eos totam quod repellendus veritatis, iste natus odio nihil ea.
                </p>
                <!-- 第二个自然段 -->
                <p>
                    Lorem ipsum dolor sit, amet consectetur adipisicing elit. Voluptatibus similique cumque corrupti. Officiis adipisci exercitationem aspernatur ea libero quia, labore optio tempore delectus pariatur dicta officia blanditiis cum deleniti fuga.
                </p>
                <!-- 第三个自然段 -->
                <p>
                    Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consectetur dolores ullam quo sed. Sunt, placeat voluptatem quia qui tenetur voluptas perspiciatis, numquam suscipit id ipsa veritatis iusto dolore itaque?
                </p>
                <p>
                    <!-- 输入lorem,就会自动生成一串随机字符 -->
                    从今天起,争取卷死在读的各位,Lorem ipsum dolor sit, amet consectetur adipisicing elit. Id numquam vitae voluptate, veniam ipsa placeat! Consectetur eligendi quia quibusdam, mollitia eos totam quod repellendus veritatis, iste natus odio nihil ea.
                </p>
                <!-- 第二个自然段 -->
                <p>
                    Lorem ipsum dolor sit, amet consectetur adipisicing elit. Voluptatibus similique cumque corrupti. Officiis adipisci exercitationem aspernatur ea libero quia, labore optio tempore delectus pariatur dicta officia blanditiis cum deleniti fuga.
                </p>
                <!-- 第三个自然段 -->
                <p>
                    Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consectetur dolores ullam quo sed. Sunt, placeat voluptatem quia qui tenetur voluptas perspiciatis, numquam suscipit id ipsa veritatis iusto dolore itaque?
                </p>
                <p>
                    <!-- 输入lorem,就会自动生成一串随机字符 -->
                    从今天起,争取卷死在读的各位,Lorem ipsum dolor sit, amet consectetur adipisicing elit. Id numquam vitae voluptate, veniam ipsa placeat! Consectetur eligendi quia quibusdam, mollitia eos totam quod repellendus veritatis, iste natus odio nihil ea.
                </p>
                <!-- 第二个自然段 -->
                <p>
                    Lorem ipsum dolor sit, amet consectetur adipisicing elit. Voluptatibus similique cumque corrupti. Officiis adipisci exercitationem aspernatur ea libero quia, labore optio tempore delectus pariatur dicta officia blanditiis cum deleniti fuga.
                </p>
                <!-- 第三个自然段 -->
                <p>
                    Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consectetur dolores ullam quo sed. Sunt, placeat voluptatem quia qui tenetur voluptas perspiciatis, numquam suscipit id ipsa veritatis iusto dolore itaque?
                </p>
            </div>
        </div>
    </div>
</body>
</html>

专属 css 文件

/* 给博客详情页使用的样式文件 */

/* 首先,我们需要给 blog-content 设置内边距*/
/* 因为你们仔细看看模板,就会知道内容与边框是有一定的距离的 */
.blog-content{
    padding: 30px;
}

/* 标题 */
.blog-content h3{
    /* 标题居中 */
    text-align: center;
    /* 设置边距,因为标题与下面的时间是有距离的 */
    /* .blog-content设置的边距 和这个没有关系!!! */
    /* .blog-content 是针对整体,.blog-content h3 是针对内容中的标题 */
    /* 上下 20 px,左右0px */
    padding: 20px 0;

}

/* 日期 */
.blog-content .date{
    /* 文本居中 */
    text-align: center;
    /* 字体颜色 */
    color: rgb(204, 33, 204);
    /* 针对日期设置间距 */
    padding: 20px;
}

/* 自然段 */
.blog-content p{
    /* 每个自然段首行缩进 2个字符 */
    text-indent: 2em;
    /* 给每个自然段设置边距,使其每个自然段隔开 */
    padding: 10px 0;
}

博客登陆页

下面我们先来实现登录的页面框架
在这里插入图片描述
此时,我们就可以往这个对话框,添加更具体元素 和 样式了。
在这里插入图片描述
此时,我们就完成了 博客登录页。
在这里插入图片描述


HTML 文件

<!DOCTYPE html>
<html lang="en">
<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/common.css">
    <link rel="stylesheet" href="./css/bloglogin.css">
</head>
<body>
    <!-- 导航栏 -->
    <!-- 为了能够在后续过程中,添加样式等操作,建议都引入一个类属性 -->
    <div class="navigation">
        <img src="./image/2.jpg" alt="">
        <span>我的博客系统</span>
        <!-- 空白元素,用于站位置 -->
        <div class="spacer"></div>
        <a href="bloghome.html">主页</a>
        <a href="writingblog.html">写博客</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">
            </div>
            <div class="row">
                <span>密码</span>
                <input type="password" id="password">
            </div>
            <div class="row">
                <button>提交</button>
            </div>
        </div>
    </div>
</body>
</html>

专属 css 代码

/* 登录页面的专用样式文件 */

.login-container{
    /* 页面宽度 */
    width: 100%;
    /* 减去导航的高度 */
    height: calc(100% - 50px);

    /* 需要让里面的子元素,垂直水平居中,就会用到 flex */
    display: flex;
    /* 垂直居中 */
    align-items: center;
    /* 水平居中 */
    justify-content: center;
    
}

.login-dialog{
    /* 尺寸 */
    width: 400px;
    height: 350px;
    background-color: rgba(255, 255, 255, 0.75);
    /* 边框圆角 */
    border-radius: 15px;
}

.login-dialog h3{
    /* 文本居中 */
    text-align: center;
    /* 字体大小 */
    font-size: 20px;
    /* 间距 */
    /* 上下 50 边距,左右苓边距 */
    padding: 50px 0;

}

.login-dialog .row{
    /* 尺寸 */
    height: 50px;
    width: 100%;
    /* 使用弹性布局 */
    /* 因为 类row,所拥有的元素都是 行内元素*/
    /* 只要是涉及到行内元素,或者子元素的操作都可以使用弹性布局 */
    display: flex;
    justify-content: center;
    align-items: center;
}

/* 针对 .login-dialog 中 span 标签 */
.login-dialog .row span{
    /* 把span 转化成块级元素,方便您设置尺寸 */
    /* 因为行内元素设置尺寸,大部分操作都是不会生效的 */
    display: block;
    /* 尺寸 */
    width: 100px;
    /* 字体加粗 */
    font-weight: 700;
}

/* 使用并集选择器,同时选择 用户名和密码的输入框 */
#username,#password{
    width: 200px;
    height: 40px;
    /* 去掉边框线 */
    border: none;
    /* 去掉轮廓线 */
    outline: none;
    /* 字体大小 */
    font-size: 22px;
    /* 文本垂直居中 */
    line-height: 40px;
    /* 设置 左内边距,让输入的数据与边框隔开 */
    padding-left: 10px;
    /* 设置边框圆角 */
    border-radius: 15px;
}

.row button{
    width: 300px;
    height: 50px;
    /* 背景颜色 */
    background-color: rgb(21, 100, 21);
    /* 字体颜色 */
    color: white;
    /* 字体大小 */
    font-size: 20px;
    /* 去掉边框线 */
    border: none;
    /* 去掉轮廓线 */
    outline: none;
    /* 边框圆角 */
    border-radius: 20px;
}

.row button:active{
    /* 背景颜色 */
    background-color: white;
    /* 字体颜色 */
    color: black;
}


题外话


博客编辑页

然后,就是创建一个专属的 样式文件,并使用 link 标签 来引入 这个文件。

因此,我们要想去分析一个 markdown 文件,那么你们就需要有一些 编译原理的知识背景。这个我们就不做过多讨论。【反正我是不会】

既然如此,我们做不到实现一个 markdown 编译器,又该如何去完成这个部分呢?
引入现成的 markdown编译器 即可。
直接通过 嵌入的方式,放入到我们所构建的页面中即可。

回到主线,说到 markdown 的引入。
markdown 的版本有很多。我们具体使用那个组件呢?
我们选择使用 editor.md 这个组件。
这是一个国内大佬写的组件,它的文档都是一些中文的,是非常友好的。
在这里插入图片描述
下面,我们就来引入这个 markdown。
在这里插入图片描述
到这里,我们就成功引入 这个markdown。

注意!这里文件名,非常重要!
这个文件的名字,会影响到后续代码中的一些相关写法。
在这里插入图片描述
要想使用这文件,来达到 在代码中引入markdown 的 目的。
我们需要 在 博客编辑页的 HTML 文件 代码中,引入人家的 css 和 js

首先,和下面的图片一样,引入框选的代码。
注意!建议使用相对路径来输入,先输入 ./
因为 我的代码 和 markdown的文件夹是同级目录。
然后根据编译器的提示,选择与我下面框选部分相同的路径即可。
这样我们就能确定 路径的正确性。
唯一需要注意的是:第二行引入的文件,还没有创建。所以先直接抄上去
在这里插入图片描述
之所以, 第二行的 “./js/jquery.min.js” 的路径,在敲的没有提示。
是因为 jQuery 不是 editor,md 的一部分,而是 editor.md 所依赖的库。

接下来,就是初始化 editor.md
在这里插入图片描述
记住一定要和自己磁盘文件相匹配,要不然代码是跑不起来的!!!
保证正确的路径,就是保证各种依赖的资源,文件,目录,图片,数据库…这些都得一致。

此时,我们再刷新我们的网页。
在这里插入图片描述


html 文件

<!DOCTYPE html>
<html lang="en">
<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/common.css">
    <link rel="stylesheet" href="./css/writingblog.css">

    <!-- 引入 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.min.js"></script>
</head>
<body>
    <!-- 导航栏 -->
    <!-- 为了能够在后续过程中,添加样式等操作,建议都引入一个类属性 -->
    <div class="navigation">
        <img src="./image/2.jpg" alt="">
        <span>我的博客系统</span>
        <!-- 空白元素,用于站位置 -->
        <div class="spacer"></div>
        <a href="bloghome.html">主页</a>
        <a href="writingblog.html">写博客</a>
        <a href="#">注销</a>
    </div>
    <!-- 包裹整个博客编辑页内容的顶级容器 -->
    <div class="blog-edit-container">
        <!-- 内容分为两个部分:标题区 和 编辑区 -->

        <!-- 标题区 -->
       <div class="title">
           <!-- 输入框 -->
           <input type="text">
           <button>发布文章</button>
       </div>

       <!-- 编辑区:放置 markdown 编译器 -->
       <div id="editor">

       </div>

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

专属 CSS 代码

/* 这是博客编辑页专用的样式文件 */

/* 容器 */
.blog-edit-container {
    /* 尺寸 */
    width: 1000px;
    /* 页面高度 - 导航栏高度 */
    height: calc(100% - 50px);
    /* 水平居中 */
    margin: 0 auto;

}
/* 先针对标题区 的 div 下手 */
.blog-edit-container .title{
    /* 与分类元素 .blog-edit-container 一样:1000px */
    width: 100%;
    /* 标题区域高度 */
    height: 50px;
    /* 为了方便调节尺寸,我们使用 弹性布局 */
    display: flex;
    /* 垂直居中 */
    align-items: center;
    /* 使子元素 输入框 和 按钮 靠两边放置,中间留个缝 */
    justify-content: space-between;
}

.blog-edit-container .title input{
    /* 尺寸 */
    /* 宽度我们要考虑一下 */
    /* 总长度是1000px,我打算给按钮设置 100px 的宽度*/
    /* 那么 输入的宽度就应该是 900px */
    /* 但是模板中,两者是不能紧挨着的 */
    /* 所以我给 890px */
    width: 890px;
    height: 40px;

    /* 边框圆角 */
    border-radius: 15px;
    /* 去掉边框线 */
    border: none;
    /* 去掉轮廓线 */
    outline: none;
    /* 背景颜色 和 透明度 */
    background-color: rgba(255, 255, 255, 0.75);
    font-size: 20px;
    padding-left: 10px;
}

.blog-edit-container .title button{
    width: 100px;
    height: 40px;
    /* 背景颜色 */
    background-color: rgb(240, 163, 21);
    /* 字体颜色 */
    color: white;
    /* 去掉边框线 */
    border: none;
    /* 去掉轮廓线 */
    outline: none;
    /* 边框圆角 */
    border-radius: 15px;
}
/* 点击时,按钮背景颜色为黑色 */
.blog-edit-container .title button:active{
    background-color: black;
}

#editor{
    border-radius: 15px;
    /* background-color 只是针对当前元素进行设置,不会影响到子元素 */
    /* background-color: rgba(255, 255, 255, 0.75); */
    /* opacity 会影响到子元素 */
    /* 给最外面的父元素设置了透明,里面的元素也会一起半透明 */
    opacity: 75%;
}

总结

举报

相关推荐

0 条评论