首页 > 其他分享 >正确的使用margin:0 auto与body{text-align:center;}实现元素居中

正确的使用margin:0 auto与body{text-align:center;}实现元素居中

时间:2023-09-28 10:33:16浏览次数:37  
标签:body 段落 img auto align 居中 设置 margin


我们首先了解一下它们的基本概念:

  text-align是用于设置或对象中文本的对齐方式。一般情况下我们设置文本对齐方式的时候需要用此属性进行设置,如:

Example Source Code
  div { text-align: left; }   表示文本居左对齐。

  margin是设置对象四边的外延边距,被称为外补丁或外边距。如:

Example Source Code
  div { margin: 20px 10px 30px 40px; }

  表示对象外边距,顶20px、右10px、下30px、左40px。

  我们设置某个对象水平方向居中的时候,常常将左右的外边距设置为auto来实现。如:

Example Source Code
div { margin: 0 auto; }

  现在的问题是:body{text-align:center}与margin:0 auto的异同。text-align:center设置为文本或img标签等一些内联对象(或与之类似的元素)的居中。margin:0 auto是设置块元素(或与之类似的元素)的居中。但这两个属性IE与FF的理解也有所不同。

  我们设置一个段落P,在段落内存在一个图片img标签。

  我们设置body{text-align:center;}。得到下面的图片:

  在IE中,段落P,图片img同时实现了居中对齐,也就是说text-align:center;同时作用于元素p与元素img。

  在FF中,段落P,没有能实现居中对齐,而图片img实现了居中对齐,也就是说text-align:center;作用于img标签,而段落p标签没有起到居中的作用。

  我们设置段落 p {margin:0 auto;}。得到下面的图片:

  我们发现在IE与FF中,段落P均实现了居中对齐。图片img由于不是作用对象,所以不会居中对齐。

  有三种情况需要说明:

  一、有朋友在操作的时候,将margin:0 auto;的选择器混淆了,应该是作用对象,如div,p,而不是body。如果设置:body { margin:0 auto; }将不会达到任何效果,除非你定义body的宽度,那将会让body内的元素产生位置变化。如我们设置body宽度为500px。对p段落不作任何设置,我们最大化窗口将会看到段落并非处于窗口的最左上角。

  二,我们设置段落 p {text-align:center;} 将要实现的并不是段落本身的对齐方式,而是段落内元素居中对齐。

  三,我们设置图片标签img {margin:0 auto;} ,我们就犯了一个小错误,img类于内联对象,不可以设置图片img标签的margin属性,如果你一定想要设置,那么首先要将它的属性转变为块元素,如下面的代码:img {display:block; margin:0 auto;}

  有朋友产生疑问了,那该如何使用呢?说说我的建议:

  如果页面中的元素,均位于div标签或其它块元素内,进行了合理的嵌套,我们不必设置body{text-align:center}。只需要设置相应的div元素margin:0 auto;即可。如上面的代码所讲述,页面中的元素均位于段落p标签中,只需要将段落居中即可。

  如果页面中的元素,有一部分不是在div标签或其它块元素内,我们需要设置body{text-align:center}。但也会遇到问题,这样设置以后,大部分内联元素,都居中对齐了,包括页面中其它的一些文本,还需要进行相应的调整才能适应设计的需要。如:我们设置body内有一个段落P,在段落内有一个图片img及一段文本,在body内还存在一个独立的图片img,看下面的图片:

  我们实现了段落p的居中,同时也让位于段落外的图片实现了居中,但段落中的图片与文本居中对齐了。如下是运行代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>www.52css.com</title>
<style type="text/css">
body {
text-align:center;
}
p {
margin:0 auto;
width:300px; 
background:#06f; 
}
img {
}
</style>
</head>
<body>
<p>
<img src="http://www.52css.com/skins/logo3.gif" alt="52CSS.com - CSS Web Design" width="200" height="90" style="vertical-align:top;" />
<br />

52CSS.com是一个专业的CSS学习站点,内容丰富并且保持每天更新,我们建立了很多QQ群供网友们互动讨论学习,52CSS.com是学习开发符合WEB标准的网页及网站重构的首选站点。

</p>
<br />
<img src="http://www.52css.com/skins/logo3.gif" alt="52CSS.com - CSS Web Design" width="200" height="90" style="vertical-align:top;" />
</body>
</html>

标签:body,段落,img,auto,align,居中,设置,margin
From: https://blog.51cto.com/u_1040535/7636214

相关文章

  • VBNET AUTOCAD 单行文字OBB有向包围盒的计算
    遇到要求单行文字包围和的需求,发现AutoCAD自带的算法仅能求出正交包围盒,如下图所示的粉色矩形我想获取下图下图所示蓝色矩形的部分及OBB计算方法图形示例:下面是完整的代码,其中求D点的坐标p1涉及到向量定比分点公式<CommandMethod(NameOf(TT_SingleTextOBB))>SubTT......
  • 音频数据的自定义DataLoader及其AutoEncoder降噪算法
    DataLoader要求每一个Batch里面的数据的shape都一样,但是语音数据显然不可能都是等长的,因为每一条语音长度都不一样,因此在定制DataLoader的时候还要对每一个batch的数据进行剪裁(crop)或者填充(padding)处理。这里采用padding来对齐数据,方法采用PytorchDiscussion的网友Felix......
  • 给tbody标签设置高度
    给tbody标签设置高度/max-height通过搜索得到三种方法1.在tbody上使用CSS设置高度,并给tbody设置"display:block;"属性。2.将tbody的内容放入一个div中,并设置div的高度。3.动态设置tbody的高度。使用方法1:`tbody{display:block}`此时可以给tbody设置......
  • 全面正确理解 @Autowired 和 @Resource
    @Autowired和@Resource都是Spring/SpringBoot项目中,用来进行依赖注入的注解。他们的区别主要是下面几点:1.来源不同;2.依赖查找的顺序不同;3.支特的参数不同;4.依赖注入的用法不同:一、来源不同。@Autowire是来自spring的注解,@Resource是来自Java的注解......
  • 手写数字数据集AutoEncoder降噪算法
    对训练数据加噪声的方法,在训练里面对x做如下处理,添加椒盐噪声:bs,ch,h,w=x.shapex=x.reshape(bs,ch,h*w)+0.2*np.random.normal(size=28*28)x=x.to(torch.float32)数据集里面的标签label无用,因为AutoEncoder去噪是无监督方法。......
  • 在Koa2中,ctx.request.body和ctx.query的主要区别
    在Koa2中,ctx.request.body和ctx.query的主要区别在于获取参数的位置不同。ctx.query用于获取URL查询参数,而ctx.request.body用于获取请求体中的参数。下面是详细的区别和示例代码。获取URL查询参数URL查询参数是指在URL中以?开头,&连接的键值对参数。例如,以下URL中的查询参数为nam......
  • GENERATED_BODY()函数是什么?
    会发现它是一个宏定义//Includearedundantsemicolonattheendofthegeneratedcodeblock,sothatintellisenseparserscanstartparsing//anewdeclarationifthelinenumber/generatedcodeisoutofdate.#defineGENERATED_BODY_LEGACY(...)BODY_MACRO......
  • python操作windows桌面实现鼠标、键盘操作,python之pyautogui库文档详解
    文章目录一、概述1、概述2、安装二、屏幕操作1、获取屏幕分辨率2、某个坐标是否在屏幕上3、获取当前鼠标位置三、鼠标操作1、移动鼠标2、点击操作3、滚轮操作4、记录光标小程序5、鼠标拖拽6、缓动/渐变(Tween/Easing)函数99、保护措施(FAILSAFE)99、延迟操作(PAUSE)四、键盘操作1、......
  • AutoResetEvent
    表示线程同步事件在一个等待线程释放后收到信号时自动重置。此类不能被继承。以下示例演示如何在AutoResetEventSet每次用户按 Enter 键时调用基类上的方法()一次释放一个线程。该示例启动三个 AutoResetEvent 线程,等待在信号状态下创建的。第一个线程会立即释放,因为......
  • 为什么@Resource无法注入泛型类型而@Autowired可以
    在Spring框架中,我们通常使用@Autowired和@Resource两个注解来实现属性注入。但是当涉及到泛型类型时,使用@Resource注解就会失败,而@Autowired可以正常工作。这篇文章就来分析它们之间的区别。@Autowired可以直接注入泛型类型,例如:```java@AutowiredprivateRepository<User>......