【学习笔记】前端HTML+CSS部分必懂基础内容(面试考察重点)

news2025/7/4 23:02:10

一、HTML

1. 什么是语义化?为什么要语义化?语义化标签有哪些

语义化:根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析。

语义化的意义:

  1. 代码裸奔时,结构清晰、好看
  2. 提升用户体验(title、alt、label)
  3. 有利于SEO搜索优化(爬虫依赖标签确定上下文、关键字权重)
  4. 方便其他设备解析(阅读器、移动设备...)
  5. 便于团队开发维护(提高可读性、减少差异化)

语义化注意点:

  1. 减少无意义标签(div、span)
  2. 在语义不明显时,div和p间尽量用p, p在默认情况下有上下间距,对兼容特殊终端有利;
  3. 不要使用纯样式标签(b、font、u…)
  4. 需要强调的文本,可以包含在strong或者em标签中(浏览器预设样式,能用CSS指定就不用他)
  5. 使用表格时,标题要用caption,表头用thead,主体部分用tbody包围,尾部用tfoot包围。表头和一般单元格要区分开,表头用th,单元格用td;
  6. 表单域要用fieldset标签包起来,并用legend标签说明表单的用途
  7. 每个input标签对应的说明文本都需要使用label标签,并且通过为input设置id属性,在lable标签中设置for=someld来让说明文本和相对应的input关联起来。

HTML5新增了哪些语义标签:article nav aside section header footer hgroup address...

2. 默认情况下,哪些标签是块级元素?哪些是内联元素

块级元素:

  • 特点:独占一行,宽高可变(宽度默认100%)
  • display:block/table(div h1 h2 table ul ol p)

内联元素:

  • 特点:并列顺序展示,宽高不可变(内容宽高)
  • display:inline/inline-block(span imp input button)

二、CSS

1. 什么是盒模型?盒模型的分类有哪些?盒模型宽度计算?盒模型切换?块级盒子(block box)和内联盒子(inline box)

盒模型:CSS 基础框盒模型是 CSS 规范的一个模块,它定义了一种长方形的盒子, 包括它们margin、border、padding、content,并根据视觉格式化模型来生成元素,对其进行布置、编排、布局(lay out)。

盒模型分类:

  • 标准盒模型(standard-box):width = width;height = height
  • 替代(IE)盒模型(ie-box):width = width + padding + border;height = height + padding + border

切换:

  • 标准盒模型(standard-box):box-sizing: content-box
  • 替代(IE)盒模型(ie-box):box-sizing: border-box

2. 什么是BFC?如何创建BFC?BFC解决了什么问题

BFC:块格式化上下文(Block FormattingContext,BFC)BFC是一个完全独立的空间, 这个空间里子元素的渲染不会影响到外面的布局

创建BFC:

  • overflow不是visible
  • display: flex 或 inline-block
  • position 是 absolute 或 fixed
  • float不是none

BFC解决了什么问题:

  • 垂直方向margin塌陷(相邻元素的margin-top和margin-bottom会发生重叠)
  • 用Float脱离文档流,父元素高度塌陷问题(清除浮动)

3. 手写圣杯布局和双飞翼布局

圣杯布局和双飞翼布局的目的:

  • 三栏布局,中间一栏最先加载和渲染(内容最重要)
  • 两侧内容固定,中间内容随着宽度自适应
  • 一般用于pc网页

技术总结:

  • 使用float布局
  • 两侧使用margin负值,以遍和中间内容横向重叠
  • 防止中间内容被两侧覆盖,圣杯布局用padding,双飞翼布局用margin为左右留白

margin负值:

  • margin-top和margin-left负值,元素会分别向上和向左移动
  • margin-right负值,元素自身不会移动,右侧元素左移
  • margin-bottom负值,元素自身不受影响,下方元素上移

圣杯布局:

<!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> 
  <style>
    body {
      min-width: 550px;
    }
    #header {
      text-align: center;
      background-color: #f1f1f1;
    }
    #container {
      padding-left: 200px;
      padding-right: 150px;
    }
    #container .column {
      float: left;
    }
    #center {
      background-color: #ccc;
      width: 100%;
    }
    #left {
      position: relative;
      right: 200px;
      background-color: yellow;
      width: 200px;
      margin-left: -100%;
    }
    #right {
      background-color: red;
      width: 150px;
      margin-right: -150px;
    }
    #footer {
      clear: both;
      text-align: center;
      background-color: #f1f1f1;
    }
  </style> 
 </head> 
 <body> 
  <div id="header">
   this is header
  </div> 
  <div id="container"> 
   <div id="center" class="column">
    this is center
   </div> 
   <div id="left" class="column">
    this is left
   </div> 
   <div id="right" class="column">
    this is right
   </div> 
  </div> 
  <div id="footer">
   this is footer
  </div>  
 </body>
</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> 
  <style>
    body {
      min-width: 550px;
    }
    .col {
      float: left;
    }
    #main {
      width: 100%;
      height: 200px;
      background-color: #ccc;
    }
    #main-wrap {
      margin: 0 190px 0 190px;
    }
    #left {
      width: 190px;
      height: 200px;
      margin-left: -100%;
      background-color: #0000FF;
    }
    #right {
      width: 190px;
      height: 200px;
      background-color: #ff0000;
      margin-left: -190px;
    }
  </style> 
 </head> 
 <body> 
  <div id="main" class="col"> 
   <div id="main-wrap">
     this is main 
   </div> 
  </div> 
  <div id="left" class="col">
    this is left 
  </div> 
  <div id="right" class="col">
    this is right 
  </div>  
 </body>
</html>

4. 清除浮动

为什么要清除浮动:浮动会导致父盒子塌陷

清除浮动的方法:

    1. 父元素固定宽高

        - 优点:简单,代码少,5无兼容问题

        - 缺点:内部元素高度不确定的情况下无法使用

    2. 添加新元素

        - 优点:简单,代码少,5无兼容问题

        - 缺点:要添加无语义的html元素,代码不够优雅,不便于后期的维护

    3. 使用伪元素

        - 优点:仅用css实现,不容易出现怪问题

        - 缺点:仅支持IE8以上和非IE浏览器

    4. 触发父元素BFC

        - 优点:仅用css实现,代码少,浏览器支持好

        - 缺点:用overflow:hidden触发,可能会使内部本应正常显示的元素被裁剪

/*伪元素是行内元素 正常浏览器清除浮动方法*/
.clearfix:after{
    content: "";
    display: block;
    height: 0;
    clear:both;
    visibility: hidden;
}
.clearfix{
    *zoom: 1;/*ie6清除浮动的方式 *号只有IE6-IE7执行,其他浏览器不执行*/
}



/* 使用before和after双伪元素清除浮动 */
.father{
    *zoom: 1;
}
.clearfix:after,.clearfix:before{
    content: "";
    display: block;
    clear: both;
}

5. 实现一个三点骰子

考察点:flex布局

常用语法:

  • lex-direction
  • justify-content 主轴对其方式
  • align-items 交叉轴对其方式
  • flex-wrap
  • align-self 子元素在交叉轴的对其方式
<!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> 
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    .container {
      width: 100%;
      height: 100vh;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .box {
      width: 100px;
      height: 100px;
      padding: 10px;
      border: 5px solid #000;
      display: flex;
      justify-content: space-between;
      border-radius: 7px;
    }
    i {
      display: block;
      width: 30px;
      height: 30px;
      border-radius: 50%;
      background-color: #000;
    }
    i:nth-child(2) {
      align-self: center;
    }
    i:nth-child(3) {
      align-self: flex-end;
    }
  </style> 
 </head> 
 <body> 
  <div class="container"> 
   <div class="box"> 
    <i></i> 
    <i></i> 
    <i></i> 
   </div> 
  </div>  
 </body>
</html>

6. css定位相关问题

position有哪些属性:

  • position: static
    • 默认值,没有定位,元素出现在正常的流中
  • position: relative
    • 相对定位,未脱离文档流,元素仍然占据原来的空间
  • position: absolute
    • 绝对定位,脱离文档流,元素的位置相对于最近的已定位父元素。如果元素没有已定位的父元素,那么它的位置相对于浏览器窗口
  • position: fixed
    • 固定定位,脱离文档流,元素的位置相对于浏览器窗口是固定位置,即使窗口是滚动的它也不会移动。
  • position: sticky
    • 粘性定位,元素先按照普通文档流定位,然后相对于该元素在流中的 flow root(BFC)和 containing block(最近的块级祖先元素)定位。而后,元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。

position的absolute和relative分别依据什么定位:

  • relative依据自身定位,对外界元素毫无影响
  • absolute依据最近一层的定位元素定位(absolute,relative,fixed,没有就是body)

7. 居中对齐有哪些实现方式

水平居中

  • inline元素:text-align: center
  • block元素:margin: auto
  • absolute:position: absolute + left: 50% + margin-left负值 / transform: translateX(-50%);

水平垂直居中

  • inline元素:line-height 的值等于 height 值
  • absolute:position: absolute + top: 50% + margin-top负值 / transform: translate(-50%, -50%);
  • absolute:top,left,right,bottom = 0 + margin:auto

8. css图文样式

line-height如何继承

  • 具体数值,直接继承
  • 比例,直接继承
  • 百分比,继承计算出来的值(父元素font-size*百分比)

9. 响应式

CSS中的单位

  • px,绝对长度单位,最常用
  • %,相对单位,相对于父元素
  • em,相对长度单位,相对于父元素,不常用
  • rem ,相对长度单位,相对于根元素,常用于响应式布局
  • vw:屏幕宽度的1%
  • vh:屏幕高度的1%
  • vmin:vw,vh对比取两者的最小值
  • vmax:vw,vh对比取两者的最大值

响应式用法:使用@media配合rem适应不同宽度屏幕

10. 元素隐藏

隐藏属性

  • display: none:不保留空间,直接删除dom节点,会改变页面布局。
  • opacity: 0,单纯样式隐藏,不会改变页面布局,并且,如果该元素已经绑定 一些事件,如click 事件,那么点击该区域,也能触发点击事件的
  • visibility:hidden:保留空间,不改变页面布局,但不触发事件(重绘)

11. css选择器

css选择器:css选择器是css规则的一部分,css规则由选择器和一条或多条声明组成。用来对选定的页面元素进行样式修改。

css选择器有哪些:

  • 标签选择器
  • 通配选择器
  • 类选择器
  • ID 选择器
  • 标签属性选择器
  • 伪类选择器
  • 伪元素选择器
  • 后代选择器
  • 子代选择器
  • 相邻兄弟选择器
  • 通用兄弟选择器 A~B 选择 A 元素之后所有同层级 B 元素

选择器优先级:!important> 行内样式 > ID 选择器 > 类、伪类、属性选择器> 标签、伪元素选择器> 通配符、子类选择器、兄弟选择器

12. CSS继承

可继承属性:

  • 字体:font、font-family、font-size、font-style、font-variant、font-weight
  • 字母间距:letter-spacing
  • 文字展示:line-height、text-align、text-indent、text-transform
  • 可见性:visibility
  • 字间距:word-spacing

13. CSS性能

css 提升页面性能的方法:

  • 属性设置使用简写:减少生产包体积
  • 用css替换图片:减少http请求节约带宽    
  • 删除不必要的0和单位:减少生产包体积
  • 用css精灵图代替单个文件加载啊:减少http请求节约带宽
  •  动画尽量少改变基础属性,用transform,开启3D加速

14.  CSS画三角

<div class="triangle"></div>

.triangle {
    height: 0;
    border: 5px solid transparent;
    border-left: 5px solid red ;
}

15. css动画

transition过渡动画

  • 语法:transition: property duration timing-function delay; 默认值:transition: all 0 ease 0;
    • transition-property: 规定设置过渡效果的 css 属性名称
    • transition-duration: 规定完成过渡效果需要多少秒或毫秒
    • transition-timing-function:指定过渡函数, 规定速度效果的速度曲线
    • transition-delay: 指定开始出现的延迟时间
  • 有多个css属性的过渡效果transition: background 0.8s ease-in 0.3s, color 0.6s ease-out 0.3s;

transform 转变动画

  • 可以利用 transform 功能来实现文字或图像的 旋转、缩放、倾斜、移动 这四种类型的变形处理
    • 旋转 rotate
      • 2D 旋转: transform: rotate(45deg); // 顺时针旋转45度
      • 3D 旋转: transform: rotate(x,y,z,angle);
    • 缩放 scale
      • 2D缩放:transform: scale(0.5); transform: scale(0.5, 2) ;第一个参数指定水平方向的缩放倍率,第二个参数指定垂直方向的缩放倍率
      • 3D缩放:transform: scale3d(x, y, z);transform: scaleX(x);transform: scaleY(y);transform: scaleZ(z);参数为收缩比例
    • 倾斜 skew
      • transform: skew(30deg) ;transform: skew(30deg, 30deg);第一个参数表示水平方向的倾斜角度,第二个参数表示垂直方向的倾斜角度 。
      • skew 的默认原点 transform-origin 是这个物件的中心点
    • 移动 translate
      • 2D移动:transform: translate(45px, 150px); //沿着X轴和Y轴同时移动
      • 3D移动:transform: translate3d(x,y,z); //在x,y,z轴上都移动
        • transform: translateX(100px); //仅仅是在X轴上移动
        • transform: translateY(100px); //仅仅是在Y轴上移动
        • transform: translateZ(100px); //仅仅是在Z轴上移动(注意:translateZ一般都是用px单位)
      • 基准点 transform-origin
        • 在使用 transform 方法进行文字或图像的变形时,是以元素的中心点为基准点进行的 。
        • 用法: transform-origin: 10px 10px;
          • 第一个参数表示相对左上角原点水平方向的距离,第二个参数表示相对左上角原点垂直方向的距离;
          • 两个参数除了可以设置为具体的像素值,其中第一个参数可以指定为 left、center、right,第二个参数可以指定为 top、center、bottom。
      • 多方法组合变形
        • transform: rotate(45deg) scale(0.5) skew(30deg, 30deg) translate(100px, 100px);

animation 关键帧动画 

  • @keyframes 规则用于创建动画
  • 语法
    • animation: name duration timing-function delay iteration-count direction;
      • animation-name 规定需要绑定到选择器的 keyframe 名称
      • animation-duration 规定动画完成一个周期所花费的秒或毫秒。默认是 0。
      • animation-timing-function 规定动画的速度曲线。 默认是 “ease”。
      • animation-delay 规定动画何时开始 。 默认是 0。
      • animation-iteration-count 规定动画被播放的次数 。 默认是 1。
      • animation-direction 规定动画是否在下一周期逆向地播放 。 默认是 “normal”; alternate (轮流)。

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

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

相关文章

试卷的安全方案

摘 要 随着互联网的飞速发展,传统的人工试卷保密措施已渐渐形成智能互联网加密保护。巨大的变革大大减少工作量&#xff0c;提升试卷质量&#xff0c;但随之而来的试卷拟定到发放以及回收的安全问题日益凸显。为了保护智能互联网试卷的保密性,认证授权加密已经成为了互联网传输…

MIUI10国际版系统自定义字体设置办法

国际版系统主题商店中没有字体设置。只有主题和壁纸 需要用到第三方主题安装工具mythemer和miui字体打包主题工具mifont maker 首先在网络上下载ttf格式的字体。 打开mifont maker&#xff0c;点击create custom font 点击pick font选择下载的字体 点击create miui font 制…

AlertDialog6种使用方法

AlertDialog 1.AlertDialog的6种创建模式 1.1setMessage 1&#xff09;Java代码 //1.创建构造器AlertDialog.Builder buildernew AlertDialog.Builder(this);//2.设置参数builder.setTitle("弹窗提示").setIcon(R.mipmap.boy).setMessage("选择你的性别&#xf…

刚毕业1年,做Python挣了60W!”网友:吹的不多..

现状揭秘 &#xff1a; Python岗位大厂50K起&#xff1f; 程序员&#xff1a; 心态崩了&#xff01; 屠杀各种榜单&#xff0c;拿下语言排行榜的Python&#xff0c;薪酬真的如同网传开挂了吗&#xff1f; 从上图看&#xff0c;Python薪酬普遍集中在 25-35k &#xff0c;也就是…

构建系列之新一代利器Esbuild(上)

What is Esbuild&#xff1f; Esbuild 是由 Figma 的 CTO 「Evan Wallace」基于 Golang 开发的一款打包工具&#xff0c;相比传统的打包工具&#xff0c;主打性能优势&#xff0c;在构建速度上可以快10~100 倍。 为什么会这么快&#xff1f; go实现&#xff0c;编译为本地代码…

Linux:阿里云服务器购买数据盘并挂载流程

1.进入ECS实例详情&#xff0c;找到‘创建云盘’按钮 2.进入购买界面并配置 3.确认订单等待自动挂载 4.返回实例&#xff0c;就能看到刚刚够买的数据盘 5.查看已挂载数据盘情况 df -lh6.查看所有数据盘包括未挂在的数据盘 fdisk -l 7.对数据盘进行分区。 fdisk /de…

maven中的pom

maven中的pompom的最低要求配置pom的默认行为packaging有哪些关于dependencytypescope关于 Dependency Management构建maven聚合工程&#xff0c;父子工程maven官方文档 !!!pom的最低要求配置 总共5个 project-根元素modelVersion -设置为4.0.0即可groupId-项目分组的idartif…

Polygon zkEVM发布公开测试网2.0

1. 引言 Polygon zkEVM发布公开测试网2.0&#xff0c;相比于10月份发布的公开测试网1.0版本&#xff0c;做了如下改进&#xff1a; 支持递归证明&#xff08;testnet1.0采用的是one batch of transactions对应one proof&#xff09;&#xff1a;从而支持多个provers并行工作&…

【架构师(第五十三篇)】 性能优化之 HTTP 缓存

ETag ETagHTTP 响应头是资源的特定版本的标识符&#xff0c;这可以让缓存更高效&#xff0c;并节省带宽&#xff0c;因为如果内容没有改变&#xff0c;web 服务器不需要发送完整的响应。 第二次请求的时候会添加一个 If-None-Match 请求头&#xff0c;去判断文件是否发生过变化…

[思维模式-11]:《如何系统思考》-7- 认识篇 - 克服片面、局部思维,转向全面思考 =》 UML

目录 第1章 全面思考概述&#xff08;空间&#xff09; 1.1 什么是全面思考&#xff08;整体思考&#xff09; 1.2 全面思考的含义 1.3 程序的局部性原理 第2章 如何做到全面思考 2.1 本位思考 》 全局思考 2.2 大局观&#xff0c;既是一种格局&#xff0c;也是一种能力…

【SpringMVC】下篇,拦截器(一步到位学会它)

✅作者简介&#xff1a;热爱Java后端开发的一名学习者&#xff0c;大家可以跟我一起讨论各种问题喔。 &#x1f34e;个人主页&#xff1a;Hhzzy99 &#x1f34a;个人信条&#xff1a;坚持就是胜利&#xff01; &#x1f49e;当前专栏&#xff1a;【Spring】 &#x1f96d;本文内…

Java项目:springboot私人牙医管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 私人牙医管理系统。该项目分为前后台&#xff0c;共三种角色&#xff1a;管理员、医生、客户&#xff1b; 前台主要功能包括&#xff1a;首页、…

【记录】Tiff图像的前处理,median blur filter 及 linear stretch

文章目录读取Tiffmedian blur filter 中值滤波器替换百分位值值域变成[0,255]从Google Earth Engine上下载的sentinel-1遥感影像(float32)。对于SAR影像在使用前可以做如下前处理&#xff1a;去除SAR噪点替换百分位2%以下及百分位98%以上的点linear stretch 将sentinel-1的值域…

【web3】使用web3.js发布并执行智能合约

前言 昨天我们学习了使用 web3.js 库查询链上区块和交易的用法&#xff0c;今天我们来介绍一下使用 web3.js 与智能合约的交互。在学习本节前&#xff0c;你应该对智能合约有一定的了解。 智能合约的生命周期包括 创建、发布、执行 以及 销毁。 创建&#xff1a;在 Remix 中…

华为云CDN,助力电商平台无惧流量洪峰

对于电子商务平台来说&#xff0c;接连不断的促销活动支撑着电子商务的基本运作&#xff0c;并且频率越来越高。618、双11、双12等越来越多的购物节创造了消费高峰&#xff0c;这就要求企业的网络基础设施能够承受住用户流量的洪峰。 目前&#xff0c;电子商务在网站运营上常常…

JavaWeb学习之MVC、jstl、El表达式06

目录 1.MVC:开发模式 2 mvc三层架构 2.EL表达式 1.使用 2.获取值 1.${域名称.键名} 2 ${键名} 3.隐式对象 3.jstl学习 1.概念 2.作用 3.使用步骤 4,常用的]STL标签 1.MVC:开发模式 1.jsp演变历史 1,早期只有servlet,只能使用response输出标签数据&#xff0c;非常…

艾美捷 24孔细胞划痕试验试剂盒检测原理说明

受伤的组织会引发一系列复杂而结构化的事件&#xff0c;以修复受损的组织区域这些事件可能包括血管生成因子增加血管化增殖和细胞外基质沉积&#xff0c;以及炎症免疫细胞的浸润破坏坏死组织的过程。伤口愈合过程开始于细胞向伤口&#xff0c;开始突出&#xff0c;迁移&#xf…

Html+JavaScript+Css 二手车价格评估系统设计开发

目录 一、系统设计技术及平台介绍 二、系统总体设计图 三、软件模块实现 3.1 登陆注册模块 3.2 主界面 3.3 车辆评估界面 3.4 评估记录界面 3.5 评估结果界面 3.6 个人信息界面 四、数据库实体设计 五、重置成本法简介 六、相关代码 6.1 登陆界面代码 6.2 主界面…

【TypeScript】TS安装与使用

目录 初识TypeScript TypeScript给JS添加类型支持的原因 TypeScript相比JS的优势 TS工具包的安装 TS文件的编译和运行 简化TS的运行步骤 初识TypeScript TypeScript&#xff08;简称&#xff1a;TS&#xff09;是JavaScript的超集&#xff08;JS有的TS都有&#xff09;。…

Python编程 制作一个超级浪漫的新年倒计时(附源代码)

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.新年介绍 二.代码介绍 1.应用的技术 &#xff08;1&#xff09;Pyga…