首页 > 其他分享 >前端常见面试题(二)CSS

前端常见面试题(二)CSS

时间:2023-02-17 14:48:20浏览次数:47  
标签:布局 面试题 right 前端 元素 height margin CSS left

1、(布局)盒模型宽度计算

offsetwidth=(内容宽度+内边距+边框),无外边距。

100+10*2+1*2=122px

 

补充:如果让offsetwith=100px该如何做?

添加box-sizing=border-box

 

2、(布局)margin纵向重叠问题

相邻元素的margin-top和margin-bottom会发生重叠。

空白内容的<p></p>也会重叠

答案:15px

line-height:1 ,相当于line-height:100%,会根据该元素本身的字体大小设置行高,比如字体大小是15px,行高就是15px。 line-height:1.5,相当于line-height:150%; line-height:0.5,相当于line-height:50%。

3、(布局)对margin的top、bottom、left、right设置负值有何效果?

margin-top、margin-left负值,元素会向上、向左移动。

margin-right负值,右侧元素左移,自身不受影响。

margin-bottom负值,下方元素上移,自身不受影响。

4、(布局)什么是BFC?如何应用?

block format context(块级格式上下文),是一块独立渲染区域,内部元素的渲染不会影响边界以外的元素。

形成BFC的常见条件:

1>设置float但不是none

2>position是absolute或fixed

3>overflow不是visible

4>display是flex、inline-block等

常见应用:清除浮动

5、(布局)如何理解圣杯布局和双飞翼布局?

目的:

1>三栏布局,中间一栏最先加载和渲染(内容最重要)。

2>两侧内容固定,中间内容随着宽度自适应。

3>一般用于PC网页。

技术总结:

1>使用float布局。而container后的footer会遇到文档流破坏,因为container中的center left right的float:left而紧跟在container右边,因此需要在footer中设置clear:both来清除浮动(或是使用clearfix,在container中设置)。

2>两侧使用margin负值,以便和中间内容横向重叠。center left right,其中left的margin-left:-100%表示向左移动父元素个宽度,因为没有设置box-sizing:border-box,所以是container的with(去掉padding)。而right的margin-right:-150px(right自身宽度)表示其后面元素完全盖住right元素的宽度,right表现出0宽度,因此就贴到了center的右边。

3>防止中间内容被两侧覆盖,一个用padding,一个用margin。

圣杯布局和双飞翼布局的区别:

圣杯布局是containercenter left right),而双飞翼布局是mainmain-wrap left right

center:圣杯布局是直接center,所以是在center设置padding起到留白作用;双飞翼布局时main中嵌套main-wrap,因此在main-wrap设置margin起到留白作用。

left:圣杯布局的left是margin-left:-100%,position:relative,right:190px。而双飞翼布局的left只有margin-left:-100%。因为圣杯布局left的父元素container在设置padding后宽度不是整个屏幕了,margin-left:-100%后需要再向左移到左侧屏幕边缘。而双飞翼布局left的父元素body的宽度是整个屏幕,因此margin-left:-100%后left已经到了屏幕左侧。

right:圣杯布局直接margin-right:-150px,因为其左侧的center有padding,实际内容不在屏幕的最右侧,当right宽度为0时,正好紧挨着前面center的最右侧,最终呈现出的效果就是right再center的右侧。而双飞翼布局设置margin-left:-190px,因为right左侧的main实际内容就在屏幕最右侧,如果按照圣杯布局的写法,会使得right在main的右侧并超出屏幕显示范围,所以需要用margin-left:-190px将right向左移动。

 

6、(布局)手写clearfix

7、(布局)flex实现一个三点的色子

flex常用语法回顾:flex-direction(主轴方向row、column)、justify-content(主轴对齐方式)、align-items(交叉轴对齐方式)、flex-wrap(是否自动换行)、align-self(子元素在父元素交叉轴上的对齐方式)

 

8、(定位)absolute和relative分别依据什么定位?

relative依据自身定位,absolute依据最近一层的定位元素(父元素absolute、relative、fixed或直接找到body)定位。默认static,没有定位,元素出现在正常的流中。

9、(定位)居中对齐有哪些实现方式?

1>水平居中

inline元素(需要居中的元素的父元素中设置):text-align:center

block元素(需要居中的元素中设置):margin:auto

absolute元素(需要居中的元素中设置):left:-50%,margin-left:负值(left的50%是父元素的大小,而margin-left的负值是其自身大小的一半)(因为有margin-left,必须知道元素的尺寸)

2>垂直居中

inline元素(需要居中的元素的父元素中设置):line-height的值等于height的值(line-height是行高,height是整个元素的高度,二者等于父元素的高度)

absolute元素(需要居中的元素中设置)

1)top:50%,margin-top负值(同水平居中的absolute元素)(因为有margin-left,必须知道元素的尺寸)

2) top:50%,left:50%,transform:translate(-50%,-50%)CSS3的新属性,老版本浏览器不支持,慎用)

3)top,botom,left,right=0,margin:auto(是12的中立解决方案,不需要知道元素尺寸,也不需要考虑浏览器兼容问题)

10、(图文样式)line-height如何继承,此时<p>的line-height是多少?

1>写具体数值,如30px,则继承该值,30px。

2>写比例,如2,则继承该比例,16px*2=32px

3>写百分比(坑),如200%,则继承算出来的值,20px*200%=40px

 

11、(响应式)rem是什么?

px:绝对长度单位,最常用

em:相对长度单位,相对于父元素,不常用

rem:相对长度单位,相对于根元素(通过font-size设置),常用于响应式布局

12、(响应式)响应式布局的常见方案,如何通过rem来实现响应式?

media-queryCSS3新属性,可以查询不同屏幕宽度),根据不同屏幕的宽度设置根元素font-size,然后各元素使用rem相对于根元素的长度单位。(例子中的86px、110px是因为以iPhone6/7/8为标准的,86/100=320/375)

13(响应式)rem的弊端

“阶梯性”,有跨度。

14、(响应式)网页视口尺寸,vw/vh克服rem的“阶梯性”弊端

window.screen.height   屏幕高度

window.innerHeight   网页视口高度

document.boody.clientHeight   body高度

vh   网页视口高度的1/100

vw   网页视口宽度的1/100

vmax   取二者最大值

vmin   取二者最小值

 

标签:布局,面试题,right,前端,元素,height,margin,CSS,left
From: https://www.cnblogs.com/ALAN-BABABA/p/17130035.html

相关文章

  • 直播app开发,css让图片在a标签里垂直居中
    直播app开发,css让图片在a标签里垂直居中<style>.close{display:flex;align-items:center;text-align:center;}.closeimg{height:25px;}</style> <ahref="javascript......
  • 前端小技巧之 --- 节点的主题是否相同?
    要判断一下两个数组中节点的主题是否相同?  方法:created(){letre1=this.ifSameTheme(this.treeList1)console.log("是否相同?--treeList1:",re1)......
  • 前端重新部署如何通知用户刷新网页
    1.目标场景有时候上完线,用户还停留在老的页面,用户不知道网页重新部署了,跳转页面的时候有时候js连接hash变了导致报错跳不过去,并且用户体验不到新功能。2.思考解决方......
  • 【博学谷学习记录】超强总结,用心分享 | 前端开发 web APIs(四)
    WebAPIs-第4天进一步学习DOM相关知识,实现可交互的网页特效能够插入、删除和替换元素节点能够依据元素节点关系查找节点1日期对象掌握Date日期对象的使用,......
  • css样式穿透是什么?以及常用的几种方式?
    1.什么是样式穿透?当我们在vue项目中引用到第三方组件时,比如element-ui,常常需要更改某些元素的样式,但如果使用常规的css样式覆盖的方式是经常无效的,那么我们就要用到......
  • 轻量化前端更新方案
    一句话介绍:它是可以一行命令将代码更新到服务器的脚本轻量级更新方案最开始源于掘金的文章,后来从零实现了一个更新脚本,并且已在是生产环境中进行使用很长时间,算是非常稳......
  • VSCode Markdown preview enhanced 配置中文字体, 自定义css的方法
    在Ctrl+Shift+P命令菜单中选择CustomizeCSS这是我基于SolarizedLight的配置文件注意,只需要在系统中(我的是Win10)安装思源宋体CNMedium,在系统的字体当中找到它......
  • 2023前端开发最新面试题收集-Javascript篇
    前台、中台、后台-前台:面向用户、客户可以感知的,如商城-中台:可以看着对前台的补充,公共服务功能,如支付系统、搜索系统、客服-后台:面向运营、比如商品管理、物流管理1......
  • 2023前端开发最新面试题收集-Vue2/3篇
    Vue整理1、谈谈MVVM的理解MVC(react):数据流是单向的,View和Model之间通过controller连接通信,用户操作会请求服务器,路由拦截分发请求,调用对应的控制器controller,控制器会......
  • CSS定位position总结(超详细哦!)
    文章目录前言一、定位(position)介绍1、为什么使用定位2、定位组成二、定位模式(position)1、边偏移(方位名词)2、定位模式介绍1.1静态定位(static)-了解1.2相对定位(......