2013-06-19 2 views
4

Я пытаюсь выложить страницу с помощью div. Я борюсь, потому что точка отсчета до <div> кажется левым верхним. Это нормально, пока div не изменит форму. Тогда позиция в верхнем левом углу не подходит.Изменить опорную точку для позиции CSS

Если вы видите http://jsfiddle.net/jdb1991/8Xb7L/, вы получите живой пример

#point { position: absolute; top: 50%; left: 50%; } 
#square { border: solid black 1px; height: 100px; width: 100px; position: absolute; top: 50%; left: 50%; } 

<div id="point">+</div> 
<div id="square"></div> 

Есть ли способ, с помощью CSS, чтобы изменить «точку отсчета» квадрат, чтобы быть в центре, или другим угол?

+1

Что вы имеете в виду под «точкой отсчета»? –

+0

Если вы хотите, чтобы «плюс» находился внутри коробки, сделайте это div дочерним. – j08691

+0

Я не пытаюсь поставить точку в поле, извините за путаницу. Это просто здесь, чтобы показать центр экрана, и тот факт, что это был верхний левый угол квадрата, выравнивается. – jdborg

ответ

3

Вам необходимо установить point внутри square, а затем введите squareposition: relative. Положение точки будет тогда относительно квадрата (т.е. left будет расстояние от левого края квадрата.)

#point { position: absolute; top: 50%; left: 50%; } 
#square { position: relative; border: solid black 1px; height: 100px; width: 100px; position: absolute; top: 50%; left: 50%; } 

<div id="square"> 
    <div id="point">+</div> 
</div> 

Если вы хотите использовать другой угол для позиционирования, используйте right или bottom, а не left или top.

Если вы хотите позиционировать из центра, сделайте то, что я предложил с квадратом, но дайте ему ширину и высоту 0. Теперь квадрат будет находиться в центре и точка будет расположена относительно него. Очевидно, вы теряете ширину и высоту, поэтому использование процентов для left и top больше не будет работать.

+0

Я не пытаюсь поставить точку в поле, извините за путаницу. Это просто здесь, чтобы показать центр экрана, и тот факт, что это был верхний левый угол квадрата, выравнивается. – jdborg

+1

См. Дополнительный комментарий. –

+0

+1 Спасибо за обновление, это дало мне что-то для работы. Извиняюсь за плохую формулировку. – jdborg

0

Помимо установки ширины и высоты на 0, что может иметь некоторые нежелательные последствия, другим возможным решением было бы дать отрицательное левое поле, равное ровно половине полной ширины ящика, а отрицательное верхнее поле равное половине полной высота окна, где полная ширина/высота = ширина/высота + граница + дополнение.

Для коробки в вашей скрипке, которая имеет ширину/высоту 100 пикселей и границы в 1 пиксель, это будет означать добавление

margin-left: -51px; 
margin-top: -51px; 
Смежные вопросы