十道CSS+HTML高频企业级面试题

article/2025/11/4 8:42:24

有句古话说得好,面试造火箭,工作拧螺丝。经历过职场的小伙伴都清楚,对于一般的工作需求,用不到太过高深的技术,但是,往往面试过程中,会进行所谓深层次的技术交流,所以,跳槽,回顾面试题,这大概是每位小伙伴都要做的事情,下面,小编在这里给大家总结一些常见的企业级面试题,如有bug,请赐教。

1、如何实现0.5px边框线

这是考察小伙伴对css的掌握深度,心细的小伙伴去试一下就会发现,我们设置0.5像素边框由于兼容性问题不会生效,跟设置1px没有区别,这也是出现频率比较高的一题,话不多说直接提供两个兼容性比较高的方式。

1、使用2D转换中的缩放:transform: scale(0.5);

注:即使使用缩放,也不能直接操作原来的盒子,要重新去定义一个盒子,给新盒子设置边框缩放

举例:


原来的盒子:.old{width:200px;height:200px;}新盒子:.new{width:400px;height:400px;border:1px solid;transform: scale(0.5);position: absolute;top: 0;left: 0;}优化:使用伪元素选择器代替实体标签.old::before{width:400px;height:400px;border:1px solid;transform: scale(0.5);position: absolute;top: 0;left: 0;}

2、通过css3渐变属性

举例:

.box{width: 200px;height: 1px;background: linear-gradient(#000 50%, transparent 50%);}

当然小伙伴们也可以根据自己的想法去调整代码结构,灵活变通。

2、opacity:0; visibility:hidden; display:none;有什么区别

解析:1、opacity: 0; 让元素透明,顾名思义,只是透明,我们看不见,但是元素还在原来的位置,通过检查可以调试出元素的位置。2、visibility:hidden; 让元素不可见,不过还是占据网页空间滴,考察的点就在于,虽然占据空间,但是我们不能通过检查给调试出元素的位置,那也就实现不了事件绑定操作。3、display:noen; 直接让元素在页面中消失,不占据空间,检查也获取不到。

3、标准盒模型和怪异盒模型(ie盒模型)有什么区别

问题很简单,但是很多同学都会答非所问,要注意了。
首先,要了解盒模型组成:无论是标准还是怪异组成上都是一样的由:margin + border + padding + content组成所以不可能问组成方式,主要是width上的区别
1、标准盒模型的 width = content
2、怪异盒模型的 width = border + padding + content
最后还要知道怎么重新设置盒模型的尺寸:通过:box-sizing:border-box;
 

4、transform会改变固定定位的显示效果

这个问题,出现的频率并不高,但可以作为一个情景题扩充一下知识面。
问题说明:transform会让固定定位变成绝对定位,也会形成独立的包含块。例:我们么平时给元素设置固定定位,该元素并不会跟随滚动条滚动。1、如:<div class="box"><div class="son"></div></div>.box{width: 500px;height: 500px;border: 1px solid;background-color: red;transform:scale(1)}.son{width: 200px;height: 200px;background-color: orange;position: fixed;top: 0;left: 0;}此时:son元素就不再是固定定位,而是绝对定位。2、如:<div class="box"><div class="one"><div class="son"></div></div></div>.box{width: 500px;height: 500px;border: 1px solid;background-color: red;position: relative;margin-left: 300px;}.one{width: 400px;height: 400px;background-color: pink;transform: scale(1);}.son{width: 200px;height: 200px;background-color: orange;position: absolute;top: 0;left: 0;}
此时,son元素的参照物将是one元素,不再是box
 

5、::before 和 :after中双冒号和单冒号有什么区别?

1.首先要掌握,二者都是伪元素选择器,可以简单理解为:before是在被选元素内容的最前面添加一个虚拟的行内元素,类似spanafter是在被选元素内容的最后面添加一个虚拟的行内元素,类似span单冒号还是双冒号,功能上没有什么区别,单冒号是css2推出的规范,双冒号是css3推出的规范
之所以语法更新有一个点是为了区分伪类和伪元素,当然,使用上面还是因人而异。
 

6、px、rpx、em、rem 、vw/vh、百分比的区别?

px:网页运用最频繁的单位之一,属于固定单位。em:相对单位,相对于自己的字体大小,默认情况下,1em = 16px,会有小伙伴对参照物有疑问,因为很多文章上写的都是父元素之类的,要注意,如果元素设置了字体大小,那肯定的自己,如果没设置,父元素设置了,但是最终还是要继承给自己,所有,我们这样说针对自己,是为了让大家理解性记忆。rpx:微信小程序独有的、解决屏幕自适应的尺寸单位rem:相对单位,相对根标签html的字体大小来计算,rem布局的本质是等比缩放,一般是基于宽度,这也是为什么我们书写移动端偏向使用rem布局的原因,可以根据设备屏幕,等比例放大缩小页面。vw/vh:viewpoint width / viewpoint height,vw 相对于视窗的宽度,vh 相对于视窗的高度,1vw等于视
窗宽度的1%,1vh等于视口高度的1%。
 

7、CSS3 transiton过渡不支持CSS3 渐变解决办法

对于之前的开发,我们可以使用图片的方式来代替颜色渐变,但是后期发现,该方法可拓展性差,还影响性能。所以css3引进了线性渐变的方式,书写渐变色。

语法:

background-image: linear-gradient(red,blue);   

新属性,过渡不支持也正常,如果非要实现颜色渐变过渡,也可以借助一下别的手法,看代码。

方式一、通过背景图尺寸实现渐变色<style>.div1{margin: 100px auto 0;width: 300px;height: 300px;background: linear-gradient(to right,red, purple);background-size: 200%;transition: background-size 2s; }.div1:hover {    background-size: 100%;}
</style><body><div class="div1"></div></body>

 注意本质上并不是过渡的渐变,而是过渡的背景图尺寸,我们先把背景图尺寸设置为200%,这样只看到一个颜色,当然可以根据盒子尺寸,继续增加背景图尺寸,最后滑过的时候,让背景图的尺寸变成宽度100%

方式二、使用背景颜色实现紫色到红色的渐变,背景图显示在背景颜色之上,左边的渐变给的透明,滑过自动添加紫色<style>body {background-color: #ccccff;}.div1{width: 300px;height: 300px;background: yellow linear-gradient(to right, rgba(0,0,0,0), rgba(249, 24, 3, 0));transition: all .5s; }.div1:hover {background: yellow linear-gradient(to right, rgba(0,0,0,0), rgba(249, 24, 3, 1));background-color: purple;}
</style><body><div class="div1"></div></body>

  

8、如何给一个输入框添加放大镜作为提示文本

 当然,很多移动端的收入框,都仅仅只是展示效果,点击搜索的时候会自动跳转带搜索页面,但也保不准会有个别情景需要直接在首页上展示的,上操作。

我们这一块的方式就是使用传统的阿里图标字体库。
使用unicode方式引入图标,注意,一定要添加类名 iconfont类名 <input type="text" placeholder="&#xe623; 请输入目的地" class="iconfont">

9、flex:1 1 0和flex:1 1 auto有什么区别?

首先我们要知道flex是三个属性的属性,即:flex-grow,flex-shrink和flex-basis的缩写形式。
默认值是 flex:0 1 auto;
首先要解析第一个:flex:1 1 0,可放大,可缩小,宽度或者高度为0,
其次要解析第二个:flex:1 1 auto,可放大,可缩小,宽度或者高度跟随我们自己设置的宽高,会被内容撑开,凸显自动的含义,

如图一:3后面还有一点空间,给3设置flex:1 1 0; 要注意此时主轴是自左而右的,所以3是没有宽度,但是有内容,所以是会被内容撑开一点空间,此时效果如图二,4会上去,占用空间,3有多少空间,就要看横向父元素还剩下多少空间,现在4的空间是200px全部展示,3的空间是50px,如果给4设置宽度为250px,那么4就不会上到第一行,因为放不下。如图三,剩下的空间都是3的。

回到最初状态

如图一:3后面还有一点空间,给3设置flex:1 1 auto; 要注意此时主轴是自左而右的。效果图直接如图三所示,3的基础宽度是200px,所以剩余空间都是3的。但是要注意拉伸后的空间并不是固定的,内容增加还是会撑开元素。

10、元素水平垂直居中的方式

这基本上是必问的一道题目,这里也给大家总结一下,最起码要掌握其中的三种方式。​​​​​​​

方法一:flex布局 
<style>.one {width: 400px;height: 400px;background-color: pink;display: flex;/* 主轴居中 */justify-content: center;/* 侧轴居中 */align-items: center; }.two {width: 200px;height: 200px;background-color: red;}
</style>
<div class="one"><div class="two"></div>
</div>
方法二、定位 + margin: auto
<style>.one {width: 400px;height: 400px;background-color: pink;position: relative;}.two {width: 200px;height: 200px;background-color: red;position: absolute;left: 0;top: 0;right: 0;bottom: 0;margin: auto;}
</style>
<div class="one"><div class="two"></div>
</div>
方法三、定位 + margin负值
<style>.one {width: 400px;height: 400px;background-color: pink;position: relative;}.two {width: 200px;height: 200px;background-color: red;position: absolute;left: 50%;top: 50%;/* 子元素宽度的一半 */margin-left: -100px; /* 子元素高度的一半 */margin-top: -100px;   }
</style>
<div class="one"><div class="two"></div>
</div>
方法四、定位 + calc()
<style>.one {width: 400px;height: 400px;background-color: pink;position: relative;}.two {width: 200px;height: 200px;background-color: red;position: absolute;left:calc(50% - 100px);top:calc(50% - 100px);}
</style>
<div class="one"><div class="two"></div>
</div>
方法五、定位 + transform负值
<style>.one {width: 400px;height: 400px;background-color: pink;position: relative;}.two {width: 200px;height: 200px;background-color: red;position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);}
</style>
<div class="one"><div class="two"></div>
</div>
方法六:grid布局 
<style>.one {width: 400px;height: 400px;background-color: pink;display: grid;/* 水平居中 */justify-content: center;/* 垂直居中 */align-items: center; }.two {width: 200px;height: 200px;background-color: red;}
</style>
<div class="one"><div class="two"></div>
</div>
方法七:flex + margin:auto
<style>.one {width: 400px;height: 400px;background-color: pink;display: flex;}.two {width: 200px;height: 200px;background-color: red;margin:auto}
</style>
<div class="one"><div class="two"></div>
</div>

以上七中居中方式,足够应付面试,可以针对性记忆。


http://chatgpt.dhexx.cn/article/ddmdM4Fo.shtml

相关文章

详细前端面试题HTML篇

CSS篇 JS篇 Vue篇 TypeScript篇 React篇 微信小程序篇 前端面试题汇总大全&#xff08;含答案超详细&#xff0c;HTML,JS,CSS汇总篇&#xff09;-- 持续更新 前端面试题汇总大全二&#xff08;含答案超详细&#xff0c;Vue&#xff0c;TypeScript&#xff0c;React&…

前端面试题---html/css

文章目录 1. html标签的类型&#xff08;head&#xff0c; body&#xff0c;&#xff01;Doctype&#xff09; 他们的作用是什么2. 在head标签里面的标签的作用分别是啥&#xff1f;3. 在 HTML 中插入 css 样式表的方法4. 比较插入 css 样式的链接方式和导入方式5. html5 新特性…

HTML 常见面试题

一、HTML5&#xff08;超文本标记语言&#xff0c;第五次重大修改&#xff09; 二、HTML5新特性 ①&#xff1a;新的语义标签 header footer nav aside article section ②&#xff1a;新的表单控件 calendar date time email url search ③&#xff1a;音频、视频&#xff08;…

经典HTML前端面试题总结

经典HTML前端面试题总结 1. 1简述一下你对 HTML 语义化的理解&#xff1f;.1.2 标签上 title 与 alt 属性的区别是什么&#xff1f;1.3 iframe的优缺点&#xff1f;1.4 href 与 src&#xff1f;1.5 HTML、XHTML、XML有什么区别1.6 知道img的srcset的作用是什么&#xff1f;1.7 …

html相关面试题

html相关面试题 1.html和css中的图片加载与渲染规则是什么样的&#xff1f;2.title与h1的区别、b与strong的区别、i与em的区别&#xff1f;title 和 h1 的区别b 和 strong 的区别i 和 em 的区别最后 3.script 标签为什么建议放在 body 标签的底部&#xff08;defer、async&…

html面试复习

目录 网页的显示过程 浏览器的渲染引擎 不同浏览器的内核 什么是标记语言&#xff08;markup language &#xff09; 什么是超文本&#xff08; HyperText &#xff09; 完整的html结构 文档声明 html元素 head元素 body元素 html元素 img标签 a标签 锚点链接 i…

HTML 面试题汇总

HTML 面试题汇总 1. 什么是 <!DOCTYPE>&#xff1f;是否需要在 HTML5 中使用&#xff1f; 参考答案&#xff1a; 它是 HTML 的文档声明&#xff0c;通过它告诉浏览器&#xff0c;使用哪一个 HTML 版本标准解析文档。 在浏览器发展的历史中&#xff0c;HTML 出现过很多个…

【2022前端面试】HTML面试题汇总(加紧收藏)

【2022前端面试】HTML面试题汇总&#xff08;加紧收藏&#xff09; 更新时间&#xff1a;2022年2月23日。 本文致力于建设前端面试题库&#xff0c;欢迎兄弟们投稿哈&#xff01; 引言 没办法&#xff0c;逃不过。看了很多面经和总结&#xff0c;时过一年&#xff0c;再次更新…

前端html+css+js面试题

HTML&CSS&#xff1a;对Web标准的理解&#xff08;结构、表现、行为&#xff09;、浏览器内核、渲染原理、依赖管理、兼容性、CSS语法、层次关系&#xff0c;常用属性、布局、选择器、权重、盒模型、Hack、CSS预处理器、CSS3、Flexbox、CSS Modules、Document flow、BFC、H…

10个最常见的HTML5面试题

本文为大家分享了最常见的10个HTML5面试题,希望大家喜欢。 问题1、新的 HTML5 文档类型和字符集是? 答:HTML5 文档类型很简单: HTML5 使用 UTF-8 编码。 问题2、HTML5 中如何嵌入音频? 答:HTML5 支持 MP3、Wav 和 Ogg 格式的音频,下面是在网页中嵌入音频。 问题3、H…

前端面试题 —— HTML

目录 一、src 和 href 的区别 二、对 HTML 语义化的理解 三、DOCTYPE(⽂档类型) 的作⽤ 四、script 标签中 defer 和 async 的区别 五、常⽤的 meta 标签有哪些&#xff1f; 六、HTML5 有哪些更新 八、行内元素有哪些&#xff1f;块级元素有哪些&#xff1f; 空(void)元素…

前端十五道html面试题

目录 01.说一下对语义化的理解&#xff1f;✅ 02.说一下iframe有哪些优点和缺点&#xff1f;✅ 03.DOCTYPE的作用&#xff1f;严格模式和混杂模式的区别&#xff1f; 04.说一下渐进增强和优雅降级的区别&#xff1f; 05. <!DOCTYPE html> 标签是否为 HTML 标签&#…

【前端面试题】01—42道常见的HTML5面试题(附答案)

HTML5为我们提供了更多的语义化标签、更丰富的元素属性&#xff0c;以及更让人欣喜的功能。但在面试中&#xff0c;HTML5部分的面试题主要考察应试者对HTML5API的掌握情况&#xff0c;这是HTML5的重点&#xff0c;也正是这些API推动了前端的发展。 这些新技术早已应用在很多大型…

28道HTML基础面试题及答案汇总

1、内元素和块级元素的区别&#xff1f; 行内元素&#xff1a;不会独立出现在一行&#xff0c;单独使用的时候后面不会有换行符的元素。eg&#xff1a;span, strong, img, a 等。这些元素&#xff0c;默认的高宽&#xff0c;总是其内容的高宽。并且&#xff0c;margin和padding…

HTML+CSS基础面试题总结

1. display:none; 和visibility:hidden;的区别 display:none; 彻底消失&#xff0c;释放空间。可能引发页面的reflow回流&#xff08;重排&#xff09;。 visibility:hidden; 就是隐藏&#xff0c;但是位置没释放&#xff0c;好比opacity:0; 不引发页面回流。 2.CSS 选择器权…

HTML面试题整理

HTML面试题整理 01.说一下对语义化的理解&#xff1f;✅ 对开发者友好&#xff0c;让人更容易读懂&#xff0c;利于代码可读性对机器友好&#xff0c;让搜索引擎更容易读懂&#xff0c;利于seo 02.说一下HTML5有哪些更新/新增&#xff1f;✅ 新增语义化标签&#xff0c;音频…

安全-反射性xss基础注入

目录 题目 代码分析 注入过程及思路 1、第一次注入 2、第二次注入 3、第三次注入 4、第四次注入 题目 <?php header(X-XSS-Protection: 0); $xss isset($_GET[xss])? $_GET[xss] : ; $xss str_replace(array("(",")","&",&qu…

网络安全-靶机dvwa之XSS注入Low到High详解(含代码分析)

目录 XSS(DOM)-LOW 普通注入 代码分析 后端 前端 XSS(DOM)-MIDIUM 普通注入 大小写绕过 Html标签绕过 闭合标签 代码分析 XSS(DOM)-HIGH 闭合HTML标签绕过 代码分析 主要步骤 漏洞原因 XSS(Reflected)-LOW 普通注入 代码分析 主要步骤 漏洞原因 XSS(Refle…

关于HTML 代码注入,XSS攻击问题解决

大部分的网站一般都有评论功能或留言功能&#xff0c;或类似可以让用户写东西的地方。 如果后台不经过处理&#xff0c;又把数据返回前端&#xff0c;这就会出问题了。网页解析器会把用户的信息也当成html代码给解析了。 如果用户写的是一些恶意的 js 脚本这是很危险的。专业…

实验三:XSS和SQL注入

实验三&#xff1a;XSS和SQL注入 实验目的&#xff1a; 实验目的&#xff1a;了解什么是XSS&#xff1b;了解XSS攻击实施&#xff0c;理解防御XSS攻击的方法&#xff1b;了解SQL注入的基本原理&#xff1b;掌握PHP脚本访问MySQL数据库的基本方法&#xff1b;掌握程序设计中避…