前端面试常考系列五

转载自 前端面试常考五

一、DIV元素是什么

DIV元素是用来为HTML文档内大块(block-level)的内容提供结构和背景的元素。DIV的起始标签和结束标签之间的所有内容都是用来构成这个块的,其中所包含元素的特性由DIV标签的属性来控制,或者是通过使用样式表格式化这个块来进行控制。

简单来说:就是指定渲染 HTML 的容器。

二、如何居中一个元素

非浮动元素居中

设置 margin:0 auto 令其居中, 定位 ,父级元素 text-align:center

浮动元素居中

方法一:

使用position定位

方法二:

父元素和子元素同时左浮动,然后父元素相对左移动50%,再然后子元素相对左移动-50%。
方法三:

设置当前div的宽度,然后设置margin-left:50%;position:relative; left:-250px;其中的left是宽度的一半。



三、浮动的工作原理是什么

浮动的框可以左右移动,直至它的外边缘遇到包含框或者另一个浮动框的边缘。浮动框不属于文档中的普通流(文档流),即脱离了文档流,当一个元素浮动之后,不会影响到 块级框的布局而只会影响内联框(通常是文本)的排列,文档中的普通流就会表现得和浮动框不存在一样,当浮动框高度超出包含框的时候,也就会出现包含框不会 自动伸高来闭合浮动元素(“高度塌陷”现象)。顾名思义,就是漂浮于普通流之上,像浮云一样,但是只能左右浮动。正是因为浮动的这种特性,导致本属于普通流中的元素浮动之后,包含框内部由于不存在其他普通流元素了,也就表现出高度为0(高度塌陷)。

四、浮动元素会引起哪些问题

问题一

与浮动元素同级的非浮动元素会跟随其后

问题二

父元素的高度无法被撑开,影响与父元素同级的元素

问题三

若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构

五、清除浮动常用的方法有哪些

方法一

父级div定义 伪类:after和zoom 

原理:IE8以上和非IE浏览器才支持:after,原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题 
优点:浏览器支持好、不容易出现怪问题(目前:大型网站都有使用,如:腾迅,网易,新浪等等) 
缺点:代码多、不少初学者不理解原理,要两句代码结合使用才能让主流浏览器都支持。 
建议:推荐使用,建议定义公共类,以减少CSS代码。

方法二

父级div定义 overflow:hidden 
原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度 
优点:简单、代码少、浏览器支持好 
缺点:不能和position配合使用,因为超出的尺寸的会被隐藏。 
建议:只推荐没有使用position或对overflow:hidden理解比较深的朋友使用。 

方法三

结尾处加空div标签 clear:both 
原理:添加一个空div,利用css提高的clear:both清除浮动,让父级div能自动获取到高度 
优点:简单、代码少、浏览器支持好、不容易出现怪问题 
缺点:不少初学者不理解原理;如果页面浮动布局多,就要增加很多空div,让人感觉很不好 
建议:不推荐使用,但此方法是以前主要使用的一种清除浮动方法

六、如何调整元素的布局级别

方法一

display:block 
block元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素宽度自动填满其父元素宽度。 
block元素可以设置width,height属性。块级元素即使设置了宽度,仍然是独占一行。 
block元素可以设置margin和padding属性。

方法二

display:inline-block 

简言之就是将对象呈现为inline对象,但是对象的内容作为block对象呈现,后面的内联对象会被排列在同一行内。比如我们可以给一个link(a元素)inline-block属性值,使其既具有block的宽度高度特性又具有inline的同行特性。

方法三

display:inline 
inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化。 
inline元素设置width,height属性无效。 
inline元素的margin和padding属性,水平方向的padding-left, padding-right, margin-left, margin-right都产生边距效果;但竖直方向的padding-top, padding-bottom, margin-top, margin-bottom不会产生边距效果。

七、如何理解优雅降级和渐进增强

优雅降级:

Web站点在所有新式浏览器中都能正常工作,如果用户使用的是老式浏览器,则代码会检查以确认它们是否能正常工作。由于IE独特的盒模型布局问题,针对不同版本IE的hack实践过优雅降级了,为那些无法支持功能的浏览器增加候选方案,达到能够在旧式浏览器上以某种形式降级体验的目的。

渐进增强:

所有浏览器支持的基本功能为基础,逐步添加些只有新式浏览器才支持的功能,向页面增加无害于基础浏览器的额外样式和功能。当浏览器支持时,会自动地呈现出来并发挥作用。

八、如何优化性能

方法一

当需要设置的样式很多时设置className而不是直接操作style。

方法二

少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。

方法三

图片预加载,将样式表放在顶部,将脚本放在底部加上时间戳。

方法四

innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能

方法五

减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存,图片服务器。

方法六

前端模板JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数 

方法七

避免使用css表达式动态属性。

九、CSS样式分为哪几种

1、内联css样式

内联式css样式表就是把css代码直接写在现有的HTML标签中

2、嵌入式css样式

嵌入式css样式,就是可以把css样式代码写在标签之间。

3、外部式css样式

外部式css样式(也可称为外联式)就是把css代码写一个单独的外部文件中,这个css样式文件以“.css”为扩展名(也可以为调用其他网站CSS)。



十、为什么要初始化css样式

1、浏览器的兼容问题

不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异。

2、提高编码质量

初始化CSS样式主要是提高编码质量,如果不初始化整个页面做完很糟糕,重复的CSS样式很多。

十一、如何理解css中的刻度

CSS中刻度用于设置元素尺寸的单位。

  特殊值0可以省略单位。例如:margin:0px可以写成margin:0 
  一些属性可能允许有负长度值,或者有一定的范围限制。如果不支持负长度值,那应该变换到能够被支持的最近的一个长度值。 
  长度单位包括:相对单位和绝对单位。 
  相对长度单位有:em, ex, ch, rem, vw, vh, vmax, vmin 
  绝对长度单位有:cm, mm, q, in, pt, pc, px
  绝对长度单位:1in = 2.54cm = 25.4 mm = 72pt = 6pc = 96px

十二、em与rem的区别是什么

em

文本相对长度单位。相对于当前对象内,文本字体的尺寸。如果当前对象内,文本字的体尺寸未设置,则相对于浏览器默认字体的尺寸(默认16px)。(相对父元素的字体大小倍数)
em(font size of the element)是指相对于父元素字体大小的单位。

rem

rem是CSS3新增的一个相对单位(root em,根em),相对于根元素(即html元素)font-size计算值的倍数,只相对于根元素的大小rem(font size of the root element)是指相对于根元素的字体大小的单位。
作用:利用rem可以实现简单的响应式布局,可以利用html元素中字体的大小与屏幕间的比值设置font-size的值实现当屏幕分辨率变化时让元素也变化

区别

em的计算规则依赖父元素rem的计算规则依赖根元素 


一、DIV元素是什么

DIV元素是用来为HTML文档内大块(block-level)的内容提供结构和背景的元素。DIV的起始标签和结束标签之间的所有内容都是用来构成这个块的,其中所包含元素的特性由DIV标签的属性来控制,或者是通过使用样式表格式化这个块来进行控制。

简单来说:就是指定渲染 HTML 的容器。

二、如何居中一个元素

非浮动元素居中

设置 margin:0 auto 令其居中, 定位 ,父级元素 text-align:center

浮动元素居中

方法一:

使用position定位

方法二:

父元素和子元素同时左浮动,然后父元素相对左移动50%,再然后子元素相对左移动-50%。
方法三:

设置当前div的宽度,然后设置margin-left:50%;position:relative; left:-250px;其中的left是宽度的一半。



三、浮动的工作原理是什么

浮动的框可以左右移动,直至它的外边缘遇到包含框或者另一个浮动框的边缘。浮动框不属于文档中的普通流(文档流),即脱离了文档流,当一个元素浮动之后,不会影响到 块级框的布局而只会影响内联框(通常是文本)的排列,文档中的普通流就会表现得和浮动框不存在一样,当浮动框高度超出包含框的时候,也就会出现包含框不会 自动伸高来闭合浮动元素(“高度塌陷”现象)。顾名思义,就是漂浮于普通流之上,像浮云一样,但是只能左右浮动。正是因为浮动的这种特性,导致本属于普通流中的元素浮动之后,包含框内部由于不存在其他普通流元素了,也就表现出高度为0(高度塌陷)。

四、浮动元素会引起哪些问题

问题一

与浮动元素同级的非浮动元素会跟随其后

问题二

父元素的高度无法被撑开,影响与父元素同级的元素

问题三

若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构

五、清除浮动常用的方法有哪些

方法一

父级div定义 伪类:after和zoom 

原理:IE8以上和非IE浏览器才支持:after,原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题 
优点:浏览器支持好、不容易出现怪问题(目前:大型网站都有使用,如:腾迅,网易,新浪等等) 
缺点:代码多、不少初学者不理解原理,要两句代码结合使用才能让主流浏览器都支持。 
建议:推荐使用,建议定义公共类,以减少CSS代码。

方法二

父级div定义 overflow:hidden 
原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度 
优点:简单、代码少、浏览器支持好 
缺点:不能和position配合使用,因为超出的尺寸的会被隐藏。 
建议:只推荐没有使用position或对overflow:hidden理解比较深的朋友使用。 

方法三

结尾处加空div标签 clear:both 
原理:添加一个空div,利用css提高的clear:both清除浮动,让父级div能自动获取到高度 
优点:简单、代码少、浏览器支持好、不容易出现怪问题 
缺点:不少初学者不理解原理;如果页面浮动布局多,就要增加很多空div,让人感觉很不好 
建议:不推荐使用,但此方法是以前主要使用的一种清除浮动方法

六、如何调整元素的布局级别

方法一

display:block 
block元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素宽度自动填满其父元素宽度。 
block元素可以设置width,height属性。块级元素即使设置了宽度,仍然是独占一行。 
block元素可以设置margin和padding属性。

方法二

display:inline-block 

简言之就是将对象呈现为inline对象,但是对象的内容作为block对象呈现,后面的内联对象会被排列在同一行内。比如我们可以给一个link(a元素)inline-block属性值,使其既具有block的宽度高度特性又具有inline的同行特性。

方法三

display:inline 
inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化。 
inline元素设置width,height属性无效。 
inline元素的margin和padding属性,水平方向的padding-left, padding-right, margin-left, margin-right都产生边距效果;但竖直方向的padding-top, padding-bottom, margin-top, margin-bottom不会产生边距效果。

七、如何理解优雅降级和渐进增强

优雅降级:

Web站点在所有新式浏览器中都能正常工作,如果用户使用的是老式浏览器,则代码会检查以确认它们是否能正常工作。由于IE独特的盒模型布局问题,针对不同版本IE的hack实践过优雅降级了,为那些无法支持功能的浏览器增加候选方案,达到能够在旧式浏览器上以某种形式降级体验的目的。

渐进增强:

所有浏览器支持的基本功能为基础,逐步添加些只有新式浏览器才支持的功能,向页面增加无害于基础浏览器的额外样式和功能。当浏览器支持时,会自动地呈现出来并发挥作用。

八、如何优化性能

方法一

当需要设置的样式很多时设置className而不是直接操作style。

方法二

少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。

方法三

图片预加载,将样式表放在顶部,将脚本放在底部加上时间戳。

方法四

innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能

方法五

减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存,图片服务器。

方法六

前端模板JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数 

方法七

避免使用css表达式动态属性。

九、CSS样式分为哪几种

1、内联css样式

内联式css样式表就是把css代码直接写在现有的HTML标签中

2、嵌入式css样式

嵌入式css样式,就是可以把css样式代码写在标签之间。

3、外部式css样式

外部式css样式(也可称为外联式)就是把css代码写一个单独的外部文件中,这个css样式文件以“.css”为扩展名(也可以为调用其他网站CSS)。



十、为什么要初始化css样式

1、浏览器的兼容问题

不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异。

2、提高编码质量

初始化CSS样式主要是提高编码质量,如果不初始化整个页面做完很糟糕,重复的CSS样式很多。

十一、如何理解css中的刻度

CSS中刻度用于设置元素尺寸的单位。

  特殊值0可以省略单位。例如:margin:0px可以写成margin:0 
  一些属性可能允许有负长度值,或者有一定的范围限制。如果不支持负长度值,那应该变换到能够被支持的最近的一个长度值。 
  长度单位包括:相对单位和绝对单位。 
  相对长度单位有:em, ex, ch, rem, vw, vh, vmax, vmin 
  绝对长度单位有:cm, mm, q, in, pt, pc, px
  绝对长度单位:1in = 2.54cm = 25.4 mm = 72pt = 6pc = 96px

十二、em与rem的区别是什么

em

文本相对长度单位。相对于当前对象内,文本字体的尺寸。如果当前对象内,文本字的体尺寸未设置,则相对于浏览器默认字体的尺寸(默认16px)。(相对父元素的字体大小倍数)
em(font size of the element)是指相对于父元素字体大小的单位。

rem

rem是CSS3新增的一个相对单位(root em,根em),相对于根元素(即html元素)font-size计算值的倍数,只相对于根元素的大小rem(font size of the root element)是指相对于根元素的字体大小的单位。
作用:利用rem可以实现简单的响应式布局,可以利用html元素中字体的大小与屏幕间的比值设置font-size的值实现当屏幕分辨率变化时让元素也变化

区别

em的计算规则依赖父元素rem的计算规则依赖根元素 

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

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

相关文章

从业十余年谈谈对dotnet看法与坚持

前言 园子经常在讨论关于.Net发展的问题,我也这些年在工作乃至创业过程中使用.Net碰到的一些问题和看法。个人擅长的技术面,C/C/MFC/STL、ASM、JAVA、VB、Javascript/Typescript、C#/WebForm/MVC、Android/MonoDroid,Linux/Windows,还有没有可…

kali安装python3.7_Debian服务器之安装Python3.7

1、系统环境介绍1.1 系统版本debian-9.6.0-amd64-netinst1.2 系统内核Linux lnnkee 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux2、下载安装包https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz3、配置安装环境apt install libffi-dev …

org.apache.kafka.common.errors.TimeoutException: Topic not present in metadata 解决方法

【README】 本文po出了 topic not present in metadata 的解决方法; 很多博文说是 因为 jackson-databind 没有引入,但是我重新引入后,还是没有解决问题; 最后,原因在于我要发送消息的分区,topic 没有对…

前端面试常考系列六

转载自 前端面试常考系列六 一、为什么重置浏览器默认样式,如何重置 每种浏览器都有一套默认的样式表,即user agent stylesheet,网页在没有指定的样式时,按浏览器内置的样式表来渲染。这是合理的,像word中也有一些预留…

Microsoft将Linux带至桌面操作系统

在今天的Build大会上Microsoft宣布:今年的Windows 10年度更新将使得Windows 10系统能够无缝运行Linux二进制程序。多年来,专家与开发者都在猜测,Linux如何以及何时才能在普通PC用户的桌面系统中更加流行。从今天的新闻来看,似乎Mi…

kafka控制器,复制与存储小结

【README】 1,本文主要总结kafka复制,存储细节;2,本文的kafka集群版本是3.0.0, 有3个broker,分别是 centos201, centos202, centos203 对应的brokerid为 1, 2, 3 ;【1】kafka内部原…

python开发stm32软件_ADB+Python+STM32 实现 微信跳一跳辅助

说明:安卓手机开启USB调试模式,具体如何开启,百度自己手机即可安装ADB工具安装python2.7步骤:1、安装adb工具下载地址:https://download.csdn.net/download/qq_29769263/10420731下载后解压到便于记忆的地方即可,以解压…

不装mono,你的.NET程序照样可以在Linux上运行

让.NET应用程序在linux上运行,目前通用的做法就是在Linux上安装mono,然后通过”mono your.exe“命令运行这个程序。 这种运行.net程序的办法有两个弱点,一个是需要客户机安装mono,二个是 ”mono xx.exe“ 这种命令行总让人感到有点…

JAVA面试常考系列一

转载自 JAVA面试常考系列一 题目一 什么是Java虚拟机?为什么Java被称为平台无关的编程语言? java虚拟机是一个可以执行字节码文件(.class)的虚拟机进程。 为什么java与平台无关呢?因为java源程序(.java&…

转:运维监控系统-监控项及指标的梳理

转自: 运维监控系统-监控项及指标的梳理_程序员杂谈-CSDN博客_运维监控指标综合监控功能工具 综合监控工具完成对被管对象的集中监控、集中维护和集中管理,被管对象包括网络设备、服务器、PC设备、数据库、中间件、存储、备份、安全设备、应用系统等。工…

圆心角 圆弧上点坐标_数控加工中心CNC的G02/G03圆弧指令的I、J、与R的区别

G02:顺(CW)圆弧插补G03:逆(CCW)圆弧插补根据所选择的X、Y平面,指令格式如下两种:G17 G02/G03 X_ Y_ I_ J_ F_;G17 G02/G03 X_ Y_ R_ F_;定义方式:依右手坐标系统&#xf…

AutoMapper 使用实践

一. 使用意图 常常在开发过程中,碰到一个实体上的属性值,要赋值给另外一个相类似实体属性时,且属性有很多的情况。一般不利用工具的话,就要实例化被赋值实体B,然后再将实体A的字段一个个赋值给B的属性,单…

kafka可靠数据传递

【README】 本文阐述了kafka可靠消息传递机制; 本文部分内容总结于《kafka权威指南》(一本好书,墙裂推荐),再加上自己的理解; 【1】可靠性保证 1,在讨论可靠性时,一般使用保证这个…

JAVA面试常考系列二

转载自 JAVA面试常考系列二 题目一 解释一下线程和进程 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上…

雨滴桌面时间插件_Win10美化向——如何搭配你的桌面

// 2020-02-11 //桌面这个东西大家肯定不陌生了,很多人的桌面都如下。_______滑动查看更多图片这多重水印是什么鬼?????还有很多网友呢,也美化了一下自己的桌面。不过呢严格来说,这应…

python画建筑_专题 | Python 绘图入门

我的施工之路Python 绘图入门这是施工系列第18篇,同时也进入到一个新的阶段:Python绘图篇。作为绘图模块的第一篇,与大家一起过过最基本的Python绘图原理。掌握基本的绘图原理很有必要,各个常用绘图库的原理基本都是相通的。所以了…

最新版dotnet-cli下的ASP.NET Core和asp.net mvc【RC2尝鲜】

RC1是http://get.asp.net里面提供的https://docs.asp.net/en/latest/getting-started/index.html,使用旧的ASP.NET Core 1.0。这个版本会使用dnvm,dnu restore和dnx web等,而RC2则不需要,RC2只需要dotnet restore和dotnet run&…

kafka生产者开发方式

【README】 本文记录了 kafka生产者开发方式; 【1】生产者概览 【1.1】kafka发送消息过程 【1.2】创建kafka生产者 1)创建kafka生产者, 有3个必选属性: bootstrap.servers: kakfa集群节点地址;key.seri…

JAVA面试常考系列三

转载自 JAVA面试常考系列三 题目一 什么是迭代器(Iterator)? 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中确定的地址。迭代器提供了一种方法,可…

linux wait函数头文件_手把手教Linux驱动9-等待队列waitq

在上一篇《手把手教Linux驱动8-Linux IO模型》我们已经了解了阻塞、非阻塞、同步和异步等相关概念,本文主要讲解如何通过等待队列实现对进程的阻塞。应用场景:当进程要获取某些资源(例如从网卡读取数据)的时候,但资源并没有准备好(例如网卡还…