高频CSS面试题

给大家推荐一个实用面试题库

1、前端面试题库 (面试必备)            推荐:★★★★★

地址:web前端面试题库

BFC

块级格式上下文(block format context)是页面一块独立的渲染区域,具有一套独立的渲染规则

  • 内部的盒子会在垂直的方向上一个接一个地放置
  • 同一个bfc内部相邻的盒子margin会发生重叠,与方向无关
  • 每个元素的左外边距和包含块的左边界相接触(从左到右),即使浮动元素也是如此(bfc的子元素不会超出包含块,但绝对定位可以)
  • 清除浮动只能清除同一BFC在它前面的元素的浮动
  • BFC就是页面上的一个隔离的独立容器,里面的元素和外部的元素互不影响
  • 计算BFC的高度时,考虑BFC所包含的所有元素,连浮动元素也参与计算;
  • bfc的区域不会与float的元素区域重叠 目的是为了形成一个相对于外界完全独立的空间,让里面的元素和外部的元素互不影响

如何创建 bfc

  • html 根元素
  • 浮动 float不为none
  • 绝对定位 position为absolute/fixed
  • 行内块元素 display为inline-block
  • overflow 不为 visible或者clip(auto/hidden)
  • diplay为flow-root
  • 弹性元素 display为flex或flex-inline
  • 表格单元格 display为table-cell
  • 表格标题 display为table-caption
  • 匿名表格单元格元素 display为table、table-row、table-row-gr藕片、table-header-group、table-footer-group、inline-table
  • contain的值为layout、content、paint
  • 网格元素 display为grid或grid-inline
  • 多列容器column-count或column-width值不为auto,且含有column-count:1的元素
  • column-span值为all的元素会创建一个新的格式化上下文,即使该元素没有包裹在一个多列容器中

bfc 的作用

  1. 清除内部或者外部的浮动
  2. 防止同一 bfc 容器中的相邻元素间的外边距重叠问题

使用场景

  1. 高度坍塌(内部浮动导致的问题)
<style>
    .father{
      background-color:red;
      /* 解决 */
      /* display:flow-root */
      /* overflow:auto */
    }
    .son1{
      background-color: blue;
      width: 100px;
      height: 200px;
      float: left;

    }
    .son2{
      background-color: green;
      width: 200px;
      height: 100px;
    }
  </style>
</head>
<body>
  <div class="father">
    <div class="son1"></div>
    <div class="son2"></div>
  </div>
</body>

截屏2023-08-19 下午11.06.19.png

 2. 外边距折叠

  1. 外边距合并
  2. 三栏布局
<html>
	<style type="text/css">
  .left{
    float: left;
    width: 200px;
    height: 100px;
    background-color: green;
  }  
 .right{
    float: right;
    width: 200px;
    height: 100px;
    background-color: pink;
  }
  .center{
    overflow: hidden;
    /* 如果不写,center的width和wrapper的width一样 */
    height: 100px;
    background-color: yellow;
  }
  </style>
	</head>
	<body>
       <div class="wrapper">
            <div class="left"></div>
            <div class="right"></div>
            <div class="center"></div>
    </div>
	</body>
</html>

截屏2023-08-20 上午3.00.23.png

居中

定宽高

  • absolute+负margin
  • absolute+margin auto
  • absolute+calc 不定宽高
  • absolute+transform
  • lineheight
  • writing-mode
  • table
  • css-table
  • flex
  • grid

absolute+负margin

<div class="father">
  <div class="son"></div>
</div>
.father {
  position: relative;
}
.son {
  position: absolute;
  left: 50%;
  top: 50%;
  margin-left: -(父元素宽度-子元素宽度)/2 px;
  margin-top: -(父元素高度-子元素高度)/2 px;
}

absolute+auto

<div class="father">
  <div class="son"></div>
</div>
   .father{
      position: relative;
      width: 200px;
      height: 200px;
      background-color: red;
    }
    .son{
      background-color: black;
      position: absolute;
      width: 100px;
      height: 100px;
      left: 0;
      right: 0;
      top: 0;
      bottom: 0;
      margin: auto;
    }

absolute+cale

<div class="father">
  <div class="son"></div>
</div>
.father {
  width: 200px;
  height: 200px;
  position: relative;
}
.son {
    width: 100px;
      height: 100px;
  position: absolute;
  top:cale(50% - 50px);
  left:cale(50% - 50px);
}

absollute+transform

.father {
  position: relative;
}
.son {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

flex

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

grid

.father {
  display: grid;
}
.son {
  justify-self: center;
  align-self: center;
}

一些概念

  • 屏幕尺寸:用对角来计算。1英寸=2.54厘米 

  • 像素:硬件和软件所能控制的最小单位。
  • 屏幕分辨率:一个屏幕具体由多少个像素点组成
  • 物理像素:设备的像素点个数
  • 逻辑像素:让n个像素当一个像素使用
  • 视觉视口 

  • 理想视口:所谓理想视口,即页面绘制区域可以完美适配设备宽度的视口大小,不需要出现滚动条即可正常查看网站的所有内容,且文字图片清晰,如所有iphone的理想视口宽度都为320px,安卓设备的理想视口有320px、360px等等。 width=device-width 宽度等于屏幕宽度 initial-scale=1缩放等于1 maximum-scale=2最大缩放等于2 minimum-scale=0.5最小缩放等于0.5 user-scalable=no不允许缩放
<meta name="viewport" content="width=device-width,initial-scale=1" />

移动端适配方案

rem

<head>
  <meta name="viewport" content="width=device-width,initial-scale=1.0" user-scalable="no"/>
  <style>
    .box{
      width:10rem;
    }
  </style>
  <script>
    function setRootRem(){
      const root = document.documentElement;
      const scale = root.clientWidth / 10;
      root.style.fontSize = scale + 'px'
    }
    setRootRem()
    window.addEventListener('resize', setRootRem)
  </script>
</head>

但这样我们会发现在写布局的时候会非常复杂,也就是你需要自己手动去计算一下对应的rem值,比如上面的font-size设计稿上是20px,那我们就要计算一下20px对应的rem是多少,按我们上面的规则,1px = 1/37.5rem,所以20px应该对应20/37.5 = 0.53rem。所以这种方案我们通常搭配着CSS预处理器使用。 rem.less

@device-width:375;
@rem:(@device-width/10rem)

然后将@rem配置成less全局变量

font-size:(24/@rem)
特点
  • 适配原理稍复杂
  • 需要使用JS
  • 设计稿标注的px换算到rem
  • 方案灵活,既能实现整体缩放,又能实现局部不缩放

vw、vh适配

rem.less

@device-width:375;
@vw:(100vm/@device-width)
font-size: 16*@vw
特点
  • 适配原理简单
  • 不需要JS即可适配
  • 设计稿标注的px换算到vw
  • 方案灵活,既然实现整体缩放,又能实现局部不缩放

px

export function initViewport() {
    const width = 375;  // 设计稿宽度
    const scale = window.innerWidth / width
    // console.log('scale', scale)
    let meta = document.querySelector('meta[name=viewport]')
    let content = `width=${width}, init-scale=${scale}, user-scalable=no`
    if(!meta) {
        meta = document.createElement('meta')
        meta.setAttribute('name', 'viewport')
        document.head.appendChild(meta)
    }
    meta.setAttribute('content', content)
}
  • 适配原理简单
  • 需要JS
  • 无需转换
  • 方案死板,只能实现页面级别肢体缩放

CSS3动画

CSS3动画分为transition、animation、transform

transition(过度)

transition: transition-property transition-duration transitino-timing-function transition-delay

包含四个属性 transition-property:执行变换的属性 transition-duration:变换延续的时间 transitino-timing-function:在延续的时间段变换的速率变化 transition-delay:变换延迟时间

transitino-timing-function具体值
  • linear 缺点:
  • 不能重复
  • height:auto不会产生动画效果
  • 不支持所有的属性
支持的属性
  • background-color
  • background-position
  • border-color
  • border-width
  • border-spacing
  • bottom
  • clip
  • color
  • font-size
  • font-weight
  • height
  • left
  • letter-spacing
  • line-height
  • margin
  • max-height
  • max-width
  • min-height
  • min-width

animation

keyframes规则用于定义动画的每个阶段。通过keyframe规则,可以指定动画的每个关键帧。

@keyframes example{
  0%   {left: 0; top:0px;}
  50%  {left:200px; top:200px;}
  100% {left: 0px; top:0px;}
}
div {
  animation-name: example;
  animation-duration: 5s;
  animation-iteration-count: infinite;
  animation-direction:alternate;
	animation-play-state:running;
}
详细属性
  • animation-name:指定应用的动画名称
  • animation-duration:指定动画的持续时间
  • animation-timing-function:指定动画的速度曲线
  • animation-delay: 指定动画开始之前的延长时间
  • animation-interation-count: 指定动画应该重复的速度
  • animation-direction: 指定动画的方向
  • animation-fill-mode: 指定动画在执行之前和之后如何应用样式
  • animation-play-state:指定动画运行或暂停

transform(变换)

旋转

2D transform:rotate(angle)顺时针 3D 

 transform:

  • rotate(x,y,z,angle) x轴y轴z轴 angle:旋转角度
  • rotateX(angle)
  • rotateY(angle)
  • rotateZ(angle)
缩放

2D transform:scale(x,y) 3D transform:scale3D(x,y,z) scaleX() scaleY() scaleZ()

倾斜

stransform:skew(x) stransform:skew(x,y)

移动

transform:translate(x) transform:translate(x,y) transform:translate(x,y,z) transform:translateX() transform:translateY() transform:translateZ()

给大家推荐一个实用面试题库

1、前端面试题库 (面试必备)            推荐:★★★★★

地址:web前端面试题库

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

吊打Fast Request还免费? 这款插件真心好用!

今天给大家推荐一款IDEA插件&#xff1a;Apipost Helper&#xff0c;比Fast Request更好用并且完全免费&#xff01;三大亮点功能&#xff1a;写完代码IDEA内一键生成API文档&#xff1b;写完代码IDEA内一键调试&#xff0c;&#xff1b;生成API目录树&#xff0c;双击即可快速…

[RK3568][Android12.0]--- 系统自带预置第三方APK方法

Platform: RK3568 OS: Android 12.0 Kernel: 4.19 Rockchip默认提供了机制来预置第三方APK, 方法很简单&#xff1a; 1. 在device/rockchip/rk3568创建preinstall目录(如果要可卸载&#xff0c;那就创建preinstall_del目录) 2. 将你要预安装的APK放进此目录即可 preinstall 不…

wind版本elasticdump执行报错 unexpected token ‘ in json at

输入的格式不对&#xff1a; 之前&#xff0c;json格式不对&#xff1a; elasticdump --inputhttp://***:9200/d_*_news, --output/home/zyyt/es_data_bak/0714.json --searchBody{"query":{"bool":{"must":[{"term":{"languag…

【算法练习Day48】回文子串最长回文子序列

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 回文子串最长回文子序列总结…

SparkSQL自定义UDF函数

需求&#xff1a;员工id正常为8位&#xff0c;对于不满8位的员工id左侧用0补齐 import org.apache.spark.sql.{DataFrame, SparkSession}object DataSetCreate {def main(args: Array[String]): Unit {val spark SparkSession.builder().appName("test").master(&…

excel用RAND函数、或者RAND.NV函数生成随机数、这两个函数的区别

用RAND函数生成大于0小于1的随机数 插入-》函数&#xff1a; 选择RAND函数&#xff1a; 点击“继续”&#xff1a; 点击“确定”&#xff0c;就生成随机数了&#xff1a; 用RAND.NV函数生成一个大于0小于1的随机数 步骤跟RAND函数相同&#xff0c;只不过选择的是RAN…

Eclipse使用配置tomcat服务:Server配置

目标&#xff1a; 在Eclipse中&#xff0c;默认会把Web项目放到Eclipse的工作空间下 的.metadata\.plugins\org.eclipse.wst.server.core\tmp0(或者是tmp1)\wtpwebapps\下 &#xff0c;如果现在Eclipse中有名为imsmanagere的项目&#xff0c;将它按以前的方式部署到服务器上&am…

2023.11.14使用bootstrap制作一个简洁的前端注册登录页

2023.11.14使用bootstrap制作一个简洁的前端注册登录页 比较简洁的登录页&#xff0c;主要是为自己开发的一些平台页面做测试用&#xff0c;前端具备功能如下&#xff1a; &#xff08;1&#xff09;输入用户名、密码&#xff0c;需补充后端验证代码。 &#xff08;2&#xff…

下载文件时的文件名中文乱码问题,文件名丢失

涉及到的java代码如下&#xff0c;下载的时候文件名为中文 package com.example.springboot.service.impl;import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringU…

【nlp】2.4 GRU模型

GRU模型 1 GRU介绍2 GRU的内部结构图2.1 GRU结构分析2.2 Bi-GRU介绍2.3 使用Pytorch构建GRU模型2.4 GRU优缺点3 RNN及其变体1 GRU介绍 GRU(Gated Recurrent Unit)也称门控循环单元结构, 它也是传统RNN的变体, 同LSTM一样能够有效捕捉长序列之间的语义关联, 缓解梯度消失或爆…

上海国际集团党委副书记、总裁刘信义一行莅临ZStack调研指导

11月10日&#xff0c;上海国际集团有限公司党委副书记、总裁刘信义率上海国际集团、上海国资经营及国鑫创投领导莅临上海云轴信息科技有限公司&#xff08;简称“云轴科技ZStack”&#xff09;调研指导&#xff0c;云轴科技ZStack创始人、董事长张鑫&#xff0c;携公司管理团队…

最新宝塔反代openai官方API开发接口详细搭建教程,解决502 Bad Gateway问题

一、前言 宝塔反代openai官方API接口详细教程&#xff0c;实现国内使用ChatGPT502 Bad Gateway问题解决&#xff0c; 此方法最简单快捷&#xff0c;没有复杂步骤&#xff0c;不容易出错&#xff0c;即最简单&#xff0c;零代码、零部署的方法。 二、实现前提 一台海外服务器…

鸿蒙系统扫盲(一):鸿蒙OS和开源鸿蒙什么关系?

我们经常提到鸿蒙&#xff0c;但是大家都分不清鸿蒙OS&#xff08;Harmony OS&#xff09;和 开源鸿蒙&#xff08;Open Harmony&#xff09;的区别&#xff1f; 1.开源鸿蒙&#xff08;Open Harmony&#xff09; 鸿蒙系统愿来的设计初衷&#xff0c;就是让所有设备都可以运行…

【C++】join ()和detach ()函数详解和示例

简单的来说&#xff0c;join ()方法建立的线程具有阻碍作用&#xff0c;该线程不结束&#xff0c;另一些函数就无法运行。detach ()方法建立的线程&#xff0c;可以和另一些函数同时进行。下面以示例进行详细说明&#xff0c;以帮助大家理解和使用。 目录 join ()detach () jo…

asp.net core mvc之 局部视图 和视图组件

一、局部视图是什么&#xff1f; 1、局部视图也是 .cshtml文件 2、将重复使用的内容&#xff08;如&#xff1a;右侧栏&#xff09;&#xff0c;做出局部视图&#xff0c;供其他视图调用 3、局部视图不会执行 _ViewStart.cshtml 二、局部视图示例 1、在 /Views/Shared目录右…

python合并多个CSV文件成一个

之前写的是合并Excel&#xff0c;这次是操作CSV文件&#xff0c;可以看到文件非常多 每一个文件里面前两行是表头&#xff0c;无关信息&#xff0c;因此合并的时候需要略过&#xff1a; python代码如下&#xff1a; import os import csv# 输入文件夹路径和输出文件路径 inp…

印刷设备丝杆选择研磨杆还是冷轧杆好?

在印刷设备中&#xff0c;选择研磨杆还是冷轧杆取决于具体的使用需求和设备要求。以下是关于两种丝杆选择的要点&#xff1a; 1、精度要求&#xff1a;研磨杆通常具有更高的制造精度&#xff0c;能够有效保证印刷设备的精度和稳定性。研磨杆经过精细研磨和校准&#xff0c;具有…

Python语言:文件的操作与使用

Python语言可以对电脑中的文件进行一系列操作&#xff0c;包括文件的打开与关闭&#xff0c;文件内容的读取和追加等。 打开文件 语法&#xff1a;使用open函数 使用python语言的内置open函数打开一个文件&#xff0c;里面有三个参数可以指定文件的路径&#xff0c;操作方式&a…

python实现双臂老虎机k-armed-bandit

老虎机&#xff0c;投入钱币会随机返还钱币&#xff08;reward&#xff09; 这里设置两台老虎机&#xff0c;一台均值500&#xff0c;标准差5&#xff0c;一台均值550&#xff0c;标准差10 初始值均为998&#xff0c;更新规则为reward之和/轮数 最后结果会在均值附近收敛 impo…

山东省技能兴鲁网络安全大赛 web方向

文章目录 购买FLAG日志里的FLAG一只小蜜蜂 购买FLAG 随便登录admin进去&#xff0c;发现有充值和购买功能 但是试试充值发现不行 购买页面如下 bp抓包看看&#xff0c;发现value值可控 我们试试将其改为正数&#xff0c;发现成功 购买得到flag 日志里的FLAG <?phphi…