当前位置:   article > 正文

第十五届蓝桥杯(Web 应用开发)模拟赛 3 期-大学组_第十五届蓝桥杯(web 应用开发)模拟赛3期-大学组

第十五届蓝桥杯(web 应用开发)模拟赛3期-大学组

1.创意广告牌

  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. background-image: url(../images/woodiness.jpg);
  10. border-radius: 10px;
  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-radius: 15px 15px 0px 0px ;
  23. transform: skewX(-20deg);
  24. }

2原子化 CSS

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

3神秘咒语 

4. 朋友圈

  1. document.addEventListener("DOMContentLoaded", function() {
  2. // TODO: 请在此补充页面加载时缓存检查的代码
  3. const savedText = localStorage.getItem('savedText');
  4. // if (savedText!=null&&savedText!=undefined) {
  5. // document.getElementById('text').value = savedText;
  6. // }
  7. });
  8. // 当文本框输入内容改变时,动态地设置localStorage缓存,并根据有没有文本改变按钮状态
  9. // 此处使用了防抖函数,避免太过频繁地更新缓存
  10. document.getElementById("text").addEventListener(
  11. "input",
  12. debounce(function() {
  13. // 提示正在保存中
  14. document.getElementById("prompt").textContent = "正在保存中...";
  15. // TODO: 请在此补充用户输入时设置缓存和调整按钮状态的代码
  16. const text = this.value;
  17. localStorage.setItem('savedText', text);
  18. // TODO-END
  19. // 过一段时间后提示保存完成,模拟上传数据至后台的效果
  20. setTimeout(function() {
  21. document.getElementById("prompt").textContent = "内容已保存";
  22. }, 750);
  23. }, 200)
  24. );
  25. document.getElementById("post").addEventListener("click", function() {
  26. const content = document.getElementById("text").value;
  27. const element = createContent(content);
  28. document.querySelector(".contents").appendChild(element);
  29. document.getElementById("prompt").textContent = "";
  30. // TODO: 请在此补充用户点击“发表”按钮时清空文本框和缓存的代码
  31. // 清空输入框中的内容
  32. document.getElementById('text').value = '';
  33. // 移除 localStorage 内缓存的文本数据
  34. localStorage.removeItem('savedText');
  35. if(!document.getElementById("text").value){
  36. // 禁用按钮
  37. document.getElementById("post").disabled=true
  38. }else{
  39. document.getElementById("post").disabled=false
  40. }
  41. });
  42. // 防抖工具函数
  43. /**
  44. * @param {function} fn - 回调函数
  45. * @param {string} delay - 函数执行延迟,单位为ms
  46. */
  47. function debounce(fn, delay) {
  48. //return fn; // 这一行是为了确保页面正常运行,可以去掉
  49. // TODO: 请实现函数防抖的功能
  50. let timeoutId;
  51. clearTimeout(timeoutId);
  52. timeoutId=setTimeout(()=>{
  53. fn.apply()
  54. },delay)
  55. }
  56. // 用户点击“发表”后,创建一条新信息的DOM元素
  57. function createContent(content) {
  58. const div = document.createElement("div");
  59. const d = new Date();
  60. const deleteBtn = document.createElement("button");
  61. deleteBtn.textContent = "删除";
  62. deleteBtn.addEventListener("click", function() {
  63. div.remove();
  64. });
  65. div.innerHTML = `<div><span class="content">${content}</span><span class="date">${d.toLocaleString()}</span></div>`;
  66. div.appendChild(deleteBtn);
  67. return div;
  68. }

5. 美食蛋白质揭秘 

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>不同食物的蛋白质占比</title>
  7. <script src="./lib/vue3.global.js"></script>
  8. <script src="./lib/echarts.min.js"></script>
  9. <link rel="stylesheet" href="css/style.css">
  10. </head>
  11. <body>
  12. <div id="app">
  13. <h2>不同食物的蛋白质占比</h2>
  14. <div class="protein-container" >
  15. <!-- TODO:待补充代码,渲染获取的数据 -->
  16. <div class="protein-container">
  17. <div class="protein-item" v-for="item in datasource">鸡胸肉 30 {{datasource.name datasource.value}}</div>
  18. </div>
  19. </div>
  20. <div class="echarts" id="main"></div>
  21. </div>
  22. <script>
  23. const { ref, onMounted } = Vue;
  24. const MockURL = './mock/data.json'
  25. const app = {
  26. setup() {
  27. let datasource
  28. function echartsInit(data) {
  29. const main = document.getElementById("main");
  30. const myChart = echarts.init(main);
  31. myChart.setOption({
  32. legend: {
  33. data:data,
  34. orient: "vertical",
  35. top: "26%",
  36. right: "2%",
  37. icon: "circle",
  38. textStyle: {
  39. fontSize: 20,
  40. rich: {
  41. one: {
  42. width: 80,
  43. },
  44. two: {
  45. width: 80,
  46. },
  47. three: {
  48. width: 80,
  49. },
  50. },
  51. },
  52. formatter: (name) => {
  53. var total = 0;
  54. var target;
  55. let formateData = data;
  56. for (var i = 0; i < formateData.length; i++) {
  57. if (formateData[i].value) {
  58. total += formateData[i].value;
  59. if (formateData[i].name === name) {
  60. target = formateData[i].value;
  61. }
  62. }
  63. }
  64. var v = ((target / total) * 100).toFixed(2);
  65. let row;
  66. if (name === '表头') row = `食物 含量 占比`;
  67. else row = `{one|${name}} {two|${target}} {three|${v}%}`;
  68. return row;
  69. },
  70. },
  71. color: ["#baf", "#bfa", "#cde",'#f90',"#0c9"],
  72. series: [
  73. {
  74. type: "pie",
  75. radius: ["30%", "50%"],
  76. center: ["32%", "40%"],
  77. data: data
  78. },
  79. ],
  80. });
  81. }
  82. async function fetchData() {
  83. // TODO:待补充代码
  84. var xhr = new XMLHttpRequest();
  85. xhr.open('GET', MockURL, true);
  86. xhr.onreadystatechange = function () {
  87. if (xhr.readyState === 4 && xhr.status === 200) {
  88. datasource = JSON.parse(xhr.responseText);
  89. renderProteinData(datasource);
  90. }
  91. };
  92. xhr.send();
  93. console.log(datasource);
  94. }
  95. return {
  96. echartsInit,
  97. datasource
  98. };
  99. },
  100. };
  101. const vm = Vue.createApp(app);
  102. const mountedApp = vm.mount("#app");
  103. </script>
  104. </body>
  105. </html>

6. 营业状态切换

  1. function useToggle(state) {
  2. // TODO:待补充代码
  3. // const [state, setState] = useState(initialState);
  4. // return true
  5. const toggle = () => {
  6. setState(!state);
  7. };
  8. // 返回状态和切换状态函数的数组
  9. return [state, toggle];
  10. }
  11. const app = Vue.createApp({
  12. setup() {
  13. const [isWorking, toggleWorking] = useToggle(false) // 使用自定义的useToggle函数创建状态和切换函数
  14. const workImage = './images/open.jpg' // 营业状态的图片路径
  15. const restImage = './images/close.jpg' // 打烊状态的图片路径
  16. return {
  17. isWorking,
  18. toggleWorking,
  19. workImage,
  20. restImage
  21. }
  22. }
  23. });

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/201306
推荐阅读
相关标签
  

闽ICP备14008679号