使定位元素居中的4种方法例举

例子:

创建两个div,定位父级‘box’  和   定位元素‘sun’。本文要做的是 ‘sun’ 要在 ‘box’ 中居中显示, 该怎么做呢?

定位前效果图

定位元素居中后的效果图

HTML代码:

<!--定位元素父级-->
    <div id="box">
        <!--定位元素-->
        <div id="sun"></div>
    </div>

样式代码:
<style type="text/css">
        /*定位父级*/
        #box{
            width:200px;
            height:110px;
            border:1px solid #000;
            position:relative;
        }

        /*定位元素*/
        #box #sun{
            width:100px;
            height:100px;
            background:red;
            position:absolute;
        }
    </style>

下面我来依次介绍使定位元素居中的4种方法。

方法一:计算定位居中时‘sun’元素的"left", "top" 属性值。

Top属性的值公式:Top属性值 =(‘box’元素的height  – ‘sun’元素的height)÷2;

Left属性的值公式:left属性值 =(‘box’元素的width  – ‘sun’元素的width)÷2;

样式代码:

<style type="text/css">

/*定位元素*/
        #box #sun{
            width:100px;
            height:100px;
            background:red;
            position:absolute;
            top:5px;/*(110-100)÷2*/
            left:50px;/*(200-100)÷2*/
     }

</style>

这种方法需要计算定位元素的"left", "top" 属性值。

方法二:计算‘sun’元素的"left", "top" 属性值的百分比。

Top属性的值公式:Top属性值 =(‘box’元素的height  – ‘sun’元素的height)÷2÷‘box’元素的height  ×100%;

Left 属性的值公式:left属性值 =(‘box’元素的width  – ‘sun’元素的width)÷2÷‘box’元素的width×100%;

样式代码:

<style type="text/css">

/*定位元素*/
#box #sun{
             width:100px;
            height:100px;
            background:red;
            position:absolute;
            top:4.5%;/*(110-100)÷2÷110×100%*/
            left:25%;/*(200-100)÷2÷200×100%*/
   }

</style>

这种方法也要需要计算定位元素的"left", "top" 属性值百分比,但是计算方法相对复杂。

方法三:设置‘sun’元素的"left", "top" 属性值的百分比都为50%,然后设置margin-left的值为‘sun’元素的宽度一半的负值、设置margin-top的值为‘sun’元素的高度一半的负值。

样式代码:

    <style type="text/css">

        /*定位元素*/
        #box #sun{
            width:100px;
            height:100px;
            background:red;
            position:absolute;
            top:50%;
            left:50%;
            margin-top:-50px;/*高度一半的负值*/
            margin-left:-50px;/*宽度一半的负值*/
        }

    </style>

这种方法省去了相对复杂的计算过程,但需要知道定位元素的宽高值。

方法四:设置‘sun’元素的 "left", "top", "right" 以及 "bottom" 属性值都为0,然后设置‘sun’元素的外边据为:auto

样式代码:

    <style type="text/css">

        /*定位元素*/
        #box #sun{
            width:100px;
            height:100px;
            background:red;
            position:absolute;
            top:0;
            left:0;
            right:0;
            bottom:0;
            margin:auto;
        }

    </style>

这种方法省去了相对复杂的计算过程,也不需要知道定位元素的宽高值。 我把这种方法叫做 ‘万能自适应定位居中’。

时间: 2024-10-06 15:05:53

使定位元素居中的4种方法例举的相关文章

元素居中的几种方法

元素居中的几种方法: ① 块级元素margin:0 auto; 针对嵌套的盒子元素,子元素在父元素中居中,只在水平方向上有效,浮动流排版中不可用 ② 内联元素text-align:center; 对块级元素设置此属性,使得盒子内的内联元素居中,一般包括文字/图片等 ③ 背景background-position:center top; 主要实现背景图片的居中 ④ 文字行内垂直居中 一行文字垂直居中:文字行高line-height的值与盒子的高度一致 多行文字垂直居中:文字内边距设置padding

使用CSS完成元素居中的七种方法

在网页布局中元素水平居中比元素垂直居中要简单不少,同时实现水平居中和垂直居中往往是最难的.现在是响应式设计的时代,我们很难确切的知道元素的准确高度和宽度,所以一些方案不大适用.据我所知, 在CSS中至少有六种实现居中的方法.我将使用下面的HTML结构从简单到复杂开始讲解: <div class="center">  <img src="jimmy-choo-shoe.jpg" alt></div> 鞋子图片会改变,但是他们都会保持

css中元素居中的几种方法

对于在网页端布局,垂直居中难于水平居中,同时实现水平和垂直居中是最难的.在移动端,因为设备的宽高是可变的,故一些方案很难实现.以下使用几种方案对下面的html去实现居中,如有不足,可以提出宝贵的意见: <div class="center"> <img src="1.jpg" alt> </div> 1. 使用text-align水平居中 这种方案只能使水平居中,要想垂直居中的话,要给div添加padding或给内容添加margi

页面元素居中的几种方法

1前言 做页面布局时,经常会需要将一些页面元素居中显示.当然,你可以设定元素的top.left来使它居中,但是,当父容器的大小发生变化,你不得不修改子元素的top.left来使它保持居中:当用户的显示器分辨率与你的测试机不同,可能会导致界面乱成一片,所以不管从代码的易维护性的角度还是从对不同分辨率显示器的适应性方面来说,这种设置固定值的方法显然是比较拙劣的.因此,做页面布局,应尽量减少使用固定值的布局方式.下面介绍几种页元素居中的方法. 1Div居中 1.1左右居中 在父窗口中设置text-al

div等块级元素居中的两种方法

以下两种方法是针对宽度确定的块级元素而言的 1.设置块级元素CSS属性为: margin: 0 auto: 即左右margin设置为auto. 2.设置块级元素的display为inline(此时要求块级元素包含内容,否则由于内联元素的高度设置不起作用,相当于高度为零,块级元素就无法被看到)或者inline-block. 该块状元素的父级元素CSS设置: text-align:center; 此时会将该块状元素看作text进行居中处理.

元素居中的三种方法(包括垂直居中和水平居中)

第一种方案:分别设置垂直居中和水平居中 第二种方案:未知居中元素的尺寸的居中方案 第三种方案:已知所要居中元素尺寸的居中方案 当然图片的居中也差不多 1 <html> 2 <head> 3 <style> 4 .box2,.box3{ 5 float: left; 6 } 7 .box { 8 /*非IE的主流浏览器识别的垂直居中的方法*/ 9 display: table-cell; 10 vertical-align:middle; 11 /*设置水平居中*/ 12

CSS绝对定位元素居中的几种方法

CSS居中绝对定位元素的方法,有很多种,下面是我收集的几种 1,div宽度未知1 <body> <div style="position: absolute; left: 50%;"> <div style="position: relative; left: -50%; border: dotted red 1px;"> 没有宽度<br /> 照样居中,嘿嘿嘿 </div> </div> &l

APP定位元素几种方法

APP元素定位和操作 webdriver 提供了八种元素定位方法: 在 Python 语言中对应的定位方法如下:find_element_by_id()find_element_by_name()find_element_by_class_name()find_element_by_tag_name()find_element_by_link_text()find_element_by_partial_link_text()find_element_by_xpath()find_element_

元素居中之Flex布局

在做页面布局的时候,多多少少都会遇到这个话题,如何使子元素居中于父元素中??? 对于这个问题,方法多种多样,之前也有对这个问题进行总结过,answer应该不少于10种吧.至于使用哪种方法比较好,我觉得这很大程度看个人喜好. 我经常使用的最多也就是一下几种:(以最简单的结构举例,元素宽高略 ) <div class='parent'> <div class=''child></div> </div> 1.定位 .parent{ position:relativ