您现在的位置是:首页 > 技术教程 正文

第十五届蓝桥杯(Web 应用开发)模拟赛 3 期-大学组(被题目描述坑惨了)

admin 阅读: 2024-03-27
后台-插件-广告管理-内容页头部广告(手机)

目录

1.创意广告牌

2.原子化css

3.神秘咒语

4.朋友圈

5.美食蛋白揭秘

6.营业状态变更

7.小说阅读器

8.冰岛人

9.这是一个”浏览器“

10.趣味加密解密

总结


1.创意广告牌

这个题目不多说了,只要知道这些css应该都能写出来,不会的平时多查查文档就记住了。

代码:

  1. .billboard {
  2. position: relative;
  3. background-color: #8e6534;
  4. color: #fff;
  5. padding: 20px;
  6. box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.3);
  7. background-size: cover;
  8. /* TODO:待补充代码 设置圆角 10px,背景图片为woodiness.jpg */
  9. border-radius: 10px;
  10. background: url('../images/woodiness.jpg');
  11. }
  12. .top-sign {
  13. position: relative;
  14. width: 200px;
  15. height: 100px;
  16. background-color: #a87f4a;
  17. display: flex;
  18. justify-content: center;
  19. align-items: center;
  20. font-size: 1rem;
  21. /* TODO:待补充代码 上面两个角是圆角 15px,下面两个角是直角 元素 x 轴倾斜 20度*/
  22. border-top-left-radius: 15px;
  23. border-top-right-radius: 15px;
  24. transform: skewX(-20deg);
  25. }

2.原子化css

这个题目主要需要知道的是css的属性选择器,可以查文档看看就知道了,不会的话其实看看其他的css应该也能联想到哈。

代码:

  1. /* TODO: 实现原子化 flex */
  2. div[flex="~ col"] {
  3. display: flex;
  4. flex-direction: column;
  5. }

3.神秘咒语

这个考的也就是请求头携带参数,还不会的得抓紧学一下XML,fetch,axios了,这个从蓝桥杯模拟题的趋势来看,考的很频繁,甚至后面的题目发个请求就有3,5分。

代码:

  1. const key1Button = document.getElementById('key1') // 钥匙 1
  2. const key2Button = document.getElementById('key2') // 钥匙 2
  3. const spell1 = document.getElementById('spell1') // 咒语 1
  4. const spell2 = document.getElementById('spell2') //咒语 2
  5. // TODO:新增或者修改以下代码
  6. key1Button.addEventListener('click', async () => {
  7. // 从后台请求钥匙1的咒语部分
  8. key1Button.disabled = true
  9. try {
  10. let { data } = await axios.get('/spellone', {
  11. headers: {
  12. Authorization: 'Bearer 2b58f9a8-7d73-4a9c-b8a2-9f05d6e8e3c7' // 添加 Authorization 字段携带 token
  13. }
  14. })
  15. console.log(data)
  16. spell1.innerHTML = data
  17. tryOpenTreasureBox()
  18. } catch (error) {
  19. console.error('请求钥匙1咒语失败:', error)
  20. }
  21. })
  22. key2Button.addEventListener('click', async () => {
  23. // 从后台请求钥匙2的咒语部分
  24. key2Button.disabled = true
  25. try {
  26. let { data } = await axios.get('/spelltwo', {
  27. headers: {
  28. Authorization: 'Bearer 2b58f9a8-7d73-4a9c-b8a2-9f05d6e8e3c7' // 添加 Authorization 字段携带 token
  29. }
  30. })
  31. spell2.innerHTML = data
  32. tryOpenTreasureBox()
  33. } catch (error) {
  34. console.error('请求钥匙2咒语失败:', error)
  35. }
  36. })
  37. function tryOpenTreasureBox() {
  38. if (spell1.innerHTML == '星辰闪耀' && spell2.innerHTML == '众星归位') {
  39. const box = document.getElementById('treasureBox')
  40. const suceessmessage = document.getElementById('suceess-message')
  41. box.classList.add('opened')
  42. suceessmessage.style.display = 'block'
  43. }
  44. }

4.朋友圈

1.防抖函数的实现

其实这个还算挺简单的,就是一个非常常规的防抖,会的自然肯定是会的,不会的可以花几分钟时间看看视频学一下,很快的。

代码:

  1. function debounce(fn, delay) {
  2. let timer = null
  3. return function () {
  4. const context = this
  5. const args = arguments
  6. clearTimeout(timer)
  7. timer = setTimeout(function () {
  8. fn.apply(context, args)
  9. }, delay)
  10. }
  11. }

2.将内容存储到localStorage中

这个按照要求做就好了,需要做哪些提示,加哪些属性都有说明。

  1. document.getElementById('text').addEventListener(
  2. 'input',
  3. debounce(function () {
  4. // 提示正在保存中
  5. document.getElementById('prompt').textContent = '正在保存中...'
  6. // 设置缓存
  7. const text = document.getElementById('text').value
  8. if (text.length <= 0) {
  9. document.getElementById('post').setAttribute('disabled', 'disabled')
  10. } else {
  11. document.getElementById('post').removeAttribute('disabled')
  12. }
  13. localStorage.setItem('savedText', text)
  14. // 过一段时间后提示保存完成
  15. setTimeout(function () {
  16. document.getElementById('prompt').textContent = '内容已保存'
  17. }, 750)
  18. }, 200)
  19. )

3.这个就是对页面的一些动态展示了,需要理清页面渲染的流程是怎么样的,什么时候显示什么,什么情况下该显示什么,经过一些判断后添加必要的属性,类名等就行。

  1. document.getElementById('post').addEventListener('click', function () {
  2. const content = document.getElementById('text').value
  3. const element = createContent(content)
  4. document.querySelector('.contents').appendChild(element)
  5. document.getElementById('prompt').textContent = ''
  6. // TODO: 请在此补充用户点击“发表”按钮时清空文本框和缓存的代码
  7. document.getElementById('text').value = ''
  8. localStorage.removeItem('savedText')
  9. // 同时需要将按钮的 disabled 属性设置回来
  10. document.getElementById('post').setAttribute('disabled', 'disabled')
  11. })

页面初次加载的缓存

  1. document.addEventListener('DOMContentLoaded', function () {
  2. // 页面加载时检查 localStorage 中是否有缓存文本数据
  3. const savedText = localStorage.getItem('savedText')
  4. if (savedText) {
  5. document.getElementById('text').value = savedText
  6. // 页面加载时检查输入框内容,设置按钮状态
  7. if (savedText.length > 0) {
  8. document.getElementById('post').removeAttribute('disabled')
  9. } else {
  10. document.getElementById('post').setAttribute('disabled', 'disabled')
  11. }
  12. } else {
  13. // 如果没有缓存文本数据,则将按钮设置为禁用状态
  14. document.getElementById('post').setAttribute('disabled', 'disabled')
  15. }
  16. })

5.美食蛋白揭秘

1.发请求拿到需要的数据

这里的小坑就是拿到的数据渲染出来是不对的,要去除掉多余的数据

  1. async function fetchData() {
  2. // TODO:待补充代码
  3. let data = await fetch(MockURL).then(res => res.json())
  4. data.unshift({
  5. name: '表头',
  6. icon: 'none'
  7. })
  8. echartsInit(data)
  9. //去除第一个元素
  10. dataList.value = data.slice(1)
  11. }
  12. onMounted(() => {
  13. fetchData();
  14. });
  15. return {
  16. echartsInit,
  17. fetchData,
  18. dataList
  19. };

2.渲染页面

  1. <div class="protein-item" v-for="data in dataList" :key="data.name">
  2. {{data.name}}
  3. {{data.value}}
  4. div>

6.营业状态变更

这个题目要实现切换状态,通过观察题目可以看到,需要返回的是一个Boolean值,这个是来确定页面该如何渲染的,第二个需要返回的是一个函数,用来切换状态的。

首先我们要想要的是,返回的值肯定需要是一个ref(),响应式的值,因为我们知道啊,在页面不刷新的情况下,ref(),响应式数据发生变化,页面也会发生变化的,那么想到这个就好办了。

  1. function useToggle(state) {
  2. // TODO:待补充代码
  3. const toggledState = ref(state)
  4. function toggle() {
  5. toggledState.value = !toggledState.value
  6. }
  7. return [toggledState, toggle]
  8. }

7.小说阅读器

这个题目真的是把我坑惨了,坑的我想哭。

 但是我的解法可能有点粗糙哈,大佬看到了见谅。

刚开始看到这个题目的数据,在解析数据过程中还好,我用的比较笨拙的办法一步步的解析出来了,提交后也能运行,json文件中的数据也有了,可是正当我提交的时候却出错了。

这是题目描述的格式:

这是我第一次运行出来的格式:

感觉没有一点问题了,不过还是不行,就在我绞尽脑汁没想到办法,重新读了一遍题目,看到了这句话:

我就修改代码将写入格式改成这种了: 空格都已经去掉了,就在我满心欢喜的提交代码时,还是出错不给过,我真的想不通到底哪里出了问题。

最后在我看了一遍txt文件后,我再想是不是标题的问题,

但是看题目描述的结果又是这样的,我抱着试试的感觉修改提交后,终于通过了

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜