首页 > 其他分享 >css:两个行内块元素和图片垂直居中对齐

css:两个行内块元素和图片垂直居中对齐

时间:2023-12-10 12:01:33浏览次数:36  
标签:box 居中 行内 color align 元素 对齐 css

(目录)

两个行内块元素垂直居中对齐

先看一段代码:

<style>
.box {
    width: 200px;
    height: 200px;
    line-height: 200px;
    font-size: 20px;
    text-align: center;
    display: inline-block;
    background-color: green;
  }
</style>

<div class="box"></div>
<div class="box">box</div>

显示效果 在这里插入图片描述 发现一个很奇怪的现象:我们本来期待的是两个框对齐,表现却是错位的

原因是: 一个inline-block元素,如果里面没有inline内联元素,或者overflow不是visible,则该元素的基线就是其margin底边缘,否则,其基线就是元素里面最后一行内联元素的基线。

所以第一个框的底部和后一个元素中的文字基线对齐了,

如果两个元素都有文本,则是对齐的

在这里插入图片描述

如果两个元素都没有文本,同样是对齐的 在这里插入图片描述 尝试增加对齐属性

.middle {
  vertical-align: middle;
}

在第一个元素上增加

<div class="box middle"></div>
<div class="box">box</div>

发现还是没有对齐,还是有一点点错位 在这里插入图片描述 尝试在第二个元素上增加

<div class="box"></div>
<div class="box middle">box</div>

发现并没有居中对齐,有种失效的感觉 在这里插入图片描述 解决办法

让第一个盒子对齐方式改为顶部或底部对齐

.top {
  vertical-align: top;
}
<div class="box top"></div>
<div class="box">box</div>

表现如下 在这里插入图片描述

图片垂直居中问题

<style>
.box {
   background-color: green;
 }
</style>

<div class="box">
 <img class="image" src="./mm.jpg" alt="" />
</div>

图片没有居中显示,底部多出了一个间隙

在这里插入图片描述

实现图片垂直居中对齐

方案一:修改图片元素为块级元素

.image {
  display: block; 
}

方案二:图片元素居中对齐

.image {
  vertical-align: middle;
}

方案三:父级元素行高改为0

.box {
    line-height: 0;
}

方案四:父级元素字体大小改为0

.box {
    font-size: 0;
}

在这里插入图片描述

图片和文字垂直居中对齐

一个很常见的需求,用户头像和用户名并排显示

<style>
  .box {
    background-color: green;
  }

  .image {
    border-radius: 50%;
    width: 30px;
    height: 30px;
    object-fit: cover;
  }

  .text {
    background-color: red;
    color: #fff;
  }
</style>

<div class="box">
  <img class="image" src="./mm.jpg" alt="" />
  <span class="text">我是一段文字</span>
</div>

可以看到,默认情况下并没有实现垂直居中对齐 在这里插入图片描述

改造如下

<style>
 .box {
   background-color: green;
   
 }
 .image {
   vertical-align: middle;
   border-radius: 50%;
   width: 30px;
   height: 30px;
   object-fit: cover;
 }

 .text {
   background-color: red;
   color: #fff;
   font-size: 12px;
   vertical-align: middle;
 }
</style>

<div class="box">
 <img class="image" src="./mm.jpg" alt="" />
 <span class="text">我是一段文字</span>
</div>

实现效果如下 在这里插入图片描述

参考文章

  1. CSS深入理解vertical-align和line-height的基友关系

标签:box,居中,行内,color,align,元素,对齐,css
From: https://blog.51cto.com/mouday/8759608

相关文章

  • CSS学习
    学习CSS 一、概述 CSS(层叠样式表)是一种用于描述HTML(或XML和SVG等其他标记语言)文档样式的样式表语言。它被广泛用于网页和用户界面的设计和布局。通过使用CSS,开发人员可以分离内容和样式,使网页更易于维护,提高用户体验。 二、学习资源 W3Schools、菜鸟教程三、核心概念......
  • 前端:bootstrap基本样式,css3定位,响应式布局
    前端:bootstrap基本样式,css3定位,响应式布局Css3中的position属性:css3的定位方式Css3的几种定位方式:流定位、浮动定位、相对定位、绝对定位、固定定位,默认为流定位。流定位页面中的块级元素框从上到下一个接一个地排列。每一个块级元素都会出现在一个新行中(比如<p>元素、<div>元素)。......
  • css vertical-align \ text-align 居中
    vertical-align:1、只能作用在子元素display 值为inline,inline-block,inline-table,table-cell的元素上,2、子元素设置vertical-align3、父元素高度是由line-height决定(不要乱给父元素添加height)<divclass="father"><spanclass="son">a</span></div&g......
  • CSS笔记
    1.CSS选择器是用于选取HTML文档中的元素的一种方式。常见的选择器包括:元素选择器:通过元素的标签名来选取元素,例如p、div等。类选择器:通过元素的class属性来选取元素,使用.符号加上类名,例如.my-class。ID选择器:通过元素的id属性来选取元素,使用#符号加上id值,例如#my-id。属性选......
  • 用html+css+js做canvas烟花模拟网页动画代码
    圣诞节、元旦就要到了,本案例我们将用html+css+js做canvas烟花模拟网页动画代码,程序员的浪漫这不就来了嘛,与家人朋友一起看烟花吧!   附源码<!DOCTYPEhtml><htmllang="en"><head> <metacharset="UTF-8"/> <title>烟花模拟器</title> <metaname="viewport"......
  • CSS 网页适配 iPhone全面屏
    前言iPhoneX取消了物理按键,改成底部小黑条,这一改动导致网页出现了比较尴尬的屏幕适配问题。对于网页而言,顶部(刘海部位)的适配问题浏览器已经做了处理,所以我们只需要关注底部与小黑条的适配问题即可(即常见的吸底导航、返回顶部等各种相对底部fixed定位的元素)。 适配之前需要......
  • 十套充满逼格的css动画交互设计!UI看了都自愧不如
    大家好,欢迎来到程序视点!对于网页设计师和开发工程师而言,创建一款极具趣味性和实用性的CSS网页动画,能让网站美观不少!CSS动画,就是通过CSS代码搭建网页动画。允许设计师和开发人员,通过编辑网站的CSS代码来添加页面动画,轻松提高网站兼容性的同时,提升网页加载速度。今天就带来了十......
  • CSS如何给字体加边框
    <h1>字体边框</h1>h1{background-color:black;font-family:"Raleway",sans-serif;font-size:28px;color:red;//下方是加边框的内容text-shadow:4px4px0white,4px-4px0white,-4px-4px0white,-4px4px0white,4px3px0w......
  • css3 flex弹性布局详解
    一、flexbox弹性盒子2009年,W3C提出了一种新的方案----Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。二、基本概念Flex是 Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。......
  • CSS超出长度范围显示省略号
    要在CSS中实现超出长度显示省略号的效果,你可以使用以下属性:overflow:该属性定义了当内容溢出元素框时发生的事情,此处我们将它设为hidden,意味着溢出的内容会被隐藏。white-space:该属性设置如何处理元素内的空白,我们将其设为nowrap,这样文本就不会自动换行。text-overflow:此属性定......