OpenShare | 前端三件套初识

2023-12-03 00:12

本文主要是介绍OpenShare | 前端三件套初识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 📚总述
  • 📚一个案例
    • 🐇首先搭HTML框架
    • 🐇CSS加样式
    • 🐇js交互实现
      • 🌮编辑按钮实现
      • 🌮我还想要换头像
    • 🚩加点悬浮框交互
    • 🚩框架梳理
  • 📚资源分享

📚总述

  • 结构:用于对网页元素进行整理和分类——HTML
    • 人的身体就相当于结构。简单说就是先搭好框架。
  • 表现:用于设置网页元素的版式,颜色,大小等外观样式——CSS
    • 给HTML加上css样式,即给人的身体穿上衣服鞋子,类似于人的着装。
  • 行为:指网页模型的定义及交互的编写——JavaScript
    • 单纯的HTML和css就相当于弄好了一个人体模特,搭好了骨架穿好了衣服,再加上JavaScript就是让其动起来,给他行为指令。

📚一个案例

在这里插入图片描述

编写环境:vs code

应用Live Server扩展插件

在这里插入图片描述

🐇首先搭HTML框架

  • 快捷键! + Tab,生成框架,注释快捷键Ctrl + /

    <!-- 声明文档类型-->
    <!DOCTYPE html>   
    <!-- 设置页面语言为英文 -->
    <html lang="en">  
    <head><!-- 设置字符编码为UTF-8,支持包括中文在内的全球范围的字符 --><meta charset="UTF-8">  <!-- 设置移动设备显示网页的宽度等于设备的宽度,并且初始缩放比例为1.0 --><meta name="viewport" content="width=device-width, initial-scale=1.0">  <!-- 设置页面标题为Document --><title>Document</title>  
    </head>
    <body></body>
    </html>
    
  • 修改标题:OpenShare小案例。技巧:双击自动定位修改点。


在这里插入图片描述在这里插入图片描述

  • 首先放一个div盒子container,container是这个div的类名,可以理解为这个div的名字,方便之后给它点对点加样式。技巧div.container + Tab,生成<div class="container"></div>

  • 盒子里先放一个标题:个人资料。技巧:直接h1 + Tab,生成<h1></h1>

  • 开一个div放详细信息。技巧div#profile + Tab,生成<div id="profile"></div>

    在 HTML 和 CSS 中,ID 和 class 是用于标识和定位元素的属性。

    1. ID(标识符)
      • ID 是唯一的,每个页面中的特定元素只能有一个 ID,并且该 ID 必须是唯一的。
      • 用于唯一标识某个元素,以便通过 JavaScript 或 CSS 直接定位该元素。
    2. Class(类)
      • Class 是可重复的,一个元素可以具有多个 class。
      • 用于将多个元素组织在一起,并为它们应用相同的样式或行为。

    总的来说,ID 用于唯一标识单个元素,而 class 用于标记一组元素,并为它们应用相同的样式或行为。 CSS 和 JavaScript 可以利用 ID 和 class 来选择并操作网页中的特定元素。

  • 搭详细信息框架,包括头像,姓名,年龄,地点。

    <div> 用于创建块级的结构,而 <span> 用于对行内的文本或元素进行包裹和标记。

  • 最后搭一个编辑框

    <div class="container"><h1>个人资料</h1><div id="profile"><img id="avatar" src="avatar.jpg" alt="Avatar"><h2 id="name">张三</h2><p>年龄:<span id="age">25</span></p><p>地点:<span id="location">山东</span></p></div><button id="editBtn">编辑</button>
    </div>
    

🐇CSS加样式

  • 总体body

    body {/* 设置字体 */font-family: Arial, sans-serif; text-align: center;/* 取消 body 元素的外边距 */margin: 0;/* 取消 body 元素的内边距 */padding: 0;
    }
    
    • text-align: center; 被应用于 <body> 元素时,页面中所有的文本内容会在水平方向上居中对齐。

    • 这意味着页面中所有的文本,包括段落、标题和其他块级元素中的文本,都会相对于页面的中心进行水平对齐。

    • 当应用于一个元素时,该元素内的文本会水平居中显示。

    • 盒子模型

      在这里插入图片描述

  • 类名选择器——container:.container

    • margin: 0 auto; 将设置元素的上、右、下、左四个方向的外边距都为0,同时水平居中元素。这样的效果通常用于将一个块级元素在其父元素中水平居中显示。

    • 边框样式!
      在这里插入图片描述

    • 加个padding,和border有点距离
      在这里插入图片描述

      .container {max-width: 600px;margin: 0 auto;border: 1px solid #ccc;padding: 20px;
      }
      
  • id选择器——profile:#profile

    #profile{margin-bottom: 20px;
    }
    
  • 改头像,圆形样式实现

    • border-radius: 50%;—— 设置元素的圆角为50%

    • object-fit 属性指定元素的内容应该如何去适应指定容器的高度与宽度。

      • fill:默认值,不保证保持原有的比例,内容全部显示铺满容器。
      • contain:保持原有尺寸比例,使图片的宽度完整的显示,高度自动缩放。
      • cover:保持原有尺寸比例。高度铺满容器,宽度等比缩放,超出部分被剪掉。
      • none:图片原有宽高不变,超出部分被剪掉,保留下来的内容在图片的正中央。
      • scale-down:保持原有比例。当图片实际宽高小于所设置的图片宽高时,显示效果与none一致;否则,显示效果与contain一致。
      #avatar {width: 150px;height: 150px;border-radius: 50%;object-fit: cover;
      }
      
  • 按钮样式设置

    #editBtn {background-color: #4CAF50;color: white;padding: 10px 20px;margin: 4px 2px;font-size: 16px;
    }
    

🐇js交互实现

  • DOM选择

在这里插入图片描述

🌮编辑按钮实现

  • 在点击 editBtn按钮时,这段代码会弹出三个输入框,分别用于输入新的姓名、年龄和地点。之后,通过 textContent属性将这些新的值分别赋给相应的元素(nameFieldageFieldlocationField),从而更新页面上对应的文字。

  • 核心:document.getElementById

  • 定位name,age,location,editBtn,Alt + Shift + ↓

    var nameField = document.getElementById("name");
    var ageField = document.getElementById("age");
    var locationField = document.getElementById("location");
    var editBtn = document.getElementById("editBtn");
    
  • 添加click监听器

    • element.addEventListener(event, function, useCapture);
      • element:表示要添加事件监听器的DOM元素。
      • event:表示要监听的事件类型,如"click"、"mouseover"等。
      • function:表示事件触发时要执行的回调函数。
      • useCapture(可选):一个布尔值,表示是否使用捕获阶段来处理事件,默认为false,即在冒泡阶段处理事件。
    • prompt(message, defaultText);
      • message:要显示给用户的字符串,作为提示信息。
      • defaultText(可选):一个可选参数,表示在输入框中显示的默认文本。
    • 数字判断
      在这里插入图片描述
    editBtn.addEventListener('click', function() {var newName = prompt("请输入新的姓名:",nameField.textContent);while (newName === "" || !isNaN(newName)) {newName = prompt("姓名不能为空且不能是数字,请重新输入:");}var newAge = prompt("请输入新的年龄:", ageField.textContent);while (isNaN(newAge) || newAge <= 0 || !Number.isInteger(Number(newAge))) {newAge = prompt("年龄必须是有效的正整数,请重新输入:");}var newLocation = prompt("请输入新的地点:",locationField.textContent);while (newLocation === "" || !isNaN(newLocation)) {newLocation = prompt("地点不能为空且不能是数字,请重新输入:");}nameField.textContent = newName;ageField.textContent = newAge;locationField.textContent = newLocation;
    });
    

🌮我还想要换头像

  • <input type="file" id="avatarInput" style="display: none;">

    • <input> 是HTML中用于创建用户输入字段的标签。
    • type="file" 定义了输入字段的类型为文件选择框,即可以通过该输入框选择上传文件。
    • id="avatarInput" 属性为该元素指定了一个唯一的标识符id,以便在JavaScript中引用该元素。
    • style="display: none;" 定义了该元素的显示样式为不显示(隐藏),通过将 display 属性设置为 none,使得该元素在页面上不可见。
    • 关于隐藏
  • js实现

    var avatarInput = document.getElementById("avatarInput");
    var avatar = document.getElementById("avatar");// 为预览图像添加点击事件监听器
    avatar.addEventListener('click', function() {// 触发选择文件输入框的点击事件avatarInput.click();
    });// 当用户在输入框中选择文件时(文件发生变动),这个监听器将被触发执行。
    avatarInput.addEventListener('change', function(event) {//获取触发事件的目标元素(即用户选择文件的输入框)赋值var input = event.target;//创建一个新的 ​FileReader​对象,用于读取文件内容var reader = new FileReader();// 以Data URL的形式异步读取被选择文件的内容reader.readAsDataURL(input.files[0]);// 当文件读取完成时,执行以下的回调函数reader.onload = function(){var dataURL = reader.result;// 将预览图像的src属性设置为读取到的数据URL,从而显示预览图像avatar.src = dataURL; };
    });
    
    • avatar元素添加了一个点击事件监听器。当用户点击预览图像时,该监听器会触发,并在其中执行回调函数。

    • 回调函数中执行了avatarInput.click(),即模拟点击选择文件输入框的操作。这样就会出现文件选择对话框供用户选择上传的文件。

    • 接着,为avatarInput元素添加了一个"change"事件监听器,用于监听用户在选择文件输入框中选择文件后的变动事件。

      • 当用户选择了一个文件后,该监听器触发,并在其中执行回调函数。
        • 回调函数首先通过event.target获取到触发事件的DOM元素,也就是选择文件输入框本身。
        • 然后,创建了一个FileReader对象用于读取文件。
        • 接下来,将设置onload事件处理程序,当文件读取完成时,执行其中的回调函数。
          • 在回调函数中,首先将读取到的文件内容转换为Data URL的形式,保存在变量dataURL中。
          • 然后,将预览图像元素avatarsrc属性设置为该Data URL,以便显示预览图像。
          • 最后,使用reader.readAsDataURL(input.files[0])异步地读取用户选择的文件,并开始读取文件内容。

🚩加点悬浮框交互

  • <div class="tooltip">点击更换头像</div>

  • 设置样式

    .tooltip {width: 100px;background-color: #5555559c;color: #fff;border-radius: 6px;margin: 0 auto;padding: 2px;font-size: 0.8em;/* 先隐藏 *//* display:none;*/visibility: hidden;
    }
    
  • 大小设置

    • px(像素): px是最常见的单位,特指像素点。

    • em: em单位是相对单位,它基于父元素的字体大小。如果父元素的字体大小为16px,那么1em等于16px。

    • rem: rem也是相对单位,但它的值相对于根元素(html标签)的字体大小。例如,如果根元素的字体大小为16px,1rem将等于16px。

    • %(百分比): 百分比单位用于相对于父元素的值进行计算。例如,如果一个元素的宽度设置为50%,则该元素的宽度将是其父元素宽度的一半。

    • vw和vh: vw和vh是相对于视口宽度(viewport width)和视口高度(viewport height)的单位。1vw等于视口宽度的1%,1vh等于视口高度的1%。这些单位可以用于创建响应式设计,比如设置元素的宽度和高度,以适应不同尺寸的设备屏幕。

  • 触发:当鼠标悬停在具有"id"为"avatar"的元素上时,紧接着的"class"为"tooltip"的元素将会被选中并应用特定的样式。

       #avatar:hover + .tooltip { /* display: block; */visibility: visible;
    }
    

🚩框架梳理

以下是一种普遍使用的结构:

your-project/|-- src/|   |-- assets/|   |   |-- images/|   |   |-- styles/|   |   |-- fonts/|   ||   |-- components/|   |   |-- Header/|   |   |-- Footer/|   |   |-- Sidebar/|   |   |-- ...|   ||   |-- pages/|   |   |-- Home/|   |   |-- About/|   |   |-- Contact/|   |   |-- ...|   ||   |-- services/|   |   |-- api.js|   |   |-- ...|   ||   |-- utils/|   |   |-- helper.js|   |   |-- ...||-- public/|   |-- index.html|   |-- favicon.ico||-- .gitignore|-- package.json|-- README.md

在这个文件框架中,主要有三个顶级目录:srcpublic和一些配置文件。

  • src目录是存放源代码的目录,包含了应用程序的各种资源。

    • assets目录用于存放静态资源,例如图片、样式文件和字体文件。
    • components目录用于组织可复用的组件,每个组件都在一个单独的文件夹内,并包含其相关的CSS和其他必需的文件。
    • pages目录用于存放应用的页面组件,每个页面也在一个单独的文件夹内,并包含其相关的CSS和其他必需的文件。
    • services目录用于存放与后端API通信的服务文件,如API调用方法等。
    • utils目录用于存放一些实用工具函数和配置文件。
  • public目录中存放的是公共的静态文件,如HTML模板和favicon图标,在构建过程中这些文件会被直接复制到生成的目标目录。

此外,还有一些配置文件和常见的前端开发文件:

  • .gitignore文件用于定义需要忽略的文件或目录,以防止将其添加到版本控制中。
  • package.json文件是npm的配置文件,用于管理依赖项和脚本命令。
  • README.md文件用于提供项目的描述和文档。

只使用HTML、CSS、JS和图片,以下是一种简单的文件框架规范:

your-project/|-- index.html|-- assets/|   |-- css/|   |   |-- style.css|   ||   |-- js/|   |   |-- main.js|   ||   |-- images/|       |-- image1.jpg|       |-- image2.png||-- README.md

在这个文件框架中,所有的HTML、CSS和JS文件都放在顶级目录下。assets文件夹用来存放项目使用的资源文件,如样式文件、JS文件和图片。可以自行根据需要添加其他的资源文件夹。

  • css文件夹存放所有的CSS文件,可以将各个页面或组件的样式分别放在不同的文件中,然后在HTML文件中引入需要的CSS文件。
  • js文件夹存放所有的JS文件,同样,根据需要可以将不同的功能代码分别放在不同的文件中,然后在HTML文件中引入需要的JS文件。
  • images文件夹存放项目所需的图片文件。

  • 路径修改(图片)
  • 链接引入
    • <link rel="stylesheet" href="./assects/css/style.css">
    • <script src="./assects/js/main.js"></script>

📚资源分享

  • 尚硅谷2023最新Web前端学习路线

  • 博客:分享我自学前端的一些学习网站(基本全),个人常用:

    • Web前端导航
    • W3school
    • CodePen
  • canvas大全

  • 设计师资源大全

  • jQuery之家

这篇关于OpenShare | 前端三件套初识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/447369

相关文章

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv