CSS3有哪些新能特性?

新增特性:

  • 圆角border-radius
  • 阴影 box-shadow
  • 文字特效 text-shadow
  • 线性渐变 gradient
  • 变形 transform

增加了css选择器、媒体属性、多栏布局

媒体查询在CSS2中已经存在,只不过只能作用于style和link标签上

css选择器的优先级顺序?

内联样式 > ID选择器 > 类选择器 > 标签选择器

通过CSS有哪些方式可以实现隐藏页面上的元素?

 方式  说明
 opactiy: 0  
visibility: hidden   
 overflow: hidden  
display: none   
transform: scale(0,0)  
 z-index: -9999   
left: -9999   

在CSS中有哪些定位方式?position的属性?

static:默认值,没有定位,元素正常出现在文档流中

relative:相对定位,相对于其在普通流中的位置进行定位

absolute:绝对定位,相对于最近的非static的祖先元素进行定位

fixed:固定定位,相对于浏览器窗口进行定位

sticky:粘性定位,像relative和fixed的结合,它的父元素在视口区域,当前元素就以fixed的方式进行定位,否则就以relative进行定位

水平垂直居中的方法?
未知宽高:position + transform

div{
position:absolute;
left:50%;
top:50%;
tansform:translate(-50%, -50%);
}

已知宽高:position + margin

div{
width: 100px;
height: 100px;
position: absolute;
left: 50%;
top: 50%;
argin-left: -100px;
margin-top: -100px;
}

绝对定位方法:top left bottom right为0

div{
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: 0;
margin: 0;
}

flex布局方法

div{
display: flex;
justify-content: center;
align-items: center;
}

转成行级块,给父盒子设置text-align:center

.father {
text-align: center;
} .child {

width: 100px;

height: 100px;

display: inline-block;

}

CSS属性content有什么作用?

css的content属性专门应用在after / before伪元素上,用于插入生成内容,可以配合自定义字体显示特殊符号

translate和 margin 的百分比是根据什么计算的?(translate 和 margin 有什么不同?)

translate是根据自身宽度,margin是根据参照物

rgba() 和 opacity 有什么不同?

  • opacity作用于元素,以及元素内的所有内容的透明度,rgba()只作用于元素的颜色或其背景色
  • 设置rgba的元素,子元素不会继承透明效果

解释一下浮动及其工作原理

浮动元素脱离文档流,不占据空间。

浮动元素碰到包含它的边框或者浮动元素的边框停留

浮动元素引起的问题?

  • 父元素的高度无法撑开
  • 与浮动元素同级的,非浮动元素会跟随其后
  • 若非第一个元素浮动,则该元素之前的元素也需要浮动。否则会影响页面显示的结构

清除浮动的方式?

  • 父级元素定高,定义height
  • 父级元素增加 overflow: hidden
  • 结尾处增加 br

    <br style="clear:both"/>
  • 父级元素增加伪元素 :after

    .clearfix:after{
      content: '';
      display: block;
      clear: both;
      visibility: hidden;
      height: 0;
    }

clear 实现清除浮动的原理?

原理:clear是css中的定位属性,规定元素的那一侧不允许浮动元素,clear: both 就是规定在左右两侧都不允许浮动元素

怎么理解盒子模型?

浏览器的渲染引擎对网页文档进行布局时,会按照”CSS基础盒模型“ (CSS Basic Box Model)标准,将文档中的所有元素都表示成一个个矩形的盒子,再用CSS决定这些盒子的大小尺寸、显示位置、以及其他属性(如颜色、背景、边框等)。

盒模型由以下几部分组成:内容(content)、内边距(padding)、边框(border)、外边距(margin)

标准盒模型 和 怪异盒模型有哪些区别?

两者的区别主要提现在元素尺寸的表示上。

盒模型的指定

在CSS3中,可以通过设置box-sizing的值:

  • content-box 标准盒模型
  • border-box 怪异盒模型

标准盒模型  box-sizing: content-box;

标准盒模型的width和height属性的范围只包含了content

标准盒模型下,元素的宽(width)高(height)值即为盒模型中内容(content)实际宽高值

盒子宽度 = border-left + padding-left + width + padding-right + border-right

占据页面宽度 = margin-left + border-left + padding-left + width + padding-right + border-right + margin-right

怪异盒模型 box-sizing: border-box;

IE盒模型的width和height属性的范围包含了border、padding和content

在怪异盒模型下,元素的宽(width)高(height)不是 content的实际宽高,而是去除margin后,元素占用区域的宽高

盒子宽度 = width

盒子占据页面宽度 = margin-left + width + margin-right

盒模型中,content-box是标准,为什么经常使用border-box?

content-box是W3C的标准盒模型,元素的宽(width)高(height)指的是content区域的宽高。增加border、padding会把破坏布局

border-box是IE的怪异盒模型,元素的宽(width)高(height)指的是content宽高 + border + padding,在元素基础上添加border和padding,不会把破坏布局

什么是BFC?

BFC(Block Formatting Context),块级格式化上下文。是页面布局中的一种css渲染模式。相当于一个独立的布局容器。里面的元素和外部的元素相互不影响

怎么创建BFC?

  • position值为 absolute 或 fixed
  • float值不为 none
  • overflow值不为visible
  • display值为 inline-block、flex、inline-flex、grid、inline-grid

BFC的作用?

避免外边距重叠(两个相邻的盒子外边距重叠或父子盒子的外边距塌陷)

清除浮动

计算BFC高度时,浮动元素也会参与计算

什么外边距重叠?重叠的结果是什么?

外边距重叠就是margin-collaps

在css中,相邻的两个盒子的外边距可以结合成一个单独的外边距,这种合并外边距的方式称为折叠,所结合成的外边距成为折叠外边距

折叠结果计算规则:

  • 两个相邻的外边距都是正数时,折叠结果取两者之间较大的值
  • 两个相邻的外边距都是负数时,折叠结果取两者绝对值的较大值
  • 两个外边距一正一负时,折叠结果取两者相加的和

浏览器是怎样解析css选择器的?

css选择器是从右向左解析的,为了避免对所有元素进行遍历

若从左向右匹配,发现不符合规则,需要回溯,会损失很多性能

若从右向左匹配,先找到最右节点,向上寻找,会筛选掉大量不符合条件的最右节点

谈谈对媒体查询的理解?

响应式适配,根据不同的屏幕尺寸,显示不同的效果

媒体查询由两个部分组成:

一个可选的媒体类型 (计算机屏幕screen、打印预览模式print、all所有设备)

零个或多个媒体功能限定表达式(max-width: 500px、min-width: 500px)

@media screen and (max-width: 767px) {
.container {
width: 100%;
}
}
@media screen and (min-width: 768px) and (max-width: 991px) {
.container {
width: 750px;
}
}

说一下CSS的自适应单位?

vw 是相对视口(viewport)的宽度而定,1vw是viewport宽度的1%

vh  是相对窗口(viewport)的高度而定,1vh是viewport高度的1%

vmin和vmax 比较的是vw和vh,选择其一

vmin 选择的是两者较小的值,比如宽度500px,高度300px,1vmin就是3px

vmax 选择的是两者较大的值,比如宽度500px,高度300px,1vmax就是5px

px、em、rem之间有什么区别?

  • px:绝对单位。代表像素数量,页面会按照给出的精确像素进行展示
  • em:相对单位。基于父元素的字体大小,如果自身定义了字体大小则按照自身的来算
  • rem:相对单位。可以理解为root em,基于根节点<html>的字体大小

谈谈对flex的理解?

flex是flexible box的缩写,即弹性布局,为盒模型提供灵活性

只需要声明布局应该具有的行为,而不需要给出具体的实现方式,浏览器完成实际布局

flex-direction: 调整主轴方向

row:主轴方向为水平向右
column:主轴方向为竖直向下
row-reverse:主轴方向为水平向左
column-reverse:主轴方向是竖直向上。

justify-content 主要用来设置主轴方向的对齐方式

flex-start: 弹性盒子元素将向起始位置对齐
flex-end: 弹性盒子元素将向结束位置对齐。
center: 弹性盒子元素将向行中间位置对齐
space-around: 弹性盒子元素会平均地分布在行里
space-between:第一个贴左边,最后一个贴右边,其他盒子均分,保证每个盒子之间的空隙是相等的。

align-items 用于调整侧轴的对齐方式

flex-start: 元素在侧轴的起始位置对齐。
flex-end: 元素在侧轴的结束位置对齐。
center: 元素在侧轴上居中对齐。
stretch: 元素的高度会被拉伸到最大(不给高度时, 才拉伸)。

align-content 用来设置多行的 flex 容器的排列方式

flex-start: 各行向侧轴的起始位置堆叠。
flex-end: 各行向弹性盒容器的结束位置堆叠。
center: 各行向弹性盒容器的中间位置堆叠。
space-around: 各行在侧轴中平均分布。
space-between: 第一行贴上边,最后一个行贴下边,其他行在弹性盒容器中平均分布。
stretch:拉伸,不设置高度的情况下。

flex-wrap 属性控制 flex 容器是单行或者多行,默认不换行

nowrap: 不换行(默认),如果宽度溢出,会压缩子盒子的宽度。
wrap: 当宽度不够的时候,会换行。

display、visibility、opacity的区别?

  • display: none

    • dom结构:不会占据空间
    • 事件监听:无法进行事件监听
    • 性能:动态改变此属性,会引起重排。性能较差
    • 继承:不会被子元素继承
    • transition:不支持display
  • visibility: hidden
    • dom结构:会占据空间
    • 事件监听:无法进行事件监听
    • 性能:动态改变此属性,会引起重绘,性能较高
    • 继承:会被子元素继承,子元素可以设置visibility: visible取消隐藏
    • transition:visibility会立即显示,隐藏会延时
  • opacity: 0
    • dom结构:会占据空间
    • 事件监听:可以进行事件监听
    • 性能:不会引起重绘,性能较高
    • 继承:会被子元素继承,子元素可以通过设置opacity: 1取消隐藏
    • transition:opacity可以延时和隐藏

position的absolut与fixed有什么相同点和不同点?

相同:

  • 让元素脱离文档流,不占据空间
  • 改变行内元素呈现的方式,display被置为block

不同:

  • absolut的根元素是可以设置的,而fixed的根元素固定为浏览器窗口
  • 滚动网页的时候,fixed在浏览器窗口的位置是不会变化的

css伪类和伪元素

伪类:一般用于匹配元素特殊状态,例如::checked、:hover

伪元素:用于创建一些不在DOM树中显示的元素,并为其添加样式,例如::after、:before(注:伪元素无法注册事件,不能通过js控制伪元素)

  伪类用单冒号表示:如:link、:visited、:hover、:active、:focus、:first-child、:last-child、:nth-child、:nth-last-child、:not()

  伪元素用双冒号表示:如::fist-letter、::first-line、::before、::after

  部分伪类解释:

  :link  设置未被访问的链接样式       :visited  设置被访问的链接样式

  :hover  设置鼠标悬浮的样式      :active  设置鼠标松开的样式   :focus   使用键盘移动页面焦点时的样式

  伪类弥补了常规css选择器的不足,伪元素创建了一个虚拟容器

.clearfix:after{
content: '';
display: block;
clear: both;
visibility: hidden;
height: 0;
}

CSS 面试题的更多相关文章

  1. 前端Html和Css面试题

    前端Html和Css面试题Html篇:1.你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? IE: trident内核 Firefox:gecko内核 Safari:webkit内核 Ope ...

  2. 一道灵活的css笔试题

    今天在网上看到一css笔试题,乍一看很简单,实则内部暗藏玄机,题目大概是:九宫格,每格长宽50px,边框宽度5px,鼠标经过边框变红,效果如下: 鼠标路过时: 以下是代码(如有不足之处望多加指正) & ...

  3. 2019前端面试系列——CSS面试题

    盒模型 /* 红色区域的大小是多少?200 - 20*2 - 20*2 = 120 */ .box { width: 200px; height: 200px; padding: 20px; marg ...

  4. CSS面试题&知识点汇总

    问题&答案 介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的? 有两种, IE 盒子模型.W3C 盒子模型: 盒模型: 内容(content).填充(padding).边界(m ...

  5. css面试题汇总 (持续更新)

    前言:这篇随笔是为了准备后面的面试而整理的,网上各种面试题太多了,但是我感觉很多太偏了,而且实际开发过程中并不会遇到,因此这里我整理一些比较常用的,或者是相对比较重要的知识点,每个知识点都会由浅入深, ...

  6. HTML css面试题

    1.对WEB标准以及W3C的理解与认识 标签闭合.标签小写.不乱嵌套.提高搜索机器人搜索几率.使用外链css和js脚本.结构行为表现的分离.文件下载与页面速度更快.内容能被更多的用户所访问.内容能被更 ...

  7. 【css面试题】三个DIV要求水平对齐,左右两个DIV宽度固定为100px,中间那个DIV充满剩余的宽度(至少2种方法)

    这是我在一家公司面试时遇到的问题,当时没有答上来!! 所以看到的小伙伴一定要注意了!! 变化浏览器宽度可看到效果: 左 右 中 然后我们来看看代码: 第一种方法:(浮动) <style type ...

  8. 记一道css面试题 : 三栏布局两边宽度固定,中间宽度自适应,并且布局随屏幕大小改变。

    前几天面试时有道css题没做出来,回来好好学习一番后把其记录下来. 题目是这样的:左中右三栏布局,左右两栏宽度固定,左右两栏的宽度为200像素,中间栏宽度自适应.当屏幕小于600px时,3栏会分别占用 ...

  9. CSS面试题

    1.有哪些方式可以对一个DOM设置它的CSS样式? 外部样式表.引入一个外部CSS文件: 内部样式表.将CSS代码放在<head>标签内部: 内联样式,将CSS样式直接定义在HTML元素内 ...

  10. CSS笔试题

    如何实现移动端9宫格 如何实现移动端下列8宫格 实现移动端图片画廊CSS样式 写一个简单的animation的css动画 美化select,radio,range样式,只需考虑谷歌浏览器,下面给出的是 ...

随机推荐

  1. ARM SMMU原理与IOMMU技术(“VT-d” DMA、I/O虚拟化、内存虚拟化)

    名词缩写 ASID:Address Space ID 地址空间标识符 CD:Context Descriptor: 上下文描述符: CTP:Context-table pointer 上下文表指针 E ...

  2. webpack配置 alias用于方便引用文件

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  3. 在 KubeSphere 上快速安装和使用 KDP 云原生数据平台

    作者简介:金津,智领云高级研发经理,华中科技大学计算机系硕士.加入智领云 8 余年,长期从事云原生.容器化编排领域研发工作,主导了智领云自研的 BDOS 应用云平台.云原生大数据平台 KDP 等产品的 ...

  4. 云原生周刊:CNCF 宣布 Cilium 毕业 | 2023.10.16

    开源项目推荐 Reloader Reloader 是一个 Kubernetes 控制器,用于监控 ConfigMap 和 Secrets 中的变化,并对 Pod 及其相关部署.StatefulSet. ...

  5. RecyclerView刷新方式

    RecyclerView刷新方式 刷新全部item notifyDataSetChanged() student.setValue(new Student("二狗")); stud ...

  6. Saas多租户数据权限设计(参考RuoYi)

    导航 引子 场景梳理 基于角色的访问控制(RBAC) 多租户系统的权限设计 RuoYi系统的数据权限设计 最终设计方案 参考 本文首发<智客工坊-Saas多租户数据权限设计(参考RuoYi)&g ...

  7. ToDesk再度出手,加快云电脑高性能发展,剑指千亿级市场

    根据中国信通院发布的<云计算白皮书(2023年)>(以下简称白皮书)显示,云计算引发了软件开发部署模式的创新,成为承载各类应用的关键基础设施,为大数据.物联网.人工智能等新兴领域的发展提供 ...

  8. att&ck学习笔记2

    一.环境搭建 靶场下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/3/ DC IP:10.10.10.10OS:Windows 2012应用:A ...

  9. PBI自定义视觉对象环境配置

    开发文档地址:https://docs.microsoft.com/zh-cn/power-bi/service-custom-visuals-getting-started-with-develop ...

  10. .NET 9 AOT的突破 - 支持老旧Win7与XP环境

    引言 随着技术的不断进步,微软的.NET 框架在每次迭代中都带来了令人惊喜的新特性.在.NET 9 版本中,一个特别引人注目的亮点是 AOT( Ahead-of-Time)支持,它允许开发人员将应用程 ...