个人博客
介绍
很多人都有自己的博客,在博客上面用自己的方式去书写文章,用来记录生活,分享技术等。下面是蓝桥云课的博客,但是上面还缺少一些样式,需要大家去完善。
准备
开始答题前,需要先打开本题的项目代码文件夹,目录结构如下:
其中:
·index.css是需要补充样式的文件。
·index.html是博客页面。
·1ogo.svg是1ogo图片。
在浏览器中预览index.html页面效果如下:
目标
1.在index.css中已经给出了修改部分的提示,请仔细阅读。
2.请完善index.css上方需要修改的代码,修改完成后,页面效果如下所示:
代码
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>Document</title><link rel="stylesheet" href="index.css">
</head><body class="theme-mode-dark"><div class="theme-container sidebar-open no-sidebar"><header class="navbar blur"><!-- logo --><a class="home-link"><img src="./logo.svg" class="logo"></a><!-- 导航头部右侧内容 --><div class="links" style="max-width: 863px;"><!-- 导航文字 --><nav class="nav-links can-hide"><div class="nav-item"><a class="nav-link">首页</a></div><div class="nav-item"><a class="nav-link">关于</a></div><div class="nav-item"><a class="nav-link">收藏</a></div><!-- github图标 --><a class="repo-link">GitHub<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px"y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor"d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor"points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></span></a></nav></div></header><!-- banner 部分 --><div class="home-wrapper"><div class="banner"><div class="banner-conent" style="padding-top: 7rem;"><header class="hero"><!----><h1 id="main-title">蓝桥云课的博客</h1><p class="description">做受人尊敬的公司</p><!----></header><!----></div><!----></div><!-- 内容部分 --><div class="main-wrapper"><div class="main-left"><div class="card-box article-list"><div class="article-title"><a class="iconfont icon-bi">最近更新</a></div><div class="article-wrapper"><dl><dd>01</dd><dt><a><div>33个非常实用的JavaScript一行代码<!----></div></a><span class="date">11-02</span></dt></dl><dl><dd>02</dd><dt><a><div>Hook规则<!----></div></a> <span class="date">04-06</span></dt></dl><dl><dd>03</dd><dt><a><div>使用State Hook<!----></div></a><span class="date">04-06</span></dt></dl><dl><dd>04</dd><dt><a><div>自定义 Hook<!----></div></a><span class="date">04-06</span></dt></dl><dl><dd>05</dd><dt><a><div>使用Effect Hook<!----></div></a><span class="date">04-06</span></dt></dl><dl><dd>06</dd><dt><a><div>Hook概述<!----></div></a><span class="date">03-31</span></dt></dl><dl><dd>07</dd><dt><a href="/pages/87146f/" class=""><div>案例演示<!----></div></a> <span class="date">03-27</span></dt></dl><dl><dd>08</dd><dt><a class=""><div>React哲学<!----></div></a><span class="date">03-26</span></dt></dl><dl><dd></dd><dt><a>更多文章></a></dt></dl></div></div></div><div class="main-right"><!-- 右侧头像和简介 --><aside class="blogger-wrapper card-box"><!----><div class="blogger"><span class="name">蓝桥</span> <span class="slogan">前端博客</span></div></aside><!-- 右侧文章分类 --><div class="categories-wrapper card-box"><a class="title iconfont icon-wenjianjia" title="全部分类">文章分类</a><div class="categories"><a class="">更多<span>12</span></a><a class="">实用技巧<span>2</span></a><a class="">jsx教程<span>1</span></a><a class="">前端<span>15</span></a><a class="">JavaScript文章<span>12</span></a><a class="">《React》笔记<span>18</span></a><a class="">Hook<span>5</span></a><a class="">案例演示<span>1</span></a><a class="">核心概念<span>11</span></a><a class="">高级指引<span>1</span></a><a class="more">更多 ...</a></div></div></div></div></div>
</body></html>
css
/* TODO:banner 上的文字 需要居中显示 *//* TODO: main-wrapper 通过设置main-wrapper 布局方式 让.main-left .main-right 正确显示 *//*/* TODO 宽度自适应 居左显示 *//* 宽 245px 居右显示 *//* 以下代码不需要修改 */.navbar .links {padding-left: 1.5rem;box-sizing: border-box;white-space: nowrap;font-size: 0.9rem;position: absolute;right: 1.5rem;top: 0.7rem;display: flex;
}.nav-links .nav-item {position: relative;margin-left: 1.5rem;line-height: 2rem;color: var(--textColor);display: inline-block;
}.blogger-wrapper .avatar {width: 100%;overflow: hidden;
}.card-box {box-shadow: 0 1px 2px 0 rgb(0 0 0 / 10%);transition: box-shadow 0.5s;
}.blogger-wrapper .avatar img {width: 100%;height: 100%;
}.banner {background: rgb(17, 130, 182);
}.theme-mode-dark {--bodyBg: #27272b;--mainBg: #1e1e22;--sidebarBg: rgba(30, 30, 34, 0.8);--blurBg: rgba(30, 30, 34, 0.8);--textColor: #000000;--textLightenColor: #0085ad;--borderColor: #2c2c3a;--codeBg: #252526;--codeColor: #fff;
}.theme-container {color: var(--textColor);min-height: 100vh;
}.article-list .article-title {border-bottom: 1px solid var(--borderColor);font-size: 1.3rem;padding: 1rem;
}.nav-links .repo-link {margin-left: 1.5rem;color: var(--textColor);
}.navbar a,
.navbar span,
.navbar img {display: inline-block;
}.nav-links a {line-height: 1.4rem;color: inherit;
}.navbar .links .search-box {flex: 0 0 auto;vertical-align: top;
}.search-box {display: inline-block;position: relative;margin-right: 1rem;
}.avbar {padding: 0.7rem 1.5rem;line-height: 2.2rem;transition: transform 0.3s;
}.navbar {z-index: 20;top: 0;left: 0;right: 0;height: 3.6rem;box-sizing: border-box;box-shadow: 0 2px 5px rgb(0 0 0 / 6%);
}body .search-box input {background-color: transparent;color: var(--textColor);border: 1px solid var(--borderColor, #ccc);
}.article-list .article-wrapper {overflow: hidden;
}.article-list .article-wrapper dl {border-bottom: 1px dotted var(--borderColor);float: left;display: flex;padding: 8px 0;margin: 0;height: 45px;width: 100%;
}header {display: block;
}.home-wrapper .banner {width: 100%;min-height: 450px;color: #fff;position: relative;overflow: hidden;
}.article-list .article-wrapper dl dt a {color: var(--textColor);flex: 1;display: flex;height: 45px;align-items: center;font-weight: normal;
}.article-list .article-wrapper dl dt {flex: 1;display: flex;
}.article-list .article-wrapper dl dd {font-size: 1.1rem;color: #f17229;width: 50px;text-align: center;margin: 0;line-height: 45px;
}dd {display: block;margin-inline-start: 40px;
}.article-list .article-wrapper dl dt .date {width: 50px;margin-right: 15px;color: #999;text-align: right;font-size: 0.9rem;line-height: 45px;
}.search-box input {cursor: text;width: 10rem;height: 2rem;color: #4e6e8e;display: inline-block;border: 1px solid #cfd4db;border-radius: 2rem;font-size: 0.9rem;line-height: 2rem;padding: 0 0.5rem 0 2rem;outline: none;transition: all 0.2s ease;
}a,
input,
button {outline: none;-webkit-tap-highlight-color: rgba(255, 255, 255, 0);-webkit-focus-ring-color: rgba(0, 0, 0, 0);
}.home-wrapper .main-wrapper {margin-top: 2rem;
}.home-wrapper .main-wrapper .main-left .card-box {margin-bottom: 0.9rem;
}.article-list {padding: 1rem 2rem;
}.main-wrapper .main-right .card-box {margin: 0 0 0.9rem 0.9rem;padding-top: 0.95rem;padding-bottom: 0.95rem;
}.blogger-wrapper {height: auto;display: inline-table;padding-top: 0 !important;overflow: hidden;
}.categories-wrapper .categories {margin-top: 0.6rem;
}.categories-wrapper .categories a {display: block;padding: 8px 0.95rem 7px 0.95rem;color: var(--textColor);opacity: 0.8;font-size: 0.95rem;line-height: 0.95rem;position: relative;transition: all 0.2s;border-left: 2px solid transparent;margin-top: -1px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;
}a {font-weight: 500;color: #11a8cd;text-decoration: none;
}a,
input,
button {outline: none;-webkit-tap-highlight-color: rgba(255, 255, 255, 0);-webkit-focus-ring-color: rgba(0, 0, 0, 0);
}.categories-wrapper .categories a span {float: right;background-color: var(--textColor);color: #fff;border-radius: 8px;padding: 0 0.13rem;min-width: 1rem;height: 1rem;line-height: 1rem;font-size: 0.6rem;text-align: center;opacity: 0.6;transition: opacity 0.3s;
}.blogger-wrapper .blogger {padding: 0.3rem 0.95rem 0 0.95rem;
}.blogger-wrapper .blogger .name {font-size: 1.3rem;display: block;margin-bottom: 6px;
}.blogger-wrapper .blogger .slogan {color: var(--textColor);
}.blogger-wrapper .blogger .name {color: var(--textColor);
}.categories-wrapper .title {color: var(--textColor);opacity: 0.9;font-size: 1.2rem;padding: 0 0.95rem;
}.navbar {padding: 0.7rem 1.5rem;line-height: 2.2rem;transition: transform 0.3s;
}.navbar a,
.navbar img,
.navbar span {display: inline-block;
}
答案
/* TODO:banner 上的文字 需要居中显示 */.home-wrapper .banner .banner-conent .hero {margin-top: 3rem;text-align: center;
}/* TODO: main-wrapper 通过设置main-wrapper 布局方式 让.main-left .main-right 正确显示 */.main-wrapper {margin: 1.5rem auto 0 auto;max-width: 1100px;padding: 0 0.9rem;box-sizing: border-box;position: relative;display: flex;
}/*/* TODO 宽度自适应 居左显示 */.main-wrapper .main-left {width: auto;float: left;
}/* 宽 245px 居右显示 */.main-wrapper .main-right>* {width: 245px;
}
考点:
- CSS 选择器:
- 类选择器:通过
.
符号引用类名(例如.home-wrapper
,.banner
,.banner-content
,.hero
,.main-wrapper
,.main-left
,.main-right
)。 - 后代选择器:两个或多个选择器之间无特殊符号,表示后者必须是前者后代元素(例如
.home-wrapper .banner .banner-content .hero
)。 - 子元素选择器(直接子元素选择器):使用
>
符号,表示只选择作为指定父元素的直接子元素的元素(例如.main-wrapper .main-right > *
)。
- 类选择器:通过
- CSS 样式属性:
margin
:设置元素的外边距。text-align
:设置元素内文本内容的水平对齐方式。max-width
:设置元素的最大宽度。padding
:设置元素的内边距。box-sizing
:设置元素的盒模型计算方式,border-box
表示包括内边距和边框在内的总尺寸。position
:设置元素的定位方式,relative
表示相对定位。display
:设置元素的显示模式,flex
表示弹性布局。width
:设置元素的宽度。float
:浮动属性,用于将元素放置到一边,但在这个上下文中,由于已经应用了 Flexbox 布局,可能不需要使用。
- Flexbox 相关概念: 虽然代码片段中没有明确提到具体的 Flexbox 属性,但在
.main-wrapper
中设置了display: flex
,表明这个容器会采用 Flexbox 布局方式,它的子元素(.main-left
和.main-right
)将会按照 Flexbox 规则排列和显示。在实际应用中,可能会结合其他 Flexbox 属性(如flex-direction
、justify-content
、align-items
等)进一步控制布局效果。
小结:本题考的主要是css的使用,用的rem布局,在不同的设备显示效果比较好。