面试官:用 CSS 实现一个元素的水平垂直居中,写出你能想到的所有答案

简介: 面试官:用 CSS 实现一个元素的水平垂直居中,写出你能想到的所有答案

前言

前端面试中,“如何实现一个元素水平垂直居中”一直是各大面试官青睐的题目,这篇文章将讲解 5 种实现水平垂直居中的方法,帮你轻松过这关。

5 种实现元素水平垂直居中的方法

1.使用 flexbox 布局

该方案的思路是将父元素设置为display: flex;,并使用align-items: center; justify-content: center;将子元素在水平和垂直方向上居中。

代码如下

.parent {
  display: flex;
  align-items: center;
  justify-content: center;
}
.child {
  width: 200px;
  height: 200px;
}
复制代码

2.使用 grid 布局

该方案的思路是将父元素设置为display: grid;,并使用place-items: center;将子元素在水平和垂直方向上居中。

代码如下

.parent {
  display: grid;
  place-items: center;
}
.child {
  width: 200px;
  height: 200px;
}
复制代码

3.使用绝对定位和负边距

该方案的思路是将元素向上和向左移动一半的宽度和高度,使其在父元素的中心。由于绝对定位是相对于最近的已定位祖先元素,因此必须确保父元素或祖先元素具有position: relative;position: absolute;属性。元素必须具有已知的宽度和高度。

代码如下(CodePen 示例):

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 200px;
  height: 200px;
  margin-top: -100px;
  margin-left: -100px;
}
复制代码

4.使用 transform 属性

该方案的思路是将元素向上和向左移动一半的宽度和高度,使其在父元素的中心。由于transform: translate(-50%, -50%);是相对于元素自身的宽度和高度进行的,因此不需要知道元素的宽度和高度。元素必须设置为绝对定位。

代码如下

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
复制代码

5.使用table布局

该方案的思路是将父元素设置为display: table;,将子元素设置为display: table-cell; vertical-align: middle;,并使用text-align: center;将子元素在水平方向上居中。

代码如下

.parent {
  display: table;
  text-align: center;
}
.child {
  display: table-cell;
  vertical-align: middle;
}

 

大厂面试题分享 面试题库

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

地址:前端面试题库  web前端面试题库 VS java后端面试题库大全

相关文章
|
1月前
|
前端开发 JavaScript
如何使用CSS过渡实现页面元素的淡入淡出效果?
如何使用CSS过渡实现页面元素的淡入淡出效果?
122 79
|
4月前
|
前端开发 JavaScript
如何利用 CSS3 动画实现元素的淡入淡出效果?
在上述代码中,定义了一个名为 `fade-in` 的CSS类,其初始透明度为0,并设置了淡入的过渡效果。当通过JavaScript为元素添加 `active` 类时,元素的透明度变为1,实现淡入效果;当再次点击按钮移除 `active` 类时,元素又会逐渐淡出。通过这种方式,可以根据用户的操作灵活地控制元素的淡入淡出效果。
688 60
|
4月前
|
数据采集 前端开发 JavaScript
捕捉页面的关键元素:用CSS选择器与Puppeteer自动抓取
本文介绍了如何使用 Puppeteer 结合 CSS 选择器抓取动态网页中的关键元素,以亚航网站的特价机票信息为例,通过设置代理 IP、User-Agent 和 Cookie 等技术手段,有效提升爬虫策略,实现高效、稳定的爬取。
185 5
捕捉页面的关键元素:用CSS选择器与Puppeteer自动抓取
|
4月前
|
前端开发 JavaScript UED
CSS滚动效果和视差滚动的原理、应用及其对用户体验的影响。从平滑滚动到元素跟随,再到滚动触发动画
本文探讨了CSS滚动效果和视差滚动的原理、应用及其对用户体验的影响。从平滑滚动到元素跟随,再到滚动触发动画,这些效果增强了页面的吸引力和互动性。视差滚动通过不同层次元素的差异化移动,增加了页面的深度感和沉浸感。文章还讨论了实现方法、性能优化及案例分析,旨在为设计师和开发者提供实用指导。
109 7
|
5月前
CSS_定位_网页布局总结_元素的显示与隐藏
CSS_定位_网页布局总结_元素的显示与隐藏
43 0
|
5月前
|
前端开发
css 块元素、行内元素、行内块元素相互转换
css 块元素、行内元素、行内块元素相互转换
353 0
|
6月前
|
Web App开发 前端开发 JavaScript
「offer来了」1张思维导图,6大知识板块,带你梳理面试中CSS的知识点!
该文章通过一张思维导图和六大知识板块系统梳理了前端面试中涉及的CSS核心知识点,包括CSS框架、基础样式问题、布局技巧、动画处理、浏览器兼容性及性能优化等方面的内容。
|
7月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
4月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
4月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?

热门文章

最新文章