2013-08-22 3 views
1

Я нашел anwswer от этого: Absolute positioning with percentages giving unexpected resultsабсолютное позиционирование с процентами 50%

, но ответ не совсем верно показывает на моем экране

Вот jsFiddle от этого ответа.

#container { 
    border: 1px solid red; 
    height: 100px; 
    width: 100px; 
    overflow: hidden; 
    position: relative; 
} 

#item { 
    border: 1px dashed purple; 
    position: absolute; 
    left: 50%; 
} 

enter image description here

Я имею этот вопрос, 50% не половина ширины родителя, если кто-то может помочь?

+5

50% составляет половину ширины родителя. Если вы посмотрите на пробел между левой красной рамкой и буквой «T», это половина ширины родительского элемента. –

+0

Что вы ожидаете от него? – uptownnickbrown

+0

дисплей в центр ширины родителя – olo

ответ

0

Он правильно позиционирует элемент на 50% - в этот момент находится верхний левый угол элемента item. Если вы хотите, чтобы полностью его в центре абсолютно, вам нужно добавить отрицательный левый край половинной item ширины:

#item { 
    border: 1px dashed purple; 
    position: absolute; 
    left: 50%; 
    margin-left: -20px; 
} 

Если это не будет, чтобы удовлетворить ваши потребности, посмотреть в использовании text-align: center и margin: 0 auto в качестве опции вместо. В вашем jsFiddle не совсем ясно, какова конечная цель.

+1

Спасибо за ответ, откуда находится '-20px'? – olo

+0

Ваш элемент 'item' имеет ширину 41px, поэтому половина составляет ~ 20px. Добавление отрицательного левого поля тянет элемент 20px влево, делая его центрированным. – alecananian

+0

Использование отрицательных значений не является хорошей практикой. –

0

С точки зрения положения пикселя x и y элемент div расположен на расстоянии 50% от ширины вашего контейнера div (то есть 50 пикселей слева от контейнера 100px).

Если вы увеличиваете ширину вашего контейнера, вы увидите позиции позиции элемента соответственно.

0

Используйте следующий стиль. Там нет необходимости в абсолютных, так и отрицательных оцененных стилей:

#container { 
    border: 1px solid red; 
    height: 100px; 
    width: 100px; 
    overflow: hidden; 
    text-align: center; 
} 

#item { 
    border: 1px dashed purple; 
    display: inline-block; 
    margin: 0 auto; 
} 

Fiddle

+0

Спасибо, но мне нужен абсолютный и его родительский родственник для изображений когда-то – olo

Смежные вопросы