前端面试题之CSS布局问题

css 常见面试题 #box { 阅读详情
AI摘要

本文详细介绍了如何使用绝对定位、grid、flex、表格布局等方法实现HTML中垂直居中、两栏布局(左右固定自适应)和三栏布局(左右固定中间自适应)。从CSS技巧到实战案例,涵盖了前端开发者必备的布局知识。

垂直居中DIV

HTML部分

    <div class="father">
        <div class="son">我是垂直居中的div</div>
    </div>

这里简单给出几种
1.绝对定位(盒子宽高已知)

        .father {
            position: relative;
            width: 500px;
            height: 500px;
            background-color: red;
        }
        
        .son {
            position: absolute;
            left: 50%;
            top: 50%;
            margin-left: -150px;(-盒子一半宽度)
            margin-top: -150px;(-盒子一半高度) 
            width: 300px;
            height:300px;
            background-color: blue;
        }

2.绝对定位(宽高已知)

        .father {
            position: relative;
            width: 500px;
            height: 500px;
            background-color: red;
        }
        
        .son{
            position:absolute;
            margin:auto;
            top:0; left:0; bottom:0;right:0;
            width: 300px;
            height:300px;
            background-color: blue;
        }

3.定位 (宽高未知)

        .son {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background-color: blue;
        }

4.grid布局(父元素设置,宽高未知)(兼容性ie 10以上支持)

        .father {
            display: grid;
            align-content: center;
            justify-content: center; //等同于place-content:center;
            width: 500px;
            height: 500px;
            background-color: red;
        }

5.flex布局(父元素设置,宽高未知)(兼容性ie 11以上支持)

        .father {
            display: flex;
            align-items: center;
            justify-content: center;
            width: 500px;
            height: 500px;
            background-color: red;
        }

6.表格布局(父元素设置,宽高未知)(兼容性较好)

        .father {
            display:table-cell
            text-align: center;
            vertical-align: middle
            width: 500px;
            height: 500px;
            background-color: red;
        }
        .son {
       		display: inline-block;
        }

两栏布局左边固定右边自适应

这与右边固定左边自适应,上固定下自适应是一个道理。

HTML部分

        <div class="father">
            <div class="left"></div>
            <div class="right"></div>
        </div>

1.float布局

            .left {
                width: 200px;
                height: 200px;
                float: left;
                background-color: blue;
            }
            .right {
                margin-left: 200px;
                height: 200px;
                background-color: red;
            }

2.绝对定位

            .father {
                position: relative;
                height: 200px;
            }
            
            .left {
                position:absolute;
                width: 200px;
                height: 100%;
                float: left;
                background-color: blue;
            }

            .right {
                position:absolute;
                height: 100%;
                left:200px;
                right: 0;
                background-color: red;
            }

3.flex布局

            .father {
                height: 300px;
                width: 100%;
                display: flex;
            }

            .left {
                width: 300px;
                height: 100%;
                background-color: blue;
            }

            .right {
                flex: 1;
                height: 100%;
                background-color: red;
            }

4.grid布局
HTML部分

        <div class="father">
            <div class="left"></div> 
            <div class="right"></div>
        </div>

CSS部分

.father {
  display: grid;
  grid-template-columns: 100px auto; //左边列的列宽100px,右边自适应
  grid-gap: 5px;
  grid-auto-rows: 50px; 
}
.left, 
.right{
  hight:100px;
}
.left{
  background:red;
} 
.right{
  background:yellow;
}

三栏布局左右固定中自适应

这与左中固定右边自适应,中右固定左边自适应,以及上下固定中间自适应是一个道理

HTML部分

        <div class="father">
            <div class="left"></div>
            <div class="right"></div>
            <div class="main"> </div>
        </div>

1.float布局

        .father{
            height: 50px;
             div{
                height: 100%;
            }
        }

        .left {
            width: 200px;
            float: left;
            background-color: red
        }

        .main {
            margin-left: 200px;
            margin-right: 200px;
            background-color: blue
        }

        .right {
            float: right;
            width: 200px;
            background-color: yellow
        }

2.绝对定位

        .father{
            position: relative;
            height: 50px;
              div{
                position: absolute;
                height: 100%;
            }
        }

        .left {
            left: 0;
            width: 200px;
            background-color: red
        }

        .main {
            left: 200px;
            right: 200px;
            background-color: blue
        }

        .right {
            right: 0;
            width: 200px;
            background-color: yellow
        }

3.flex布局
HTML部分

        <div class="father">
            <div class="left"></div>
            <div class="main"> </div>
            <div class="right"></div>
        </div>

CSS部分

        .father {
            display: flex;
            height: 50px;
             div{
                height: 100%;
            }
        }

        .left {
            width: 200px;
            background-color: red
        }

        .main {
            flex: 1;
            background-color: blue
        }

        .right {
            width: 200px;
            background-color: yellow
        }

4.grid布局
HTML部分

        <div class="father">
            <div class="left"></div>
            <div class="main"> </div>
            <div class="right"></div>
        </div>

CSS部分

.father {
  display: grid;
  grid-template-columns: 100px auto 100px; //左、右列的列宽100px,中间自适应
  grid-gap: 5px;
  grid-auto-rows: 50px; 
}
.left,
.main,
.right{
  hight:100px;
}
.left{
  background:red;
}
.main{
  background:blue;
}
.right{
  background:yellow;
}

设置 div下面的两个div元素水平居中

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

HTML + CSS部分

    <style>
        .box {
            border: 1px solid red;
            width: 100%;
            height: 50vh; 
        }

        .item {
            border: 1px solid green;
            width: 200px;
            height: 200px;
        } 
    </style>
    <div class="box">
        <div class="item left"></div>
        <div class="item right"></div>
    </div>
  1. 绝对定位
     .box { 
            position: relative;
        } 
        .item { 
            position: absolute;
            top: 0;
            bottom: 0;
            right: 0;
            margin: auto;
        }
        .left{
            left:  -200px
        }
        .right{
            left:  200px
        }

平移

     .box { 
            position: relative;
        } 
        .item { 
            position: absolute;
            top: 50%;
            left: 50%;
        }
        .left {
            transform: translate(-200px, -50%);
        } 
        .right {
            transform: translate(0, -50%);
        }
  1. flex
    父元素直接设置flex
     .box { 
            display: flex;
            align-items: center;
            justify-content: center;
        }
  1. grid
        .box { 
            display: grid;
            grid-template-columns: repeat(2, 200px);  //每一列的列宽200px,重复两次
            justify-content: center;  //水平居中
            align-content: center;      //垂直居中
        }

设置 div下面的两个div元素垂直水平居中

效果图
在这里插入图片描述
HTML + CSS部分

    <style>
        .box {
            border: 1px solid red;
            width: 100%;
            height: 50vh; 
        }

        .item {
            border: 1px solid green;
            width: 200px;
            height: 200px;
        } 
    </style>
    <div class="box">
        <div class="item left"></div>
        <div class="item right"></div>
    </div>
  1. 绝对定位
        .box {
            border: 1px solid red;
            width: 100%;
            height: 80vh;
            position: relative;
        }

        .item {
            border: 1px solid green;
            width: 200px;
            height: 200px;
            position: absolute;
            left: 0;
            right: 0;
            bottom: 0;
            margin: auto;
        }

        .left {
            top: -200px;
        }

        .right {
            top: 200px;
        }
  1. flex
        .box { 
            display: flex;
            justify-content: center;
            align-items: center;
            flex-direction: column; //主轴排列方向
        }
  1. grid
        .box {
            border: 1px solid red;
            width: 100%;
            height: 80vh;
            display: grid;
            justify-content: center;
            align-content: center;
            grid-template-rows: repeat(2, 200px); ///每一行的宽为200px,重复两次
        }

总结

这里列出的是一些我比较常用的方法,
其他的像table布局,网格布局可以看阮一峰——网格布局教程
想了解更多关于flex布局可以看css flex 布局详解
关于gird布局可以看css grid布局详解
如有不足之处,请指出。
在这里插入图片描述

2025 高效抓取雪球社区数据:自动化导出Excel与PDF全攻略 本文详细介绍了2025年高效自动化抓取雪球社区数据的完整方案。通过Python脚本,用户可自动抓取帖子列表数据并导出为结构化的Excel表格,同时批量将帖子内容保存为PDF文档,并支持合并与添加书签,极大提升投资研究和信息整理的效率。 阅读详情

相关推荐

广工计组f4b 8位12指令微程序CPU设计实验报告(内含可通过代码以及波形图)

实验目的:模型机是计算机的缩细模型,通过它可以理解计算机整机的结构和功能,理解CPU,存储器,中断控制器,接口的结构及实现逻辑和各部件之前的接口关系。本实验是设计一个8位模型计算机。:一条机器指令可以分解成一个微操作序列,这些微操作是计算机最基本的,不可再细分的操作。:在微程序控制的计算机中。将控制部件向执行部件发出的各种控制命令成为微命令,它是构成控制序列的最小单位。微命令和微操作是一一对应的。微命令是微操作的控制信号,微操作微命令的执行过程。2.:微指令是若干微命令的集合。

weixin_63692154的博客 4705

CSS面试题整理汇总

CSS面试题汇总

山雀的博客 8240

LangChain入门(二)-通过 Google 搜索并返回答案

并复制他给我们生成 api key。(博主使用了GitHub账号登录)-邮箱验证-手机号验证-订阅-api-key。Serpapi 提供了 google 搜索的 api 接口。首先需要我们到 Serpapi 官网上注册一个用户,

Good Luck 1万+

前端布局面典型案例 面试题

前端布局典型案例 一、题目要求及页面效果示意图 1)如下图布局,分为上下两栏,下面一栏又分左右两栏。上栏宽度为100%、高度为200px,下栏左侧栏宽度为100px,下栏右侧栏根据页面宽度自适应。请写出具体的HTML和css代码。 2)当浏览器宽度减少到700px后,顶部栏高度变为50px,下栏左侧栏消失,下栏右侧栏宽度为100%。 二、考点分析 基础的布局知识,可以用伸缩布局和定位等多种方法实现。 媒体查询,媒体查询根据屏幕尺寸的变化进行动态适配,语法为 @media (条件) {}。 三、解答

初辰的博客 1382

从加权最小二乘(WLS)到IAA:手把手推导DOA估计中的迭代自适应核心公式

本文深入解析了从加权最小二乘(WLS)到迭代自适应算法(IAA)在DOA估计中的数学推导与应用。通过动态调整加权矩阵,IAA在低快拍数、相干源等复杂场景中展现出卓越性能,显著提升角度分辨率和检测概率。文章详细介绍了算法核心步骤、工程优化策略及前沿发展,为雷达探测和无线通信领域提供重要参考。

weixin_30847865的博客 290

别再用UE5默认材质:用Substance Painter一招提升写实感

今天,我就把这套从模型准备到引擎最终呈现的全流程技巧毫无保留地分享出来,这套方法不仅能让你的作品细节炸裂,更能让你理解次世代PBR(Physically Based Rendering)材质的底层逻辑。

海外旅居设计师,15年设计经验。 1325

前端面试题之布局

面试题之布局解决方案 前端面试的时候关于布局方面总是会问这样一个问题—假设已知高度,完成三栏布局,两边栏,定宽,中间栏自适应宽度。 这个问题总共有哪几种方案解决呢?

simeng-han的博客 3706

【PLC】三菱plc控件安装 component Movedata had the following error ... Error Number:-119

Windows 10 专业版/企业版本版本号:22H2操作系统内部版本:19045.3448。

少莫千华 8002

最全面试题CSS(含答案)

最全面试题CSS(含答案)

xiaozgm的博客 2万+

STM32鱼塘水质监测系统设计与实现

物联网技术在农业领域的应用正逐步深入,其中传感器网络作为关键基础设施,通过实时数据采集与传输实现环境监测。基于STM32微控制器的嵌入式系统因其高性能和低功耗特性,成为物联网终端设备的理想选择。该系统通过DS18B20水温传感器、PH传感器和浊度传感器组成的多参数检测网络,配合4G通信模块实现水质数据的远程监控。在农业物联网场景中,这种解决方案不仅大幅降低了传统人工检测的成本,更能通过实时预警有效预防养殖损失。本文介绍的鱼塘水质监测系统正是这一技术的典型应用,展示了如何通过STM32和常见传感器构建高性价比

weixin_42173218的博客 621

PyTorch强化学习实战(1)——强化学习(Reinforcement Learning,RL)详解

在本节中,开始进入探索强化学习 (Reinforcement Learning, RL) 之旅,首先剖析了强化学习的独特之处及其与监督学习、无监督学习范式的关系。随后系统学习了强化学习的基础形式化框架及其内部关联机制,并深入讲解了马尔可夫过程 (Markov Process, MP)、马尔可夫奖励过程 (Markov Reward Process, MRP) 和马尔可夫决策过程 (Markov Decision Process, MDP),为后续学习奠定基础。

盼小辉丶的博客 2053

前端面试题之CSS布局问题,前端framework面试题

=就答题情况而言,第一问100%都可以回答正确,第二问大概只有50%正确率,第三问能回答正确的就不多了,第四问再正确就非常非常少了。其实此题并没有太多刁钻匪夷所思的用法,都是一些可能会遇到的场景,而大多数人但凡有1年到2年的工作经验都应该完全正确才对。只能说有一些人太急躁太轻视了,希望大家通过此文了解js一些特性。伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

2401_84006689的博客 805

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

前端面试题之CSS布局问题(3)

4..father {两栏布局左边固定右边自适应这与右边固定左边自适应,上固定下自适应是一个道理。HTML部分1..left {.right {2..father {.left {.right {left:200px;right: 0;三栏布局左右固定中自适应这与左中固定右边自适应,中右固定左边自适应,以及上下固定中间自适应是一个道理。

2401_84447362的博客 105

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

前端面试题之CSS布局问题(2)

根据路线图上的重点去进行有针对性的学习,在学习过程中,学会写笔记,做总结。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】html5 / css3 学习笔记JavaScript 学习笔记Vue 学习笔记。

2401_84447362的博客 353

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

css两个absolute显示问题_前端面试题:关于CSS布局

金三银四求职季各位同学面试是否顺利呢?在这关键时刻小狮送上前端面试题一份有用就赶紧收藏起来吧!!!1Q:三栏布局,高度已知,左右两栏固定,中间自适应的三栏布局有几种实现方式,各自的优缺点是什么? .float .left { float: left; width: 300px; background: gre...

weixin_42361796的博客 219

CSS面试常见布局问题,2024中级前端面试题

定位就是 中间的元素margin : 0 200px 两边都是200px 中间自适应即可, 然后两边用 left:0 和right:0 来放在两边 ,这种解决办法是仅次于flex的难度。我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。/*为了显示 看效果 */

m0_58269520的博客 534

2024年最新前端面试题之CSS布局问题_h5 form data,大佬推荐

根据路线图上的重点去进行有针对性的学习,在学习过程中,学会写笔记,做总结。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】html5 / css3 学习笔记JavaScript 学习笔记Vue 学习笔记JavaScript 学习笔记Vue 学习笔记。

2401_84438160的博客 371

前端面试题之CSS布局问题(1),2024年最新关于Flutter文本组件Widget的全面解读

这与左中固定右边自适应,中右固定左边自适应,以及上下固定中间自适应是一个道理。(img-CY1Wm8i8-1713072263020)](img-vMZzHwo9-1713072263020)]这与右边固定左边自适应,上固定下自适应是一个道理。两栏布局左边固定右边自适应。三栏布局左右固定中自适应。

m0_60635176的博客 492

2024年Web前端最全前端面试题之CSS布局问题_h5 form data(2),2024最新大厂前端面试真题解析

为了帮助大家更好温习重点知识、更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。前端面试题汇总开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】JavaScript性能linux。

2401_84447362的博客 299

前端面试题 - css布局中对 BFC 的了解?BFC 的应用?BFC 的创建?解决float高度问题 margin重叠问题

哈喽,各位小伙伴好!今天来整理下前端关于css布局的一个知识点 - BFC(Block fomatting context),如果知识点梳理有出错的地方,望伙伴们帮忙指出,一起进步~ 一、什么是 BFC BFC 可以理解为建立一个布局容器,容器里按自己的方式来布局,且与容器外界的元素互不影响。 二、BFC 特性 1.BFC里的布局跟常规流里的一样,例如盒子会在垂直方向排列。 2.属于同一个BF...

大华阿大华的博客 437

2024年最新HTML + CSS 布局技巧总结 (1)(1),三面蚂蚁核心金融部

除了简历做到位,面试题也必不可少,整理了些题目,前面有117道汇总的面试到的题目,后面包括了HTML、CSS、JS、ES6、vue、微信小程序、项目类问题、笔试编程类题等专题。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】可参考官方文档(2.< img />标签的alt属性:为图片增加alt属性3.样式和内容分离:将样式和结构分离,不使用行类样式4.单的name和id:表单及表单元素要求设置name和id属性5.CSS + DIV布局6.面的浏览器兼容性。

2401_84447390的博客 720

CSS基础知识,【无偿分享】,web开发工程师面试题

object-fitfill:压缩图片到和盒子一样大contain:维持比例,留白cover:最好,位置比例,显示中间none:没用scale-down:按尺寸css图层和硬件加速有了解吗?🧡flex布局都有哪些属性、flex简写相当于哪几个属性?

m0_60607971的博客 895

CSS常见面试题

前端CSS常见面试题 Flex List item flex布局: 即弹性盒子布局,是给父元素添加flex属性,以控制子元素的位置和排列 主轴和侧轴 主轴:即沿着flex元素排列方向所在的轴 侧轴:垂直于flex元素排列方向的轴 父元素的属性设置再父元素中,控制的是子元素的排列 1. flex-direction:设置主轴方向,设置了其中一个为主轴,则另一个为侧轴 row 水平排列,沿着X轴方向从左到右排列,默认值 column 垂直排列,沿着Y轴方向从上到下排列 row-reverse 水平排列,沿

洋茄子炒鸡蛋的博客 1333

2.前端面试题之 CSS 篇

以 iPhone XS 为例,当写 CSS 代码时,针对于单位 px,其宽度为 414px & 896px,也就是说当赋予一个 DIV元素宽度为 414px,这个 DIV 就会填满手机的宽度;而如果有一把尺子来实际测量这部手机的物理像素,实际为 1242*2688 物理像素;经过计算可知,1242/414=3,也就是说,在单边上,一个逻辑像素=3个物理像素,就说这个屏幕的像素密度为 3,也就是常说的 3 倍屏。

前端杂文 1035

前端基础:100道CSS面试题总结

前言 CSS 是层叠样式表(Cascading Style Sheets)的简称。CSS 主要作用是美化网页、布局页面。CSS 规则主要由两个主要部分构成:选择器及一条或多条声明。在前端基础面试中,CSS 是不会缺席的,下面就给大家分享下 CSS 的常见面试题。 CSS面试题: 介绍一下标准的 CSS 的盒子模型?低版本 IE 的盒子模型有什么不同的? CSS 选择符有哪些? ::before 和:after 中双冒号和单冒号有什么区别?解释一下这 2 个伪元素的作用。 伪类与伪元素的区别 CSS 中

QIANDXX的博客 1245
上一篇: 如何根据id关键字合并多个数组,并返回一个新的数组
下一篇: 常见的HTTP状态码
Jet_closer
博客等级 码龄7年 568粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jet_closer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值