【手撕面试题】HTML+CSS(高频知识点五)

news2024/11/28 6:33:26

目录

面试官:css 如何实现左侧固定 300px,右侧自适应的布局?

面试官:flex 布局中 align-content 与 align-items 有何区别?

面试官:Grid 布局的优势在哪里?

面试官:Flex 布局中的 flex-basis 与 width 有何区别?

面试官:css 加载会阻塞 DOM 树的解析和渲染吗?

面试官:什么是层叠上下文 (stacking contect),谈谈对它的理解

面试官:z-index: 999 元素一定会置于 z-index: 0 元素之上吗?

面试官:什么是 Data URL?

面试官:网站设置字体时,如何设置优先使用系统默认字体?

面试官:CSS如何实现圣杯布局?


        每天10道题,100天后,搞定所有前端面试的高频知识点,加油!!!,在看文章的同时,希望不要直接看答案,先思考一下自己会不会,如果会,自己的答案是什么?想过之后再与答案比对,是不是会更好一点,当然如果你有比我更好的答案,欢迎评论区留言,一起探讨技术之美。

面试官:css 如何实现左侧固定 300px,右侧自适应的布局?

我:呃~,好的,可以采用flex布局,或者浮动+BFC,整出代码如下:

flex布局

<style>
  *{margin: 0;padding: 0;}
  .container{
    display: flex; 
  }
  .left{
    width: 300px;
    height: 100vh;
    background-color: #f00;
  }
  .main{
    flex: 1;
    background-color: #ae5aca; 
  }
</style>
<body>
  <div class="container">
    <div class="left"></div>
    <div class="main"></div>
  </div>
</body>

浮动+BFC

<style>
  *{margin: 0;padding: 0;}
  .container {
    height: 100vh;
  }
  .left {
    float: left;
    width: 300px;
    height: 100%;
    background-color: #f00;
  }
  .main {
    height: 100%;
    background-color: #ae5aca;
    overflow: hidden;
  }
</style>
<body>
  <div class="container">
    <div class="left"></div>
    <div class="main"></div>
  </div>
</body>

面试官:flex 布局中 align-content 与 align-items 有何区别?

我:呃~,它们都是作用于纵轴的元素,具体区别如下:

align-content:作用于纵轴多行元素,一行元素不起作用。

<style>
  .container {
    background-color: #efefef;
    border: 1px solid #888;
    margin-top: 3rem;
    height: 300px;
    display: flex;
    flex-wrap: wrap;
    /* 纵轴多元素一起居中 */
    align-content: center;
  }
  .item {
    width: 200px;
    height: 100px;
    background-color: #ccc;
    border: 1px solid #aaa;
  }
</style>
<body>
  <div class="container">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
    <div class="item">4</div>
    <div class="item">5</div>
    <div class="item">6</div>
    <div class="item">7</div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
  </div>
</body>

align-items:作用于纵轴单行元素

<style>
  .container {
    background-color: #efefef;
    border: 1px solid #888;
    margin-top: 3rem;
    height: 300px;
    display: flex;
    flex-wrap: wrap;
    /* 纵轴单元素居中 */
    align-items: center;
  }
  .item {
    width: 200px;
    height: 100px;
    background-color: #ccc;
    border: 1px solid #aaa;
  }
</style>
<body>
  <div class="container">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
    <div class="item">4</div>
    <div class="item">5</div>
    <div class="item">6</div>
    <div class="item">7</div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
  </div>
</body>

面试官:Grid 布局的优势在哪里?

我:呃~,Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。 Grid 布局则是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以看作是二维布局。 Grid 布局远比 Flex 布局强大。

面试官:Flex 布局中的 flex-basis 与 width 有何区别?

我:呃~,flex-basis 的值为理想情况,而在实际情况中可能被压缩,当 flex-direction 为 column 时,主轴为纵轴,此时 flex-basis 与 height 对应

面试官:css 加载会阻塞 DOM 树的解析和渲染吗?

我:呃~,css 加载会直接影响网页的渲染,因为只有 css 加载完毕,构建完 CSSOM 后,渲染树(Render Tree)才会构建,然后渲染成位图,如果 html 中有加载 script 的话,还会间接影响 DOM 树的解析,因为 javascript 的下载、解析和执行和阻塞 DOM 树的解析,而 javascript 中有可能访问 CSSOM,比如 Element.getBoundingClientRect,因此 CSSOM 构建完毕以后才会开始 javascript 的执行,间接阻塞 dom 树的解析。

面试官:什么是层叠上下文 (stacking contect),谈谈对它的理解

我:呃~,好的,层叠上下文就是对这些 HTML 元素的一个三维构想。众 HTML 元素基于其元素属性按照优先级顺序占据这个空间。优先级如下:

 想了解更深层叠上下文:推荐文章:深入理解CSS中的层叠上下文和层叠顺序 。

面试官:z-index: 999 元素一定会置于 z-index: 0 元素之上吗?

我:呃~,不会,我们在进行层叠上下文时,会优先比较父级,如果父级是层叠上下文,子级即使有z-index也不再起作用了,如果父级层叠上下文层叠顺序相等,那么采取后来居上原则,前者覆盖后者。如果父级是普通元素,子级层叠比较就不受父级的影响,谁的层叠顺序高谁就先展示。

层叠黄金准则:

谁大谁上:当具有明显的层叠水平标示的时候,如识别的z-indx值,在同一个层叠上下文领域,层叠水平值大的那一个覆盖小的那一个。通俗讲就是官大的压死官小的。

后来居上:当元素的层叠水平一致、层叠顺序相同的时候,在DOM流中处于后面的元素会覆盖前面的元素。

整出代码如下:

<style>
  .first {
    background-color: red;
    height: 3rem;
    z-index: 2;
    opacity: 0.99;
  }
  .item1 {
    z-index: 0;
    height: 100%;
    width: 3rem;
    background-color: orange;
  }

  .second {
    background-color: blue;
    height: 3rem;
    margin-top: -1.5rem;
    z-index: 3;
    position: relative;
  }  
  .item2 {
    z-index: 999;
    height: 100%;
    width: 3rem;
    background-color: green;
  }
</style>
<body>
  <div class="first">
    <div class="item1"></div>
  </div>
  <div class="second">
    <div class="item2"></div>
  </div>
</body>

面试官:什么是 Data URL?

我:呃~,Data URL 是将图片转换为 base64 直接嵌入到了网页中。

使用<img src="data:[MIME type];base64"/>这种方式引用图片,不需要再发请求获取图片。

使用 Data URL 也有一些缺点:

base64 编码后的图片会比原来的体积大三分之一左右。

Data URL 形式的图片不会缓存下来,每次访问页面都要被下载一次。可以将 Data URL 写入到 CSS 文件中随着 CSS 被缓存下来。

面试官:网站设置字体时,如何设置优先使用系统默认字体?

我:呃~,system-ui 将会自动选取系统默认字体作为字体。

面试官:CSS如何实现圣杯布局?

我:呃~,圣杯布局是指两端宽度固定,中间自适应。在日常开发中,圣杯布局的使用频率是比较高的。举一个简单的浮动例子,当然也可以使用定位或flex布局,整出代码如下:

浮动

<!DOCTYPE html>
<html>
    <head>
        <meta charset=utf-8>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
            }
            .container {
                border: 1px solid black;
                overflow: hidden;
                padding: 0px 100px;
                min-width: 100px;
            }
            .left {
                background-color: greenyellow;
                float: left;
                width: 100px;
                margin-left: -100%;
                position: relative;
                left: -100px;
            }
            .center {
                background-color: darkorange;
                float: left;
                width: 100%;
            }
            .right {
                background-color: darkgreen;
                float: left;
                width: 100px;
                margin-left: -100px;
                position: relative;
                left: 100px;
            }
        </style>
    </head>
    <body>
    	<section class="container">
            <article class="center"><br /><br /><br /></article>
            <article class="left"><br /><br /><br /></article>
            <article class="right"><br /><br /><br /></article>
        </section>
    </body>
</html>

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

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

相关文章

【1797. 设计一个验证系统】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 你需要设计一个包含验证码的验证系统。每一次验证中&#xff0c;用户会收到一个新的验证码&#xff0c;这个验证码在 currentTime 时刻之后 timeToLive 秒过期。如果验证码被更新了&#xff0c;那么它…

游戏多开的分析与实现

大部分游戏为了防止工作室通过多开游戏牟利&#xff0c;都会采取各种手段来防止游戏被多次打开。检测窗口标题&#xff0c;创建互斥体&#xff0c;创建内存映射这些都是防止游戏多开的常用手段。 主要内容 游戏运行后&#xff0c;无非执行两步操作 若已经存在&#xff0c;退出…

【问题代码】顺序点的深入理解(汇编剖析+手画图解)

这好像是一个哲学问题。 目录 前言 一、顺序点是什么&#xff1f; 二、发生有关顺序点的问题代码 vs中&#xff1a; gcc中&#xff1a; 三、细读汇编 1.vs汇编如下&#xff08;示例&#xff09;&#xff1a; 2.gcc汇编如下&#xff08;示例&#xff09;&#xff1a; 四…

R语言raster包遍历多个文件夹并批量计算每一个文件夹下全部遥感影像的平均值

本文介绍基于R语言中的raster包&#xff0c;遍历读取多个文件夹下的多张栅格遥感影像&#xff0c;分别批量对每一个文件夹中的多个栅格图像计算平均值&#xff0c;并将所得各个结果栅格分别加以保存的方法。 其中&#xff0c;本文是用R语言来进行操作的&#xff1b;如果希望基于…

每天10个前端小知识 【Day 9】

前端面试基础知识题 1. bind、call、apply 有什么区别&#xff1f;如何实现一个bind? apply、call、bind三者的区别在于&#xff1a; 三者都可以改变函数的this对象指向三者第一个参数都是this要指向的对象&#xff0c;如果如果没有这个参数或参数为undefined或null&#x…

智能硬件的工作原理与发展定位

一、硬件概述 智能硬件是以平台性底层软硬件为基础&#xff0c;以智能传感互联、人机交互、新型显示及大数据处理等新一代信息技术为特征&#xff0c;以新设计、新材料、新工艺硬件为载体的新型智能终端产品及服务。 与传统硬件相比&#xff0c;智能硬件相比传统硬件&#xf…

【LeetCode每日一题】【2023/2/9】1797. 设计一个验证系统

文章目录1797. 设计一个验证系统方法1&#xff1a;哈希表代码总体1797. 设计一个验证系统 LeetCode: 1797. 设计一个验证系统 中等\color{#FFB800}{中等}中等 你需要设计一个包含验证码的验证系统。每一次验证中&#xff0c;用户会收到一个新的验证码&#xff0c;这个验证码在…

java 线程池

线程池概念 线程池可以看做是一个池子&#xff0c;在这个池子中存储了很多线程&#xff0c;线程池也可以说是一个复用线程的技术。 线程池存在的意义 系统创建一个线程的成本是比较高的&#xff0c;因为它涉及到与操作系统交互&#xff0c;当程序中需要创建大量生存期很短暂的线…

ChatGPT edge/chrome浏览器离线安装

最近chatgpt又热了起来&#xff0c;数据显示很多朋友过来下载浏览器插件&#xff0c;由于大家无法直接访问谷歌应用市场&#xff0c;因此提供一个离线安装的方式。 火热程度 对于大多资本与巨头来说&#xff0c;入局ChatGPT赛道&#xff0c;看中的无疑是ChatGPT概念背后的…

【自学Docker】Docker push命令

大纲 Docker push命令 docker push命令教程 docker push 命令用于将本地的 Docker镜像 上传到 Docker镜像仓库。 docker push命令使用之前需要要先登陆到镜像仓库。docker push命令推送镜像的规范是&#xff1a;注册用户名/镜像名。 docker push命令语法 haicoder(www.hai…

矩阵理论复习(十一)

正交投影矩阵的应用 值域与零空间 证明向量二范数 如何由已知范数构造新的范数 椭圆范数 向量范数的分析性质 向量范数的等价性 在无限维线性空间中&#xff0c;两个向量范数可以是不等价的。 等价性的重要意义&#xff1a;处理向量问题时&#xff0c;可以基于一种范…

ASO优化之如何进行榜单优化

ASO优化有&#xff1a;搜索优化&#xff0c;榜单优化&#xff0c;转化率优化。今天我们主要来讲讲苹果应用商店的榜单优化。 榜单优化的核心内容就是提高应用商城的排名&#xff0c;把我们的APP提升到显眼的位置&#xff0c;增加曝光率&#xff0c;提升APP的下载量。 那我们具…

easyx的基本使用(万字解析)

easyx的基本使用一.基本框架1.创建文件2.创建窗体-initgraph,closegraph,getchar二.简单的绘制1.圆形-circle2.坐标系统-setorigin,setaspectratio三.简单图形1.绘制点-putpixel2.简单的直线-line3.矩形-rectangle4.椭圆-ellipse5.圆角矩形-roundrect6.扇形-pie7.圆弧-arc四.多…

目标检测回归损失函数 IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU损失函数分析

目标检测回归损失函数 IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU损失函数分析 一、IOU Loss 2016文章《UnitBox: An Advanced Object Detection Network》中提出了IOU Loss将4个点构成的box看成一个整体做回归。 函数特性 IOU Loss的定义是先求出预测框和真实框…

UML的分类

一、UML2.0的正式图型 UML标准术语&#xff1a;UML标准术语_pingcode的博客-CSDN博客 英文名中文术语目的联系Class Diagram类图类、特征与关系UML1.x中有Component Diagram构件图构件的结构和连接UML1.x中有Composite Structure Diagram组合结构图类的运行时刻分解UML2.0的新…

前端——http的三次握手四次挥手

首先要知道在客户端与服务器端进行一个 http 请求的发送和返回的过程当中&#xff0c;我们需要创建一个 TCP 连接&#xff08;TCP connection&#xff09;&#xff1b;因为 http 只存在请求和响应&#xff0c;不存在连接这个概念的&#xff1b;请求和响应都是数据包&#xff0c…

牛客网 HJ56 完全数计算

前言&#xff1a;内容包括四大模块&#xff1a;题目&#xff0c;代码实现&#xff0c;大致思路&#xff0c;代码解读 题目&#xff1a; 描述 完全数&#xff08;Perfect number&#xff09;&#xff0c;又称完美数或完备数&#xff0c;是一些特殊的自然数。 它所有的真因子…

sed和awk

文章目录1、sed的简单介绍2、sed的使用方法2.1 命令行格式2.2 案例2.3 sed结合正则使用2.4 脚本格式3、awk的简单介绍4、awk的使用方法4.1 命令行模式4.2 脚本模式5、awk内部相关变量5.1 案例6、awk工作原理7、awk进阶使用8、awk脚本编程8.1 案例1、sed的简单介绍 sed是流编辑…

【计算机网络】Linux环境中的网络套接字编程

文章目录前言一、预备知识理解源IP地址和目的IP地址认识端口号认识UDP协议和TCP协议了解网络字节序二、socket 套接字socket 常见APIsockaddr 和 sockaddr_in三、UDP Socket编程封装UdpSocket实现UDP通用服务器实现英译汉服务器实现UDP通用客户端实现英译汉客户端四、地址转换函…

一文详解Yolov5——基于Yolov5的火灾检测系统

✨原创不易&#xff0c;还希望各位大佬支持一下\textcolor{blue}{原创不易&#xff0c;还希望各位大佬支持一下}原创不易&#xff0c;还希望各位大佬支持一下 &#x1f44d; 点赞&#xff0c;你的认可是我创作的动力&#xff01;\textcolor{green}{点赞&#xff0c;你的认可是…