温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

前端面试CSS中的高频考点有哪些

发布时间:2022-10-31 10:14:27 来源:亿速云 阅读:204 作者:iii 栏目:web开发

前端面试CSS中的高频考点有哪些

目录

  1. CSS基础
  2. 盒模型
  3. 选择器
  4. 布局
  5. 浮动
  6. 定位
  7. Flexbox
  8. Grid
  9. 响应式设计
  10. 动画与过渡
  11. CSS预处理器
  12. CSS模块化
  13. 性能优化
  14. 浏览器兼容性
  15. CSS框架
  16. CSS新特性
  17. CSS面试题

CSS基础

1.1 CSS简介

CSS(Cascading Style Sheets)是一种用于描述HTML或XML文档外观的样式表语言。CSS的主要作用是将文档的内容与表现形式分离,使得开发者可以更方便地控制网页的布局、颜色、字体等样式。

1.2 CSS语法

CSS语法由选择器和声明块组成。选择器用于指定要应用样式的HTML元素,声明块包含一个或多个声明,每个声明由属性和值组成。

selector {
    property: value;
}

1.3 CSS引入方式

CSS可以通过以下三种方式引入到HTML文档中:

  1. 内联样式:直接在HTML元素的style属性中定义样式。

    <p style="color: red;">这是一个段落。</p>
    
  2. 内部样式表:在HTML文档的<head>部分使用<style>标签定义样式。

    <head>
       <style>
           p {
               color: red;
           }
       </style>
    </head>
    
  3. 外部样式表:通过<link>标签引入外部CSS文件。

    <head>
       <link rel="stylesheet" href="styles.css">
    </head>
    

1.4 CSS优先级

CSS样式的优先级决定了当多个样式规则应用于同一个元素时,哪个规则会被应用。优先级从高到低依次为:

  1. 内联样式:优先级最高。
  2. ID选择器:优先级次之。
  3. 类选择器、属性选择器、伪类选择器:优先级较低。
  4. 元素选择器、伪元素选择器:优先级最低。

当优先级相同时,后定义的样式会覆盖先定义的样式。

盒模型

2.1 盒模型简介

CSS盒模型是CSS布局的基础,每个HTML元素都可以看作是一个矩形的盒子。盒模型由内容区、内边距(padding)、边框(border)和外边距(margin)组成。

2.2 标准盒模型与IE盒模型

CSS盒模型分为标准盒模型和IE盒模型。两者的区别在于宽度和高度的计算方式。

  • 标准盒模型:元素的宽度和高度只包括内容区,不包括内边距、边框和外边距。

    box-sizing: content-box;
    
  • IE盒模型:元素的宽度和高度包括内容区、内边距和边框,但不包括外边距。

    box-sizing: border-box;
    

2.3 盒模型属性

  • width:设置元素的宽度。
  • height:设置元素的高度。
  • padding:设置元素的内边距。
  • border:设置元素的边框。
  • margin:设置元素的外边距。

2.4 盒模型计算

在标准盒模型中,元素的总宽度和总高度计算公式如下:

总宽度 = width + padding-left + padding-right + border-left + border-right + margin-left + margin-right
总高度 = height + padding-top + padding-bottom + border-top + border-bottom + margin-top + margin-bottom

在IE盒模型中,元素的总宽度和总高度计算公式如下:

总宽度 = width + margin-left + margin-right
总高度 = height + margin-top + margin-bottom

选择器

3.1 基本选择器

  • 元素选择器:选择指定类型的HTML元素。

    p {
      color: red;
    }
    
  • 类选择器:选择具有指定类名的元素。

    .class-name {
      color: red;
    }
    
  • ID选择器:选择具有指定ID的元素。

    #id-name {
      color: red;
    }
    
  • 通配符选择器:选择所有元素。 “`css

    • { margin: 0; padding: 0; }

    ”`

3.2 组合选择器

  • 后代选择器:选择指定元素的后代元素。

    div p {
      color: red;
    }
    
  • 子元素选择器:选择指定元素的直接子元素。

    div > p {
      color: red;
    }
    
  • 相邻兄弟选择器:选择指定元素的下一个兄弟元素。

    h1 + p {
      color: red;
    }
    
  • 通用兄弟选择器:选择指定元素的所有兄弟元素。

    h1 ~ p {
      color: red;
    }
    

3.3 属性选择器

  • 存在属性选择器:选择具有指定属性的元素。

    [title] {
      color: red;
    }
    
  • 属性值选择器:选择具有指定属性值的元素。

    [title="example"] {
      color: red;
    }
    
  • 属性值前缀选择器:选择属性值以指定字符串开头的元素。

    [title^="ex"] {
      color: red;
    }
    
  • 属性值后缀选择器:选择属性值以指定字符串结尾的元素。

    [title$="ple"] {
      color: red;
    }
    
  • 属性值包含选择器:选择属性值包含指定字符串的元素。

    [title*="amp"] {
      color: red;
    }
    

3.4 伪类选择器

  • :hover:选择鼠标悬停的元素。

    a:hover {
      color: red;
    }
    
  • :active:选择被激活的元素。

    a:active {
      color: red;
    }
    
  • :focus:选择获得焦点的元素。

    input:focus {
      border-color: red;
    }
    
  • :nth-child(n):选择父元素的第n个子元素。

    li:nth-child(2) {
      color: red;
    }
    
  • :nth-of-type(n):选择父元素的第n个指定类型的子元素。

    p:nth-of-type(2) {
      color: red;
    }
    

3.5 伪元素选择器

  • ::before:在元素内容前插入内容。

    p::before {
      content: "前缀";
    }
    
  • ::after:在元素内容后插入内容。

    p::after {
      content: "后缀";
    }
    
  • ::first-letter:选择元素的第一个字母。

    p::first-letter {
      font-size: 2em;
    }
    
  • ::first-line:选择元素的第一行。

    p::first-line {
      font-weight: bold;
    }
    

布局

4.1 块级元素与行内元素

  • 块级元素:独占一行,可以设置宽度、高度、内边距和外边距。常见的块级元素有<div><p><h1>等。
  • 行内元素:不独占一行,宽度和高度由内容决定,不能设置宽度、高度、内边距和外边距。常见的行内元素有<span><a><img>等。

4.2 布局方式

  • 普通流:元素按照HTML文档的顺序依次排列。
  • 浮动布局:通过float属性使元素脱离普通流,向左或向右浮动。
  • 定位布局:通过position属性使元素脱离普通流,进行绝对定位或相对定位。
  • Flexbox布局:通过display: flex实现弹性盒子布局。
  • Grid布局:通过display: grid实现网格布局。

4.3 居中布局

  • 水平居中

    • 块级元素:margin: 0 auto;
    • 行内元素:text-align: center;
    • Flexbox:justify-content: center;
    • Grid:justify-items: center;
  • 垂直居中

    • 单行文本:line-height等于容器高度。
    • 多行文本:display: flex; align-items: center;
    • Flexbox:align-items: center;
    • Grid:align-items: center;
  • 水平垂直居中

    • Flexbox:display: flex; justify-content: center; align-items: center;
    • Grid:display: grid; place-items: center;

浮动

5.1 浮动简介

浮动(float)是CSS中用于实现元素水平排列的布局方式。通过设置float属性,可以使元素脱离普通流,向左或向右浮动。

5.2 浮动属性

  • float: left;:元素向左浮动。
  • float: right;:元素向右浮动。
  • float: none;:元素不浮动(默认值)。

5.3 清除浮动

浮动元素会脱离普通流,可能导致父元素高度塌陷。清除浮动的方法有:

  • clearfix:在父元素上添加clearfix类。

    .clearfix::after {
      content: "";
      display: block;
      clear: both;
    }
    
  • overflow:在父元素上设置overflow: hidden;overflow: auto;

  • clear:在浮动元素后添加一个空元素,并设置clear: both;

    <div style="clear: both;"></div>
    

定位

6.1 定位简介

定位(position)是CSS中用于控制元素位置的布局方式。通过设置position属性,可以使元素脱离普通流,进行绝对定位或相对定位。

6.2 定位属性

  • position: static;:元素按照普通流布局(默认值)。
  • position: relative;:元素相对于其正常位置进行定位。
  • position: absolute;:元素相对于最近的已定位祖先元素进行定位。
  • position: fixed;:元素相对于浏览器窗口进行定位。
  • position: sticky;:元素在滚动时固定在指定位置。

6.3 定位偏移

通过toprightbottomleft属性可以设置元素的偏移量。

.element {
    position: absolute;
    top: 10px;
    left: 20px;
}

6.4 z-index

z-index属性用于控制元素的堆叠顺序。值越大,元素越靠前。

.element {
    position: absolute;
    z-index: 1;
}

Flexbox

7.1 Flexbox简介

Flexbox(弹性盒子布局)是CSS3中引入的一种新的布局方式,用于实现灵活的、响应式的布局。

7.2 Flex容器与Flex项目

  • Flex容器:通过设置display: flex;display: inline-flex;将元素变为Flex容器。
  • Flex项目:Flex容器的直接子元素称为Flex项目。

7.3 Flex容器属性

  • flex-direction:设置Flex项目的排列方向。

    • row:水平排列(默认值)。
    • row-reverse:水平反向排列。
    • column:垂直排列。
    • column-reverse:垂直反向排列。
  • justify-content:设置Flex项目在主轴上的对齐方式。

    • flex-start:左对齐(默认值)。
    • flex-end:右对齐。
    • center:居中对齐。
    • space-between:两端对齐,项目之间的间隔相等。
    • space-around:项目两侧的间隔相等。
  • align-items:设置Flex项目在交叉轴上的对齐方式。

    • stretch:拉伸以填充容器(默认值)。
    • flex-start:顶部对齐。
    • flex-end:底部对齐。
    • center:居中对齐。
    • baseline:基线对齐。
  • flex-wrap:设置Flex项目是否换行。

    • nowrap:不换行(默认值)。
    • wrap:换行。
    • wrap-reverse:反向换行。
  • align-content:设置多行Flex项目在交叉轴上的对齐方式。

    • stretch:拉伸以填充容器(默认值)。
    • flex-start:顶部对齐。
    • flex-end:底部对齐。
    • center:居中对齐。
    • space-between:两端对齐,行之间的间隔相等。
    • space-around:行两侧的间隔相等。

7.4 Flex项目属性

  • order:设置Flex项目的排列顺序。

    .item {
      order: 1;
    }
    
  • flex-grow:设置Flex项目的放大比例。

    .item {
      flex-grow: 1;
    }
    
  • flex-shrink:设置Flex项目的缩小比例。

    .item {
      flex-shrink: 1;
    }
    
  • flex-basis:设置Flex项目在分配多余空间之前的初始大小。

    .item {
      flex-basis: 100px;
    }
    
  • align-self:设置单个Flex项目在交叉轴上的对齐方式。

    .item {
      align-self: center;
    }
    

Grid

8.1 Grid简介

Grid(网格布局)是CSS3中引入的一种新的布局方式,用于实现复杂的二维布局。

8.2 Grid容器与Grid项目

  • Grid容器:通过设置display: grid;display: inline-grid;将元素变为Grid容器。
  • Grid项目:Grid容器的直接子元素称为Grid项目。

8.3 Grid容器属性

  • grid-template-columns:设置网格的列宽。

    .container {
      grid-template-columns: 100px 200px 100px;
    }
    
  • grid-template-rows:设置网格的行高。

    .container {
      grid-template-rows: 100px 200px 100px;
    }
    
  • grid-template-areas:设置网格的区域。

    .container {
      grid-template-areas: 
          "header header header"
          "sidebar content content"
          "footer footer footer";
    }
    
  • grid-gap:设置网格的行间距和列间距。

    .container {
      grid-gap: 10px;
    }
    
  • justify-items:设置网格项目在单元格内的水平对齐方式。

    .container {
      justify-items: center;
    }
    
  • align-items:设置网格项目在单元格内的垂直对齐方式。

    .container {
      align-items: center;
    }
    
  • justify-content:设置网格在容器内的水平对齐方式。

    .container {
      justify-content: center;
    }
    
  • align-content:设置网格在容器内的垂直对齐方式。

    .container {
      align-content: center;
    }
    

8.4 Grid项目属性

  • grid-column-start:设置网格项目的起始列。

    .item {
      grid-column-start: 1;
    }
    
  • grid-column-end:设置网格项目的结束列。

    .item {
      grid-column-end: 3;
    }
    
  • grid-row-start:设置网格项目的起始行。

    .item {
      grid-row-start: 1;
    }
    
  • grid-row-end:设置网格项目的结束行。

    .item {
      grid-row-end: 3;
    }
    
  • grid-area:设置网格项目的区域。

    .item {
      grid-area: header;
    }
    
  • justify-self:设置单个网格项目在单元格内的水平对齐方式。

    .item {
      justify-self: center;
    }
    
  • align-self:设置单个网格项目在单元格内的垂直对齐方式。

    .item {
      align-self: center;
    }
    

响应式设计

9.1 响应式设计简介

响应式设计(Responsive Design)是一种使网页在不同设备上都能良好显示的设计方法。通过使用媒体查询、弹性布局和图片等技术,可以实现网页的自适应布局。

9.2 媒体查询

媒体查询(Media Query)是CSS3中引入的一种技术,用于根据设备的特性(如屏幕宽度、高度、分辨率等)应用不同的样式。

@media screen and (max-width: 768px) {
    body {
        background-color: lightblue;
    }
}

9.3 弹性布局

弹性布局(Flexible Layout)通过使用百分比、emrem等单位,使网页的布局能够根据屏幕大小自动调整。

.container {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
}

9.4 图片响应式

通过设置max-width: 100%;height: auto;,可以使图片在不同设备上自适应显示。

img {
    max-width: 100%;
    height: auto;
}

9.5 响应式设计框架

常用的响应式设计框架有Bootstrap、Foundation

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

css
AI