css蓝桥杯--⾃适应⻚⾯

news2024/11/25 12:31:57

目录

  • 一、介绍
  • 二、准备
  • 三、⽬标
  • 四、代码
  • 五、完成


一、介绍

响应式布局是在 2010 年 5 ⽉份提出的⼀个概念,这个概念是为解决移动互联⽹浏览⽽诞⽣的。简⽽⾔之,就是⼀个⽹站能够兼容多个终端——⽽不是为每个终端做⼀个特定的版本。通过响应式布局可以为不同终端的⽤户提供更加舒适的界⾯和更好的⽤户体验,⽽且随着⼤屏幕移动设备的普及,⽤“⼤势所趋”来形容也不为过。因此越来越多的设计师采⽤这个技术。
本题需要在已提供的基础项⽬中,使⽤ CSS 或者 DOM 操作达到 Menu 和内容⻚⾃适应的效果。

二、准备

开始答题前,需要先打开本题的项⽬代码⽂件夹,⽬录结构如下:

├── css
│ └── style.css
├── images
│ ├── C++_course.png
│ ├── linux_course.png
│ └── python_course.png
├── index.html
├─── js
│ └── jquery-3.6.0.min.js
├── default.gif
└── effect.gif

其中:

  • index.html 是主⻚⾯。
  • css/style.css 是需要补充样式的⽂件。
  • js/jquery-3.6.0.min.js 是 jQuery 库⽂件。
  • images 是图⽚⽂件夹。
  • default.gif 是 PC 端默认效果图。
  • effect.gif 是移动端⾃适应效果图。

在浏览器中预览 index.html ⻚⾯,默认 PC 端⻚⾯显示如下所示:
在这里插入图片描述

三、⽬标

初始⻚⾯已经具备基础的布局和交互效果,包含 hover ⾼亮,展示⼆级菜单等。效果⻅⽂件夹下⾯的gif 图,图⽚名称为 default.gif (提示:可以通过 VS Code 或者浏览器预览 gif 图⽚)。
在这里插入图片描述

请通过补全 css/style.css 中代码或结合 jQuery 操作 DOM 的⽅式,达到根据屏幕⼤⼩显示不同布局的效果。

  • 以 800px 为界限, 800px 以上显示 PC 端布局,否则显示移动端布局,需要实现移动端布局样式如下:
    在这里插入图片描述
  • 移动端 Menu 由左上侧按钮(即 class 包含 icon-menu 的 label 标签)控制显隐,按钮⼤⼩已
  • 经默认提供,⽆需⼿动设置⼤⼩。且 Menu 按钮展示时,需要浮动在内容卡⽚上⽅,不能被遮挡,
  • 移动端和 PC 端顶部导航栏⾼度⼀致,均为 54px 。
  • 移动端导航栏的菜单项每⼀项独占⼀⾏。
  • 显示移动端布局时,卡⽚描述和对应图⽚各占⼀⾏,且都撑满 #tutorials 容器。

移动端⻚⾯展开菜单栏效果如下所示:在这里插入图片描述
最终效果可参考⽂件夹下⾯的 gif 图,图⽚名称为 effect.gif(提示:可以通过 VS Code 或者浏览器预览gif 图⽚)。
在这里插入图片描述

四、代码

index.html

<!DOCTYPE html>
<html lang="zh-CN">
  <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/style.css" />
  </head>
  <body>
    <!-- 菜单栏 -->
    <nav class="menu">
      <label for="menu-btn" class="menu-btn icon-menu"></label>
      <input type="checkbox" id="menu-btn" class="menu-btn" />
      <ul class="collapse">
        <li><a href="javascript:void(0)">首页</a></li>
        <li class="dropdown">
          <a href="javascript:void(0)">课程</a>
          <ul>
            <li><a href="javascript:void(0)">全部课程</a></li>
            <li><a href="javascript:void(0)">学习路径</a></li>
            <li><a href="javascript:void(0)">训练营</a></li>
          </ul>
        </li>
        <li><a href="javascript:void(0)">竞赛</a></li>
        <li><a href="javascript:void(0)">蓝桥杯</a></li>
      </ul>
    </nav>
    <!-- 页面内容 -->
    <div class="page">
      <section id="tutorials">
        <div class="row">
          <div class="text">
            <h4>最新课程</h4>
            <h3>Linux 基础入门</h3>
            <p class="box">
              本课程教你如何熟练地使用 Linux,本实验中通过在线动手实验的方式学习
              Linux
              常用命令,用户与权限管理,目录结构与文件操作,环境变量,计划任务,管道与数据流重定向等基本知识点。
            </p>
          </div>
          <img src="images/linux_course.png" alt="Linux课程封面" />
        </div>
        <div class="row">
          <div class="text">
            <h4>热门课程</h4>
            <h3>oeasy 教您玩转 python</h3>
            <p class="box">
              简明易懂的 Python3 课程。从零开始,在 Linux 环境中使用
              Vim,一步步带你玩转脚本语言 Python,感受编程的乐趣。
            </p>
          </div>
          <img src="images/python_course.png" alt="Python课程封面" />
        </div>
        <div class="row">
          <div class="text">
            <h4>体系课程</h4>
            <h3>C++基础入门实战</h3>
            <p class="box">
              C 语言是面向过程的程序设计语言,而 C++ 语言是由 C
              语言演变而来的一种面向对象的程序设计语言。课程实验内容从 C++
              语言的概念开始,通过理论学习和实验操作,初步熟知 C++ 语言。
            </p>
          </div>
          <img src="images/C%2B%2B_course.png" alt="C++课程截图" />
        </div>
      </section>
    </div>
    <script src="./js/jquery-3.6.0.min.js"></script>
    <script>
      /* TODO: 考生可以根据需要使用 jQuery 实现脚本控制,也可以只使用纯 css 实现 */
    </script>
  </body>
</html>

css/style.css

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  background-color: #191620;
}

/* 菜单样式 */
.menu {
  background: #252525;
  box-shadow: 1px 1px 3px 0 rgba(0, 0, 0, 0.5);
  box-sizing: border-box;
  margin-bottom: 30px;
  position: relative;
}

.menu li {
  display: inline-block;
}
.menu a {
  padding: 16px;
}
.dropdown {
  position: relative;
}
.dropdown li a {
  display: block;
  padding: 8px 16px;
  white-space: nowrap;
}
.dropdown ul {
  box-shadow: 1px 1px 3px 0 rgba(0, 0, 0, 0.5);
  padding: 8px 0;
  position: absolute;
  min-width: 100%;
}
input.menu-btn,
label.menu-btn {
  display: none;
}

@media (max-width: 800px) {
  .collapse {
    border-top: 1px #959595 solid;
  }
}

.menu li,
.menu ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
.menu a {
  color: #959595;
  display: inline-block;
  padding: 16px 32px;
  text-decoration: none;
}
.dropdown:hover a,
.menu a:hover {
  color: #fff;
}
.menu ul ul {
  display: none;
}
.dropdown:hover ul {
  display: block;
}
.dropdown ul {
  background: #fff;
  padding: 0;
}
.dropdown ul a,
.dropdown:hover ul a {
  color: #000;
}
.dropdown ul a:hover,
.dropdown:hover ul a:hover {
  color: rgb(2, 107, 107);
}
.dropdown ul ul {
  border-bottom: 1px #ccc solid;
  border-top: 1px #ccc solid;
  box-shadow: none;
  margin-bottom: 16px;
  max-width: 100%;
  position: relative;
}

.icon-menu::before {
  content: "\2630";
}

/* 页面内容 */
.card {
  width: 45%;
  border: 2px solid;
  padding: 10px;
  margin: 10px;
  display: inline-block;
}
.card img {
  width: 100%;
}
.card-content {
  font-size: 10px;
}

.page {
  display: flex;
  justify-content: center;
  width: 100%;
}

#tutorials {
  max-width: 800px;
  margin: 0 20px;
}

.row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-column-gap: 1.5rem;
  margin: 20px 0;
}

#tutorials h3 {
  margin: 0;
  color: #86fbfb;
}

#tutorials h4 {
  margin: 0;
  color: white;
}

.box {
  padding: 10px;
  border-radius: 10px;
  color: white;
  background-color: darkcyan;
  line-height: 1.5;
}

#tutorials img {
  padding: 10px;
  border: 1px solid #86fbfb;
  border-radius: 25px;
  width: 100%;
  margin: 10px;
  display: block;
}

/* TODO:待补充代码 */

五、完成

css/style.css

/* TODO:待补充代码 */
 @media screen and  (max-width: 800px) {
  /* 网格布局 pc端是两行 而移动端是一行 */
  .row {
    grid-template-columns: 1fr;
}
/* 让导航变成竖起来排列 */
.menu li{
  display: block;
}
/* 上面是使用绝对定位,会造成布局有问题 */
.dropdown ul{
  position:relative
}
/* 菜单的显示与隐藏 默认隐藏 */
.collapse{
 display:none 
}
/* 移动端 Menu 由左上侧按钮(即 class 包含 icon-menu 的 label 标签)控制显隐,按钮⼤⼩已
经默认提供,⽆需⼿动设置⼤⼩。且 Menu 按钮展示时,需要浮动在内容卡⽚上⽅,不能被遮挡, */

label.menu-btn{
 color:white;
 display:block;
 height: 53px; 
}

/* 使⽤ CSS 伪类选择器 :checked 来控制 Menu 的显隐。 */
/* 也可以去html页面使用js来控制 */
input:checked.menu-btn+.collapse{
  display: block;
}
 }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EXCEL文本处理总结:如何查找(/定位)字符串内,符合条件的多个符号里的最后一个?

目录 题外话&#xff1a;学习总结 1 新手切忌贪多 2 熟练者切忌懒惰 3 这2件事恰恰都和人性相反 1 EXCEL文本处理相关函数 2 查找函数 find() 和 search() 2.1 find() 2.2 search() 2.3 下面是测试的公式情况 3 如何查找(定位)符合条件的某个字符的位置&#xff1f;…

MySQL触发器的使用

目录 一、前言二、触发器分类1.插入触发器2.更新触发器3.删除触发器 三、查看触发器四、异常处理五、小结 一、前言 各种主流数据库,都集成了触发器的功能。触发器提供了一种机制,允许开发者在对数据库表的插入、更新、删除的前后捕获相应的数据行。从而针对数据行实现特定的逻…

DebugView的使用

目录 一、前言二、本机调试1.DebugView程序文件说明2.OutputDebugString函数使用3.示例程序4.远程调试 三、问题与注意事项四、小结 一、前言 DebugView是windows下的一款调试工具,可以捕获程序输出的日志,分为64位和32位,支持应用层和内核层的日志捕获,利用它排除bug是个不错的…

chatgpt赋能python:Python开发手机软件的优势和挑战

Python开发手机软件的优势和挑战 随着智能手机的普及&#xff0c;移动应用开发已成为当前最热门的技术领域之一。随着越来越多的企业意识到移动应用的重要性&#xff0c;越来越多的开发者开始加入这个领域。 在移动应用的开发中&#xff0c;由于其高效性和易于学习的特点&…

【Flutter】Dart/Flutter SDK如何降低版本、回退到指定版本

因为dart3.0以后不再支持 no-sound-null-safety&#xff1b;但是有些项目不得以切换到dart3.0以前继续使用运行项目 方法1&#xff1a; 通过 $ flutter downgrade命令&#xff0c;将flutter降级为当前通道的上一个活动版本&#xff1b; 如果没有存在老版本则会提示 flutter …

从零手写操作系统之RVOS软件定时器实现-08

从零手写操作系统之RVOS软件定时器实现-08 定时器分类软件定时器的分类软件定时器设计与实现软件定时器调用流程增加对周期性定时任务支持测试优化点 本系列参考: 学习开发一个RISC-V上的操作系统 - 汪辰 - 2021春 整理而来&#xff0c;主要作为xv6操作系统学习的一个前置基础。…

chatgpt赋能python:Python强制等待:如何优化你的Python技能

Python强制等待&#xff1a;如何优化你的Python技能 在Python编程中&#xff0c;强制等待是一种非常重要的程序设计方式。Python代码中的强制等待通常使用time.sleep()方法实现。在本文中&#xff0c;我们将详细介绍什么是Python强制等待&#xff0c;以及如何使用它来优化你的…

基于最近电平逼近的开环MMC逆变器MATLAB仿真模型

资源地址&#xff1a; 模型介绍&#xff1a; MATLAB21b版本 DC:12kV&#xff0c;N&#xff1d;12&#xff0c; 采用最近电平逼近调制&#xff0c;采用基于排序的均压方法&#xff0c;冒泡排序&#xff0b;桥臂电流方向判断。 连接负载&#xff0c;可以得到13电平相电压波形。…

Windows10下使用VS2019编译chromium

Windows10下使用VS2019编译chromium 工具设置代理cmd运行gclient配置VS的版本,环境变量设置下载源码生成编译工具 下载depot_tools,并配置环境变量,PATH下添加depot_tools的解压路径E:\src\depot_tools 设置代理 控制台管理员权限执行 git config --global http.proxy…

CenoOS连接 SQL Server

目录 1、问题&#xff1a;2、解决步骤3、拓展3.1 常用查询3.2 SQL Server 语句规则3.3 python调用 1、问题&#xff1a; 连接&#xff1a;ProviderSQLOLEDB.1;Persist Security InfoFalse;User IDXXX;passwordXXXXX;Initial CatalogXXXXX;Data SourceXXXXX; 解析&#xff1a;…

chatgpt赋能python:Python屏幕截图:完美的方法记录你的屏幕

Python屏幕截图&#xff1a;完美的方法记录你的屏幕 Python作为一种高级编程语言&#xff0c;被广泛用于开发各种应用程序和游戏&#xff0c;其中之一就是屏幕截图。 在本文中&#xff0c;我们将介绍使用Python进行屏幕截图的方法和技巧。 什么是屏幕截图&#xff1f; 屏幕截…

第六十八天学习记录:高等数学:导数(宋浩板书)

导数是微积分中的一个概念&#xff0c;描述了函数在某一个点上的变化率。具体地说&#xff0c;函数 f ( x ) f(x) f(x)在 x a xa xa处的导数为 f ′ ( a ) f(a) f′(a)&#xff0c;表示当 x x x在 a a a处发生微小的变化 Δ x \Delta x Δx时&#xff0c; f ( x ) f(x) f(x)对…

Golang每日一练(leetDay0090) 运算优先级、有效字母异位词

目录 241. 为运算表达式设计优先级 Different Ways to Add Parentheses &#x1f31f;&#x1f31f; 242. 有效的字母异位词 Valid Anagram &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 …

Vector源码

介绍 Vector是矢量队列&#xff0c;继承于AbstractList&#xff0c;实现了List, RandomAccess, Cloneable和Serializable接口Vector继承了AbstractList&#xff0c;实现了List接口&#xff0c;所以它是一个队列&#xff0c;支持相关的添加、删除、修改、遍历等功能Vector实现了…

chatgpt赋能python:Python的强制语句缩进解析

Python的强制语句缩进解析 什么是语句缩进 在其他编程语言中&#xff0c;我们通过使用花括号或者一些其他的符号来区分控制语句的范围。但在Python中&#xff0c;我们使用缩进来实现这个目的。这意味着任何控制结构的主体都必须按照要求正确缩进。 为什么Python强制要求使用…

【Java】JavaWEB核心要点总结:63

文章目录 1. JSP 和 Servlet 有什么区别2. JSP有哪些内置对象 分别是什么3. 详细讲解cookie session token4. 如果客户端禁止 了cookie &#xff0c;session 还能用吗5. session 的工作原理 1. JSP 和 Servlet 有什么区别 JSP&#xff08;Java Server Pages&#xff09;和Servl…

读改变未来的九大算法笔记06_图形识别

1. 人工智能研究人员在过去几十年中学到的最重要的教训之一 1.1. 看似智能的行为有可能从看似随机的系统中浮现出来 1.2. 如果我们有能力进入人脑&#xff0c;研究神经元之间连接的强度&#xff0c;其中绝大部分连接都会表现得很随机 1.3. 当作为集合体行动时&#xff0c;这…

javaScript蓝桥杯-----全球新冠疫情数据统计

目录 一、介绍二、准备三、⽬标四、代码五、完成 一、介绍 新冠疫情席卷全球&#xff0c;在此期间有很多免费的 API 和⽹站为⼈们提供了各个国家疫情数据的查询功能&#xff0c;这些免费公开的数据体现出了互联⽹作为信息媒介的优越性&#xff0c;帮助全球⼈⺠更好的了解⼀线疫…

电路模型和电路定律(3)——“电路分析”

小雅兰期末加油冲冲冲&#xff01;&#xff01;&#xff01; 复习之前的内容&#xff1a; 这样的连接方式是不可以的&#xff1a; 两个电压源&#xff0c;电压值不相同&#xff0c;是不能并联的 两个电流源&#xff0c;电流值不相同&#xff0c;是不能串联的 电流源也不能开…

浅谈Zuul、Gateway

一、Zuul Zuul是通过Servlet来实现的&#xff0c;Zuul通过自定义的ZuulServlet&#xff08;类似于Spring MVC的DispatcherServlet&#xff09;来对请求进行控制(一系列过滤器处理Http请求)。 所有的Request都要经过ZuulServlet的处理&#xff0c;三个核心的方法preRoute(),rou…