center align position absolute object horizontally

时间:2022-11-18 17:58:57

i have an element whose position is absolute the only issue i am facing is i have applied some properties to align it center horizontally and it is working fine on mozilla but the same properties are not working on chrome here's my code

我有一个元素,其位置是绝对的,我面临的唯一问题是我已经应用了一些属性来水平居中对齐它在mozilla上工作正常但是相同的属性不适用于chrome这里是我的代码

html

<a href="#section1" class="scrollTo downarrow"><img src="images/navbar_downarrow.png" class="img-responsive"/></a>

css

    .slider{
        position: relative;
        background-image: url("../images/slider.jpg");
        background-size: 100% 100%;
        background-repeat: no-repeat;
    }
    .slider a.downarrow{
        position: absolute;
        margin-left: auto;
        margin-right: auto;
        left: 0;
        right: 0;
        bottom: 20px;
        display: table;
    }

1 个解决方案

#1


29  

A useful trick to center elements is to use the transform: translate style together with either top, margin-left left or margin-top.

中心元素的一个有用技巧是使用transform:translate style以及top,margin-left left或margin-top。

To answer your question, you have to apply the following styles to your .slider a.downarrow element:

要回答您的问题,您必须将以下样式应用于.slider a.downarrow元素:

left: 50%;
transform: translateX(-50%);

The way this works is because if translate is used with a percentage value, its value is calculated based on the elements height/width on which it is applied on.

这种方式的工作方式是因为如果translate与百分比值一起使用,则其值将根据应用它的元素高度/宽度计算。

top, margin-left left and margin-top percentage values are calculated based on the parent element or in case the element has position: absolute applied to it based on the nearest parent with position: relative/absolute.

top,margin-left left和margin-top百分比值是根据父元素计算的,或者在元素具有position:absolute的情况下根据最近的父级位置:relative / absolute来计算。

To center an element you just need to apply a value of 50% to either top, margin-left left or margin-top and a value of -50% to translate.

要使元素居中,您只需要将50%的值应用于top,margin-left left或margin-top以及值-50%进行翻译。

For left and margin-left you have to use translateX(-50%) and for the others translateY(-50%).

对于left和margin-left,你必须使用translateX(-50%)和其他translateY(-50%)。

EDIT: Added an explanation

编辑:添加了解释

#1


29  

A useful trick to center elements is to use the transform: translate style together with either top, margin-left left or margin-top.

中心元素的一个有用技巧是使用transform:translate style以及top,margin-left left或margin-top。

To answer your question, you have to apply the following styles to your .slider a.downarrow element:

要回答您的问题,您必须将以下样式应用于.slider a.downarrow元素:

left: 50%;
transform: translateX(-50%);

The way this works is because if translate is used with a percentage value, its value is calculated based on the elements height/width on which it is applied on.

这种方式的工作方式是因为如果translate与百分比值一起使用,则其值将根据应用它的元素高度/宽度计算。

top, margin-left left and margin-top percentage values are calculated based on the parent element or in case the element has position: absolute applied to it based on the nearest parent with position: relative/absolute.

top,margin-left left和margin-top百分比值是根据父元素计算的,或者在元素具有position:absolute的情况下根据最近的父级位置:relative / absolute来计算。

To center an element you just need to apply a value of 50% to either top, margin-left left or margin-top and a value of -50% to translate.

要使元素居中,您只需要将50%的值应用于top,margin-left left或margin-top以及值-50%进行翻译。

For left and margin-left you have to use translateX(-50%) and for the others translateY(-50%).

对于left和margin-left,你必须使用translateX(-50%)和其他translateY(-50%)。

EDIT: Added an explanation

编辑:添加了解释