当前位置: 首页 > news >正文

《前端面试题之 CSS篇(第一集)》

目录

  • 1、CSS的盒模型
  • 2、CSS选择器及其优先级
  • 3、隐藏元素的方法有那些
  • 4、px、em、rem的区别及使用场景
  • 5、重排、重绘有什么区别
  • 6、水平垂直居中的实现
  • 7、CSS中可继承与不可继承属性有哪些
  • 8、Sass、Less 是什么?为什么要使用他们?
  • 9、CSS预处理器/后处理器是什么?为什么要使用它们?
  • 10、CSS3新特性
  • 11、rem是如何做适配的
  • 12、移动端兼容性问题
  • 13、display的属性值及其作用
  • 14、display的block、inline和inline-block的区别

1、CSS的盒模型

在这里插入图片描述

2、CSS选择器及其优先级

在这里插入图片描述

  • 对于选择器的优先级:
    内联样式:1000
    id 选择器:100
    类选择器、伪类选择器、属性选择器:10
    标签选择器、伪元素选择器:1

  • 注意事项:
    !important声明的样式的优先级最高;
    如果优先级相同,则最后出现的样式生效;
    继承得到的样式的优先级最低;
    通用选择器(*)、子选择器(>)和相邻同胞选择器(+)并不在这四个等级中,所以它们的权值都为 0 ;
    样式表的来源不同时,优先级顺序为:内联样式 > 内部样式 > 外部样式 > 浏览器用户自定义样式 >浏览器默认样式

3、隐藏元素的方法有那些

在这里插入图片描述

4、px、em、rem的区别及使用场景

在这里插入图片描述

5、重排、重绘有什么区别

在这里插入图片描述
在这里插入图片描述

6、水平垂直居中的实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7、CSS中可继承与不可继承属性有哪些

在这里插入图片描述

在这里插入图片描述

8、Sass、Less 是什么?为什么要使用他们?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9、CSS预处理器/后处理器是什么?为什么要使用它们?

在这里插入图片描述
在这里插入图片描述

10、CSS3新特性

在这里插入图片描述

11、rem是如何做适配的

在这里插入图片描述

主要功能是实现响应式布局的适配,确保在不同设备和屏幕宽度下,页面的布局和字体大小能够自适应。通过动态设置 rem单位和检测设备特性,代码可以解决高清屏上的 1px 边框问题,并确保布局的一致性。

(function flexible(window, document) {
  // 首先是一个立即执行函数,执行的时候传入参数window和document
  var docEl = document.documentElement; // 返回文档的root元素,即根元素html
  var dpr = window.devicePixelRatio || 1; // 获取设备的dpr,即当前设置下物理像素与虚拟像素的比值

  // 调整body标签的fontSize
  // 设置默认字体的大小,默认字体的大小继承自body
  function setBodyFontSize() {
    if (document.body) {
      // 如果document.body存在,则直接设置body的字体大小
      document.body.style.fontSize = (12 * dpr) + 'px';
    } else {
      // 如果document.body不存在,则等待DOM加载完成后设置
      document.addEventListener('DOMContentLoaded', setBodyFontSize);
    }
  }
  setBodyFontSize(); // 调用函数设置body的字体大小

  // 设置 1rem = viewWidth / 10
  function setRemUnit() {
    var rem = docEl.clientWidth / 10; // 计算rem的值,将viewportWidth分为10份
    docEl.style.fontSize = rem + 'px'; // 设置html元素的字体大小为rem
  }
  setRemUnit(); // 调用函数设置rem单位

  // 在页面resize或者pageshow时重新设置rem
  window.addEventListener('resize', setRemUnit); // 窗口大小变化时重新设置rem
  window.addEventListener('pageshow', function (e) {
    if (e.persisted) { // 某些浏览器,重新展示页面时,走的是页面展示缓存
      setRemUnit(); // 重新设置rem单位
    }
  });

  // 检测0.5px的支持,支持则root元素的class有hairlines
  // 解决1px在高清屏多像素问题
  if (dpr >= 2) { // 如果设备像素比大于等于2
    var fakeBody = document.createElement('body'); // 创建一个虚拟的body元素
    var testElement = document.createElement('div'); // 创建一个测试元素
    testElement.style.border = '.5px solid transparent'; // 设置测试元素的边框为0.5px
    fakeBody.appendChild(testElement); // 将测试元素添加到虚拟body中
    docEl.appendChild(fakeBody); // 将虚拟body添加到文档中
    if (testElement.offsetHeight === 1) { // 检测测试元素的高度是否为1
      docEl.classList.add('hairlines'); // 如果支持0.5px,则为html元素添加hairlines类
    }
    docEl.removeChild(fakeBody); // 移除虚拟body
  }
})(window, document);

12、移动端兼容性问题

在这里插入图片描述

13、display的属性值及其作用

在这里插入图片描述

14、display的block、inline和inline-block的区别

在这里插入图片描述

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

相关文章:

  • 一周学会Pandas2 Python数据处理与分析-Pandas2数据导出
  • data_analysis13
  • 神经网络背后的数学原理
  • 探索 Python 的 functools 模块:缓存、属性缓存与 LRU 缓存
  • Day22 -php开发01--留言板+知识点(超全局变量 文件包含 数据库操作 第三方插件)
  • 可配置多功能门芯片的12种用法推导——基于74LVC1G97芯片(附1G98、1G57、1G58、1G99用法)
  • SpringBoot3快速入门笔记
  • 漏洞报告:多短视频平台时间差举报滥用漏洞
  • Python实例题:使用Python生成分形图片
  • java基础 运算符
  • android display 笔记(十三)surfcaeflinger的DEQUEUED、QUEUED
  • android中dp和px的关系
  • 高阶函数/柯里化/纯函数
  • 常用图像滤波及色彩调节操作(Opencv)
  • 改进神经风格迁移
  • 巧用递归算法:破解编程难题的“秘密武器”
  • MySQL 5.7.30 Linux 二进制安装包详解及安装指南
  • 容器初始化Spring Boot项目原理,即web项目(war)包涉及相关类对比详解
  • Mac 下载 PicGo 的踩坑指南
  • 聊聊Spring AI的Multimodality
  • 汇编获取二进制
  • 穿梭在数字王国:Python进制转换奇遇记
  • JMeter的关联
  • 日常记录-设置新增pve的ct容器
  • 基于HTML + jQuery + Bootstrap 4实现(Web)地铁票价信息生成系统
  • Java中parallelStream并行流使用指南
  • PostgreSQL有类似oracle的move表吗
  • 哈希表系列一>存在重复元素II 存在重复元素I
  • Honeyview:快速浏览各类图像
  • 宝塔Mysql远程连接记录